xref: /rk3399_rockchip-uboot/test/dm/power-domain.c (revision fe34b6a4845476208ca7d19a35179e56bebf3877)
1*61f5ddcbSStephen Warren /*
2*61f5ddcbSStephen Warren  * Copyright (c) 2016, NVIDIA CORPORATION.
3*61f5ddcbSStephen Warren  *
4*61f5ddcbSStephen Warren  * SPDX-License-Identifier: GPL-2.0
5*61f5ddcbSStephen Warren  */
6*61f5ddcbSStephen Warren 
7*61f5ddcbSStephen Warren #include <common.h>
8*61f5ddcbSStephen Warren #include <dm.h>
9*61f5ddcbSStephen Warren #include <dm/test.h>
10*61f5ddcbSStephen Warren #include <asm/power-domain.h>
11*61f5ddcbSStephen Warren #include <test/ut.h>
12*61f5ddcbSStephen Warren 
13*61f5ddcbSStephen Warren /* This must match the specifier for power-domains in the DT node */
14*61f5ddcbSStephen Warren #define TEST_POWER_DOMAIN 2
15*61f5ddcbSStephen Warren 
dm_test_power_domain(struct unit_test_state * uts)16*61f5ddcbSStephen Warren static int dm_test_power_domain(struct unit_test_state *uts)
17*61f5ddcbSStephen Warren {
18*61f5ddcbSStephen Warren 	struct udevice *dev_power_domain;
19*61f5ddcbSStephen Warren 	struct udevice *dev_test;
20*61f5ddcbSStephen Warren 
21*61f5ddcbSStephen Warren 	ut_assertok(uclass_get_device_by_name(UCLASS_POWER_DOMAIN,
22*61f5ddcbSStephen Warren 					      "power-domain",
23*61f5ddcbSStephen Warren 					      &dev_power_domain));
24*61f5ddcbSStephen Warren 	ut_asserteq(0, sandbox_power_domain_query(dev_power_domain, 0));
25*61f5ddcbSStephen Warren 	ut_asserteq(0, sandbox_power_domain_query(dev_power_domain,
26*61f5ddcbSStephen Warren 						  TEST_POWER_DOMAIN));
27*61f5ddcbSStephen Warren 
28*61f5ddcbSStephen Warren 	ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "power-domain-test",
29*61f5ddcbSStephen Warren 					      &dev_test));
30*61f5ddcbSStephen Warren 	ut_assertok(sandbox_power_domain_test_get(dev_test));
31*61f5ddcbSStephen Warren 
32*61f5ddcbSStephen Warren 	ut_assertok(sandbox_power_domain_test_on(dev_test));
33*61f5ddcbSStephen Warren 	ut_asserteq(0, sandbox_power_domain_query(dev_power_domain, 0));
34*61f5ddcbSStephen Warren 	ut_asserteq(1, sandbox_power_domain_query(dev_power_domain,
35*61f5ddcbSStephen Warren 						  TEST_POWER_DOMAIN));
36*61f5ddcbSStephen Warren 
37*61f5ddcbSStephen Warren 	ut_assertok(sandbox_power_domain_test_off(dev_test));
38*61f5ddcbSStephen Warren 	ut_asserteq(0, sandbox_power_domain_query(dev_power_domain, 0));
39*61f5ddcbSStephen Warren 	ut_asserteq(0, sandbox_power_domain_query(dev_power_domain,
40*61f5ddcbSStephen Warren 						  TEST_POWER_DOMAIN));
41*61f5ddcbSStephen Warren 
42*61f5ddcbSStephen Warren 	ut_assertok(sandbox_power_domain_test_free(dev_test));
43*61f5ddcbSStephen Warren 
44*61f5ddcbSStephen Warren 	return 0;
45*61f5ddcbSStephen Warren }
46*61f5ddcbSStephen Warren DM_TEST(dm_test_power_domain, DM_TESTF_SCAN_FDT);
47