From eb06e6aed02adda073677ca56dab09befaff752c Mon Sep 17 00:00:00 2001 From: Henrik Brix Andersen Date: Tue, 20 Sep 2022 16:53:49 +0200 Subject: [PATCH] drivers: can: sja1000: 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 --- drivers/can/can_sja1000.c | 17 ++++------------- drivers/can/can_sja1000.h | 2 -- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/drivers/can/can_sja1000.c b/drivers/can/can_sja1000.c index 4ecb88d2664..2f9bddd4e87 100644 --- a/drivers/can/can_sja1000.c +++ b/drivers/can/can_sja1000.c @@ -356,6 +356,8 @@ int can_sja1000_send(const struct device *dev, const struct can_frame *frame, k_ uint8_t cmr; uint8_t sr; + __ASSERT_NO_MSG(callback != NULL); + if (frame->dlc > CAN_MAX_DLC) { LOG_ERR("TX frame DLC %u exceeds maximum (%d)", frame->dlc, CAN_MAX_DLC); return -EINVAL; @@ -397,11 +399,6 @@ int can_sja1000_send(const struct device *dev, const struct can_frame *frame, k_ can_sja1000_write_reg(dev, CAN_SJA1000_CMR, cmr); - if (callback == NULL) { - k_sem_take(&data->tx_done, K_FOREVER); - return data->tx_status; - } - return 0; } @@ -573,13 +570,8 @@ static void can_sja1000_tx_done(const struct device *dev, int status) can_tx_callback_t callback = data->tx_callback; void *user_data = data->tx_user_data; - if (callback != NULL) { - data->tx_callback = NULL; - callback(dev, status, user_data); - } else { - data->tx_status = status; - k_sem_give(&data->tx_done); - } + data->tx_callback = NULL; + callback(dev, status, user_data); k_sem_give(&data->tx_idle); } @@ -683,7 +675,6 @@ int can_sja1000_init(const struct device *dev) k_mutex_init(&data->mod_lock); k_sem_init(&data->tx_idle, 1, 1); - k_sem_init(&data->tx_done, 0, 1); data->state = CAN_STATE_ERROR_ACTIVE; diff --git a/drivers/can/can_sja1000.h b/drivers/can/can_sja1000.h index b9c1b2d3949..8aee06e1eb8 100644 --- a/drivers/can/can_sja1000.h +++ b/drivers/can/can_sja1000.h @@ -106,10 +106,8 @@ struct can_sja1000_data { can_state_change_callback_t state_change_cb; void *state_change_cb_data; struct k_sem tx_idle; - struct k_sem tx_done; can_tx_callback_t tx_callback; void *tx_user_data; - int tx_status; uint32_t sjw; void *custom; };