diff options
author | Artiste Hsu <chhsu@nvidia.com> | 2011-09-27 09:47:32 +0800 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:49:22 -0800 |
commit | ae7d60a22ff3c51eef72a25716a7b76012ad887e (patch) | |
tree | 070529295b8926403285d693979463161fa2c213 | |
parent | 612fc1125ef1d98b2f7bf115b097daf96d63ec48 (diff) |
usb: host: tegra: Configurable USB hotplug
Hotplug on usb is supported when hotplug flag is set in platform data
Bug 869745
(cherry picked from commit I57ba0b18a2d4232b2df2074c91aff97c6e639e7d)
Reviewed-on: http://git-master/r/54588
Change-Id: I24e5ddf49cead14d3eebe30da0f92402015c95c7
Reviewed-on: http://git-master/r/57725
Tested-by: Artiste Hsu <chhsu@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Rebase-Id: Rdf4296a0b0e04733832b8b60b347a3da9cc67413
-rw-r--r-- | arch/arm/mach-tegra/board-cardhu.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-ventana.c | 1 | ||||
-rw-r--r-- | drivers/usb/host/ehci-tegra.c | 4 | ||||
-rw-r--r-- | include/linux/platform_data/tegra_usb.h | 1 |
4 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu.c b/arch/arm/mach-tegra/board-cardhu.c index 6c137fdbd136..0ff72fc5a6a4 100644 --- a/arch/arm/mach-tegra/board-cardhu.c +++ b/arch/arm/mach-tegra/board-cardhu.c @@ -631,6 +631,7 @@ static struct tegra_ehci_platform_data tegra_ehci_pdata[] = { .phy_config = &utmi_phy_config[2], .operating_mode = TEGRA_USB_HOST, .power_down_on_bus_suspend = 1, + .hotplug = 1, }, }; diff --git a/arch/arm/mach-tegra/board-ventana.c b/arch/arm/mach-tegra/board-ventana.c index fb335ee2c031..3d803706fe02 100644 --- a/arch/arm/mach-tegra/board-ventana.c +++ b/arch/arm/mach-tegra/board-ventana.c @@ -484,6 +484,7 @@ static struct tegra_ehci_platform_data tegra_ehci_pdata[] = { .phy_config = &utmi_phy_config[1], .operating_mode = TEGRA_USB_HOST, .power_down_on_bus_suspend = 1, + .hotplug = 1, }, }; diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c index 2a544fc84f5b..196bd4c7baeb 100644 --- a/drivers/usb/host/ehci-tegra.c +++ b/drivers/usb/host/ehci-tegra.c @@ -64,6 +64,7 @@ struct tegra_ehci_hcd { int bus_suspended; int port_resuming; int power_down_on_bus_suspend; + int hotplug; struct delayed_work work; enum tegra_usb_phy_port_speed port_speed; struct work_struct clk_timer_work; @@ -177,7 +178,7 @@ static irqreturn_t tegra_ehci_irq (struct usb_hcd *hcd) spin_unlock (&ehci->lock); } } - if (tegra->phy->instance == 2) { + if (tegra->hotplug) { spin_lock(&ehci->lock); val = readl(hcd->regs + TEGRA_USB_SUSP_CTRL_OFFSET); if ((val & TEGRA_USB_PHY_CLK_VALID_INT_STS)) { @@ -1134,6 +1135,7 @@ static int tegra_ehci_probe(struct platform_device *pdev) tegra->host_resumed = 1; tegra->power_down_on_bus_suspend = pdata->power_down_on_bus_suspend; + tegra->hotplug = pdata->hotplug; tegra->ehci = hcd_to_ehci(hcd); irq = platform_get_irq(pdev, 0); diff --git a/include/linux/platform_data/tegra_usb.h b/include/linux/platform_data/tegra_usb.h index 27879ce1d73e..cf75a98f5c37 100644 --- a/include/linux/platform_data/tegra_usb.h +++ b/include/linux/platform_data/tegra_usb.h @@ -34,6 +34,7 @@ struct tegra_ehci_platform_data { enum tegra_usb_operating_modes operating_mode; /* power down the phy on bus suspend */ int power_down_on_bus_suspend; + int hotplug; void *phy_config; enum tegra_usb_phy_type phy_type; }; |