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 <hebad@vestas.com>
This commit is contained in:
parent
fcf7c6e6d1
commit
eb06e6aed0
2 changed files with 4 additions and 15 deletions
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue