Skip to content

Commit 50d77ab

Browse files
henrikbrixandersenfabiobaltieri
authored andcommitted
drivers: can: mcan: 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. This saves approximately 500 bytes of SRAM on the lpcxpressso55s16 board when running in default configuration. Signed-off-by: Henrik Brix Andersen <[email protected]>
1 parent d3427d9 commit 50d77ab

File tree

2 files changed

+3
-15
lines changed

2 files changed

+3
-15
lines changed

drivers/can/can_mcan.c

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -348,10 +348,6 @@ int can_mcan_init(const struct device *dev)
348348
k_mutex_init(&data->tx_mtx);
349349
k_sem_init(&data->tx_sem, NUM_TX_BUF_ELEMENTS, NUM_TX_BUF_ELEMENTS);
350350

351-
for (int i = 0; i < ARRAY_SIZE(data->tx_fin_sem); ++i) {
352-
k_sem_init(&data->tx_fin_sem[i], 0, 1);
353-
}
354-
355351
if (cfg->phy != NULL) {
356352
if (!device_is_ready(cfg->phy)) {
357353
LOG_ERR("CAN transceiver not ready");
@@ -558,11 +554,7 @@ static void can_mcan_tc_event_handler(const struct device *dev)
558554
k_sem_give(&data->tx_sem);
559555

560556
tx_cb = data->tx_fin_cb[tx_idx];
561-
if (tx_cb == NULL) {
562-
k_sem_give(&data->tx_fin_sem[tx_idx]);
563-
} else {
564-
tx_cb(dev, 0, data->tx_fin_cb_arg[tx_idx]);
565-
}
557+
tx_cb(dev, 0, data->tx_fin_cb_arg[tx_idx]);
566558
}
567559
}
568560

@@ -814,6 +806,8 @@ int can_mcan_send(const struct device *dev,
814806
frame->fd == CAN_DATAFRAME ? "" : "FD frame",
815807
frame->brs == CAN_DATAFRAME ? "" : "BRS");
816808

809+
__ASSERT_NO_MSG(callback != NULL);
810+
817811
if (data_length > sizeof(frame->data)) {
818812
LOG_ERR("data length (%zu) > max frame data length (%zu)",
819813
data_length, sizeof(frame->data));
@@ -870,11 +864,6 @@ int can_mcan_send(const struct device *dev,
870864

871865
k_mutex_unlock(&data->tx_mtx);
872866

873-
if (callback == NULL) {
874-
LOG_DBG("Waiting for TX complete");
875-
k_sem_take(&data->tx_fin_sem[put_idx], K_FOREVER);
876-
}
877-
878867
return 0;
879868
}
880869

drivers/can/can_mcan.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,6 @@ struct can_mcan_data {
170170
struct k_mutex inst_mutex;
171171
struct k_sem tx_sem;
172172
struct k_mutex tx_mtx;
173-
struct k_sem tx_fin_sem[NUM_TX_BUF_ELEMENTS];
174173
can_tx_callback_t tx_fin_cb[NUM_TX_BUF_ELEMENTS];
175174
void *tx_fin_cb_arg[NUM_TX_BUF_ELEMENTS];
176175
can_rx_callback_t rx_cb_std[NUM_STD_FILTER_DATA];

0 commit comments

Comments
 (0)