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