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)
99 for (n = 0; n < pctl->num_groups; n++) {
100 if (strcmp(name, pctl->groups[n].name) == 0)
101 return &pctl->groups[n];
107 struct mvebu_pinctrl *pctl, struct mvebu_pinctrl_group *grp,
113 if (!pctl->variant || (pctl->variant &
122 struct mvebu_pinctrl *pctl, struct mvebu_pinctrl_group *grp,
128 if (!pctl->variant || (pctl->variant &
137 struct mvebu_pinctrl *pctl, struct mvebu_pinctrl_group *grp)
143 if (!pctl->variant || (pctl->variant &
152 struct mvebu_pinctrl *pctl, const char *name)
155 for (n = 0; n < pctl->num_functions; n++) {
156 if (strcmp(name, pctl->functions[n].name) == 0)
157 return &pctl->functions[n];
165 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
166 struct mvebu_pinctrl_group *grp = &pctl->groups[gid];
178 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
179 struct mvebu_pinctrl_group *grp = &pctl->groups[gid];
197 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
198 struct mvebu_pinctrl_group *grp = &pctl->groups[gid];
206 curr = mvebu_pinctrl_find_setting_by_val(pctl, grp, config);
231 if (pctl->variant &&
232 !(pctl->variant & grp->settings[n].variant))
260 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
262 return pctl->num_functions;
268 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
270 return pctl->functions[fid].name;
277 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
279 *groups = pctl->functions[fid].groups;
280 *num_groups = pctl->functions[fid].num_groups;
287 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
288 struct mvebu_pinctrl_function *func = &pctl->functions[fid];
289 struct mvebu_pinctrl_group *grp = &pctl->groups[gid];
294 setting = mvebu_pinctrl_find_setting_by_name(pctl, grp,
297 dev_err(pctl->dev,
306 dev_err(pctl->dev, "cannot set group %s to %s\n",
317 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
322 grp = mvebu_pinctrl_find_group_by_pid(pctl, offset);
329 setting = mvebu_pinctrl_find_gpio_setting(pctl, grp);
341 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
345 grp = mvebu_pinctrl_find_group_by_pid(pctl, offset);
352 setting = mvebu_pinctrl_find_gpio_setting(pctl, grp);
374 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
375 return pctl->num_groups;
381 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
382 return pctl->groups[gid].name;
389 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
390 *pins = pctl->groups[gid].pins;
391 *num_pins = pctl->groups[gid].npins;
400 struct mvebu_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
411 dev_err(pctl->dev,
418 dev_err(pctl->dev,
430 mvebu_pinctrl_find_group_by_name(pctl, group);
433 dev_err(pctl->dev, "unknown pin %s", group);
437 if (!mvebu_pinctrl_find_setting_by_name(pctl, grp, function)) {
438 dev_err(pctl->dev, "unsupported function %s on pin %s",
492 struct mvebu_pinctrl *pctl)
495 int num = 0, funcsize = pctl->desc.npins;
506 for (n = 0; n < pctl->num_groups; n++) {
507 struct mvebu_pinctrl_group *grp = &pctl->groups[n];
512 if (pctl->variant &&
513 !(pctl->variant & grp->settings[s].variant))
522 pctl->desc.npins);
530 pctl->num_functions = num;
531 pctl->functions = funcs;
533 for (n = 0; n < pctl->num_groups; n++) {
534 struct mvebu_pinctrl_group *grp = &pctl->groups[n];
540 if (pctl->variant &&
541 !(pctl->variant & grp->settings[s].variant))
544 f = mvebu_pinctrl_find_function_by_name(pctl,
571 struct mvebu_pinctrl *pctl;
584 pctl = devm_kzalloc(&pdev->dev, sizeof(struct mvebu_pinctrl),
586 if (!pctl)
589 pctl->desc.name = dev_name(&pdev->dev);
590 pctl->desc.owner = THIS_MODULE;
591 pctl->desc.pctlops = &mvebu_pinctrl_ops;
592 pctl->desc.pmxops = &mvebu_pinmux_ops;
593 pctl->desc.confops = &mvebu_pinconf_ops;
594 pctl->variant = soc->variant;
595 pctl->dev = &pdev->dev;
596 platform_set_drvdata(pdev, pctl);
600 pctl->num_groups = 0;
601 pctl->desc.npins = 0;
605 pctl->desc.npins += ctrl->npins;
616 pctl->num_groups += ctrl->npins;
619 pctl->num_groups += 1;
624 pctl->desc.npins,
630 for (n = 0; n < pctl->desc.npins; n++)
632 pctl->desc.pins = pdesc;
637 size = pctl->num_groups * sizeof(*pctl->groups) + noname * 8;
642 pctl->groups = p;
643 noname_buf = p + pctl->num_groups * sizeof(*pctl->groups);
652 pctl->groups[gid].gid = gid;
653 pctl->groups[gid].ctrl = ctrl;
654 pctl->groups[gid].data = data;
655 pctl->groups[gid].name = ctrl->name;
656 pctl->groups[gid].pins = ctrl->pins;
657 pctl->groups[gid].npins = ctrl->npins;
665 pctl->groups[gid].name = noname_buf;
666 pctl->groups[gid].npins = 1;
672 pctl->groups[gid].gid = gid;
673 pctl->groups[gid].ctrl = ctrl;
674 pctl->groups[gid].data = data;
675 pctl->groups[gid].name = noname_buf;
676 pctl->groups[gid].pins = &ctrl->pins[k];
677 pctl->groups[gid].npins = 1;
700 if (pctl->variant && !(pctl->variant & set->variant))
719 grp = mvebu_pinctrl_find_group_by_pid(pctl, mode->pid);
730 ret = mvebu_pinctrl_build_functions(pdev, pctl);
736 pctl->pctldev = devm_pinctrl_register(&pdev->dev, &pctl->desc, pctl);
737 if (IS_ERR(pctl->pctldev)) {
739 return PTR_ERR(pctl->pctldev);
746 pinctrl_add_gpio_range(pctl->pctldev, &soc->gpioranges[n]);