Lines Matching refs:pctl
61 struct mvebu_pinctrl *pctl, unsigned pid) in mvebu_pinctrl_find_group_by_pid() argument
64 for (n = 0; n < pctl->num_groups; n++) { in mvebu_pinctrl_find_group_by_pid()
65 if (pid >= pctl->groups[n].pins[0] && in mvebu_pinctrl_find_group_by_pid()
66 pid < pctl->groups[n].pins[0] + in mvebu_pinctrl_find_group_by_pid()
67 pctl->groups[n].npins) in mvebu_pinctrl_find_group_by_pid()
68 return &pctl->groups[n]; in mvebu_pinctrl_find_group_by_pid()
74 struct mvebu_pinctrl *pctl, const char *name) in mvebu_pinctrl_find_group_by_name() argument
77 for (n = 0; n < pctl->num_groups; n++) { in mvebu_pinctrl_find_group_by_name()
78 if (strcmp(name, pctl->groups[n].name) == 0) in mvebu_pinctrl_find_group_by_name()
79 return &pctl->groups[n]; in mvebu_pinctrl_find_group_by_name()
85 struct mvebu_pinctrl *pctl, struct mvebu_pinctrl_group *grp, in mvebu_pinctrl_find_setting_by_val() argument
91 if (!pctl->variant || (pctl->variant & in mvebu_pinctrl_find_setting_by_val()
100 struct mvebu_pinctrl *pctl, struct mvebu_pinctrl_group *grp, in mvebu_pinctrl_find_setting_by_name() argument
106 if (!pctl->variant || (pctl->variant & in mvebu_pinctrl_find_setting_by_name()
115 struct mvebu_pinctrl *pctl, struct mvebu_pinctrl_group *grp) in mvebu_pinctrl_find_gpio_setting() argument
121 if (!pctl->variant || (pctl->variant & in mvebu_pinctrl_find_gpio_setting()
130 struct mvebu_pinctrl *pctl, const char *name) in mvebu_pinctrl_find_function_by_name() argument
133 for (n = 0; n < pctl->num_functions; n++) { in mvebu_pinctrl_find_function_by_name()
134 if (strcmp(name, pctl->functions[n].name) == 0) in mvebu_pinctrl_find_function_by_name()
135 return &pctl->functions[n]; in mvebu_pinctrl_find_function_by_name()
143 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in mvebu_pinconf_group_get() local
144 struct mvebu_pinctrl_group *grp = &pctl->groups[gid]; in mvebu_pinconf_group_get()
156 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in mvebu_pinconf_group_set() local
157 struct mvebu_pinctrl_group *grp = &pctl->groups[gid]; in mvebu_pinconf_group_set()
175 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in mvebu_pinconf_group_dbg_show() local
176 struct mvebu_pinctrl_group *grp = &pctl->groups[gid]; in mvebu_pinconf_group_dbg_show()
184 curr = mvebu_pinctrl_find_setting_by_val(pctl, grp, config); in mvebu_pinconf_group_dbg_show()
208 if (pctl->variant && in mvebu_pinconf_group_dbg_show()
209 !(pctl->variant & grp->settings[n].variant)) in mvebu_pinconf_group_dbg_show()
238 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in mvebu_pinmux_get_funcs_count() local
240 return pctl->num_functions; in mvebu_pinmux_get_funcs_count()
246 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in mvebu_pinmux_get_func_name() local
248 return pctl->functions[fid].name; in mvebu_pinmux_get_func_name()
255 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in mvebu_pinmux_get_groups() local
257 *groups = pctl->functions[fid].groups; in mvebu_pinmux_get_groups()
258 *num_groups = pctl->functions[fid].num_groups; in mvebu_pinmux_get_groups()
265 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in mvebu_pinmux_set() local
266 struct mvebu_pinctrl_function *func = &pctl->functions[fid]; in mvebu_pinmux_set()
267 struct mvebu_pinctrl_group *grp = &pctl->groups[gid]; in mvebu_pinmux_set()
272 setting = mvebu_pinctrl_find_setting_by_name(pctl, grp, in mvebu_pinmux_set()
275 dev_err(pctl->dev, in mvebu_pinmux_set()
284 dev_err(pctl->dev, "cannot set group %s to %s\n", in mvebu_pinmux_set()
295 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in mvebu_pinmux_gpio_request_enable() local
300 grp = mvebu_pinctrl_find_group_by_pid(pctl, offset); in mvebu_pinmux_gpio_request_enable()
307 setting = mvebu_pinctrl_find_gpio_setting(pctl, grp); in mvebu_pinmux_gpio_request_enable()
319 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in mvebu_pinmux_gpio_set_direction() local
323 grp = mvebu_pinctrl_find_group_by_pid(pctl, offset); in mvebu_pinmux_gpio_set_direction()
330 setting = mvebu_pinctrl_find_gpio_setting(pctl, grp); in mvebu_pinmux_gpio_set_direction()
352 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in mvebu_pinctrl_get_groups_count() local
353 return pctl->num_groups; in mvebu_pinctrl_get_groups_count()
359 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in mvebu_pinctrl_get_group_name() local
360 return pctl->groups[gid].name; in mvebu_pinctrl_get_group_name()
367 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in mvebu_pinctrl_get_group_pins() local
368 *pins = pctl->groups[gid].pins; in mvebu_pinctrl_get_group_pins()
369 *num_pins = pctl->groups[gid].npins; in mvebu_pinctrl_get_group_pins()
378 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in mvebu_pinctrl_dt_node_to_map() local
389 dev_err(pctl->dev, in mvebu_pinctrl_dt_node_to_map()
396 dev_err(pctl->dev, in mvebu_pinctrl_dt_node_to_map()
403 dev_err(pctl->dev, in mvebu_pinctrl_dt_node_to_map()
412 mvebu_pinctrl_find_group_by_name(pctl, group); in mvebu_pinctrl_dt_node_to_map()
415 dev_err(pctl->dev, "unknown pin %s", group); in mvebu_pinctrl_dt_node_to_map()
419 if (!mvebu_pinctrl_find_setting_by_name(pctl, grp, function)) { in mvebu_pinctrl_dt_node_to_map()
420 dev_err(pctl->dev, "unsupported function %s on pin %s", in mvebu_pinctrl_dt_node_to_map()
474 struct mvebu_pinctrl *pctl) in mvebu_pinctrl_build_functions() argument
477 int num = 0, funcsize = pctl->desc.npins; in mvebu_pinctrl_build_functions()
487 for (n = 0; n < pctl->num_groups; n++) { in mvebu_pinctrl_build_functions()
488 struct mvebu_pinctrl_group *grp = &pctl->groups[n]; in mvebu_pinctrl_build_functions()
493 if (pctl->variant && in mvebu_pinctrl_build_functions()
494 !(pctl->variant & grp->settings[s].variant)) in mvebu_pinctrl_build_functions()
503 pctl->desc.npins); in mvebu_pinctrl_build_functions()
511 pctl->num_functions = num; in mvebu_pinctrl_build_functions()
512 pctl->functions = funcs; in mvebu_pinctrl_build_functions()
514 for (n = 0; n < pctl->num_groups; n++) { in mvebu_pinctrl_build_functions()
515 struct mvebu_pinctrl_group *grp = &pctl->groups[n]; in mvebu_pinctrl_build_functions()
521 if (pctl->variant && in mvebu_pinctrl_build_functions()
522 !(pctl->variant & grp->settings[s].variant)) in mvebu_pinctrl_build_functions()
525 f = mvebu_pinctrl_find_function_by_name(pctl, in mvebu_pinctrl_build_functions()
551 struct mvebu_pinctrl *pctl; in mvebu_pinctrl_probe() local
564 pctl = devm_kzalloc(&pdev->dev, sizeof(struct mvebu_pinctrl), in mvebu_pinctrl_probe()
566 if (!pctl) { in mvebu_pinctrl_probe()
571 pctl->desc.name = dev_name(&pdev->dev); in mvebu_pinctrl_probe()
572 pctl->desc.owner = THIS_MODULE; in mvebu_pinctrl_probe()
573 pctl->desc.pctlops = &mvebu_pinctrl_ops; in mvebu_pinctrl_probe()
574 pctl->desc.pmxops = &mvebu_pinmux_ops; in mvebu_pinctrl_probe()
575 pctl->desc.confops = &mvebu_pinconf_ops; in mvebu_pinctrl_probe()
576 pctl->variant = soc->variant; in mvebu_pinctrl_probe()
577 pctl->dev = &pdev->dev; in mvebu_pinctrl_probe()
578 platform_set_drvdata(pdev, pctl); in mvebu_pinctrl_probe()
582 pctl->num_groups = 0; in mvebu_pinctrl_probe()
583 pctl->desc.npins = 0; in mvebu_pinctrl_probe()
587 pctl->desc.npins += ctrl->npins; in mvebu_pinctrl_probe()
598 pctl->num_groups += ctrl->npins; in mvebu_pinctrl_probe()
601 pctl->num_groups += 1; in mvebu_pinctrl_probe()
605 pdesc = devm_kzalloc(&pdev->dev, pctl->desc.npins * in mvebu_pinctrl_probe()
612 for (n = 0; n < pctl->desc.npins; n++) in mvebu_pinctrl_probe()
614 pctl->desc.pins = pdesc; in mvebu_pinctrl_probe()
619 size = pctl->num_groups * sizeof(*pctl->groups) + noname * 8; in mvebu_pinctrl_probe()
625 pctl->groups = p; in mvebu_pinctrl_probe()
626 noname_buf = p + pctl->num_groups * sizeof(*pctl->groups); in mvebu_pinctrl_probe()
632 pctl->groups[gid].gid = gid; in mvebu_pinctrl_probe()
633 pctl->groups[gid].ctrl = ctrl; in mvebu_pinctrl_probe()
634 pctl->groups[gid].name = ctrl->name; in mvebu_pinctrl_probe()
635 pctl->groups[gid].pins = ctrl->pins; in mvebu_pinctrl_probe()
636 pctl->groups[gid].npins = ctrl->npins; in mvebu_pinctrl_probe()
644 pctl->groups[gid].name = noname_buf; in mvebu_pinctrl_probe()
645 pctl->groups[gid].npins = 1; in mvebu_pinctrl_probe()
651 pctl->groups[gid].gid = gid; in mvebu_pinctrl_probe()
652 pctl->groups[gid].ctrl = ctrl; in mvebu_pinctrl_probe()
653 pctl->groups[gid].name = noname_buf; in mvebu_pinctrl_probe()
654 pctl->groups[gid].pins = &ctrl->pins[k]; in mvebu_pinctrl_probe()
655 pctl->groups[gid].npins = 1; in mvebu_pinctrl_probe()
667 mvebu_pinctrl_find_group_by_pid(pctl, mode->pid); in mvebu_pinctrl_probe()
685 if (pctl->variant && !(pctl->variant & set->variant)) in mvebu_pinctrl_probe()
702 ret = mvebu_pinctrl_build_functions(pdev, pctl); in mvebu_pinctrl_probe()
708 pctl->pctldev = pinctrl_register(&pctl->desc, &pdev->dev, pctl); in mvebu_pinctrl_probe()
709 if (IS_ERR(pctl->pctldev)) { in mvebu_pinctrl_probe()
711 return PTR_ERR(pctl->pctldev); in mvebu_pinctrl_probe()
718 pinctrl_add_gpio_range(pctl->pctldev, &soc->gpioranges[n]); in mvebu_pinctrl_probe()
725 struct mvebu_pinctrl *pctl = platform_get_drvdata(pdev); in mvebu_pinctrl_remove() local
726 pinctrl_unregister(pctl->pctldev); in mvebu_pinctrl_remove()