tests: Add PM control to dummy_driver

Add the pm_control fn to the dummy_driver so the full PM API is tested.
This change also bypasses all PM APIs if the device driver doesn't
support PM.

Signed-off-by: Keith Short <keithshort@google.com>
This commit is contained in:
Keith Short 2021-10-11 14:29:13 -06:00 committed by Anas Nashif
commit 0bfde7bc5d
2 changed files with 18 additions and 10 deletions

View file

@ -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);
/**

View file

@ -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