From 88a69674c002c7d6112fd1428d202c39a5eb60ab Mon Sep 17 00:00:00 2001 From: Gerard Marull-Paretas Date: Wed, 13 Oct 2021 12:25:06 +0200 Subject: [PATCH] drivers: use new PM macros Port some drivers to the recently introduced macros to showcase its usage and be able to do some initial testing (nRF52840). Signed-off-by: Gerard Marull-Paretas --- drivers/display/display_st7735r.c | 5 ++++- drivers/display/display_st7789v.c | 4 +++- drivers/entropy/entropy_cc13xx_cc26xx.c | 4 +++- drivers/entropy/entropy_neorv32_trng.c | 10 +++------- drivers/ethernet/eth_mcux.c | 11 ++++------- drivers/flash/nrf_qspi_nor.c | 6 +++--- drivers/flash/spi_flash_at45.c | 5 ++++- drivers/gpio/gpio_dw.c | 16 ++++++++++++---- drivers/gpio/gpio_emul.c | 6 +++--- drivers/gpio/gpio_stm32.c | 3 ++- drivers/i2c/i2c_cc13xx_cc26xx.c | 4 +++- drivers/i2c/i2c_nrfx_twi.c | 3 ++- drivers/i2c/i2c_nrfx_twim.c | 3 ++- drivers/interrupt_controller/intc_ioapic.c | 4 +++- drivers/interrupt_controller/intc_loapic.c | 4 +++- drivers/led/led_pwm.c | 7 +++++-- drivers/pwm/pwm_nrfx.c | 3 ++- drivers/sensor/apds9960/apds9960.c | 4 +++- drivers/sensor/bme280/bme280.c | 5 ++++- drivers/sensor/bmp388/bmp388.c | 3 ++- drivers/sensor/bq274xx/bq274xx.c | 5 ++++- drivers/sensor/fdc2x1x/fdc2x1x.c | 4 +++- drivers/sensor/ina219/ina219.c | 4 +++- drivers/sensor/lis2mdl/lis2mdl.c | 4 +++- drivers/sensor/lm77/lm77.c | 10 +++------- drivers/sensor/qdec_nrfx/qdec_nrfx.c | 4 +++- drivers/sensor/sgp40/sgp40.c | 4 +++- drivers/sensor/si7210/si7210.c | 3 ++- drivers/sensor/vcnl4040/vcnl4040.c | 4 +++- drivers/serial/uart_cc13xx_cc26xx.c | 4 +++- drivers/serial/uart_ite_it8xxx2.c | 3 ++- drivers/serial/uart_neorv32.c | 10 +++------- drivers/serial/uart_npcx.c | 4 +++- drivers/serial/uart_nrfx_uart.c | 4 +++- drivers/serial/uart_nrfx_uarte.c | 5 ++++- drivers/spi/spi_cc13xx_cc26xx.c | 6 ++++-- drivers/spi/spi_nrfx_spi.c | 3 ++- drivers/spi/spi_nrfx_spim.c | 3 ++- 38 files changed, 123 insertions(+), 71 deletions(-) diff --git a/drivers/display/display_st7735r.c b/drivers/display/display_st7735r.c index 291caa3f05c..0678769eac4 100644 --- a/drivers/display/display_st7735r.c +++ b/drivers/display/display_st7735r.c @@ -573,7 +573,10 @@ static const struct display_driver_api st7735r_api = { .x_offset = DT_INST_PROP(inst, x_offset), \ .y_offset = DT_INST_PROP(inst, y_offset), \ }; \ - DEVICE_DT_INST_DEFINE(inst, st7735r_init, st7735r_pm_action, \ + \ + PM_DEVICE_DT_INST_DEFINE(inst, st7735r_pm_action); \ + \ + DEVICE_DT_INST_DEFINE(inst, st7735r_init, PM_DEVICE_DT_INST_REF(inst), \ &st7735r_data_ ## inst, &st7735r_config_ ## inst, \ POST_KERNEL, CONFIG_DISPLAY_INIT_PRIORITY, \ &st7735r_api); diff --git a/drivers/display/display_st7789v.c b/drivers/display/display_st7789v.c index 6fd72cf126c..032170df8a4 100644 --- a/drivers/display/display_st7789v.c +++ b/drivers/display/display_st7789v.c @@ -438,6 +438,8 @@ static struct st7789v_data st7789v_data = { .y_offset = DT_INST_PROP(0, y_offset), }; +PM_DEVICE_DT_INST_DEFINE(0, st7789v_pm_action); + DEVICE_DT_INST_DEFINE(0, &st7789v_init, - st7789v_pm_action, &st7789v_data, NULL, POST_KERNEL, + PM_DEVICE_DT_INST_REF(0), &st7789v_data, NULL, POST_KERNEL, CONFIG_DISPLAY_INIT_PRIORITY, &st7789v_api); diff --git a/drivers/entropy/entropy_cc13xx_cc26xx.c b/drivers/entropy/entropy_cc13xx_cc26xx.c index 01ce405adcd..e28d4586074 100644 --- a/drivers/entropy/entropy_cc13xx_cc26xx.c +++ b/drivers/entropy/entropy_cc13xx_cc26xx.c @@ -349,9 +349,11 @@ static struct entropy_cc13xx_cc26xx_data entropy_cc13xx_cc26xx_data = { .sync = Z_SEM_INITIALIZER(entropy_cc13xx_cc26xx_data.sync, 0, 1), }; +PM_DEVICE_DT_INST_DEFINE(0, entropy_cc13xx_cc26xx_pm_action); + DEVICE_DT_INST_DEFINE(0, entropy_cc13xx_cc26xx_init, - entropy_cc13xx_cc26xx_pm_action, + PM_DEVICE_DT_INST_REF(0), &entropy_cc13xx_cc26xx_data, NULL, PRE_KERNEL_1, CONFIG_ENTROPY_INIT_PRIORITY, &entropy_cc13xx_cc26xx_driver_api); diff --git a/drivers/entropy/entropy_neorv32_trng.c b/drivers/entropy/entropy_neorv32_trng.c index 7f7f0b1d4d6..345871ac1af 100644 --- a/drivers/entropy/entropy_neorv32_trng.c +++ b/drivers/entropy/entropy_neorv32_trng.c @@ -129,20 +129,16 @@ static const struct entropy_driver_api neorv32_trng_driver_api = { .get_entropy_isr = neorv32_trng_get_entropy_isr, }; -#ifdef CONFIG_PM_DEVICE -#define NEORV32_TRNG_PM_ACTION_CB neorv32_trng_pm_action -#else /* CONFIG_PM_DEVICE */ -#define NEORV32_TRNG_PM_ACTION_CB NULL -#endif /* ! CONFIG_PM_DEVICE */ - #define NEORV32_TRNG_INIT(n) \ static const struct neorv32_trng_config neorv32_trng_##n##_config = { \ .syscon = DEVICE_DT_GET(DT_INST_PHANDLE(n, syscon)), \ .base = DT_INST_REG_ADDR(n), \ }; \ \ + PM_DEVICE_DT_INST_DEFINE(n, neorv32_trng_pm_action); \ + \ DEVICE_DT_INST_DEFINE(n, &neorv32_trng_init, \ - NEORV32_TRNG_PM_ACTION_CB, \ + PM_DEVICE_DT_INST_REF(n), \ NULL, \ &neorv32_trng_##n##_config, \ PRE_KERNEL_1, \ diff --git a/drivers/ethernet/eth_mcux.c b/drivers/ethernet/eth_mcux.c index 084ed12e90a..7ea56710c52 100644 --- a/drivers/ethernet/eth_mcux.c +++ b/drivers/ethernet/eth_mcux.c @@ -230,11 +230,6 @@ out: return ret; } - -#define ETH_MCUX_PM_ACTION_CB eth_mcux_device_pm_action - -#else -#define ETH_MCUX_PM_ACTION_CB NULL #endif /* CONFIG_NET_POWER_MANAGEMENT */ #if ETH_MCUX_FIXED_LINK @@ -1393,9 +1388,11 @@ static void eth_mcux_err_isr(const struct device *dev) ETH_MCUX_PTP_FRAMEINFO(n) \ }; \ \ - ETH_NET_DEVICE_DT_INST_DEFINE(n, \ + PM_DEVICE_DT_INST_DEFINE(n, eth_mcux_device_pm_action); \ + \ + ETH_NET_DEVICE_DT_INST_DEFINE(n, \ eth_init, \ - ETH_MCUX_PM_ACTION_CB, \ + PM_DEVICE_DT_INST_REF(n), \ ð##n##_context, \ ð##n##_buffer_config, \ CONFIG_ETH_INIT_PRIORITY, \ diff --git a/drivers/flash/nrf_qspi_nor.c b/drivers/flash/nrf_qspi_nor.c index 525a82f492f..6f6914eab77 100644 --- a/drivers/flash/nrf_qspi_nor.c +++ b/drivers/flash/nrf_qspi_nor.c @@ -1139,8 +1139,6 @@ static int qspi_nor_pm_action(const struct device *dev, return 0; } -#else -#define qspi_nor_pm_action NULL #endif /* CONFIG_PM_DEVICE */ static struct qspi_nor_data qspi_nor_dev_data = { @@ -1196,7 +1194,9 @@ static const struct qspi_nor_config qspi_nor_dev_config = { .id = DT_INST_PROP(0, jedec_id), }; -DEVICE_DT_INST_DEFINE(0, qspi_nor_init, qspi_nor_pm_action, +PM_DEVICE_DT_INST_DEFINE(0, qspi_nor_pm_action); + +DEVICE_DT_INST_DEFINE(0, qspi_nor_init, PM_DEVICE_DT_INST_REF(0), &qspi_nor_dev_data, &qspi_nor_dev_config, POST_KERNEL, CONFIG_NORDIC_QSPI_NOR_INIT_PRIORITY, &qspi_nor_api); diff --git a/drivers/flash/spi_flash_at45.c b/drivers/flash/spi_flash_at45.c index 93a4a0bf087..86b32bf84e3 100644 --- a/drivers/flash/spi_flash_at45.c +++ b/drivers/flash/spi_flash_at45.c @@ -699,8 +699,11 @@ static const struct flash_driver_api spi_flash_at45_api = { "Page size specified for instance " #idx " of " \ "atmel,at45 is not compatible with its " \ "total size");)) \ + \ + PM_DEVICE_DT_INST_DEFINE(idx, spi_flash_at45_pm_action); \ + \ DEVICE_DT_INST_DEFINE(idx, \ - spi_flash_at45_init, spi_flash_at45_pm_action, \ + spi_flash_at45_init, PM_DEVICE_DT_INST_REF(idx), \ &inst_##idx##_data, &inst_##idx##_config, \ POST_KERNEL, CONFIG_SPI_FLASH_AT45_INIT_PRIORITY, \ &spi_flash_at45_api); diff --git a/drivers/gpio/gpio_dw.c b/drivers/gpio/gpio_dw.c index b417f680369..3fe2c31b188 100644 --- a/drivers/gpio/gpio_dw.c +++ b/drivers/gpio/gpio_dw.c @@ -534,8 +534,10 @@ static struct gpio_dw_runtime gpio_0_runtime = { .base_addr = DT_INST_REG_ADDR(0), }; +PM_DEVICE_DT_INST_DEFINE(0, gpio_dw_device_pm_action); + DEVICE_DT_INST_DEFINE(0, - gpio_dw_initialize, gpio_dw_device_pm_action, &gpio_0_runtime, + gpio_dw_initialize, PM_DEVICE_DT_INST_REF(0), &gpio_0_runtime, &gpio_config_0, POST_KERNEL, CONFIG_GPIO_INIT_PRIORITY, &api_funcs); @@ -596,8 +598,10 @@ static struct gpio_dw_runtime gpio_1_runtime = { .base_addr = DT_INST_REG_ADDR(1), }; +PM_DEVICE_DT_INST_DEFINE(1, gpio_dw_device_pm_action); + DEVICE_DT_INST_DEFINE(1, - gpio_dw_initialize, gpio_dw_device_pm_action, &gpio_1_runtime, + gpio_dw_initialize, PM_DEVICE_DT_INST_REF(1), &gpio_1_runtime, &gpio_dw_config_1, POST_KERNEL, CONFIG_GPIO_INIT_PRIORITY, &api_funcs); @@ -657,8 +661,10 @@ static struct gpio_dw_runtime gpio_2_runtime = { .base_addr = DT_INST_REG_ADDR(2), }; +PM_DEVICE_DT_INST_DEFINE(2, gpio_dw_device_pm_action); + DEVICE_DT_INST_DEFINE(2, - gpio_dw_initialize, gpio_dw_device_pm_action, &gpio_2_runtime, + gpio_dw_initialize, PM_DEVICE_DT_INST_REF(2), &gpio_2_runtime, &gpio_dw_config_2, POST_KERNEL, CONFIG_GPIO_INIT_PRIORITY, &api_funcs); @@ -718,8 +724,10 @@ static struct gpio_dw_runtime gpio_3_runtime = { .base_addr = DT_INST_REG_ADDR(3), }; +PM_DEVICE_DT_INST_DEFINE(3, gpio_dw_device_pm_action); + DEVICE_DT_INST_DEFINE(3, - gpio_dw_initialize, gpio_dw_device_pm_action, &gpio_3_runtime, + gpio_dw_initialize, PM_DEVICE_DT_INST_REF(3), &gpio_3_runtime, &gpio_dw_config_3, POST_KERNEL, CONFIG_GPIO_INIT_PRIORITY, &api_funcs); diff --git a/drivers/gpio/gpio_emul.c b/drivers/gpio/gpio_emul.c index ad91ed27f42..0e84a3ee913 100644 --- a/drivers/gpio/gpio_emul.c +++ b/drivers/gpio/gpio_emul.c @@ -672,8 +672,6 @@ static int gpio_emul_pm_device_pm_action(const struct device *dev, return 0; } -#else -#define gpio_emul_pm_device_pm_action NULL #endif /* @@ -709,8 +707,10 @@ static int gpio_emul_pm_device_pm_action(const struct device *dev, .flags = gpio_emul_flags_##_num, \ }; \ \ + PM_DEVICE_DT_INST_DEFINE(_num, gpio_emul_pm_device_pm_action); \ + \ DEVICE_DT_INST_DEFINE(_num, gpio_emul_init, \ - gpio_emul_pm_device_pm_action, \ + PM_DEVICE_DT_INST_REF(_num), \ &gpio_emul_data_##_num, \ &gpio_emul_config_##_num, POST_KERNEL, \ CONFIG_GPIO_INIT_PRIORITY, \ diff --git a/drivers/gpio/gpio_stm32.c b/drivers/gpio/gpio_stm32.c index d3e700cbe3f..5315b82cf04 100644 --- a/drivers/gpio/gpio_stm32.c +++ b/drivers/gpio/gpio_stm32.c @@ -630,9 +630,10 @@ static int gpio_stm32_init(const struct device *dev) .pclken = { .bus = __bus, .enr = __cenr } \ }; \ static struct gpio_stm32_data gpio_stm32_data_## __suffix; \ + PM_DEVICE_DT_DEFINE(__node, gpio_stm32_pm_action); \ DEVICE_DT_DEFINE(__node, \ gpio_stm32_init, \ - gpio_stm32_pm_action, \ + PM_DEVICE_DT_REF(__node), \ &gpio_stm32_data_## __suffix, \ &gpio_stm32_cfg_## __suffix, \ PRE_KERNEL_1, \ diff --git a/drivers/i2c/i2c_cc13xx_cc26xx.c b/drivers/i2c/i2c_cc13xx_cc26xx.c index 2d2e08f0d5b..9f29cbfc8f8 100644 --- a/drivers/i2c/i2c_cc13xx_cc26xx.c +++ b/drivers/i2c/i2c_cc13xx_cc26xx.c @@ -435,9 +435,11 @@ static struct i2c_cc13xx_cc26xx_data i2c_cc13xx_cc26xx_data = { .error = I2C_MASTER_ERR_NONE }; +PM_DEVICE_DT_INST_DEFINE(0, i2c_cc13xx_cc26xx_pm_action); + DEVICE_DT_INST_DEFINE(0, i2c_cc13xx_cc26xx_init, - i2c_cc13xx_cc26xx_pm_action, + PM_DEVICE_DT_INST_REF(0), &i2c_cc13xx_cc26xx_data, &i2c_cc13xx_cc26xx_config, POST_KERNEL, CONFIG_I2C_INIT_PRIORITY, &i2c_cc13xx_cc26xx_driver_api); diff --git a/drivers/i2c/i2c_nrfx_twi.c b/drivers/i2c/i2c_nrfx_twi.c index 1a4df6b883f..972c405d6b4 100644 --- a/drivers/i2c/i2c_nrfx_twi.c +++ b/drivers/i2c/i2c_nrfx_twi.c @@ -285,9 +285,10 @@ static int twi_nrfx_pm_action(const struct device *dev, .frequency = I2C_FREQUENCY(idx), \ } \ }; \ + PM_DEVICE_DT_DEFINE(I2C(idx), twi_nrfx_pm_action); \ DEVICE_DT_DEFINE(I2C(idx), \ twi_##idx##_init, \ - twi_nrfx_pm_action, \ + PM_DEVICE_DT_REF(I2C(idx)), \ &twi_##idx##_data, \ &twi_##idx##z_config, \ POST_KERNEL, \ diff --git a/drivers/i2c/i2c_nrfx_twim.c b/drivers/i2c/i2c_nrfx_twim.c index 46f6f3d7132..23cacc5494e 100644 --- a/drivers/i2c/i2c_nrfx_twim.c +++ b/drivers/i2c/i2c_nrfx_twim.c @@ -370,9 +370,10 @@ static int twim_nrfx_pm_action(const struct device *dev, .concat_buf_size = CONCAT_BUF_SIZE(idx), \ .flash_buf_max_size = FLASH_BUF_MAX_SIZE(idx), \ }; \ + PM_DEVICE_DT_DEFINE(I2C(idx), twim_nrfx_pm_action); \ DEVICE_DT_DEFINE(I2C(idx), \ twim_##idx##_init, \ - twim_nrfx_pm_action, \ + PM_DEVICE_DT_REF(I2C(idx)), \ &twim_##idx##_data, \ &twim_##idx##z_config, \ POST_KERNEL, \ diff --git a/drivers/interrupt_controller/intc_ioapic.c b/drivers/interrupt_controller/intc_ioapic.c index fb073092422..60f6ce040bc 100644 --- a/drivers/interrupt_controller/intc_ioapic.c +++ b/drivers/interrupt_controller/intc_ioapic.c @@ -495,5 +495,7 @@ static void IoApicRedUpdateLo(unsigned int irq, ioApicRedSetLo(irq, (ioApicRedGetLo(irq) & ~mask) | (value & mask)); } -DEVICE_DEFINE(ioapic, "ioapic", ioapic_init, ioapic_pm_action, NULL, NULL, +PM_DEVICE_DEFINE(ioapic, ioapic_pm_action); + +DEVICE_DEFINE(ioapic, "ioapic", ioapic_init, PM_DEVICE_REF(ioapic), NULL, NULL, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, NULL); diff --git a/drivers/interrupt_controller/intc_loapic.c b/drivers/interrupt_controller/intc_loapic.c index 95b5dc1c5ff..73483175275 100644 --- a/drivers/interrupt_controller/intc_loapic.c +++ b/drivers/interrupt_controller/intc_loapic.c @@ -428,7 +428,9 @@ static int loapic_pm_action(const struct device *dev, } #endif /* CONFIG_PM_DEVICE */ -DEVICE_DEFINE(loapic, "loapic", loapic_init, loapic_pm_action, NULL, NULL, +PM_DEVICE_DEFINE(loapic, loapic_pm_action); + +DEVICE_DEFINE(loapic, "loapic", loapic_init, PM_DEVICE_REF(loapic), NULL, NULL, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, NULL); #if CONFIG_LOAPIC_SPURIOUS_VECTOR diff --git a/drivers/led/led_pwm.c b/drivers/led/led_pwm.c index a1795aa163e..4bf8d5b13b3 100644 --- a/drivers/led/led_pwm.c +++ b/drivers/led/led_pwm.c @@ -176,8 +176,11 @@ static const struct led_pwm_config led_pwm_config_##id = { \ .led = led_pwm_##id, \ }; \ \ -DEVICE_DT_INST_DEFINE(id, &led_pwm_init, led_pwm_pm_action, \ - NULL, &led_pwm_config_##id, POST_KERNEL, \ +PM_DEVICE_DT_INST_DEFINE(id, led_pwm_pm_action); \ + \ +DEVICE_DT_INST_DEFINE(id, &led_pwm_init, \ + PM_DEVICE_DT_INST_REF(id), NULL, \ + &led_pwm_config_##id, POST_KERNEL, \ CONFIG_LED_INIT_PRIORITY, &led_pwm_api); DT_INST_FOREACH_STATUS_OKAY(LED_PWM_DEVICE) diff --git a/drivers/pwm/pwm_nrfx.c b/drivers/pwm/pwm_nrfx.c index 234552ed608..6eacf7edff6 100644 --- a/drivers/pwm/pwm_nrfx.c +++ b/drivers/pwm/pwm_nrfx.c @@ -368,8 +368,9 @@ static int pwm_nrfx_pm_action(const struct device *dev, .seq.values.p_raw = pwm_nrfx_##idx##_data.current, \ .seq.length = NRF_PWM_CHANNEL_COUNT \ }; \ + PM_DEVICE_DT_DEFINE(PWM(idx), pwm_nrfx_pm_action); \ DEVICE_DT_DEFINE(PWM(idx), \ - pwm_nrfx_init, pwm_nrfx_pm_action, \ + pwm_nrfx_init, PM_DEVICE_DT_REF(PWM(idx)), \ &pwm_nrfx_##idx##_data, \ &pwm_nrfx_##idx##config, \ POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE, \ diff --git a/drivers/sensor/apds9960/apds9960.c b/drivers/sensor/apds9960/apds9960.c index a942c77cbdb..b9c98f96e94 100644 --- a/drivers/sensor/apds9960/apds9960.c +++ b/drivers/sensor/apds9960/apds9960.c @@ -534,6 +534,8 @@ static const struct apds9960_config apds9960_config = { static struct apds9960_data apds9960_data; +PM_DEVICE_DT_INST_DEFINE(0, apds9960_pm_action); + DEVICE_DT_INST_DEFINE(0, apds9960_init, - apds9960_pm_action, &apds9960_data, &apds9960_config, + PM_DEVICE_DT_INST_REF(0), &apds9960_data, &apds9960_config, POST_KERNEL, CONFIG_SENSOR_INIT_PRIORITY, &apds9960_driver_api); diff --git a/drivers/sensor/bme280/bme280.c b/drivers/sensor/bme280/bme280.c index eceee71f228..66810d00c6c 100644 --- a/drivers/sensor/bme280/bme280.c +++ b/drivers/sensor/bme280/bme280.c @@ -447,9 +447,12 @@ static int bme280_pm_action(const struct device *dev, COND_CODE_1(DT_INST_ON_BUS(inst, spi), \ (BME280_CONFIG_SPI(inst)), \ (BME280_CONFIG_I2C(inst))); \ + \ + PM_DEVICE_DT_INST_DEFINE(inst, bme280_pm_action); \ + \ DEVICE_DT_INST_DEFINE(inst, \ bme280_chip_init, \ - bme280_pm_action, \ + PM_DEVICE_DT_INST_REF(inst), \ &bme280_data_##inst, \ &bme280_config_##inst, \ POST_KERNEL, \ diff --git a/drivers/sensor/bmp388/bmp388.c b/drivers/sensor/bmp388/bmp388.c index 504449411ba..f1036507437 100644 --- a/drivers/sensor/bmp388/bmp388.c +++ b/drivers/sensor/bmp388/bmp388.c @@ -720,10 +720,11 @@ static int bmp388_init(const struct device *dev) BMP388_INT_CFG(inst) \ .iir_filter = DT_INST_ENUM_IDX(inst, iir_filter), \ }; \ + PM_DEVICE_DT_INST_DEFINE(inst, bmp388_pm_action); \ DEVICE_DT_INST_DEFINE( \ inst, \ bmp388_init, \ - bmp388_pm_action, \ + PM_DEVICE_DT_INST_REF(inst), \ &bmp388_data_##inst, \ &bmp388_config_##inst, \ POST_KERNEL, \ diff --git a/drivers/sensor/bq274xx/bq274xx.c b/drivers/sensor/bq274xx/bq274xx.c index bbf32b72d86..13fc3c8dc4a 100644 --- a/drivers/sensor/bq274xx/bq274xx.c +++ b/drivers/sensor/bq274xx/bq274xx.c @@ -773,7 +773,10 @@ static const struct sensor_driver_api bq274xx_battery_driver_api = { .terminate_voltage = DT_INST_PROP(index, terminate_voltage), \ }; \ \ - DEVICE_DT_INST_DEFINE(index, &bq274xx_gauge_init, bq274xx_pm_action, \ + PM_DEVICE_DT_INST_DEFINE(index, bq274xx_pm_action); \ + \ + DEVICE_DT_INST_DEFINE(index, &bq274xx_gauge_init, \ + PM_DEVICE_DT_INST_REF(index), \ &bq274xx_driver_##index, \ &bq274xx_config_##index, POST_KERNEL, \ CONFIG_SENSOR_INIT_PRIORITY, \ diff --git a/drivers/sensor/fdc2x1x/fdc2x1x.c b/drivers/sensor/fdc2x1x/fdc2x1x.c index 405764956e8..352b59edc3c 100644 --- a/drivers/sensor/fdc2x1x/fdc2x1x.c +++ b/drivers/sensor/fdc2x1x/fdc2x1x.c @@ -1025,9 +1025,11 @@ static int fdc2x1x_init(const struct device *dev) FDC2X1X_INTB(n) \ }; \ \ + PM_DEVICE_DT_INST_DEFINE(n, fdc2x1x_device_pm_action); \ + \ DEVICE_DT_INST_DEFINE(n, \ fdc2x1x_init, \ - fdc2x1x_device_pm_action, \ + PM_DEVICE_DT_INST_REF(n), \ &fdc2x1x_data_##n, \ &fdc2x1x_config_##n, \ POST_KERNEL, \ diff --git a/drivers/sensor/ina219/ina219.c b/drivers/sensor/ina219/ina219.c index 0ee24e9e9eb..d127ee44fc7 100644 --- a/drivers/sensor/ina219/ina219.c +++ b/drivers/sensor/ina219/ina219.c @@ -302,9 +302,11 @@ static const struct sensor_driver_api ina219_api = { .mode = INA219_MODE_NORMAL \ }; \ \ + PM_DEVICE_DT_INST_DEFINE(n, ina219_pm_action); \ + \ DEVICE_DT_INST_DEFINE(n, \ ina219_init, \ - ina219_pm_action, \ + PM_DEVICE_DT_INST_REF(n), \ &ina219_data_##n, \ &ina219_config_##n, \ POST_KERNEL, \ diff --git a/drivers/sensor/lis2mdl/lis2mdl.c b/drivers/sensor/lis2mdl/lis2mdl.c index 3f983378b50..f3558216028 100644 --- a/drivers/sensor/lis2mdl/lis2mdl.c +++ b/drivers/sensor/lis2mdl/lis2mdl.c @@ -488,9 +488,11 @@ static int lis2mdl_pm_action(const struct device *dev, */ #define LIS2MDL_DEVICE_INIT(inst) \ + PM_DEVICE_DT_INST_DEFINE(inst, lis2mdl_pm_action); \ + \ DEVICE_DT_INST_DEFINE(inst, \ lis2mdl_init, \ - lis2mdl_pm_action, \ + PM_DEVICE_DT_INST_REF(inst), \ &lis2mdl_data_##inst, \ &lis2mdl_config_##inst, \ POST_KERNEL, \ diff --git a/drivers/sensor/lm77/lm77.c b/drivers/sensor/lm77/lm77.c index 8bdc8deced5..86bd5e1fc8e 100644 --- a/drivers/sensor/lm77/lm77.c +++ b/drivers/sensor/lm77/lm77.c @@ -395,12 +395,6 @@ static int lm77_pm_action(const struct device *dev, #define LM77_INT_GPIO_INIT(n) #endif /* ! LM77_TRIGGER_SUPPORT */ -#ifdef CONFIG_PM_DEVICE -#define LM77_PM_ACTION_CB lm77_pm_action -#else /* CONFIG_PM_DEVICE */ -#define LM77_PM_ACTION_CB NULL -#endif /* ! CONFIG_PM_DEVICE */ - #define LM77_INIT(n) \ static struct lm77_data lm77_data_##n; \ \ @@ -417,8 +411,10 @@ static int lm77_pm_action(const struct device *dev, LM77_INT_GPIO_INIT(n) \ }; \ \ + PM_DEVICE_DT_INST_DEFINE(n, lm77_pm_action); \ + \ DEVICE_DT_INST_DEFINE(n, lm77_init, \ - LM77_PM_ACTION_CB, \ + PM_DEVICE_DT_INST_REF(n), \ &lm77_data_##n, \ &lm77_config_##n, POST_KERNEL, \ CONFIG_SENSOR_INIT_PRIORITY, \ diff --git a/drivers/sensor/qdec_nrfx/qdec_nrfx.c b/drivers/sensor/qdec_nrfx/qdec_nrfx.c index 75e5a5212ad..70ce93d5ed5 100644 --- a/drivers/sensor/qdec_nrfx/qdec_nrfx.c +++ b/drivers/sensor/qdec_nrfx/qdec_nrfx.c @@ -241,6 +241,8 @@ static const struct sensor_driver_api qdec_nrfx_driver_api = { .trigger_set = qdec_nrfx_trigger_set, }; +PM_DEVICE_DT_INST_DEFINE(0, qdec_nrfx_pm_action); + DEVICE_DT_INST_DEFINE(0, qdec_nrfx_init, - qdec_nrfx_pm_action, NULL, NULL, POST_KERNEL, + PM_DEVICE_DT_INST_REF(0), NULL, NULL, POST_KERNEL, CONFIG_SENSOR_INIT_PRIORITY, &qdec_nrfx_driver_api); diff --git a/drivers/sensor/sgp40/sgp40.c b/drivers/sensor/sgp40/sgp40.c index 0ae15138607..909dceb2484 100644 --- a/drivers/sensor/sgp40/sgp40.c +++ b/drivers/sensor/sgp40/sgp40.c @@ -255,9 +255,11 @@ static const struct sensor_driver_api sgp40_api = { .selftest = DT_INST_PROP(n, enable_selftest), \ }; \ \ + PM_DEVICE_DT_INST_DEFINE(n, sgp40_pm_action); \ + \ DEVICE_DT_INST_DEFINE(n, \ sgp40_init, \ - sgp40_pm_action, \ + PM_DEVICE_DT_INST_REF(n), \ &sgp40_data_##n, \ &sgp40_config_##n, \ POST_KERNEL, \ diff --git a/drivers/sensor/si7210/si7210.c b/drivers/sensor/si7210/si7210.c index 3d62893d12f..d2d131a5497 100644 --- a/drivers/sensor/si7210/si7210.c +++ b/drivers/sensor/si7210/si7210.c @@ -537,7 +537,8 @@ static int si7210_init(const struct device *dev) static const struct si7210_config si7210_config_##inst = { \ .bus = I2C_DT_SPEC_INST_GET(inst), \ }; \ - DEVICE_DT_INST_DEFINE(inst, si7210_init, si7210_pm_action, \ + PM_DEVICE_DT_INST_DEFINE(inst, si7210_pm_action); \ + DEVICE_DT_INST_DEFINE(inst, si7210_init, PM_DEVICE_DT_INST_REF(inst), \ &si7210_data_##inst, &si7210_config_##inst, POST_KERNEL, \ CONFIG_SENSOR_INIT_PRIORITY, &si7210_api_funcs); diff --git a/drivers/sensor/vcnl4040/vcnl4040.c b/drivers/sensor/vcnl4040/vcnl4040.c index 7b6ada3d163..1ce6a292418 100644 --- a/drivers/sensor/vcnl4040/vcnl4040.c +++ b/drivers/sensor/vcnl4040/vcnl4040.c @@ -363,6 +363,8 @@ static const struct vcnl4040_config vcnl4040_config = { static struct vcnl4040_data vcnl4040_data; +PM_DEVICE_DT_INST_DEFINE(0, vcnl4040_pm_action); + DEVICE_DT_INST_DEFINE(0, vcnl4040_init, - vcnl4040_pm_action, &vcnl4040_data, &vcnl4040_config, + PM_DEVICE_DT_INST_REF(0), &vcnl4040_data, &vcnl4040_config, POST_KERNEL, CONFIG_SENSOR_INIT_PRIORITY, &vcnl4040_driver_api); diff --git a/drivers/serial/uart_cc13xx_cc26xx.c b/drivers/serial/uart_cc13xx_cc26xx.c index 0deece28fb9..996b89f365f 100644 --- a/drivers/serial/uart_cc13xx_cc26xx.c +++ b/drivers/serial/uart_cc13xx_cc26xx.c @@ -535,9 +535,11 @@ static const struct uart_driver_api uart_cc13xx_cc26xx_driver_api = { #endif /* CONFIG_UART_INTERRUPT_DRIVEN */ #define UART_CC13XX_CC26XX_DEVICE_DEFINE(n) \ + PM_DEVICE_DT_INST_DEFINE(n, uart_cc13xx_cc26xx_pm_action); \ + \ DEVICE_DT_INST_DEFINE(n, \ uart_cc13xx_cc26xx_init_##n, \ - uart_cc13xx_cc26xx_pm_action, \ + PM_DEVICE_DT_INST_REF(n), \ &uart_cc13xx_cc26xx_data_##n, &uart_cc13xx_cc26xx_config_##n,\ PRE_KERNEL_1, CONFIG_SERIAL_INIT_PRIORITY, \ &uart_cc13xx_cc26xx_driver_api) diff --git a/drivers/serial/uart_ite_it8xxx2.c b/drivers/serial/uart_ite_it8xxx2.c index 205c7b23d6e..beabd3d80f3 100644 --- a/drivers/serial/uart_ite_it8xxx2.c +++ b/drivers/serial/uart_ite_it8xxx2.c @@ -129,8 +129,9 @@ static int uart_it8xxx2_init(const struct device *dev) .port = DT_INST_PROP(inst, port_num), \ .gpio_wui = GPIO_DT_SPEC_INST_GET(inst, gpios), \ }; \ + PM_DEVICE_DT_INST_DEFINE(inst, uart_it8xxx2_pm_action); \ DEVICE_DT_INST_DEFINE(inst, &uart_it8xxx2_init, \ - uart_it8xxx2_pm_action, \ + PM_DEVICE_DT_INST_REF(inst), \ NULL, &uart_it8xxx2_cfg_##inst, \ PRE_KERNEL_1, \ CONFIG_SERIAL_INIT_PRIORITY, \ diff --git a/drivers/serial/uart_neorv32.c b/drivers/serial/uart_neorv32.c index 504381be53e..d483023b1d7 100644 --- a/drivers/serial/uart_neorv32.c +++ b/drivers/serial/uart_neorv32.c @@ -484,12 +484,6 @@ static const struct uart_driver_api neorv32_uart_driver_api = { #endif /* CONFIG_UART_INTERRUPT_DRIVEN */ }; -#ifdef CONFIG_PM_DEVICE -#define NEORV32_UART_PM_ACTION_CB neorv32_uart_pm_action -#else /* CONFIG_PM_DEVICE */ -#define NEORV32_UART_PM_ACTION_CB NULL -#endif /* ! CONFIG_PM_DEVICE */ - #ifdef CONFIG_UART_INTERRUPT_DRIVEN #define NEORV32_UART_CONFIG_FUNC(node_id, n) \ static void neorv32_uart_config_func_##n(const struct device *dev) \ @@ -536,8 +530,10 @@ static const struct uart_driver_api neorv32_uart_driver_api = { NEORV32_UART_CONFIG_INIT(node_id, n) \ }; \ \ + PM_DEVICE_DT_DEFINE(node_id, neorv32_uart_pm_action); \ + \ DEVICE_DT_DEFINE(node_id, &neorv32_uart_init, \ - NEORV32_UART_PM_ACTION_CB, \ + PM_DEVICE_DT_REF(node_id), \ &neorv32_uart_##n##_data, \ &neorv32_uart_##n##_config, \ PRE_KERNEL_1, \ diff --git a/drivers/serial/uart_npcx.c b/drivers/serial/uart_npcx.c index 0b9ce389cfb..222da122a87 100644 --- a/drivers/serial/uart_npcx.c +++ b/drivers/serial/uart_npcx.c @@ -502,9 +502,11 @@ static int uart_npcx_pm_action(const struct device *dev, .baud_rate = DT_INST_PROP(inst, current_speed) \ }; \ \ + PM_DEVICE_DT_INST_DEFINE(inst, uart_npcx_pm_action); \ + \ DEVICE_DT_INST_DEFINE(inst, \ &uart_npcx_init, \ - uart_npcx_pm_action, \ + PM_DEVICE_DT_INST_REF(inst), \ &uart_npcx_data_##inst, &uart_npcx_cfg_##inst, \ PRE_KERNEL_1, CONFIG_SERIAL_INIT_PRIORITY, \ &uart_npcx_driver_api); \ diff --git a/drivers/serial/uart_nrfx_uart.c b/drivers/serial/uart_nrfx_uart.c index bdc030d3cb6..f36cb61bd23 100644 --- a/drivers/serial/uart_nrfx_uart.c +++ b/drivers/serial/uart_nrfx_uart.c @@ -1182,9 +1182,11 @@ static struct uart_nrfx_data uart_nrfx_uart0_data = { } }; +PM_DEVICE_DT_INST_DEFINE(0, uart_nrfx_pm_action); + DEVICE_DT_INST_DEFINE(0, uart_nrfx_init, - uart_nrfx_pm_action, + PM_DEVICE_DT_INST_REF(0), &uart_nrfx_uart0_data, NULL, /* Initialize UART device before UART console. */ diff --git a/drivers/serial/uart_nrfx_uarte.c b/drivers/serial/uart_nrfx_uarte.c index 826dc10952b..6bf02584021 100644 --- a/drivers/serial/uart_nrfx_uarte.c +++ b/drivers/serial/uart_nrfx_uarte.c @@ -1997,9 +1997,12 @@ static int uarte_nrfx_pm_action(const struct device *dev, dev, \ IS_ENABLED(CONFIG_UART_##idx##_INTERRUPT_DRIVEN)); \ } \ + \ + PM_DEVICE_DT_DEFINE(UARTE(idx), uarte_nrfx_pm_action); \ + \ DEVICE_DT_DEFINE(UARTE(idx), \ uarte_##idx##_init, \ - uarte_nrfx_pm_action, \ + PM_DEVICE_DT_REF(UARTE(idx)), \ &uarte_##idx##_data, \ &uarte_##idx##z_config, \ PRE_KERNEL_1, \ diff --git a/drivers/spi/spi_cc13xx_cc26xx.c b/drivers/spi/spi_cc13xx_cc26xx.c index cda4d0a60b4..aaf446d21ab 100644 --- a/drivers/spi/spi_cc13xx_cc26xx.c +++ b/drivers/spi/spi_cc13xx_cc26xx.c @@ -288,9 +288,11 @@ static const struct spi_driver_api spi_cc13xx_cc26xx_driver_api = { #endif #define SPI_CC13XX_CC26XX_DEVICE_INIT(n) \ - DEVICE_DT_INST_DEFINE(n, \ + PM_DEVICE_DT_INST_DEFINE(n, spi_cc13xx_cc26xx_pm_action); \ + \ + DEVICE_DT_INST_DEFINE(n, \ spi_cc13xx_cc26xx_init_##n, \ - spi_cc13xx_cc26xx_pm_action, \ + PM_DEVICE_DT_INST_REF(n), \ &spi_cc13xx_cc26xx_data_##n, &spi_cc13xx_cc26xx_config_##n, \ POST_KERNEL, CONFIG_SPI_INIT_PRIORITY, \ &spi_cc13xx_cc26xx_driver_api) diff --git a/drivers/spi/spi_nrfx_spi.c b/drivers/spi/spi_nrfx_spi.c index 71106b8a8d0..25bf59e8bfe 100644 --- a/drivers/spi/spi_nrfx_spi.c +++ b/drivers/spi/spi_nrfx_spi.c @@ -354,9 +354,10 @@ static int spi_nrfx_pm_action(const struct device *dev, .miso_pull = SPI_NRFX_MISO_PULL(idx), \ } \ }; \ + PM_DEVICE_DT_DEFINE(SPI(idx), spi_nrfx_pm_action); \ DEVICE_DT_DEFINE(SPI(idx), \ spi_##idx##_init, \ - spi_nrfx_pm_action, \ + PM_DEVICE_DT_REF(SPI(idx)), \ &spi_##idx##_data, \ &spi_##idx##z_config, \ POST_KERNEL, CONFIG_SPI_INIT_PRIORITY, \ diff --git a/drivers/spi/spi_nrfx_spim.c b/drivers/spi/spi_nrfx_spim.c index 58405032056..bec9d8e5e48 100644 --- a/drivers/spi/spi_nrfx_spim.c +++ b/drivers/spi/spi_nrfx_spim.c @@ -531,9 +531,10 @@ static int spim_nrfx_pm_action(const struct device *dev, SPIM_PROP(idx, anomaly_58_workaround),), \ ()) \ }; \ + PM_DEVICE_DT_DEFINE(SPIM(idx), spim_nrfx_pm_action); \ DEVICE_DT_DEFINE(SPIM(idx), \ spi_##idx##_init, \ - spim_nrfx_pm_action, \ + PM_DEVICE_DT_REF(SPIM(idx)), \ &spi_##idx##_data, \ &spi_##idx##z_config, \ POST_KERNEL, CONFIG_SPI_INIT_PRIORITY, \