Lines Matching refs:pctl

83 	struct mvebu_pinctrl *pctl, unsigned pid)
86 for (n = 0; n < pctl->num_groups; n++) {
87 if (pid >= pctl->groups[n].pins[0] &&
88 pid < pctl->groups[n].pins[0] +
89 pctl->groups[n].npins)
90 return &pctl->groups[n];
96 struct mvebu_pinctrl *pctl, const char *name)
100 for (n = 0; n < pctl->num_groups; n++) {
101 if (strcmp(name, pctl->groups[n].name) == 0)
102 return &pctl->groups[n];
109 struct mvebu_pinctrl *pctl, struct mvebu_pinctrl_group *grp,
116 if (!pctl->variant || (pctl->variant &
126 struct mvebu_pinctrl *pctl, struct mvebu_pinctrl_group *grp,
133 if (!pctl->variant || (pctl->variant &
143 struct mvebu_pinctrl *pctl, struct mvebu_pinctrl_group *grp)
150 if (!pctl->variant || (pctl->variant &
160 struct mvebu_pinctrl *pctl, const char *name)
164 for (n = 0; n < pctl->num_functions; n++) {
165 if (strcmp(name, pctl->functions[n].name) == 0)
166 return &pctl->functions[n];
175 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
176 struct mvebu_pinctrl_group *grp = &pctl->groups[gid];
188 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
189 struct mvebu_pinctrl_group *grp = &pctl->groups[gid];
207 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
208 struct mvebu_pinctrl_group *grp = &pctl->groups[gid];
216 curr = mvebu_pinctrl_find_setting_by_val(pctl, grp, config);
241 if (pctl->variant &&
242 !(pctl->variant & grp->settings[n].variant))
270 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
272 return pctl->num_functions;
278 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
280 return pctl->functions[fid].name;
287 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
289 *groups = pctl->functions[fid].groups;
290 *num_groups = pctl->functions[fid].num_groups;
297 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
298 struct mvebu_pinctrl_function *func = &pctl->functions[fid];
299 struct mvebu_pinctrl_group *grp = &pctl->groups[gid];
304 setting = mvebu_pinctrl_find_setting_by_name(pctl, grp,
307 dev_err(pctl->dev,
316 dev_err(pctl->dev, "cannot set group %s to %s\n",
327 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
332 grp = mvebu_pinctrl_find_group_by_pid(pctl, offset);
339 setting = mvebu_pinctrl_find_gpio_setting(pctl, grp);
351 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
355 grp = mvebu_pinctrl_find_group_by_pid(pctl, offset);
362 setting = mvebu_pinctrl_find_gpio_setting(pctl, grp);
384 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
385 return pctl->num_groups;
391 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
392 return pctl->groups[gid].name;
399 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
400 *pins = pctl->groups[gid].pins;
401 *num_pins = pctl->groups[gid].npins;
410 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
421 dev_err(pctl->dev,
428 dev_err(pctl->dev,
440 mvebu_pinctrl_find_group_by_name(pctl, group);
443 dev_err(pctl->dev, "unknown pin %s", group);
447 if (!mvebu_pinctrl_find_setting_by_name(pctl, grp, function)) {
448 dev_err(pctl->dev, "unsupported function %s on pin %s",
502 struct mvebu_pinctrl *pctl)
505 int num = 0, funcsize = pctl->desc.npins;
516 for (n = 0; n < pctl->num_groups; n++) {
517 struct mvebu_pinctrl_group *grp = &pctl->groups[n];
522 if (pctl->variant &&
523 !(pctl->variant & grp->settings[s].variant))
532 pctl->desc.npins);
540 pctl->num_functions = num;
541 pctl->functions = funcs;
543 for (n = 0; n < pctl->num_groups; n++) {
544 struct mvebu_pinctrl_group *grp = &pctl->groups[n];
550 if (pctl->variant &&
551 !(pctl->variant & grp->settings[s].variant))
554 f = mvebu_pinctrl_find_function_by_name(pctl,
581 struct mvebu_pinctrl *pctl;
594 pctl = devm_kzalloc(&pdev->dev, sizeof(struct mvebu_pinctrl),
596 if (!pctl)
599 pctl->desc.name = dev_name(&pdev->dev);
600 pctl->desc.owner = THIS_MODULE;
601 pctl->desc.pctlops = &mvebu_pinctrl_ops;
602 pctl->desc.pmxops = &mvebu_pinmux_ops;
603 pctl->desc.confops = &mvebu_pinconf_ops;
604 pctl->variant = soc->variant;
605 pctl->dev = &pdev->dev;
606 platform_set_drvdata(pdev, pctl);
610 pctl->num_groups = 0;
611 pctl->desc.npins = 0;
615 pctl->desc.npins += ctrl->npins;
626 pctl->num_groups += ctrl->npins;
629 pctl->num_groups += 1;
634 pctl->desc.npins,
640 for (n = 0; n < pctl->desc.npins; n++)
642 pctl->desc.pins = pdesc;
647 size = pctl->num_groups * sizeof(*pctl->groups) + noname * 8;
652 pctl->groups = p;
653 noname_buf = p + pctl->num_groups * sizeof(*pctl->groups);
662 pctl->groups[gid].gid = gid;
663 pctl->groups[gid].ctrl = ctrl;
664 pctl->groups[gid].data = data;
665 pctl->groups[gid].name = ctrl->name;
666 pctl->groups[gid].pins = ctrl->pins;
667 pctl->groups[gid].npins = ctrl->npins;
675 pctl->groups[gid].name = noname_buf;
676 pctl->groups[gid].npins = 1;
682 pctl->groups[gid].gid = gid;
683 pctl->groups[gid].ctrl = ctrl;
684 pctl->groups[gid].data = data;
685 pctl->groups[gid].name = noname_buf;
686 pctl->groups[gid].pins = &ctrl->pins[k];
687 pctl->groups[gid].npins = 1;
710 if (pctl->variant && !(pctl->variant & set->variant))
729 grp = mvebu_pinctrl_find_group_by_pid(pctl, mode->pid);
740 ret = mvebu_pinctrl_build_functions(pdev, pctl);
746 pctl->pctldev = devm_pinctrl_register(&pdev->dev, &pctl->desc, pctl);
747 if (IS_ERR(pctl->pctldev)) {
749 return PTR_ERR(pctl->pctldev);
756 pinctrl_add_gpio_range(pctl->pctldev, &soc->gpioranges[n]);