Skip to content

Commit eb06e6a

Browse files
henrikbrixandersenfabiobaltieri
authored andcommitted
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 <[email protected]>
1 parent fcf7c6e commit eb06e6a

File tree

2 files changed

+4
-15
lines changed

2 files changed

+4
-15
lines changed

drivers/can/can_sja1000.c

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,8 @@ int can_sja1000_send(const struct device *dev, const struct can_frame *frame, k_
356356
uint8_t cmr;
357357
uint8_t sr;
358358

359+
__ASSERT_NO_MSG(callback != NULL);
360+
359361
if (frame->dlc > CAN_MAX_DLC) {
360362
LOG_ERR("TX frame DLC %u exceeds maximum (%d)", frame->dlc, CAN_MAX_DLC);
361363
return -EINVAL;
@@ -397,11 +399,6 @@ int can_sja1000_send(const struct device *dev, const struct can_frame *frame, k_
397399

398400
can_sja1000_write_reg(dev, CAN_SJA1000_CMR, cmr);
399401

400-
if (callback == NULL) {
401-
k_sem_take(&data->tx_done, K_FOREVER);
402-
return data->tx_status;
403-
}
404-
405402
return 0;
406403
}
407404

@@ -573,13 +570,8 @@ static void can_sja1000_tx_done(const struct device *dev, int status)
573570
can_tx_callback_t callback = data->tx_callback;
574571
void *user_data = data->tx_user_data;
575572

576-
if (callback != NULL) {
577-
data->tx_callback = NULL;
578-
callback(dev, status, user_data);
579-
} else {
580-
data->tx_status = status;
581-
k_sem_give(&data->tx_done);
582-
}
573+
data->tx_callback = NULL;
574+
callback(dev, status, user_data);
583575

584576
k_sem_give(&data->tx_idle);
585577
}
@@ -683,7 +675,6 @@ int can_sja1000_init(const struct device *dev)
683675

684676
k_mutex_init(&data->mod_lock);
685677
k_sem_init(&data->tx_idle, 1, 1);
686-
k_sem_init(&data->tx_done, 0, 1);
687678

688679
data->state = CAN_STATE_ERROR_ACTIVE;
689680

drivers/can/can_sja1000.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,8 @@ struct can_sja1000_data {
106106
can_state_change_callback_t state_change_cb;
107107
void *state_change_cb_data;
108108
struct k_sem tx_idle;
109-
struct k_sem tx_done;
110109
can_tx_callback_t tx_callback;
111110
void *tx_user_data;
112-
int tx_status;
113111
uint32_t sjw;
114112
void *custom;
115113
};

0 commit comments

Comments
 (0)