Lines Matching refs:padctl
101 static inline void padctl_writel(struct tegra_xusb_padctl *padctl, u32 value, in padctl_writel() argument
104 writel(value, padctl->regs + offset); in padctl_writel()
107 static inline u32 padctl_readl(struct tegra_xusb_padctl *padctl, in padctl_readl() argument
110 return readl(padctl->regs + offset); in padctl_readl()
115 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_groups_count() local
117 return padctl->soc->num_pins; in tegra_xusb_padctl_get_groups_count()
123 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_group_name() local
125 return padctl->soc->pins[group].name; in tegra_xusb_padctl_get_group_name()
158 static int tegra_xusb_padctl_parse_subnode(struct tegra_xusb_padctl *padctl, in tegra_xusb_padctl_parse_subnode() argument
190 err = pinctrl_utils_add_config(padctl->pinctrl, &configs, in tegra_xusb_padctl_parse_subnode()
208 err = pinctrl_utils_reserve_map(padctl->pinctrl, maps, reserved_maps, in tegra_xusb_padctl_parse_subnode()
215 err = pinctrl_utils_add_map_mux(padctl->pinctrl, maps, in tegra_xusb_padctl_parse_subnode()
223 err = pinctrl_utils_add_map_configs(padctl->pinctrl, in tegra_xusb_padctl_parse_subnode()
244 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_dt_node_to_map() local
253 err = tegra_xusb_padctl_parse_subnode(padctl, np, maps, in tegra_xusb_padctl_dt_node_to_map()
273 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_functions_count() local
275 return padctl->soc->num_functions; in tegra_xusb_padctl_get_functions_count()
282 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_function_name() local
284 return padctl->soc->functions[function].name; in tegra_xusb_padctl_get_function_name()
292 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_function_groups() local
294 *num_groups = padctl->soc->functions[function].num_groups; in tegra_xusb_padctl_get_function_groups()
295 *groups = padctl->soc->functions[function].groups; in tegra_xusb_padctl_get_function_groups()
304 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_pinmux_set() local
309 lane = &padctl->soc->lanes[group]; in tegra_xusb_padctl_pinmux_set()
318 value = padctl_readl(padctl, lane->offset); in tegra_xusb_padctl_pinmux_set()
321 padctl_writel(padctl, value, lane->offset); in tegra_xusb_padctl_pinmux_set()
337 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_pinconf_group_get() local
343 lane = &padctl->soc->lanes[group]; in tegra_xusb_padctl_pinconf_group_get()
351 value = padctl_readl(padctl, lane->offset); in tegra_xusb_padctl_pinconf_group_get()
362 dev_err(padctl->dev, "invalid configuration parameter: %04x\n", in tegra_xusb_padctl_pinconf_group_get()
375 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_pinconf_group_set() local
382 lane = &padctl->soc->lanes[group]; in tegra_xusb_padctl_pinconf_group_set()
394 regval = padctl_readl(padctl, lane->offset); in tegra_xusb_padctl_pinconf_group_set()
401 padctl_writel(padctl, regval, lane->offset); in tegra_xusb_padctl_pinconf_group_set()
405 dev_err(padctl->dev, in tegra_xusb_padctl_pinconf_group_set()
483 static int tegra_xusb_padctl_enable(struct tegra_xusb_padctl *padctl) in tegra_xusb_padctl_enable() argument
487 mutex_lock(&padctl->lock); in tegra_xusb_padctl_enable()
489 if (padctl->enable++ > 0) in tegra_xusb_padctl_enable()
492 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
494 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
498 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
500 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
504 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
506 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
509 mutex_unlock(&padctl->lock); in tegra_xusb_padctl_enable()
513 static int tegra_xusb_padctl_disable(struct tegra_xusb_padctl *padctl) in tegra_xusb_padctl_disable() argument
517 mutex_lock(&padctl->lock); in tegra_xusb_padctl_disable()
519 if (WARN_ON(padctl->enable == 0)) in tegra_xusb_padctl_disable()
522 if (--padctl->enable > 0) in tegra_xusb_padctl_disable()
525 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
527 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
531 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
533 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
537 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
539 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
542 mutex_unlock(&padctl->lock); in tegra_xusb_padctl_disable()
548 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in tegra_xusb_phy_init() local
550 return tegra_xusb_padctl_enable(padctl); in tegra_xusb_phy_init()
555 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in tegra_xusb_phy_exit() local
557 return tegra_xusb_padctl_disable(padctl); in tegra_xusb_phy_exit()
562 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in pcie_phy_power_on() local
567 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
569 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
571 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL2); in pcie_phy_power_on()
575 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL2); in pcie_phy_power_on()
577 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
579 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
584 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
598 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in pcie_phy_power_off() local
601 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_off()
603 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_off()
618 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in sata_phy_power_on() local
623 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_on()
626 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_on()
628 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
631 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
633 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
635 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
637 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
639 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
644 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
658 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in sata_phy_power_off() local
661 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
663 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
665 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
667 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
669 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
672 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
674 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_off()
677 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_off()
693 struct tegra_xusb_padctl *padctl = dev_get_drvdata(dev); in tegra_xusb_padctl_xlate() local
699 if (index >= ARRAY_SIZE(padctl->phys)) in tegra_xusb_padctl_xlate()
702 return padctl->phys[index]; in tegra_xusb_padctl_xlate()
876 struct tegra_xusb_padctl *padctl; in tegra_xusb_padctl_probe() local
882 padctl = devm_kzalloc(&pdev->dev, sizeof(*padctl), GFP_KERNEL); in tegra_xusb_padctl_probe()
883 if (!padctl) in tegra_xusb_padctl_probe()
886 platform_set_drvdata(pdev, padctl); in tegra_xusb_padctl_probe()
887 mutex_init(&padctl->lock); in tegra_xusb_padctl_probe()
888 padctl->dev = &pdev->dev; in tegra_xusb_padctl_probe()
891 padctl->soc = match->data; in tegra_xusb_padctl_probe()
894 padctl->regs = devm_ioremap_resource(&pdev->dev, res); in tegra_xusb_padctl_probe()
895 if (IS_ERR(padctl->regs)) in tegra_xusb_padctl_probe()
896 return PTR_ERR(padctl->regs); in tegra_xusb_padctl_probe()
898 padctl->rst = devm_reset_control_get(&pdev->dev, NULL); in tegra_xusb_padctl_probe()
899 if (IS_ERR(padctl->rst)) in tegra_xusb_padctl_probe()
900 return PTR_ERR(padctl->rst); in tegra_xusb_padctl_probe()
902 err = reset_control_deassert(padctl->rst); in tegra_xusb_padctl_probe()
906 memset(&padctl->desc, 0, sizeof(padctl->desc)); in tegra_xusb_padctl_probe()
907 padctl->desc.name = dev_name(padctl->dev); in tegra_xusb_padctl_probe()
908 padctl->desc.pins = tegra124_pins; in tegra_xusb_padctl_probe()
909 padctl->desc.npins = ARRAY_SIZE(tegra124_pins); in tegra_xusb_padctl_probe()
910 padctl->desc.pctlops = &tegra_xusb_padctl_pinctrl_ops; in tegra_xusb_padctl_probe()
911 padctl->desc.pmxops = &tegra_xusb_padctl_pinmux_ops; in tegra_xusb_padctl_probe()
912 padctl->desc.confops = &tegra_xusb_padctl_pinconf_ops; in tegra_xusb_padctl_probe()
913 padctl->desc.owner = THIS_MODULE; in tegra_xusb_padctl_probe()
915 padctl->pinctrl = pinctrl_register(&padctl->desc, &pdev->dev, padctl); in tegra_xusb_padctl_probe()
916 if (IS_ERR(padctl->pinctrl)) { in tegra_xusb_padctl_probe()
918 err = PTR_ERR(padctl->pinctrl); in tegra_xusb_padctl_probe()
928 padctl->phys[TEGRA_XUSB_PADCTL_PCIE] = phy; in tegra_xusb_padctl_probe()
929 phy_set_drvdata(phy, padctl); in tegra_xusb_padctl_probe()
937 padctl->phys[TEGRA_XUSB_PADCTL_SATA] = phy; in tegra_xusb_padctl_probe()
938 phy_set_drvdata(phy, padctl); in tegra_xusb_padctl_probe()
940 padctl->provider = devm_of_phy_provider_register(&pdev->dev, in tegra_xusb_padctl_probe()
942 if (IS_ERR(padctl->provider)) { in tegra_xusb_padctl_probe()
943 err = PTR_ERR(padctl->provider); in tegra_xusb_padctl_probe()
951 pinctrl_unregister(padctl->pinctrl); in tegra_xusb_padctl_probe()
953 reset_control_assert(padctl->rst); in tegra_xusb_padctl_probe()
959 struct tegra_xusb_padctl *padctl = platform_get_drvdata(pdev); in tegra_xusb_padctl_remove() local
962 pinctrl_unregister(padctl->pinctrl); in tegra_xusb_padctl_remove()
964 err = reset_control_assert(padctl->rst); in tegra_xusb_padctl_remove()