summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-tegra/include/mach/usb_phy.h1
-rw-r--r--arch/arm/mach-tegra/usb_phy.c12
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])