diff --git a/tests/kernel/device/src/dummy_driver.c b/tests/kernel/device/src/dummy_driver.c index f15070bddcd..a492a52bc05 100644 --- a/tests/kernel/device/src/dummy_driver.c +++ b/tests/kernel/device/src/dummy_driver.c @@ -32,11 +32,16 @@ int dummy_init(const struct device *dev) return 0; } +int dummy_pm_control(const struct device *dev, enum pm_device_action action) +{ + return 0; +} + /** * @cond INTERNAL_HIDDEN */ -DEVICE_DEFINE(dummy_driver, DUMMY_DRIVER_NAME, &dummy_init, - NULL, NULL, NULL, POST_KERNEL, +DEVICE_DEFINE(dummy_driver, DUMMY_DRIVER_NAME, dummy_init, + dummy_pm_control, NULL, NULL, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &funcs); /** diff --git a/tests/kernel/device/src/main.c b/tests/kernel/device/src/main.c index af9d4a5253e..12021142e72 100644 --- a/tests/kernel/device/src/main.c +++ b/tests/kernel/device/src/main.c @@ -293,11 +293,18 @@ void test_dummy_device_pm(void) { const struct device *dev; int busy, ret; - enum pm_device_state device_power_state = PM_DEVICE_STATE_SUSPENDED; + enum pm_device_state device_power_state; dev = device_get_binding(DUMMY_PORT_2); zassert_false((dev == NULL), NULL); + ret = pm_device_state_get(dev, &device_power_state); + if (ret == -ENOSYS) { + TC_PRINT("Power management not supported on device"); + ztest_test_skip(); + return; + } + busy = pm_device_is_any_busy(); zassert_true((busy == 0), NULL); @@ -320,15 +327,11 @@ void test_dummy_device_pm(void) /* Set device state to PM_DEVICE_STATE_ACTIVE */ ret = pm_device_state_set(dev, PM_DEVICE_STATE_ACTIVE); - if (ret == -ENOSYS) { - TC_PRINT("Power management not supported on device"); - ztest_test_skip(); - return; - } - zassert_true((ret == 0), + zassert_true((ret == 0) || (ret == -EALREADY), "Unable to set active state to device"); + device_power_state = PM_DEVICE_STATE_SUSPENDED; ret = pm_device_state_get(dev, &device_power_state); zassert_true((ret == 0), "Unable to get active state to device"); @@ -343,7 +346,7 @@ void test_dummy_device_pm(void) ret = pm_device_state_get(dev, &device_power_state); zassert_true((ret == 0), "Unable to get suspend state to device"); - zassert_true((device_power_state == PM_DEVICE_STATE_ACTIVE), + zassert_true((device_power_state == PM_DEVICE_STATE_SUSPENDED), "Error power status"); } #else