summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Ziswiler <marcel.ziswiler@toradex.com>2014-12-18 05:43:43 +0100
committerMarcel Ziswiler <marcel.ziswiler@toradex.com>2014-12-18 05:43:43 +0100
commit629b91fa046df5213ed3312d2e2b8683e6bdd70c (patch)
tree49452c488fabe6e551dfff856a267cf486aaad76
parent18d5f4a85d71d7921e9b121aeefb9c12c888d781 (diff)
apalis/colibri_t30: usb: fix low-speed issue hack
Certain low-speed USB devices were not detected correctly when plugged into a running system.
-rw-r--r--arch/arm/mach-tegra/board-apalis_t30.c6
-rw-r--r--arch/arm/mach-tegra/board-colibri_t30.c4
-rw-r--r--arch/arm/mach-tegra/tegra3_usb_phy.c3
3 files changed, 8 insertions, 5 deletions
diff --git a/arch/arm/mach-tegra/board-apalis_t30.c b/arch/arm/mach-tegra/board-apalis_t30.c
index 30d00a3..d01f420 100644
--- a/arch/arm/mach-tegra/board-apalis_t30.c
+++ b/arch/arm/mach-tegra/board-apalis_t30.c
@@ -1322,7 +1322,7 @@ static struct tegra_usb_platform_data tegra_ehci1_utmi_pdata = {
},
.u_data.host = {
.hot_plug = true,
- .power_off_on_suspend = false,
+ .power_off_on_suspend = true,
.remote_wakeup_supported = true,
.vbus_gpio = USBO1_EN,
.vbus_gpio_inverted = 0,
@@ -1348,7 +1348,7 @@ static struct tegra_usb_platform_data tegra_ehci2_utmi_pdata = {
},
.u_data.host = {
.hot_plug = true,
- .power_off_on_suspend = false,
+ .power_off_on_suspend = true,
.remote_wakeup_supported = true,
.vbus_gpio = USBH_EN,
.vbus_gpio_inverted = 0,
@@ -1374,7 +1374,7 @@ static struct tegra_usb_platform_data tegra_ehci3_utmi_pdata = {
},
.u_data.host = {
.hot_plug = true,
- .power_off_on_suspend = false,
+ .power_off_on_suspend = true,
.remote_wakeup_supported = true,
/* Uses same USBH_EN as EHCI2 */
.vbus_gpio = -1,
diff --git a/arch/arm/mach-tegra/board-colibri_t30.c b/arch/arm/mach-tegra/board-colibri_t30.c
index f449ac0d..ae32524 100644
--- a/arch/arm/mach-tegra/board-colibri_t30.c
+++ b/arch/arm/mach-tegra/board-colibri_t30.c
@@ -1283,7 +1283,7 @@ static struct tegra_usb_platform_data tegra_ehci1_utmi_pdata = {
},
.u_data.host = {
.hot_plug = true,
- .power_off_on_suspend = false,
+ .power_off_on_suspend = true,
.remote_wakeup_supported = true,
.vbus_gpio = -1,
.vbus_reg = NULL,
@@ -1359,7 +1359,7 @@ static struct tegra_usb_platform_data tegra_ehci3_utmi_pdata = {
},
.u_data.host = {
.hot_plug = true,
- .power_off_on_suspend = false,
+ .power_off_on_suspend = true,
.remote_wakeup_supported = true,
.vbus_gpio = USBH_PEN,
.vbus_gpio_inverted = 1,
diff --git a/arch/arm/mach-tegra/tegra3_usb_phy.c b/arch/arm/mach-tegra/tegra3_usb_phy.c
index 66637f2..0ab6175 100644
--- a/arch/arm/mach-tegra/tegra3_usb_phy.c
+++ b/arch/arm/mach-tegra/tegra3_usb_phy.c
@@ -755,6 +755,9 @@ bool utmi_phy_remotewake_detected(struct tegra_usb_phy *phy)
unsigned int inst = phy->inst;
u32 val;
+ /* Hack: avoid system lock-up condition upon device hot-plugging */
+ mdelay(4);
+
DBG("%s(%d) inst:[%d]\n", __func__, __LINE__, phy->inst);
val = readl(base + UTMIP_PMC_WAKEUP0);
if (val & EVENT_INT_ENB) {