Skip to content

Commit 78d6ba5

Browse files
henrikbrixandersenfabiobaltieri
authored andcommitted
drivers: can: mcp2515: assume can_send() always provides callback
Given the recent change to the CAN controller can_send() API wrapper, assume that a callback is always provided at the driver level. Signed-off-by: Henrik Brix Andersen <[email protected]>
1 parent eb06e6a commit 78d6ba5

File tree

2 files changed

+4
-16
lines changed

2 files changed

+4
-16
lines changed

drivers/can/can_mcp2515.c

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,8 @@ static int mcp2515_send(const struct device *dev,
524524
uint8_t len;
525525
uint8_t tx_frame[MCP2515_FRAME_LEN];
526526

527+
__ASSERT_NO_MSG(callback != NULL);
528+
527529
if (frame->dlc > CAN_MAX_DLC) {
528530
LOG_ERR("DLC of %d exceeds maximum (%d)",
529531
frame->dlc, CAN_MAX_DLC);
@@ -572,10 +574,6 @@ static int mcp2515_send(const struct device *dev,
572574
nnn = BIT(tx_idx);
573575
mcp2515_cmd_rts(dev, nnn);
574576

575-
if (callback == NULL) {
576-
k_sem_take(&dev_data->tx_cb[tx_idx].sem, K_FOREVER);
577-
}
578-
579577
return 0;
580578
}
581579

@@ -684,11 +682,8 @@ static void mcp2515_tx_done(const struct device *dev, uint8_t tx_idx)
684682
{
685683
struct mcp2515_data *dev_data = dev->data;
686684

687-
if (dev_data->tx_cb[tx_idx].cb == NULL) {
688-
k_sem_give(&dev_data->tx_cb[tx_idx].sem);
689-
} else {
690-
dev_data->tx_cb[tx_idx].cb(dev, 0, dev_data->tx_cb[tx_idx].cb_arg);
691-
}
685+
dev_data->tx_cb[tx_idx].cb(dev, 0, dev_data->tx_cb[tx_idx].cb_arg);
686+
dev_data->tx_cb[tx_idx].cb = NULL;
692687

693688
k_mutex_lock(&dev_data->mutex, K_FOREVER);
694689
dev_data->tx_busy_map &= ~BIT(tx_idx);
@@ -901,17 +896,11 @@ static int mcp2515_init(const struct device *dev)
901896
struct mcp2515_data *dev_data = dev->data;
902897
struct can_timing timing;
903898
int ret;
904-
int i;
905899

906900
k_sem_init(&dev_data->int_sem, 0, 1);
907901
k_mutex_init(&dev_data->mutex);
908902
k_sem_init(&dev_data->tx_sem, MCP2515_TX_CNT, MCP2515_TX_CNT);
909903

910-
for (i = 0; i < MCP2515_TX_CNT; i++) {
911-
k_sem_init(&dev_data->tx_cb[i].sem, 0, 1);
912-
dev_data->tx_cb[i].cb = NULL;
913-
}
914-
915904
if (dev_cfg->phy != NULL) {
916905
if (!device_is_ready(dev_cfg->phy)) {
917906
LOG_ERR("CAN transceiver not ready");

drivers/can/can_mcp2515.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
#define MCP2515_FRAME_LEN 13
1818

1919
struct mcp2515_tx_cb {
20-
struct k_sem sem;
2120
can_tx_callback_t cb;
2221
void *cb_arg;
2322
};

0 commit comments

Comments
 (0)