Lines Matching refs:padctl
93 static inline void padctl_writel(struct tegra_xusb_padctl *padctl, u32 value, in padctl_writel() argument
96 writel(value, padctl->regs + offset); in padctl_writel()
99 static inline u32 padctl_readl(struct tegra_xusb_padctl *padctl, in padctl_readl() argument
102 return readl(padctl->regs + offset); in padctl_readl()
107 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_groups_count() local
109 return padctl->soc->num_pins; in tegra_xusb_padctl_get_groups_count()
115 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_group_name() local
117 return padctl->soc->pins[group].name; in tegra_xusb_padctl_get_group_name()
150 static int tegra_xusb_padctl_parse_subnode(struct tegra_xusb_padctl *padctl, in tegra_xusb_padctl_parse_subnode() argument
182 err = pinctrl_utils_add_config(padctl->pinctrl, &configs, in tegra_xusb_padctl_parse_subnode()
200 err = pinctrl_utils_reserve_map(padctl->pinctrl, maps, reserved_maps, in tegra_xusb_padctl_parse_subnode()
207 err = pinctrl_utils_add_map_mux(padctl->pinctrl, maps, in tegra_xusb_padctl_parse_subnode()
215 err = pinctrl_utils_add_map_configs(padctl->pinctrl, in tegra_xusb_padctl_parse_subnode()
236 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_dt_node_to_map() local
245 err = tegra_xusb_padctl_parse_subnode(padctl, np, maps, in tegra_xusb_padctl_dt_node_to_map()
267 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_functions_count() local
269 return padctl->soc->num_functions; in tegra_xusb_padctl_get_functions_count()
276 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_function_name() local
278 return padctl->soc->functions[function].name; in tegra_xusb_padctl_get_function_name()
286 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_function_groups() local
288 *num_groups = padctl->soc->functions[function].num_groups; in tegra_xusb_padctl_get_function_groups()
289 *groups = padctl->soc->functions[function].groups; in tegra_xusb_padctl_get_function_groups()
298 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_pinmux_set() local
303 lane = &padctl->soc->lanes[group]; in tegra_xusb_padctl_pinmux_set()
312 value = padctl_readl(padctl, lane->offset); in tegra_xusb_padctl_pinmux_set()
315 padctl_writel(padctl, value, lane->offset); in tegra_xusb_padctl_pinmux_set()
331 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_pinconf_group_get() local
337 lane = &padctl->soc->lanes[group]; in tegra_xusb_padctl_pinconf_group_get()
345 value = padctl_readl(padctl, lane->offset); in tegra_xusb_padctl_pinconf_group_get()
356 dev_err(padctl->dev, "invalid configuration parameter: %04x\n", in tegra_xusb_padctl_pinconf_group_get()
369 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_pinconf_group_set() local
376 lane = &padctl->soc->lanes[group]; in tegra_xusb_padctl_pinconf_group_set()
388 regval = padctl_readl(padctl, lane->offset); in tegra_xusb_padctl_pinconf_group_set()
395 padctl_writel(padctl, regval, lane->offset); in tegra_xusb_padctl_pinconf_group_set()
399 dev_err(padctl->dev, in tegra_xusb_padctl_pinconf_group_set()
477 static int tegra_xusb_padctl_enable(struct tegra_xusb_padctl *padctl) in tegra_xusb_padctl_enable() argument
481 mutex_lock(&padctl->lock); in tegra_xusb_padctl_enable()
483 if (padctl->enable++ > 0) in tegra_xusb_padctl_enable()
486 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
488 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); 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()
503 mutex_unlock(&padctl->lock); in tegra_xusb_padctl_enable()
507 static int tegra_xusb_padctl_disable(struct tegra_xusb_padctl *padctl) in tegra_xusb_padctl_disable() argument
511 mutex_lock(&padctl->lock); in tegra_xusb_padctl_disable()
513 if (WARN_ON(padctl->enable == 0)) in tegra_xusb_padctl_disable()
516 if (--padctl->enable > 0) in tegra_xusb_padctl_disable()
519 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
521 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); 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()
536 mutex_unlock(&padctl->lock); in tegra_xusb_padctl_disable()
542 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in tegra_xusb_phy_init() local
544 return tegra_xusb_padctl_enable(padctl); in tegra_xusb_phy_init()
549 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in tegra_xusb_phy_exit() local
551 return tegra_xusb_padctl_disable(padctl); in tegra_xusb_phy_exit()
556 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in pcie_phy_power_on() local
561 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
563 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
565 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL2); in pcie_phy_power_on()
569 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL2); in pcie_phy_power_on()
571 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
573 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
578 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
592 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in pcie_phy_power_off() local
595 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_off()
597 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_off()
612 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in sata_phy_power_on() local
617 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_on()
620 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_on()
622 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
625 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
627 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
629 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
631 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()
638 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
652 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in sata_phy_power_off() local
655 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
657 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
659 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
661 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
663 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
666 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
668 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_off()
671 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_off()
687 struct tegra_xusb_padctl *padctl = dev_get_drvdata(dev); in tegra_xusb_padctl_xlate() local
693 if (index >= ARRAY_SIZE(padctl->phys)) in tegra_xusb_padctl_xlate()
696 return padctl->phys[index]; in tegra_xusb_padctl_xlate()
874 struct tegra_xusb_padctl *padctl; in tegra_xusb_padctl_legacy_probe() local
879 padctl = devm_kzalloc(&pdev->dev, sizeof(*padctl), GFP_KERNEL); in tegra_xusb_padctl_legacy_probe()
880 if (!padctl) in tegra_xusb_padctl_legacy_probe()
883 platform_set_drvdata(pdev, padctl); in tegra_xusb_padctl_legacy_probe()
884 mutex_init(&padctl->lock); in tegra_xusb_padctl_legacy_probe()
885 padctl->dev = &pdev->dev; in tegra_xusb_padctl_legacy_probe()
894 padctl->soc = match->data; in tegra_xusb_padctl_legacy_probe()
896 padctl->regs = devm_platform_ioremap_resource(pdev, 0); in tegra_xusb_padctl_legacy_probe()
897 if (IS_ERR(padctl->regs)) in tegra_xusb_padctl_legacy_probe()
898 return PTR_ERR(padctl->regs); in tegra_xusb_padctl_legacy_probe()
900 padctl->rst = devm_reset_control_get_exclusive(&pdev->dev, NULL); in tegra_xusb_padctl_legacy_probe()
901 if (IS_ERR(padctl->rst)) in tegra_xusb_padctl_legacy_probe()
902 return PTR_ERR(padctl->rst); in tegra_xusb_padctl_legacy_probe()
904 err = reset_control_deassert(padctl->rst); in tegra_xusb_padctl_legacy_probe()
908 memset(&padctl->desc, 0, sizeof(padctl->desc)); in tegra_xusb_padctl_legacy_probe()
909 padctl->desc.name = dev_name(padctl->dev); in tegra_xusb_padctl_legacy_probe()
910 padctl->desc.pins = tegra124_pins; in tegra_xusb_padctl_legacy_probe()
911 padctl->desc.npins = ARRAY_SIZE(tegra124_pins); in tegra_xusb_padctl_legacy_probe()
912 padctl->desc.pctlops = &tegra_xusb_padctl_pinctrl_ops; in tegra_xusb_padctl_legacy_probe()
913 padctl->desc.pmxops = &tegra_xusb_padctl_pinmux_ops; in tegra_xusb_padctl_legacy_probe()
914 padctl->desc.confops = &tegra_xusb_padctl_pinconf_ops; in tegra_xusb_padctl_legacy_probe()
915 padctl->desc.owner = THIS_MODULE; in tegra_xusb_padctl_legacy_probe()
917 padctl->pinctrl = devm_pinctrl_register(&pdev->dev, &padctl->desc, in tegra_xusb_padctl_legacy_probe()
918 padctl); in tegra_xusb_padctl_legacy_probe()
919 if (IS_ERR(padctl->pinctrl)) { in tegra_xusb_padctl_legacy_probe()
921 err = PTR_ERR(padctl->pinctrl); in tegra_xusb_padctl_legacy_probe()
931 padctl->phys[TEGRA_XUSB_PADCTL_PCIE] = phy; in tegra_xusb_padctl_legacy_probe()
932 phy_set_drvdata(phy, padctl); in tegra_xusb_padctl_legacy_probe()
940 padctl->phys[TEGRA_XUSB_PADCTL_SATA] = phy; in tegra_xusb_padctl_legacy_probe()
941 phy_set_drvdata(phy, padctl); in tegra_xusb_padctl_legacy_probe()
943 padctl->provider = devm_of_phy_provider_register(&pdev->dev, in tegra_xusb_padctl_legacy_probe()
945 if (IS_ERR(padctl->provider)) { in tegra_xusb_padctl_legacy_probe()
946 err = PTR_ERR(padctl->provider); in tegra_xusb_padctl_legacy_probe()
954 reset_control_assert(padctl->rst); in tegra_xusb_padctl_legacy_probe()
961 struct tegra_xusb_padctl *padctl = platform_get_drvdata(pdev); in tegra_xusb_padctl_legacy_remove() local
964 err = reset_control_assert(padctl->rst); in tegra_xusb_padctl_legacy_remove()