Lines Matching refs:padctl
96 static inline void padctl_writel(struct tegra_xusb_padctl *padctl, u32 value, in padctl_writel() argument
99 writel(value, padctl->regs + offset); in padctl_writel()
102 static inline u32 padctl_readl(struct tegra_xusb_padctl *padctl, in padctl_readl() argument
105 return readl(padctl->regs + offset); in padctl_readl()
110 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_groups_count() local
112 return padctl->soc->num_pins; in tegra_xusb_padctl_get_groups_count()
118 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_group_name() local
120 return padctl->soc->pins[group].name; in tegra_xusb_padctl_get_group_name()
153 static int tegra_xusb_padctl_parse_subnode(struct tegra_xusb_padctl *padctl, in tegra_xusb_padctl_parse_subnode() argument
185 err = pinctrl_utils_add_config(padctl->pinctrl, &configs, in tegra_xusb_padctl_parse_subnode()
203 err = pinctrl_utils_reserve_map(padctl->pinctrl, maps, reserved_maps, in tegra_xusb_padctl_parse_subnode()
210 err = pinctrl_utils_add_map_mux(padctl->pinctrl, maps, in tegra_xusb_padctl_parse_subnode()
218 err = pinctrl_utils_add_map_configs(padctl->pinctrl, in tegra_xusb_padctl_parse_subnode()
239 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_dt_node_to_map() local
248 err = tegra_xusb_padctl_parse_subnode(padctl, np, maps, in tegra_xusb_padctl_dt_node_to_map()
270 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_functions_count() local
272 return padctl->soc->num_functions; in tegra_xusb_padctl_get_functions_count()
279 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_function_name() local
281 return padctl->soc->functions[function].name; in tegra_xusb_padctl_get_function_name()
289 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_function_groups() local
291 *num_groups = padctl->soc->functions[function].num_groups; in tegra_xusb_padctl_get_function_groups()
292 *groups = padctl->soc->functions[function].groups; in tegra_xusb_padctl_get_function_groups()
301 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_pinmux_set() local
306 lane = &padctl->soc->lanes[group]; in tegra_xusb_padctl_pinmux_set()
315 value = padctl_readl(padctl, lane->offset); in tegra_xusb_padctl_pinmux_set()
318 padctl_writel(padctl, value, lane->offset); in tegra_xusb_padctl_pinmux_set()
334 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_pinconf_group_get() local
340 lane = &padctl->soc->lanes[group]; in tegra_xusb_padctl_pinconf_group_get()
348 value = padctl_readl(padctl, lane->offset); in tegra_xusb_padctl_pinconf_group_get()
359 dev_err(padctl->dev, "invalid configuration parameter: %04x\n", in tegra_xusb_padctl_pinconf_group_get()
372 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_pinconf_group_set() local
379 lane = &padctl->soc->lanes[group]; in tegra_xusb_padctl_pinconf_group_set()
391 regval = padctl_readl(padctl, lane->offset); in tegra_xusb_padctl_pinconf_group_set()
398 padctl_writel(padctl, regval, lane->offset); in tegra_xusb_padctl_pinconf_group_set()
402 dev_err(padctl->dev, in tegra_xusb_padctl_pinconf_group_set()
480 static int tegra_xusb_padctl_enable(struct tegra_xusb_padctl *padctl) in tegra_xusb_padctl_enable() argument
484 mutex_lock(&padctl->lock); in tegra_xusb_padctl_enable()
486 if (padctl->enable++ > 0) in tegra_xusb_padctl_enable()
489 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
491 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
495 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
497 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
501 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
503 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
506 mutex_unlock(&padctl->lock); in tegra_xusb_padctl_enable()
510 static int tegra_xusb_padctl_disable(struct tegra_xusb_padctl *padctl) in tegra_xusb_padctl_disable() argument
514 mutex_lock(&padctl->lock); in tegra_xusb_padctl_disable()
516 if (WARN_ON(padctl->enable == 0)) in tegra_xusb_padctl_disable()
519 if (--padctl->enable > 0) in tegra_xusb_padctl_disable()
522 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
524 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
528 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
530 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
534 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
536 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
539 mutex_unlock(&padctl->lock); in tegra_xusb_padctl_disable()
545 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in tegra_xusb_phy_init() local
547 return tegra_xusb_padctl_enable(padctl); in tegra_xusb_phy_init()
552 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in tegra_xusb_phy_exit() local
554 return tegra_xusb_padctl_disable(padctl); in tegra_xusb_phy_exit()
559 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in pcie_phy_power_on() local
564 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
566 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
568 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL2); in pcie_phy_power_on()
572 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL2); in pcie_phy_power_on()
574 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
576 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
581 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
595 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in pcie_phy_power_off() local
598 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_off()
600 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_off()
615 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in sata_phy_power_on() local
620 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_on()
623 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_on()
625 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
628 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
630 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
632 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
634 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
636 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
641 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
655 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in sata_phy_power_off() local
658 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
660 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
662 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
664 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
666 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_MISC_PAD_S0_CTL1); in sata_phy_power_off()
674 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_off()
690 struct tegra_xusb_padctl *padctl = dev_get_drvdata(dev); in tegra_xusb_padctl_xlate() local
696 if (index >= ARRAY_SIZE(padctl->phys)) in tegra_xusb_padctl_xlate()
699 return padctl->phys[index]; in tegra_xusb_padctl_xlate()
877 struct tegra_xusb_padctl *padctl; in tegra_xusb_padctl_legacy_probe() local
882 padctl = devm_kzalloc(&pdev->dev, sizeof(*padctl), GFP_KERNEL); in tegra_xusb_padctl_legacy_probe()
883 if (!padctl) in tegra_xusb_padctl_legacy_probe()
886 platform_set_drvdata(pdev, padctl); in tegra_xusb_padctl_legacy_probe()
887 mutex_init(&padctl->lock); in tegra_xusb_padctl_legacy_probe()
888 padctl->dev = &pdev->dev; in tegra_xusb_padctl_legacy_probe()
897 padctl->soc = match->data; in tegra_xusb_padctl_legacy_probe()
899 padctl->regs = devm_platform_ioremap_resource(pdev, 0); in tegra_xusb_padctl_legacy_probe()
900 if (IS_ERR(padctl->regs)) in tegra_xusb_padctl_legacy_probe()
901 return PTR_ERR(padctl->regs); in tegra_xusb_padctl_legacy_probe()
903 padctl->rst = devm_reset_control_get_exclusive(&pdev->dev, NULL); in tegra_xusb_padctl_legacy_probe()
904 if (IS_ERR(padctl->rst)) in tegra_xusb_padctl_legacy_probe()
905 return PTR_ERR(padctl->rst); in tegra_xusb_padctl_legacy_probe()
907 err = reset_control_deassert(padctl->rst); in tegra_xusb_padctl_legacy_probe()
911 memset(&padctl->desc, 0, sizeof(padctl->desc)); in tegra_xusb_padctl_legacy_probe()
912 padctl->desc.name = dev_name(padctl->dev); in tegra_xusb_padctl_legacy_probe()
913 padctl->desc.pins = tegra124_pins; in tegra_xusb_padctl_legacy_probe()
914 padctl->desc.npins = ARRAY_SIZE(tegra124_pins); in tegra_xusb_padctl_legacy_probe()
915 padctl->desc.pctlops = &tegra_xusb_padctl_pinctrl_ops; in tegra_xusb_padctl_legacy_probe()
916 padctl->desc.pmxops = &tegra_xusb_padctl_pinmux_ops; in tegra_xusb_padctl_legacy_probe()
917 padctl->desc.confops = &tegra_xusb_padctl_pinconf_ops; in tegra_xusb_padctl_legacy_probe()
918 padctl->desc.owner = THIS_MODULE; in tegra_xusb_padctl_legacy_probe()
920 padctl->pinctrl = devm_pinctrl_register(&pdev->dev, &padctl->desc, in tegra_xusb_padctl_legacy_probe()
921 padctl); in tegra_xusb_padctl_legacy_probe()
922 if (IS_ERR(padctl->pinctrl)) { in tegra_xusb_padctl_legacy_probe()
924 err = PTR_ERR(padctl->pinctrl); in tegra_xusb_padctl_legacy_probe()
934 padctl->phys[TEGRA_XUSB_PADCTL_PCIE] = phy; in tegra_xusb_padctl_legacy_probe()
935 phy_set_drvdata(phy, padctl); in tegra_xusb_padctl_legacy_probe()
943 padctl->phys[TEGRA_XUSB_PADCTL_SATA] = phy; in tegra_xusb_padctl_legacy_probe()
944 phy_set_drvdata(phy, padctl); in tegra_xusb_padctl_legacy_probe()
946 padctl->provider = devm_of_phy_provider_register(&pdev->dev, in tegra_xusb_padctl_legacy_probe()
948 if (IS_ERR(padctl->provider)) { in tegra_xusb_padctl_legacy_probe()
949 err = PTR_ERR(padctl->provider); in tegra_xusb_padctl_legacy_probe()
957 reset_control_assert(padctl->rst); in tegra_xusb_padctl_legacy_probe()
964 struct tegra_xusb_padctl *padctl = platform_get_drvdata(pdev); in tegra_xusb_padctl_legacy_remove() local
967 err = reset_control_assert(padctl->rst); in tegra_xusb_padctl_legacy_remove()