summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorKen Chang <kenc@nvidia.com>2011-07-01 15:35:06 +0800
committerManish Tuteja <mtuteja@nvidia.com>2011-07-06 03:28:09 -0700
commit894ef272deec269ccbf1caf2b9a5e4ce3bbf7a0f (patch)
tree47d7e5d06d7483b5310c97ce947c67b3682186cb /arch
parent17cf593083f77b5a86ea29ab73741ce2950778ae (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.h5
-rw-r--r--arch/arm/mach-tegra/usb_phy.c4
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)) {