xref: /rk3399_rockchip-uboot/test/dm/syscon.c (revision 10427e2df5a90fdf95a3ef373e36c5dd49ba07ad)
104035fd3SSimon Glass /*
204035fd3SSimon Glass  * Copyright (C) 2015 Google, Inc
304035fd3SSimon Glass  *
404035fd3SSimon Glass  * SPDX-License-Identifier:	GPL-2.0+
504035fd3SSimon Glass  */
604035fd3SSimon Glass 
704035fd3SSimon Glass #include <common.h>
804035fd3SSimon Glass #include <dm.h>
904035fd3SSimon Glass #include <syscon.h>
10*10427e2dSJean-Jacques Hiblot #include <regmap.h>
1104035fd3SSimon Glass #include <asm/test.h>
1204035fd3SSimon Glass #include <dm/test.h>
1304035fd3SSimon Glass #include <test/ut.h>
1404035fd3SSimon Glass 
1504035fd3SSimon Glass DECLARE_GLOBAL_DATA_PTR;
1604035fd3SSimon Glass 
1704035fd3SSimon Glass /* Base test of system controllers */
dm_test_syscon_base(struct unit_test_state * uts)1804035fd3SSimon Glass static int dm_test_syscon_base(struct unit_test_state *uts)
1904035fd3SSimon Glass {
2004035fd3SSimon Glass 	struct udevice *dev;
2104035fd3SSimon Glass 
2204035fd3SSimon Glass 	ut_assertok(uclass_get_device(UCLASS_SYSCON, 0, &dev));
2304035fd3SSimon Glass 	ut_asserteq(SYSCON0, dev->driver_data);
2404035fd3SSimon Glass 
2504035fd3SSimon Glass 	ut_assertok(uclass_get_device(UCLASS_SYSCON, 1, &dev));
2604035fd3SSimon Glass 	ut_asserteq(SYSCON1, dev->driver_data);
2704035fd3SSimon Glass 
2804035fd3SSimon Glass 	ut_asserteq(-ENODEV, uclass_get_device(UCLASS_SYSCON, 2, &dev));
2904035fd3SSimon Glass 
3004035fd3SSimon Glass 	return 0;
3104035fd3SSimon Glass }
3204035fd3SSimon Glass DM_TEST(dm_test_syscon_base, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
33ac94b7bcSSimon Glass 
34ac94b7bcSSimon Glass /* Test system controller finding */
dm_test_syscon_by_driver_data(struct unit_test_state * uts)35ac94b7bcSSimon Glass static int dm_test_syscon_by_driver_data(struct unit_test_state *uts)
36ac94b7bcSSimon Glass {
37ac94b7bcSSimon Glass 	struct udevice *dev;
38ac94b7bcSSimon Glass 
39ac94b7bcSSimon Glass 	ut_assertok(syscon_get_by_driver_data(SYSCON0, &dev));
40ac94b7bcSSimon Glass 	ut_asserteq(SYSCON0, dev->driver_data);
41ac94b7bcSSimon Glass 
42ac94b7bcSSimon Glass 	ut_assertok(syscon_get_by_driver_data(SYSCON1, &dev));
43ac94b7bcSSimon Glass 	ut_asserteq(SYSCON1, dev->driver_data);
44ac94b7bcSSimon Glass 
45ac94b7bcSSimon Glass 	ut_asserteq(-ENODEV, syscon_get_by_driver_data(2, &dev));
46ac94b7bcSSimon Glass 
47ac94b7bcSSimon Glass 	return 0;
48ac94b7bcSSimon Glass }
49ac94b7bcSSimon Glass DM_TEST(dm_test_syscon_by_driver_data, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
50*10427e2dSJean-Jacques Hiblot 
51*10427e2dSJean-Jacques Hiblot /* Test system controller by phandle */
dm_test_syscon_by_phandle(struct unit_test_state * uts)52*10427e2dSJean-Jacques Hiblot static int dm_test_syscon_by_phandle(struct unit_test_state *uts)
53*10427e2dSJean-Jacques Hiblot {
54*10427e2dSJean-Jacques Hiblot 	struct udevice *dev;
55*10427e2dSJean-Jacques Hiblot 	struct regmap *map;
56*10427e2dSJean-Jacques Hiblot 
57*10427e2dSJean-Jacques Hiblot 	ut_assertok(uclass_get_device_by_name(UCLASS_TEST_PROBE, "test4",
58*10427e2dSJean-Jacques Hiblot 					      &dev));
59*10427e2dSJean-Jacques Hiblot 
60*10427e2dSJean-Jacques Hiblot 	ut_assertok_ptr(syscon_regmap_lookup_by_phandle(dev, "first-syscon"));
61*10427e2dSJean-Jacques Hiblot 	map = syscon_regmap_lookup_by_phandle(dev, "first-syscon");
62*10427e2dSJean-Jacques Hiblot 	ut_assert(map);
63*10427e2dSJean-Jacques Hiblot 	ut_assert(!IS_ERR(map));
64*10427e2dSJean-Jacques Hiblot 	ut_asserteq(1, map->range_count);
65*10427e2dSJean-Jacques Hiblot 
66*10427e2dSJean-Jacques Hiblot 	ut_assertok_ptr(syscon_regmap_lookup_by_phandle(dev,
67*10427e2dSJean-Jacques Hiblot 							"second-sys-ctrl"));
68*10427e2dSJean-Jacques Hiblot 	map = syscon_regmap_lookup_by_phandle(dev, "second-sys-ctrl");
69*10427e2dSJean-Jacques Hiblot 	ut_assert(map);
70*10427e2dSJean-Jacques Hiblot 	ut_assert(!IS_ERR(map));
71*10427e2dSJean-Jacques Hiblot 	ut_asserteq(4, map->range_count);
72*10427e2dSJean-Jacques Hiblot 
73*10427e2dSJean-Jacques Hiblot 	ut_assert(IS_ERR(syscon_regmap_lookup_by_phandle(dev, "not-present")));
74*10427e2dSJean-Jacques Hiblot 
75*10427e2dSJean-Jacques Hiblot 	return 0;
76*10427e2dSJean-Jacques Hiblot }
77*10427e2dSJean-Jacques Hiblot DM_TEST(dm_test_syscon_by_phandle, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
78