diff options
author | Ken Chang <kenc@nvidia.com> | 2011-07-01 15:35:06 +0800 |
---|---|---|
committer | Manish Tuteja <mtuteja@nvidia.com> | 2011-07-06 03:28:09 -0700 |
commit | 894ef272deec269ccbf1caf2b9a5e4ce3bbf7a0f (patch) | |
tree | 47d7e5d06d7483b5310c97ce947c67b3682186cb /arch | |
parent | 17cf593083f77b5a86ea29ab73741ce2950778ae (diff) |
usb: ehci: tegra: fix hotplug issue on usb2
usb hotplug is supported only for UTMI phy. usb_phy_type should be
carefully checked in ehci irq.
bug 845612
Change-Id: I2fdc7c79b9816dd3465353375448b07f138ff950
Reviewed-on: http://git-master/r/39338
Tested-by: Ken Chang <kenc@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Reviewed-by: Yu-Fong (Foster) Cho <ycho@nvidia.com>
Reviewed-by: ChihJen Hsu <chhsu@nvidia.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-tegra/include/mach/usb_phy.h | 5 | ||||
-rw-r--r-- | arch/arm/mach-tegra/usb_phy.c | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/arch/arm/mach-tegra/include/mach/usb_phy.h b/arch/arm/mach-tegra/include/mach/usb_phy.h index 0ff8f5545d31..525573c9d297 100644 --- a/arch/arm/mach-tegra/include/mach/usb_phy.h +++ b/arch/arm/mach-tegra/include/mach/usb_phy.h @@ -21,6 +21,7 @@ #include <linux/clk.h> #include <linux/regulator/consumer.h> #include <linux/usb/otg.h> +#include <linux/platform_data/tegra_usb.h> struct tegra_utmip_config { u8 hssync_start_delay; @@ -92,12 +93,14 @@ struct tegra_usb_phy { enum tegra_usb_phy_mode mode; void *config; struct regulator *reg_vdd; + enum tegra_usb_phy_type usb_phy_type; bool regulator_on; struct otg_transceiver *ulpi; }; struct tegra_usb_phy *tegra_usb_phy_open(int instance, void __iomem *regs, - void *config, enum tegra_usb_phy_mode phy_mode); + void *config, enum tegra_usb_phy_mode phy_mode, + enum tegra_usb_phy_type usb_phy_type); int tegra_usb_phy_power_on(struct tegra_usb_phy *phy, bool is_dpd); diff --git a/arch/arm/mach-tegra/usb_phy.c b/arch/arm/mach-tegra/usb_phy.c index 93310b9f3abd..5a352afb279b 100644 --- a/arch/arm/mach-tegra/usb_phy.c +++ b/arch/arm/mach-tegra/usb_phy.c @@ -1076,7 +1076,8 @@ static irqreturn_t usb_phy_vbus_irq_thr(int irq, void *pdata) } struct tegra_usb_phy *tegra_usb_phy_open(int instance, void __iomem *regs, - void *config, enum tegra_usb_phy_mode phy_mode) + void *config, enum tegra_usb_phy_mode phy_mode, + enum tegra_usb_phy_type usb_phy_type) { struct tegra_usb_phy *phy; struct tegra_ulpi_config *ulpi_config; @@ -1094,6 +1095,7 @@ struct tegra_usb_phy *tegra_usb_phy_open(int instance, void __iomem *regs, phy->config = config; phy->mode = phy_mode; phy->regulator_on = 0; + phy->usb_phy_type = usb_phy_type; if (!phy->config) { if (phy_is_ulpi(phy)) { |