diff options
-rw-r--r-- | arch/arm/mach-tegra/include/mach/usb_phy.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-tegra/usb_phy.c | 12 |
2 files changed, 12 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/include/mach/usb_phy.h b/arch/arm/mach-tegra/include/mach/usb_phy.h index 40d5d09e739b..ab7811cad208 100644 --- a/arch/arm/mach-tegra/include/mach/usb_phy.h +++ b/arch/arm/mach-tegra/include/mach/usb_phy.h @@ -60,6 +60,7 @@ struct tegra_uhsic_config { u8 elastic_underrun_limit; u8 elastic_overrun_limit; int (*postsuspend)(void); + int (*preresume)(void); }; enum tegra_usb_phy_port_speed { diff --git a/arch/arm/mach-tegra/usb_phy.c b/arch/arm/mach-tegra/usb_phy.c index 040211fca6e5..7ce45f27175d 100644 --- a/arch/arm/mach-tegra/usb_phy.c +++ b/arch/arm/mach-tegra/usb_phy.c @@ -1274,6 +1274,16 @@ static int uhsic_phy_postsuspend(struct tegra_usb_phy *phy, bool is_dpd) return 0; } +static int uhsic_phy_preresume(struct tegra_usb_phy *phy, bool is_dpd) +{ + struct tegra_uhsic_config *uhsic_config = phy->config; + + if (uhsic_config->preresume) + uhsic_config->preresume(); + + return 0; +} + static int uhsic_phy_postresume(struct tegra_usb_phy *phy, bool is_dpd) { #ifdef CONFIG_ARCH_TEGRA_2x_SOC @@ -2096,7 +2106,7 @@ void tegra_usb_phy_preresume(struct tegra_usb_phy *phy, bool is_dpd) utmi_phy_preresume, NULL, NULL, - NULL, + uhsic_phy_preresume, }; if (preresume[phy->usb_phy_type]) |