Lines Matching +full:dt +full:- +full:check +full:- +full:base
1 // SPDX-License-Identifier: GPL-2.0-or-later
44 void __iomem *base; in of_syscon_register() local
56 return ERR_PTR(-ENOMEM); in of_syscon_register()
59 return ERR_PTR(-ENOMEM); in of_syscon_register()
61 base = of_iomap(np, 0); in of_syscon_register()
62 if (!base) in of_syscon_register()
63 return ERR_PTR(-ENOMEM); in of_syscon_register()
65 /* Parse the device's DT node for an endianness specification */ in of_syscon_register()
66 if (of_property_read_bool(np, "big-endian")) in of_syscon_register()
68 else if (of_property_read_bool(np, "little-endian")) in of_syscon_register()
70 else if (of_property_read_bool(np, "native-endian")) in of_syscon_register()
74 * search for reg-io-width property in DT. If it is not provided, in of_syscon_register()
76 * are invalid so there is no need to check them here. in of_syscon_register()
78 ret = of_property_read_u32(np, "reg-io-width", ®_io_width); in of_syscon_register()
89 case -ENOENT: in of_syscon_register()
95 case -EPROBE_DEFER: in of_syscon_register()
102 ret = -EFAULT; in of_syscon_register()
108 ret = -ENOMEM; in of_syscon_register()
113 syscon_config.max_register = res_size - reg_io_width; in of_syscon_register()
117 regmap = regmap_init_mmio(NULL, base, &syscon_config); in of_syscon_register()
130 if (ret != -ENOENT) in of_syscon_register()
149 syscon->regmap = regmap; in of_syscon_register()
150 syscon->np = np; in of_syscon_register()
152 list_add_tail(&syscon->list, &syscon_list); in of_syscon_register()
164 iounmap(base); in of_syscon_register()
177 if (entry->np == np) { in device_node_get_regmap()
186 syscon = ERR_PTR(-EINVAL); in device_node_get_regmap()
193 return syscon->regmap; in device_node_get_regmap()
197 * of_syscon_register_regmap() - Register regmap for specified device node
213 return -EINVAL; in of_syscon_register_regmap()
217 return -ENOMEM; in of_syscon_register_regmap()
219 /* check if syscon entry already exists */ in of_syscon_register_regmap()
223 if (entry->np == np) { in of_syscon_register_regmap()
224 ret = -EEXIST; in of_syscon_register_regmap()
228 syscon->regmap = regmap; in of_syscon_register_regmap()
229 syscon->np = np; in of_syscon_register_regmap()
232 list_add_tail(&syscon->list, &syscon_list); in of_syscon_register_regmap()
245 * device_node_to_regmap() - Get or create a regmap for specified device node
262 * syscon_node_to_regmap() - Get or create a regmap for specified syscon device node
285 return ERR_PTR(-ENODEV); in syscon_regmap_lookup_by_compatible()
306 return ERR_PTR(-ENODEV); in syscon_regmap_lookup_by_phandle()
335 return ERR_PTR(-ENODEV); in syscon_regmap_lookup_by_phandle_args()
348 * there is no regmap phandle. In this case, instead of returning -ENODEV,
357 if (IS_ERR(regmap) && PTR_ERR(regmap) == -ENODEV) in syscon_regmap_lookup_by_phandle_optional()