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()
275 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_functions_count() local
277 return padctl->soc->num_functions; in tegra_xusb_padctl_get_functions_count()
284 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_function_name() local
286 return padctl->soc->functions[function].name; in tegra_xusb_padctl_get_function_name()
294 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_function_groups() local
296 *num_groups = padctl->soc->functions[function].num_groups; in tegra_xusb_padctl_get_function_groups()
297 *groups = padctl->soc->functions[function].groups; in tegra_xusb_padctl_get_function_groups()
306 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_pinmux_set() local
311 lane = &padctl->soc->lanes[group]; in tegra_xusb_padctl_pinmux_set()
320 value = padctl_readl(padctl, lane->offset); in tegra_xusb_padctl_pinmux_set()
323 padctl_writel(padctl, value, lane->offset); in tegra_xusb_padctl_pinmux_set()
339 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_pinconf_group_get() local
345 lane = &padctl->soc->lanes[group]; in tegra_xusb_padctl_pinconf_group_get()
353 value = padctl_readl(padctl, lane->offset); in tegra_xusb_padctl_pinconf_group_get()
364 dev_err(padctl->dev, "invalid configuration parameter: %04x\n", in tegra_xusb_padctl_pinconf_group_get()
377 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_pinconf_group_set() local
384 lane = &padctl->soc->lanes[group]; in tegra_xusb_padctl_pinconf_group_set()
396 regval = padctl_readl(padctl, lane->offset); in tegra_xusb_padctl_pinconf_group_set()
403 padctl_writel(padctl, regval, lane->offset); in tegra_xusb_padctl_pinconf_group_set()
407 dev_err(padctl->dev, in tegra_xusb_padctl_pinconf_group_set()
485 static int tegra_xusb_padctl_enable(struct tegra_xusb_padctl *padctl) in tegra_xusb_padctl_enable() argument
489 mutex_lock(&padctl->lock); in tegra_xusb_padctl_enable()
491 if (padctl->enable++ > 0) in tegra_xusb_padctl_enable()
494 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
496 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
500 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
502 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
506 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
508 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
511 mutex_unlock(&padctl->lock); in tegra_xusb_padctl_enable()
515 static int tegra_xusb_padctl_disable(struct tegra_xusb_padctl *padctl) in tegra_xusb_padctl_disable() argument
519 mutex_lock(&padctl->lock); in tegra_xusb_padctl_disable()
521 if (WARN_ON(padctl->enable == 0)) in tegra_xusb_padctl_disable()
524 if (--padctl->enable > 0) in tegra_xusb_padctl_disable()
527 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
529 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
533 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
535 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
539 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
541 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
544 mutex_unlock(&padctl->lock); in tegra_xusb_padctl_disable()
550 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in tegra_xusb_phy_init() local
552 return tegra_xusb_padctl_enable(padctl); in tegra_xusb_phy_init()
557 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in tegra_xusb_phy_exit() local
559 return tegra_xusb_padctl_disable(padctl); in tegra_xusb_phy_exit()
564 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in pcie_phy_power_on() local
569 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
571 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
573 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL2); in pcie_phy_power_on()
577 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL2); in pcie_phy_power_on()
579 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
581 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
586 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
600 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in pcie_phy_power_off() local
603 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_off()
605 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_off()
620 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in sata_phy_power_on() local
625 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_on()
628 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_on()
630 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
633 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
635 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
637 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
639 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
641 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
646 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
660 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in sata_phy_power_off() local
663 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
665 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
667 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
669 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
671 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
674 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
676 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_off()
679 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_off()
695 struct tegra_xusb_padctl *padctl = dev_get_drvdata(dev); in tegra_xusb_padctl_xlate() local
701 if (index >= ARRAY_SIZE(padctl->phys)) in tegra_xusb_padctl_xlate()
704 return padctl->phys[index]; in tegra_xusb_padctl_xlate()
882 struct tegra_xusb_padctl *padctl; in tegra_xusb_padctl_legacy_probe() local
888 padctl = devm_kzalloc(&pdev->dev, sizeof(*padctl), GFP_KERNEL); in tegra_xusb_padctl_legacy_probe()
889 if (!padctl) in tegra_xusb_padctl_legacy_probe()
892 platform_set_drvdata(pdev, padctl); in tegra_xusb_padctl_legacy_probe()
893 mutex_init(&padctl->lock); in tegra_xusb_padctl_legacy_probe()
894 padctl->dev = &pdev->dev; in tegra_xusb_padctl_legacy_probe()
897 padctl->soc = match->data; in tegra_xusb_padctl_legacy_probe()
900 padctl->regs = devm_ioremap_resource(&pdev->dev, res); in tegra_xusb_padctl_legacy_probe()
901 if (IS_ERR(padctl->regs)) in tegra_xusb_padctl_legacy_probe()
902 return PTR_ERR(padctl->regs); in tegra_xusb_padctl_legacy_probe()
904 padctl->rst = devm_reset_control_get_exclusive(&pdev->dev, NULL); in tegra_xusb_padctl_legacy_probe()
905 if (IS_ERR(padctl->rst)) in tegra_xusb_padctl_legacy_probe()
906 return PTR_ERR(padctl->rst); in tegra_xusb_padctl_legacy_probe()
908 err = reset_control_deassert(padctl->rst); in tegra_xusb_padctl_legacy_probe()
912 memset(&padctl->desc, 0, sizeof(padctl->desc)); in tegra_xusb_padctl_legacy_probe()
913 padctl->desc.name = dev_name(padctl->dev); in tegra_xusb_padctl_legacy_probe()
914 padctl->desc.pins = tegra124_pins; in tegra_xusb_padctl_legacy_probe()
915 padctl->desc.npins = ARRAY_SIZE(tegra124_pins); in tegra_xusb_padctl_legacy_probe()
916 padctl->desc.pctlops = &tegra_xusb_padctl_pinctrl_ops; in tegra_xusb_padctl_legacy_probe()
917 padctl->desc.pmxops = &tegra_xusb_padctl_pinmux_ops; in tegra_xusb_padctl_legacy_probe()
918 padctl->desc.confops = &tegra_xusb_padctl_pinconf_ops; in tegra_xusb_padctl_legacy_probe()
919 padctl->desc.owner = THIS_MODULE; in tegra_xusb_padctl_legacy_probe()
921 padctl->pinctrl = devm_pinctrl_register(&pdev->dev, &padctl->desc, in tegra_xusb_padctl_legacy_probe()
922 padctl); in tegra_xusb_padctl_legacy_probe()
923 if (IS_ERR(padctl->pinctrl)) { in tegra_xusb_padctl_legacy_probe()
925 err = PTR_ERR(padctl->pinctrl); in tegra_xusb_padctl_legacy_probe()
935 padctl->phys[TEGRA_XUSB_PADCTL_PCIE] = phy; in tegra_xusb_padctl_legacy_probe()
936 phy_set_drvdata(phy, padctl); in tegra_xusb_padctl_legacy_probe()
944 padctl->phys[TEGRA_XUSB_PADCTL_SATA] = phy; in tegra_xusb_padctl_legacy_probe()
945 phy_set_drvdata(phy, padctl); in tegra_xusb_padctl_legacy_probe()
947 padctl->provider = devm_of_phy_provider_register(&pdev->dev, in tegra_xusb_padctl_legacy_probe()
949 if (IS_ERR(padctl->provider)) { in tegra_xusb_padctl_legacy_probe()
950 err = PTR_ERR(padctl->provider); in tegra_xusb_padctl_legacy_probe()
958 reset_control_assert(padctl->rst); in tegra_xusb_padctl_legacy_probe()
965 struct tegra_xusb_padctl *padctl = platform_get_drvdata(pdev); in tegra_xusb_padctl_legacy_remove() local
968 err = reset_control_assert(padctl->rst); in tegra_xusb_padctl_legacy_remove()