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