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>
diff --git a/drivers/can/can_sja1000.c b/drivers/can/can_sja1000.c
index 4ecb88d..2f9bddd 100644
--- a/drivers/can/can_sja1000.c
+++ b/drivers/can/can_sja1000.c
@@ -356,6 +356,8 @@
 	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 @@
 
 	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 @@
 	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 @@
 
 	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 b9c1b2d..8aee06e 100644
--- a/drivers/can/can_sja1000.h
+++ b/drivers/can/can_sja1000.h
@@ -106,10 +106,8 @@
 	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;
 };