Lines Matching refs:pinctrl
707 struct cygnus_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev); in cygnus_get_groups_count() local
709 return pinctrl->num_groups; in cygnus_get_groups_count()
715 struct cygnus_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev); in cygnus_get_group_name() local
717 return pinctrl->groups[selector].name; in cygnus_get_group_name()
724 struct cygnus_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev); in cygnus_get_group_pins() local
726 *pins = pinctrl->groups[selector].pins; in cygnus_get_group_pins()
727 *num_pins = pinctrl->groups[selector].num_pins; in cygnus_get_group_pins()
749 struct cygnus_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev); in cygnus_get_functions_count() local
751 return pinctrl->num_functions; in cygnus_get_functions_count()
757 struct cygnus_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev); in cygnus_get_function_name() local
759 return pinctrl->functions[selector].name; in cygnus_get_function_name()
767 struct cygnus_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev); in cygnus_get_function_groups() local
769 *groups = pinctrl->functions[selector].groups; in cygnus_get_function_groups()
770 *num_groups = pinctrl->functions[selector].num_groups; in cygnus_get_function_groups()
775 static int cygnus_pinmux_set(struct cygnus_pinctrl *pinctrl, in cygnus_pinmux_set() argument
801 dev_err(pinctrl->dev, in cygnus_pinmux_set()
803 dev_err(pinctrl->dev, "func:%s grp:%s\n", in cygnus_pinmux_set()
818 spin_lock_irqsave(&pinctrl->lock, flags); in cygnus_pinmux_set()
820 val = readl(pinctrl->base0 + grp->mux.offset); in cygnus_pinmux_set()
823 writel(val, pinctrl->base0 + grp->mux.offset); in cygnus_pinmux_set()
825 spin_unlock_irqrestore(&pinctrl->lock, flags); in cygnus_pinmux_set()
833 struct cygnus_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev); in cygnus_pinmux_set_mux() local
835 &pinctrl->functions[func_select]; in cygnus_pinmux_set_mux()
836 const struct cygnus_pin_group *grp = &pinctrl->groups[grp_select]; in cygnus_pinmux_set_mux()
844 return cygnus_pinmux_set(pinctrl, func, grp, pinctrl->mux_log); in cygnus_pinmux_set_mux()
851 struct cygnus_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev); in cygnus_gpio_request_enable() local
860 spin_lock_irqsave(&pinctrl->lock, flags); in cygnus_gpio_request_enable()
862 val = readl(pinctrl->base1 + mux->offset); in cygnus_gpio_request_enable()
864 writel(val, pinctrl->base1 + mux->offset); in cygnus_gpio_request_enable()
866 spin_unlock_irqrestore(&pinctrl->lock, flags); in cygnus_gpio_request_enable()
879 struct cygnus_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev); in cygnus_gpio_disable_free() local
887 spin_lock_irqsave(&pinctrl->lock, flags); in cygnus_gpio_disable_free()
889 val = readl(pinctrl->base1 + mux->offset); in cygnus_gpio_disable_free()
891 writel(val, pinctrl->base1 + mux->offset); in cygnus_gpio_disable_free()
893 spin_unlock_irqrestore(&pinctrl->lock, flags); in cygnus_gpio_disable_free()
915 static int cygnus_mux_log_init(struct cygnus_pinctrl *pinctrl) in cygnus_mux_log_init() argument
920 pinctrl->mux_log = devm_kcalloc(pinctrl->dev, CYGNUS_NUM_IOMUX, in cygnus_mux_log_init()
923 if (!pinctrl->mux_log) in cygnus_mux_log_init()
926 log = pinctrl->mux_log; in cygnus_mux_log_init()
929 log = &pinctrl->mux_log[i * CYGNUS_NUM_MUX_PER_REG in cygnus_mux_log_init()
943 struct cygnus_pinctrl *pinctrl; in cygnus_pinmux_probe() local
949 pinctrl = devm_kzalloc(&pdev->dev, sizeof(*pinctrl), GFP_KERNEL); in cygnus_pinmux_probe()
950 if (!pinctrl) in cygnus_pinmux_probe()
953 pinctrl->dev = &pdev->dev; in cygnus_pinmux_probe()
954 platform_set_drvdata(pdev, pinctrl); in cygnus_pinmux_probe()
955 spin_lock_init(&pinctrl->lock); in cygnus_pinmux_probe()
958 pinctrl->base0 = devm_ioremap_resource(&pdev->dev, res); in cygnus_pinmux_probe()
959 if (IS_ERR(pinctrl->base0)) { in cygnus_pinmux_probe()
961 return PTR_ERR(pinctrl->base0); in cygnus_pinmux_probe()
965 pinctrl->base1 = devm_ioremap_resource(&pdev->dev, res); in cygnus_pinmux_probe()
966 if (IS_ERR(pinctrl->base1)) { in cygnus_pinmux_probe()
968 return PTR_ERR(pinctrl->base1); in cygnus_pinmux_probe()
971 ret = cygnus_mux_log_init(pinctrl); in cygnus_pinmux_probe()
987 pinctrl->groups = cygnus_pin_groups; in cygnus_pinmux_probe()
988 pinctrl->num_groups = ARRAY_SIZE(cygnus_pin_groups); in cygnus_pinmux_probe()
989 pinctrl->functions = cygnus_pin_functions; in cygnus_pinmux_probe()
990 pinctrl->num_functions = ARRAY_SIZE(cygnus_pin_functions); in cygnus_pinmux_probe()
994 pinctrl->pctl = devm_pinctrl_register(&pdev->dev, &cygnus_pinctrl_desc, in cygnus_pinmux_probe()
995 pinctrl); in cygnus_pinmux_probe()
996 if (IS_ERR(pinctrl->pctl)) { in cygnus_pinmux_probe()
998 return PTR_ERR(pinctrl->pctl); in cygnus_pinmux_probe()