summaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl
diff options
context:
space:
mode:
authorBH Hsieh <bhsieh@nvidia.com>2017-03-24 02:43:54 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-03-30 19:39:17 -0400
commit015e13cb88622b099876e1bd617c5c6838c756e6 (patch)
tree00d18da7d19871329d01f863923e1d73d42d767e /drivers/pinctrl
parent876a8a4679a99edc070dcd03051165e2fff929db (diff)
padctl: t186: enable vbus after HCRST
Realtek R8152 is observed violating spec and failed to turn on termination after exiting Polling.Active due to 12 ms timeout. To avoid this issue, enable VBUS after HCRST instead of before loading xusb firmware hence no reset SSPI would interrupt Polling.RxEQ/Polling.Active state. bug 200272921 Change-Id: I4b834f789c5824f4f7fdfa6c918bdbc5a35917b7 Signed-off-by: BH Hsieh <bhsieh@nvidia.com> Reviewed-on: http://git-master/r/1327382 Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Shreshtha Sahu <ssahu@nvidia.com> Tested-by: Shreshtha Sahu <ssahu@nvidia.com> Reviewed-by: WK Tsai <wtsai@nvidia.com> Reviewed-by: Henry Lin <henryl@nvidia.com> Reviewed-by: ChihMin Cheng <ccheng@nvidia.com> Reviewed-by: Ashutosh Jha <ajha@nvidia.com>
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r--drivers/pinctrl/pinctrl-tegra186-padctl.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/drivers/pinctrl/pinctrl-tegra186-padctl.c b/drivers/pinctrl/pinctrl-tegra186-padctl.c
index a15c5ee57..0a650cc86 100644
--- a/drivers/pinctrl/pinctrl-tegra186-padctl.c
+++ b/drivers/pinctrl/pinctrl-tegra186-padctl.c
@@ -1840,7 +1840,7 @@ static int tegra186_utmi_phy_power_off(struct phy *phy)
1840 return 0; 1840 return 0;
1841} 1841}
1842 1842
1843static int tegra186_utmi_phy_init(struct phy *phy) 1843int tegra18x_utmi_vbus_enable(struct phy *phy)
1844{ 1844{
1845 struct tegra_padctl *padctl = phy_get_drvdata(phy); 1845 struct tegra_padctl *padctl = phy_get_drvdata(phy);
1846 int port = utmi_phy_to_port(phy); 1846 int port = utmi_phy_to_port(phy);
@@ -1849,7 +1849,7 @@ static int tegra186_utmi_phy_init(struct phy *phy)
1849 if (port < 0) 1849 if (port < 0)
1850 return port; 1850 return port;
1851 1851
1852 dev_dbg(padctl->dev, "phy init UTMI port %d\n", port); 1852 dev_dbg(padctl->dev, "enable vbus-%d\n", port);
1853 1853
1854 mutex_lock(&padctl->lock); 1854 mutex_lock(&padctl->lock);
1855 1855
@@ -1873,6 +1873,24 @@ static int tegra186_utmi_phy_init(struct phy *phy)
1873 1873
1874 return 0; 1874 return 0;
1875} 1875}
1876EXPORT_SYMBOL_GPL(tegra18x_utmi_vbus_enable);
1877
1878static int tegra186_utmi_phy_init(struct phy *phy)
1879{
1880 struct tegra_padctl *padctl = phy_get_drvdata(phy);
1881 int port = utmi_phy_to_port(phy);
1882
1883 if (port < 0)
1884 return port;
1885
1886 mutex_lock(&padctl->lock);
1887
1888 dev_dbg(padctl->dev, "phy init UTMI port %d\n", port);
1889
1890 mutex_unlock(&padctl->lock);
1891
1892 return 0;
1893}
1876 1894
1877static int tegra186_utmi_phy_exit(struct phy *phy) 1895static int tegra186_utmi_phy_exit(struct phy *phy)
1878{ 1896{