1 // SPDX-License-Identifier: GPL-2.0+
3 * Copyright (C) 2015 Google, Inc
15 /* Base test of register maps */
16 static int dm_test_regmap_base(struct unit_test_state *uts)
22 ut_assertok(uclass_get_device(UCLASS_SYSCON, 0, &dev));
23 map = syscon_get_regmap(dev);
25 ut_asserteq(1, map->range_count);
26 ut_asserteq(0x10, map->ranges[0].start);
27 ut_asserteq(4, map->ranges[0].size);
28 ut_asserteq(0x10, map_to_sysmem(regmap_get_range(map, 0)));
30 ut_assertok(uclass_get_device(UCLASS_SYSCON, 1, &dev));
31 map = syscon_get_regmap(dev);
33 ut_asserteq(4, map->range_count);
34 ut_asserteq(0x20, map->ranges[0].start);
35 for (i = 0; i < 4; i++) {
36 const unsigned long addr = 0x20 + 8 * i;
38 ut_asserteq(addr, map->ranges[i].start);
39 ut_asserteq(5 + i, map->ranges[i].size);
40 ut_asserteq(addr, map_to_sysmem(regmap_get_range(map, i)));
43 /* Check that we can't pretend a different device is a syscon */
44 ut_assertok(uclass_get_device(UCLASS_I2C, 0, &dev));
45 map = syscon_get_regmap(dev);
46 ut_asserteq_ptr(ERR_PTR(-ENOEXEC), map);
50 DM_TEST(dm_test_regmap_base, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
52 /* Test we can access a regmap through syscon */
53 static int dm_test_regmap_syscon(struct unit_test_state *uts)
57 map = syscon_get_regmap_by_driver_data(SYSCON0);
59 ut_asserteq(1, map->range_count);
61 map = syscon_get_regmap_by_driver_data(SYSCON1);
63 ut_asserteq(4, map->range_count);
65 map = syscon_get_regmap_by_driver_data(SYSCON_COUNT);
66 ut_asserteq_ptr(ERR_PTR(-ENODEV), map);
68 ut_asserteq(0x10, map_to_sysmem(syscon_get_first_range(SYSCON0)));
69 ut_asserteq(0x20, map_to_sysmem(syscon_get_first_range(SYSCON1)));
70 ut_asserteq_ptr(ERR_PTR(-ENODEV),
71 syscon_get_first_range(SYSCON_COUNT));
76 DM_TEST(dm_test_regmap_syscon, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);