drivers: can: add user_data to state change callback

Add optional user data argument to can_set_state_change_callback() to
comply with Zephyr API design guidelines.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
This commit is contained in:
Henrik Brix Andersen 2022-01-10 12:32:19 +01:00 committed by Carles Cufí
commit e919db3222
13 changed files with 59 additions and 25 deletions

View file

@ -199,6 +199,7 @@ struct can_rcar_data {
void *rx_callback_arg[CONFIG_CAN_RCAR_MAX_FILTER];
struct zcan_filter filter[CONFIG_CAN_RCAR_MAX_FILTER];
can_state_change_callback_t state_change_cb;
void *state_change_cb_data;
enum can_state state;
};
@ -251,6 +252,7 @@ static void can_rcar_state_change(const struct device *dev, uint32_t newstate)
const struct can_rcar_cfg *config = DEV_CAN_CFG(dev);
struct can_rcar_data *data = DEV_CAN_DATA(dev);
const can_state_change_callback_t cb = data->state_change_cb;
void *state_change_cb_data = data->state_change_cb_data;
struct can_bus_err_cnt err_cnt;
if (data->state == newstate) {
@ -265,7 +267,7 @@ static void can_rcar_state_change(const struct device *dev, uint32_t newstate)
return;
}
can_rcar_get_error_count(config, &err_cnt);
cb(newstate, err_cnt);
cb(newstate, err_cnt, state_change_cb_data);
}
static void can_rcar_error(const struct device *dev)
@ -657,11 +659,13 @@ unlock:
}
static void can_rcar_set_state_change_callback(const struct device *dev,
can_state_change_callback_t cb)
can_state_change_callback_t cb,
void *user_data)
{
struct can_rcar_data *data = DEV_CAN_DATA(dev);
data->state_change_cb = cb;
data->state_change_cb_data = user_data;
}
static enum can_state can_rcar_get_state(const struct device *dev,
@ -862,6 +866,7 @@ static int can_rcar_init(const struct device *dev)
memset(data->rx_callback, 0, sizeof(data->rx_callback));
data->state = CAN_ERROR_ACTIVE;
data->state_change_cb = NULL;
data->state_change_cb_data = NULL;
/* reset the registers */
ret = clock_control_off(config->clock_dev,