xref: /openbmc/u-boot/test/dm/power-domain.c (revision cca7429ddd24d0cccc72f708a6f05c6ab9a75303)
183d290c5STom Rini // SPDX-License-Identifier: GPL-2.0
261f5ddcbSStephen Warren /*
361f5ddcbSStephen Warren  * Copyright (c) 2016, NVIDIA CORPORATION.
461f5ddcbSStephen Warren  */
561f5ddcbSStephen Warren 
661f5ddcbSStephen Warren #include <common.h>
761f5ddcbSStephen Warren #include <dm.h>
861f5ddcbSStephen Warren #include <dm/test.h>
961f5ddcbSStephen Warren #include <asm/power-domain.h>
1061f5ddcbSStephen Warren #include <test/ut.h>
1161f5ddcbSStephen Warren 
1261f5ddcbSStephen Warren /* This must match the specifier for power-domains in the DT node */
1361f5ddcbSStephen Warren #define TEST_POWER_DOMAIN 2
1461f5ddcbSStephen Warren 
dm_test_power_domain(struct unit_test_state * uts)1561f5ddcbSStephen Warren static int dm_test_power_domain(struct unit_test_state *uts)
1661f5ddcbSStephen Warren {
1761f5ddcbSStephen Warren 	struct udevice *dev_power_domain;
1861f5ddcbSStephen Warren 	struct udevice *dev_test;
1961f5ddcbSStephen Warren 
2061f5ddcbSStephen Warren 	ut_assertok(uclass_get_device_by_name(UCLASS_POWER_DOMAIN,
2161f5ddcbSStephen Warren 					      "power-domain",
2261f5ddcbSStephen Warren 					      &dev_power_domain));
2361f5ddcbSStephen Warren 	ut_asserteq(0, sandbox_power_domain_query(dev_power_domain, 0));
2461f5ddcbSStephen Warren 	ut_asserteq(0, sandbox_power_domain_query(dev_power_domain,
2561f5ddcbSStephen Warren 						  TEST_POWER_DOMAIN));
2661f5ddcbSStephen Warren 
2761f5ddcbSStephen Warren 	ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "power-domain-test",
2861f5ddcbSStephen Warren 					      &dev_test));
29*4624faadSPeng Fan 	ut_asserteq(1, sandbox_power_domain_query(dev_power_domain,
30*4624faadSPeng Fan 						  TEST_POWER_DOMAIN));
3161f5ddcbSStephen Warren 	ut_assertok(sandbox_power_domain_test_get(dev_test));
3261f5ddcbSStephen Warren 
3361f5ddcbSStephen Warren 	ut_assertok(sandbox_power_domain_test_on(dev_test));
3461f5ddcbSStephen Warren 	ut_asserteq(0, sandbox_power_domain_query(dev_power_domain, 0));
3561f5ddcbSStephen Warren 	ut_asserteq(1, sandbox_power_domain_query(dev_power_domain,
3661f5ddcbSStephen Warren 						  TEST_POWER_DOMAIN));
3761f5ddcbSStephen Warren 
3861f5ddcbSStephen Warren 	ut_assertok(sandbox_power_domain_test_off(dev_test));
3961f5ddcbSStephen Warren 	ut_asserteq(0, sandbox_power_domain_query(dev_power_domain, 0));
4061f5ddcbSStephen Warren 	ut_asserteq(0, sandbox_power_domain_query(dev_power_domain,
4161f5ddcbSStephen Warren 						  TEST_POWER_DOMAIN));
4261f5ddcbSStephen Warren 
4361f5ddcbSStephen Warren 	ut_assertok(sandbox_power_domain_test_free(dev_test));
4461f5ddcbSStephen Warren 
4561f5ddcbSStephen Warren 	return 0;
4661f5ddcbSStephen Warren }
4761f5ddcbSStephen Warren DM_TEST(dm_test_power_domain, DM_TESTF_SCAN_FDT);
48