Lines Matching +full:bcm4708 +full:- +full:pinmux

1 // SPDX-License-Identifier: GPL-2.0
11 #include <linux/pinctrl/pinconf-generic.h>
13 #include <linux/pinctrl/pinmux.h>
153 return ns_pinctrl->num_groups; in ns_pinctrl_get_groups_count()
161 return ns_pinctrl->groups[selector].name; in ns_pinctrl_get_group_name()
171 *pins = ns_pinctrl->groups[selector].pins; in ns_pinctrl_get_group_pins()
172 *num_pins = ns_pinctrl->groups[selector].num_pins; in ns_pinctrl_get_group_pins()
193 return ns_pinctrl->num_functions; in ns_pinctrl_get_functions_count()
201 return ns_pinctrl->functions[selector].name; in ns_pinctrl_get_function_name()
211 *groups = ns_pinctrl->functions[selector].groups; in ns_pinctrl_get_function_groups()
212 *num_groups = ns_pinctrl->functions[selector].num_groups; in ns_pinctrl_get_function_groups()
226 for (i = 0; i < ns_pinctrl->groups[grp_select].num_pins; i++) { in ns_pinctrl_set_mux()
227 int pin_number = ns_pinctrl->groups[grp_select].pins[i]; in ns_pinctrl_set_mux()
232 tmp = readl(ns_pinctrl->base); in ns_pinctrl_set_mux()
234 writel(tmp, ns_pinctrl->base); in ns_pinctrl_set_mux()
251 .name = "pinctrl-ns",
257 { .compatible = "brcm,bcm4708-pinmux", .data = (void *)FLAG_BCM4708, },
258 { .compatible = "brcm,bcm4709-pinmux", .data = (void *)FLAG_BCM4709, },
259 { .compatible = "brcm,bcm53012-pinmux", .data = (void *)FLAG_BCM53012, },
265 struct device *dev = &pdev->dev; in ns_pinctrl_probe()
277 return -ENOMEM; in ns_pinctrl_probe()
278 pctldesc = &ns_pinctrl->pctldesc; in ns_pinctrl_probe()
283 ns_pinctrl->dev = dev; in ns_pinctrl_probe()
287 return -EINVAL; in ns_pinctrl_probe()
288 ns_pinctrl->chipset_flag = (uintptr_t)of_id->data; in ns_pinctrl_probe()
292 ns_pinctrl->base = devm_ioremap_resource(dev, res); in ns_pinctrl_probe()
293 if (IS_ERR(ns_pinctrl->base)) { in ns_pinctrl_probe()
295 return PTR_ERR(ns_pinctrl->base); in ns_pinctrl_probe()
302 pctldesc->pins = devm_kcalloc(dev, ARRAY_SIZE(ns_pinctrl_pins), in ns_pinctrl_probe()
305 if (!pctldesc->pins) in ns_pinctrl_probe()
306 return -ENOMEM; in ns_pinctrl_probe()
307 for (i = 0, pin = (struct pinctrl_pin_desc *)&pctldesc->pins[0]; in ns_pinctrl_probe()
310 unsigned int chipsets = (uintptr_t)src->drv_data; in ns_pinctrl_probe()
312 if (chipsets & ns_pinctrl->chipset_flag) { in ns_pinctrl_probe()
314 pctldesc->npins++; in ns_pinctrl_probe()
318 ns_pinctrl->groups = devm_kcalloc(dev, ARRAY_SIZE(ns_pinctrl_groups), in ns_pinctrl_probe()
321 if (!ns_pinctrl->groups) in ns_pinctrl_probe()
322 return -ENOMEM; in ns_pinctrl_probe()
323 for (i = 0, group = &ns_pinctrl->groups[0]; in ns_pinctrl_probe()
327 if (src->chipsets & ns_pinctrl->chipset_flag) { in ns_pinctrl_probe()
329 ns_pinctrl->num_groups++; in ns_pinctrl_probe()
333 ns_pinctrl->functions = devm_kcalloc(dev, in ns_pinctrl_probe()
337 if (!ns_pinctrl->functions) in ns_pinctrl_probe()
338 return -ENOMEM; in ns_pinctrl_probe()
339 for (i = 0, function = &ns_pinctrl->functions[0]; in ns_pinctrl_probe()
343 if (src->chipsets & ns_pinctrl->chipset_flag) { in ns_pinctrl_probe()
345 ns_pinctrl->num_functions++; in ns_pinctrl_probe()
351 ns_pinctrl->pctldev = devm_pinctrl_register(dev, pctldesc, ns_pinctrl); in ns_pinctrl_probe()
352 if (IS_ERR(ns_pinctrl->pctldev)) { in ns_pinctrl_probe()
354 return PTR_ERR(ns_pinctrl->pctldev); in ns_pinctrl_probe()
363 .name = "ns-pinmux",