Commit 0bfde7bc authored by Keith Short's avatar Keith Short Committed by Anas Nashif
Browse files

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: default avatarKeith Short <keithshort@google.com>
parent a94c2bc7
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -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);

/**
+11 −8
Original line number Diff line number Diff line
@@ -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