pm: fix incorrect usages of PM_DEVICE_STATE_OFF
According to the documentation the OFF state has to be used when the
devices is fully turned off, ie, power removed. Most drivers were using
a sort of fall-through for all non-active states, leading to behaviors
not following the specifications.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
diff --git a/drivers/flash/spi_flash_at45.c b/drivers/flash/spi_flash_at45.c
index 1b7945c..cc747c9 100644
--- a/drivers/flash/spi_flash_at45.c
+++ b/drivers/flash/spi_flash_at45.c
@@ -637,8 +637,6 @@
break;
case PM_DEVICE_STATE_SUSPENDED:
- __fallthrough;
- case PM_DEVICE_STATE_OFF:
acquire(dev);
power_down_op(dev,
dev_config->use_udpd ? CMD_ENTER_UDPD : CMD_ENTER_DPD,
diff --git a/drivers/i2c/i2c_nrfx_twi.c b/drivers/i2c/i2c_nrfx_twi.c
index 3ee1d44..99f9fc2 100644
--- a/drivers/i2c/i2c_nrfx_twi.c
+++ b/drivers/i2c/i2c_nrfx_twi.c
@@ -231,8 +231,6 @@
break;
case PM_DEVICE_STATE_SUSPENDED:
- __fallthrough;
- case PM_DEVICE_STATE_OFF:
nrfx_twi_uninit(&get_dev_config(dev)->twi);
break;
diff --git a/drivers/i2c/i2c_nrfx_twim.c b/drivers/i2c/i2c_nrfx_twim.c
index 33cf00e..4ee4362 100644
--- a/drivers/i2c/i2c_nrfx_twim.c
+++ b/drivers/i2c/i2c_nrfx_twim.c
@@ -269,8 +269,6 @@
break;
case PM_DEVICE_STATE_SUSPENDED:
- __fallthrough;
- case PM_DEVICE_STATE_OFF:
nrfx_twim_uninit(&get_dev_config(dev)->twim);
break;
diff --git a/drivers/interrupt_controller/intc_ioapic.c b/drivers/interrupt_controller/intc_ioapic.c
index 36c98ff..36a212f 100644
--- a/drivers/interrupt_controller/intc_ioapic.c
+++ b/drivers/interrupt_controller/intc_ioapic.c
@@ -319,8 +319,6 @@
ret = ioapic_resume_from_suspend(dev);
break;
case PM_DEVICE_STATE_SUSPENDED:
- __fallthrough;
- case PM_DEVICE_STATE_OFF:
ret = ioapic_suspend(dev);
break;
default:
diff --git a/drivers/modem/hl7800.c b/drivers/modem/hl7800.c
index 5d6ec19..13bfabc 100644
--- a/drivers/modem/hl7800.c
+++ b/drivers/modem/hl7800.c
@@ -3505,7 +3505,7 @@
HL7800_IO_DBG_LOG("Power OFF the UART");
uart_irq_rx_disable(ictx.mdm_ctx.uart_dev);
rc = pm_device_state_set(ictx.mdm_ctx.uart_dev,
- PM_DEVICE_STATE_OFF);
+ PM_DEVICE_STATE_SUSPENDED);
if (rc) {
LOG_ERR("Error disabling UART peripheral (%d)", rc);
}
diff --git a/drivers/pwm/pwm_nrfx.c b/drivers/pwm/pwm_nrfx.c
index 6e44c4f..dee8e85 100644
--- a/drivers/pwm/pwm_nrfx.c
+++ b/drivers/pwm/pwm_nrfx.c
@@ -301,8 +301,6 @@
err = pwm_nrfx_init(dev);
break;
case PM_DEVICE_STATE_SUSPENDED:
- __fallthrough;
- case PM_DEVICE_STATE_OFF:
pwm_nrfx_uninit(dev);
break;
default:
diff --git a/drivers/sensor/bme280/bme280.c b/drivers/sensor/bme280/bme280.c
index 6ceb305..3e75f02 100644
--- a/drivers/sensor/bme280/bme280.c
+++ b/drivers/sensor/bme280/bme280.c
@@ -197,8 +197,8 @@
#ifdef CONFIG_PM_DEVICE
enum pm_device_state state;
(void)pm_device_state_get(dev, &state);
- /* Do not allow sample fetching from OFF state */
- if (state == PM_DEVICE_STATE_OFF)
+ /* Do not allow sample fetching from suspended state */
+ if (state == PM_DEVICE_STATE_SUSPENDED)
return -EIO;
#endif
@@ -420,8 +420,6 @@
ret = bme280_chip_init(dev);
break;
case PM_DEVICE_STATE_SUSPENDED:
- __fallthrough;
- case PM_DEVICE_STATE_OFF:
/* Put the chip into sleep mode */
ret = bme280_reg_write(dev,
BME280_REG_CTRL_MEAS,
diff --git a/drivers/sensor/bmp388/bmp388.c b/drivers/sensor/bmp388/bmp388.c
index 1280107..0f02eee 100644
--- a/drivers/sensor/bmp388/bmp388.c
+++ b/drivers/sensor/bmp388/bmp388.c
@@ -559,8 +559,6 @@
reg_val = BMP388_PWR_CTRL_MODE_NORMAL;
break;
case PM_DEVICE_STATE_SUSPENDED:
- __fallthrough;
- case PM_DEVICE_STATE_OFF:
reg_val = BMP388_PWR_CTRL_MODE_SLEEP;
break;
default:
diff --git a/drivers/spi/spi_nrfx_spi.c b/drivers/spi/spi_nrfx_spi.c
index 7b02834..d66dc54 100644
--- a/drivers/spi/spi_nrfx_spi.c
+++ b/drivers/spi/spi_nrfx_spi.c
@@ -292,7 +292,6 @@
break;
case PM_DEVICE_STATE_SUSPENDED:
- case PM_DEVICE_STATE_OFF:
nrfx_spi_uninit(&config->spi);
break;
diff --git a/drivers/spi/spi_nrfx_spim.c b/drivers/spi/spi_nrfx_spim.c
index e2cd11b..8c759ea 100644
--- a/drivers/spi/spi_nrfx_spim.c
+++ b/drivers/spi/spi_nrfx_spim.c
@@ -339,7 +339,6 @@
break;
case PM_DEVICE_STATE_SUSPENDED:
- case PM_DEVICE_STATE_OFF:
nrfx_spim_uninit(&config->spim);
break;