From 629b91fa046df5213ed3312d2e2b8683e6bdd70c Mon Sep 17 00:00:00 2001 From: Marcel Ziswiler Date: Thu, 18 Dec 2014 05:43:43 +0100 Subject: apalis/colibri_t30: usb: fix low-speed issue hack Certain low-speed USB devices were not detected correctly when plugged into a running system. --- arch/arm/mach-tegra/board-apalis_t30.c | 6 +++--- arch/arm/mach-tegra/board-colibri_t30.c | 4 ++-- arch/arm/mach-tegra/tegra3_usb_phy.c | 3 +++ 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 30d00a33bfa1..d01f420f33c5 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 f449ac0d057e..ae3252442974 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 66637f29b19c..0ab61758addd 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) { -- cgit v1.2.3