Lines Matching refs:pinctrl

31 #include <linux/pinctrl/pinconf.h>
32 #include <linux/pinctrl/pinconf-generic.h>
33 #include <linux/pinctrl/pinctrl.h>
34 #include <linux/pinctrl/pinmux.h>
39 #include "../pinctrl-utils.h"
100 * nsp IOMUX pinctrl core
320 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
322 return pinctrl->num_groups;
328 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
330 return pinctrl->groups[selector].name;
337 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
339 *pins = pinctrl->groups[selector].pins;
340 *num_pins = pinctrl->groups[selector].num_pins;
362 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
364 return pinctrl->num_functions;
370 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
372 return pinctrl->functions[selector].name;
380 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
382 *groups = pinctrl->functions[selector].groups;
383 *num_groups = pinctrl->functions[selector].num_groups;
388 static int nsp_pinmux_set(struct nsp_pinctrl *pinctrl,
399 for (i = 0; i < pinctrl->num_groups; i++) {
413 dev_err(pinctrl->dev,
415 dev_err(pinctrl->dev, "func:%s grp:%s\n",
422 if (i == pinctrl->num_groups)
431 base_address = pinctrl->base0;
435 base_address = pinctrl->base1;
439 base_address = pinctrl->base2;
446 spin_lock_irqsave(&pinctrl->lock, flags);
451 spin_unlock_irqrestore(&pinctrl->lock, flags);
459 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
463 if (grp_select >= pinctrl->num_groups ||
464 func_select >= pinctrl->num_functions)
467 func = &pinctrl->functions[func_select];
468 grp = &pinctrl->groups[grp_select];
476 return nsp_pinmux_set(pinctrl, func, grp, pinctrl->mux_log);
484 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
489 spin_lock_irqsave(&pinctrl->lock, flags);
490 val = readl(pinctrl->base0);
494 writel(val, pinctrl->base0);
496 spin_unlock_irqrestore(&pinctrl->lock, flags);
505 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
510 spin_lock_irqsave(&pinctrl->lock, flags);
511 val = readl(pinctrl->base0);
516 writel(val, pinctrl->base0);
518 spin_unlock_irqrestore(&pinctrl->lock, flags);
536 static int nsp_mux_log_init(struct nsp_pinctrl *pinctrl)
542 pinctrl->mux_log = devm_kcalloc(pinctrl->dev, no_of_groups,
545 if (!pinctrl->mux_log)
549 log = &pinctrl->mux_log[i];
561 struct nsp_pinctrl *pinctrl;
567 pinctrl = devm_kzalloc(&pdev->dev, sizeof(*pinctrl), GFP_KERNEL);
568 if (!pinctrl)
570 pinctrl->dev = &pdev->dev;
571 platform_set_drvdata(pdev, pinctrl);
572 spin_lock_init(&pinctrl->lock);
574 pinctrl->base0 = devm_platform_ioremap_resource(pdev, 0);
575 if (IS_ERR(pinctrl->base0))
576 return PTR_ERR(pinctrl->base0);
581 pinctrl->base1 = devm_ioremap(&pdev->dev, res->start,
583 if (!pinctrl->base1) {
588 pinctrl->base2 = devm_platform_ioremap_resource(pdev, 2);
589 if (IS_ERR(pinctrl->base2))
590 return PTR_ERR(pinctrl->base2);
592 ret = nsp_mux_log_init(pinctrl);
608 pinctrl->groups = nsp_pin_groups;
609 pinctrl->num_groups = ARRAY_SIZE(nsp_pin_groups);
610 pinctrl->functions = nsp_pin_functions;
611 pinctrl->num_functions = ARRAY_SIZE(nsp_pin_functions);
615 pinctrl->pctl = devm_pinctrl_register(&pdev->dev, &nsp_pinctrl_desc,
616 pinctrl);
617 if (IS_ERR(pinctrl->pctl)) {
618 dev_err(&pdev->dev, "unable to register nsp IOMUX pinctrl\n");
619 return PTR_ERR(pinctrl->pctl);