diff --git a/drivers/comparator/comparator_fake_comp.c b/drivers/comparator/comparator_fake_comp.c index 85abbad21743e..c8d2247045b26 100644 --- a/drivers/comparator/comparator_fake_comp.c +++ b/drivers/comparator/comparator_fake_comp.c @@ -31,7 +31,7 @@ DEFINE_FAKE_VALUE_FUNC(int, comp_fake_comp_trigger_is_pending, const struct device *); -static const struct comparator_driver_api fake_comp_api = { +static DEVICE_API(comparator, fake_comp_api) = { .get_output = comp_fake_comp_get_output, .set_trigger = comp_fake_comp_set_trigger, .set_trigger_callback = comp_fake_comp_set_trigger_callback, diff --git a/drivers/comparator/comparator_mcux_acmp.c b/drivers/comparator/comparator_mcux_acmp.c index 4d76f105e3414..45af2a672d91a 100644 --- a/drivers/comparator/comparator_mcux_acmp.c +++ b/drivers/comparator/comparator_mcux_acmp.c @@ -375,7 +375,7 @@ static int mcux_acmp_trigger_is_pending(const struct device *dev) return 0; } -static const struct comparator_driver_api mcux_acmp_comp_api = { +static DEVICE_API(comparator, mcux_acmp_comp_api) = { .get_output = mcux_acmp_get_output, .set_trigger = mcux_acmp_set_trigger, .set_trigger_callback = mcux_acmp_set_trigger_callback, diff --git a/drivers/comparator/comparator_nrf_comp.c b/drivers/comparator/comparator_nrf_comp.c index 383b852fc33fa..33bea15778f98 100644 --- a/drivers/comparator/comparator_nrf_comp.c +++ b/drivers/comparator/comparator_nrf_comp.c @@ -666,7 +666,7 @@ static int shim_nrf_comp_trigger_is_pending(const struct device *dev) return atomic_test_and_clear_bit(&shim_nrf_comp_data0.triggered, 0); } -static const struct comparator_driver_api shim_nrf_comp_api = { +static DEVICE_API(comparator, shim_nrf_comp_api) = { .get_output = shim_nrf_comp_get_output, .set_trigger = shim_nrf_comp_set_trigger, .set_trigger_callback = shim_nrf_comp_set_trigger_callback, diff --git a/drivers/comparator/comparator_nrf_lpcomp.c b/drivers/comparator/comparator_nrf_lpcomp.c index cfb64bccf2754..5b3ff0d4a46a8 100644 --- a/drivers/comparator/comparator_nrf_lpcomp.c +++ b/drivers/comparator/comparator_nrf_lpcomp.c @@ -418,7 +418,7 @@ static int shim_nrf_lpcomp_trigger_is_pending(const struct device *dev) return atomic_test_and_clear_bit(&shim_nrf_lpcomp_data0.triggered, 0); } -static const struct comparator_driver_api shim_nrf_lpcomp_api = { +static DEVICE_API(comparator, shim_nrf_lpcomp_api) = { .get_output = shim_nrf_lpcomp_get_output, .set_trigger = shim_nrf_lpcomp_set_trigger, .set_trigger_callback = shim_nrf_lpcomp_set_trigger_callback, diff --git a/drivers/comparator/comparator_shell.c b/drivers/comparator/comparator_shell.c index 2d74753087166..8641faafcf011 100644 --- a/drivers/comparator/comparator_shell.c +++ b/drivers/comparator/comparator_shell.c @@ -216,6 +216,11 @@ static int cmd_trigger_is_pending(const struct shell *sh, size_t argc, char **ar return 0; } +static bool device_is_comp_and_ready(const struct device *dev) +{ + return device_is_ready(dev) && DEVICE_API_IS(comparator, dev); +} + static void dsub_set_trigger_lookup_1(size_t idx, struct shell_static_entry *entry) { entry->syntax = (idx < ARRAY_SIZE(trigger_lookup)) ? trigger_lookup[idx] : NULL; @@ -228,7 +233,7 @@ SHELL_DYNAMIC_CMD_CREATE(dsub_set_trigger_1, dsub_set_trigger_lookup_1); static void dsub_set_trigger_lookup_0(size_t idx, struct shell_static_entry *entry) { - const struct device *dev = shell_device_lookup(idx, NULL); + const struct device *dev = shell_device_filter(idx, device_is_comp_and_ready); entry->syntax = dev != NULL ? dev->name : NULL; entry->handler = NULL; @@ -240,7 +245,7 @@ SHELL_DYNAMIC_CMD_CREATE(dsub_set_trigger_0, dsub_set_trigger_lookup_0); static void dsub_device_lookup_0(size_t idx, struct shell_static_entry *entry) { - const struct device *dev = shell_device_lookup(idx, NULL); + const struct device *dev = shell_device_filter(idx, device_is_comp_and_ready); entry->syntax = (dev != NULL) ? dev->name : NULL; entry->handler = NULL; diff --git a/include/zephyr/drivers/comparator.h b/include/zephyr/drivers/comparator.h index 1f4fc1db8c577..1a6609cafa5b1 100644 --- a/include/zephyr/drivers/comparator.h +++ b/include/zephyr/drivers/comparator.h @@ -70,10 +70,7 @@ __syscall int comparator_get_output(const struct device *dev); static inline int z_impl_comparator_get_output(const struct device *dev) { - const struct comparator_driver_api *api = - (const struct comparator_driver_api *)dev->api; - - return api->get_output(dev); + return DEVICE_API_GET(comparator, dev)->get_output(dev); } /** @@ -91,10 +88,7 @@ __syscall int comparator_set_trigger(const struct device *dev, static inline int z_impl_comparator_set_trigger(const struct device *dev, enum comparator_trigger trigger) { - const struct comparator_driver_api *api = - (const struct comparator_driver_api *)dev->api; - - return api->set_trigger(dev, trigger); + return DEVICE_API_GET(comparator, dev)->set_trigger(dev, trigger); } /** @@ -114,10 +108,7 @@ static inline int comparator_set_trigger_callback(const struct device *dev, comparator_callback_t callback, void *user_data) { - const struct comparator_driver_api *api = - (const struct comparator_driver_api *)dev->api; - - return api->set_trigger_callback(dev, callback, user_data); + return DEVICE_API_GET(comparator, dev)->set_trigger_callback(dev, callback, user_data); } /** @@ -133,10 +124,7 @@ __syscall int comparator_trigger_is_pending(const struct device *dev); static inline int z_impl_comparator_trigger_is_pending(const struct device *dev) { - const struct comparator_driver_api *api = - (const struct comparator_driver_api *)dev->api; - - return api->trigger_is_pending(dev); + return DEVICE_API_GET(comparator, dev)->trigger_is_pending(dev); } #ifdef __cplusplus