From 7e7d08706101516a5647be66935f03a1e3ea2db1 Mon Sep 17 00:00:00 2001 From: Pieter De Gendt Date: Thu, 28 Nov 2024 08:28:48 +0100 Subject: [PATCH] drivers: i3c: Place API into iterable section Add wrapper DEVICE_API macro to all i3c_driver_api instances. Signed-off-by: Pieter De Gendt --- drivers/i3c/i3c_cdns.c | 2 +- drivers/i3c/i3c_common.c | 10 ++++++++++ drivers/i3c/i3c_mcux.c | 2 +- drivers/i3c/i3c_npcx.c | 2 +- drivers/i3c/i3c_test.c | 2 +- 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/i3c/i3c_cdns.c b/drivers/i3c/i3c_cdns.c index 1690b33f9a43be6..e44ec1919ec0c50 100644 --- a/drivers/i3c/i3c_cdns.c +++ b/drivers/i3c/i3c_cdns.c @@ -3281,7 +3281,7 @@ static int cdns_i3c_bus_init(const struct device *dev) return 0; } -static struct i3c_driver_api api = { +static DEVICE_API(i3c, api) = { .i2c_api.configure = cdns_i3c_i2c_api_configure, .i2c_api.transfer = cdns_i3c_i2c_api_transfer, diff --git a/drivers/i3c/i3c_common.c b/drivers/i3c/i3c_common.c index 9e3783876b848da..75dc8be50338b90 100644 --- a/drivers/i3c/i3c_common.c +++ b/drivers/i3c/i3c_common.c @@ -242,6 +242,8 @@ int i3c_attach_i3c_device(struct i3c_device_desc *target) int status = 0; struct i3c_device_desc *i3c_desc; + __ASSERT_NO_MSG(DEVICE_API_IS(i3c, target->bus)); + /* check to see if the device has already been attached */ I3C_BUS_FOR_EACH_I3CDEV(target->bus, i3c_desc) { if (i3c_desc == target) { @@ -279,6 +281,8 @@ int i3c_reattach_i3c_device(struct i3c_device_desc *target, uint8_t old_dyn_addr const struct i3c_driver_api *api = (const struct i3c_driver_api *)target->bus->api; int status = 0; + __ASSERT_NO_MSG(DEVICE_API_IS(i3c, target->bus)); + if (!i3c_addr_slots_is_free(&data->attached_dev.addr_slots, target->dynamic_addr)) { return -EINVAL; } @@ -303,6 +307,8 @@ int i3c_detach_i3c_device(struct i3c_device_desc *target) const struct i3c_driver_api *api = (const struct i3c_driver_api *)target->bus->api; int status = 0; + __ASSERT_NO_MSG(DEVICE_API_IS(i3c, target->bus)); + if (!sys_slist_is_empty(&data->attached_dev.devices.i3c)) { if (!sys_slist_find_and_remove(&data->attached_dev.devices.i3c, &target->node)) { return -EINVAL; @@ -328,6 +334,8 @@ int i3c_attach_i2c_device(struct i3c_i2c_device_desc *target) int status = 0; struct i3c_i2c_device_desc *i3c_i2c_desc; + __ASSERT_NO_MSG(DEVICE_API_IS(i3c, target->bus)); + /* check to see if the device has already been attached */ I3C_BUS_FOR_EACH_I2CDEV(target->bus, i3c_i2c_desc) { if (i3c_i2c_desc == target) { @@ -356,6 +364,8 @@ int i3c_detach_i2c_device(struct i3c_i2c_device_desc *target) const struct i3c_driver_api *api = (const struct i3c_driver_api *)target->bus->api; int status = 0; + __ASSERT_NO_MSG(DEVICE_API_IS(i3c, target->bus)); + if (!sys_slist_is_empty(&data->attached_dev.devices.i2c)) { if (!sys_slist_find_and_remove(&data->attached_dev.devices.i2c, &target->node)) { return -EINVAL; diff --git a/drivers/i3c/i3c_mcux.c b/drivers/i3c/i3c_mcux.c index 3c81dd0d2249691..48c952cb816dc69 100644 --- a/drivers/i3c/i3c_mcux.c +++ b/drivers/i3c/i3c_mcux.c @@ -2090,7 +2090,7 @@ static int mcux_i3c_i2c_api_transfer(const struct device *dev, return ret; } -static const struct i3c_driver_api mcux_i3c_driver_api = { +static DEVICE_API(i3c, mcux_i3c_driver_api) = { .i2c_api.configure = mcux_i3c_i2c_api_configure, .i2c_api.transfer = mcux_i3c_i2c_api_transfer, .i2c_api.recover_bus = mcux_i3c_recover_bus, diff --git a/drivers/i3c/i3c_npcx.c b/drivers/i3c/i3c_npcx.c index 11b4c1efe9e0893..bde34aee040de43 100644 --- a/drivers/i3c/i3c_npcx.c +++ b/drivers/i3c/i3c_npcx.c @@ -2963,7 +2963,7 @@ static int npcx_i3c_init(const struct device *dev) return 0; } -static const struct i3c_driver_api npcx_i3c_driver_api = { +static DEVICE_API(i3c, npcx_i3c_driver_api) = { .configure = npcx_i3c_configure, .config_get = npcx_i3c_config_get, diff --git a/drivers/i3c/i3c_test.c b/drivers/i3c/i3c_test.c index 165449747d859bc..09586433ec954a0 100644 --- a/drivers/i3c/i3c_test.c +++ b/drivers/i3c/i3c_test.c @@ -32,7 +32,7 @@ static int vnd_i3c_recover_bus(const struct device *dev) return -ENOTSUP; } -static const struct i3c_driver_api vnd_i3c_api = { +static DEVICE_API(i3c, vnd_i3c_api) = { .configure = vnd_i3c_configure, .config_get = vnd_i3c_config_get, .recover_bus = vnd_i3c_recover_bus,