Lines Matching refs:padctl

106 static inline void padctl_writel(struct tegra_xusb_padctl *padctl, u32 value,  in padctl_writel()  argument
109 writel(value, padctl->regs + offset); in padctl_writel()
112 static inline u32 padctl_readl(struct tegra_xusb_padctl *padctl, in padctl_readl() argument
115 return readl(padctl->regs + offset); in padctl_readl()
120 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_groups_count() local
122 return padctl->soc->num_pins; in tegra_xusb_padctl_get_groups_count()
128 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_group_name() local
130 return padctl->soc->pins[group].name; in tegra_xusb_padctl_get_group_name()
148 static int tegra_xusb_padctl_parse_subnode(struct tegra_xusb_padctl *padctl, in tegra_xusb_padctl_parse_subnode() argument
180 err = pinctrl_utils_add_config(padctl->pinctrl, &configs, in tegra_xusb_padctl_parse_subnode()
198 err = pinctrl_utils_reserve_map(padctl->pinctrl, maps, reserved_maps, in tegra_xusb_padctl_parse_subnode()
205 err = pinctrl_utils_add_map_mux(padctl->pinctrl, maps, in tegra_xusb_padctl_parse_subnode()
213 err = pinctrl_utils_add_map_configs(padctl->pinctrl, in tegra_xusb_padctl_parse_subnode()
234 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_dt_node_to_map() local
243 err = tegra_xusb_padctl_parse_subnode(padctl, np, maps, in tegra_xusb_padctl_dt_node_to_map()
262 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_functions_count() local
264 return padctl->soc->num_functions; in tegra_xusb_padctl_get_functions_count()
271 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_function_name() local
273 return padctl->soc->functions[function].name; in tegra_xusb_padctl_get_function_name()
281 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_get_function_groups() local
283 *num_groups = padctl->soc->functions[function].num_groups; in tegra_xusb_padctl_get_function_groups()
284 *groups = padctl->soc->functions[function].groups; in tegra_xusb_padctl_get_function_groups()
293 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_pinmux_set() local
298 lane = &padctl->soc->lanes[group]; in tegra_xusb_padctl_pinmux_set()
307 value = padctl_readl(padctl, lane->offset); in tegra_xusb_padctl_pinmux_set()
310 padctl_writel(padctl, value, lane->offset); in tegra_xusb_padctl_pinmux_set()
326 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_pinconf_group_get() local
332 lane = &padctl->soc->lanes[group]; in tegra_xusb_padctl_pinconf_group_get()
340 value = padctl_readl(padctl, lane->offset); in tegra_xusb_padctl_pinconf_group_get()
351 dev_err(padctl->dev, "invalid configuration parameter: %04x\n", in tegra_xusb_padctl_pinconf_group_get()
364 struct tegra_xusb_padctl *padctl = pinctrl_dev_get_drvdata(pinctrl); in tegra_xusb_padctl_pinconf_group_set() local
371 lane = &padctl->soc->lanes[group]; in tegra_xusb_padctl_pinconf_group_set()
383 regval = padctl_readl(padctl, lane->offset); in tegra_xusb_padctl_pinconf_group_set()
390 padctl_writel(padctl, regval, lane->offset); in tegra_xusb_padctl_pinconf_group_set()
394 dev_err(padctl->dev, in tegra_xusb_padctl_pinconf_group_set()
472 static int tegra_xusb_padctl_enable(struct tegra_xusb_padctl *padctl) in tegra_xusb_padctl_enable() argument
476 mutex_lock(&padctl->lock); in tegra_xusb_padctl_enable()
478 if (padctl->enable++ > 0) in tegra_xusb_padctl_enable()
481 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
483 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
487 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
489 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
493 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
495 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_enable()
498 mutex_unlock(&padctl->lock); in tegra_xusb_padctl_enable()
502 static int tegra_xusb_padctl_disable(struct tegra_xusb_padctl *padctl) in tegra_xusb_padctl_disable() argument
506 mutex_lock(&padctl->lock); in tegra_xusb_padctl_disable()
508 if (WARN_ON(padctl->enable == 0)) in tegra_xusb_padctl_disable()
511 if (--padctl->enable > 0) in tegra_xusb_padctl_disable()
514 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
516 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
520 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
522 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
526 value = padctl_readl(padctl, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
528 padctl_writel(padctl, value, XUSB_PADCTL_ELPG_PROGRAM); in tegra_xusb_padctl_disable()
531 mutex_unlock(&padctl->lock); in tegra_xusb_padctl_disable()
537 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in tegra_xusb_phy_init() local
539 return tegra_xusb_padctl_enable(padctl); in tegra_xusb_phy_init()
544 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in tegra_xusb_phy_exit() local
546 return tegra_xusb_padctl_disable(padctl); in tegra_xusb_phy_exit()
551 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in pcie_phy_power_on() local
556 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
558 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
560 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL2); in pcie_phy_power_on()
564 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL2); in pcie_phy_power_on()
566 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_on()
568 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_CTL1); in pcie_phy_power_on()
587 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in pcie_phy_power_off() local
590 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_off()
592 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_P0_CTL1); in pcie_phy_power_off()
607 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in sata_phy_power_on() local
612 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_on()
615 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_on()
617 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
620 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
622 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
624 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
626 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()
633 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_on()
647 struct tegra_xusb_padctl *padctl = phy_get_drvdata(phy); in sata_phy_power_off() local
650 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
652 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
654 value = padctl_readl(padctl, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
656 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_PLL_S0_CTL1); in sata_phy_power_off()
658 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_MISC_PAD_S0_CTL1); in sata_phy_power_off()
666 padctl_writel(padctl, value, XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1); in sata_phy_power_off()
682 struct tegra_xusb_padctl *padctl = dev_get_drvdata(dev); in tegra_xusb_padctl_xlate() local
688 if (index >= ARRAY_SIZE(padctl->phys)) in tegra_xusb_padctl_xlate()
691 return padctl->phys[index]; in tegra_xusb_padctl_xlate()
874 struct tegra_xusb_padctl *padctl; in tegra_xusb_padctl_probe() local
880 padctl = devm_kzalloc(&pdev->dev, sizeof(*padctl), GFP_KERNEL); in tegra_xusb_padctl_probe()
881 if (!padctl) in tegra_xusb_padctl_probe()
884 platform_set_drvdata(pdev, padctl); in tegra_xusb_padctl_probe()
885 mutex_init(&padctl->lock); in tegra_xusb_padctl_probe()
886 padctl->dev = &pdev->dev; in tegra_xusb_padctl_probe()
889 padctl->soc = match->data; in tegra_xusb_padctl_probe()
892 padctl->regs = devm_ioremap_resource(&pdev->dev, res); in tegra_xusb_padctl_probe()
893 if (IS_ERR(padctl->regs)) in tegra_xusb_padctl_probe()
894 return PTR_ERR(padctl->regs); in tegra_xusb_padctl_probe()
896 padctl->rst = devm_reset_control_get(&pdev->dev, NULL); in tegra_xusb_padctl_probe()
897 if (IS_ERR(padctl->rst)) in tegra_xusb_padctl_probe()
898 return PTR_ERR(padctl->rst); in tegra_xusb_padctl_probe()
900 err = reset_control_deassert(padctl->rst); in tegra_xusb_padctl_probe()
904 memset(&padctl->desc, 0, sizeof(padctl->desc)); in tegra_xusb_padctl_probe()
905 padctl->desc.name = dev_name(padctl->dev); in tegra_xusb_padctl_probe()
906 padctl->desc.pctlops = &tegra_xusb_padctl_pinctrl_ops; in tegra_xusb_padctl_probe()
907 padctl->desc.pmxops = &tegra_xusb_padctl_pinmux_ops; in tegra_xusb_padctl_probe()
908 padctl->desc.confops = &tegra_xusb_padctl_pinconf_ops; in tegra_xusb_padctl_probe()
909 padctl->desc.owner = THIS_MODULE; in tegra_xusb_padctl_probe()
911 padctl->pinctrl = pinctrl_register(&padctl->desc, &pdev->dev, padctl); in tegra_xusb_padctl_probe()
912 if (!padctl->pinctrl) { in tegra_xusb_padctl_probe()
924 padctl->phys[TEGRA_XUSB_PADCTL_PCIE] = phy; in tegra_xusb_padctl_probe()
925 phy_set_drvdata(phy, padctl); in tegra_xusb_padctl_probe()
933 padctl->phys[TEGRA_XUSB_PADCTL_SATA] = phy; in tegra_xusb_padctl_probe()
934 phy_set_drvdata(phy, padctl); in tegra_xusb_padctl_probe()
936 padctl->provider = devm_of_phy_provider_register(&pdev->dev, in tegra_xusb_padctl_probe()
938 if (IS_ERR(padctl->provider)) { in tegra_xusb_padctl_probe()
939 err = PTR_ERR(padctl->provider); in tegra_xusb_padctl_probe()
947 pinctrl_unregister(padctl->pinctrl); in tegra_xusb_padctl_probe()
949 reset_control_assert(padctl->rst); in tegra_xusb_padctl_probe()
955 struct tegra_xusb_padctl *padctl = platform_get_drvdata(pdev); in tegra_xusb_padctl_remove() local
958 pinctrl_unregister(padctl->pinctrl); in tegra_xusb_padctl_remove()
960 err = reset_control_assert(padctl->rst); in tegra_xusb_padctl_remove()