summaryrefslogtreecommitdiff
path: root/drivers/usb/gadget/tegra_udc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/gadget/tegra_udc.c')
-rw-r--r--drivers/usb/gadget/tegra_udc.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/drivers/usb/gadget/tegra_udc.c b/drivers/usb/gadget/tegra_udc.c
index c130dae3a8e9..074a9b1ce6d9 100644
--- a/drivers/usb/gadget/tegra_udc.c
+++ b/drivers/usb/gadget/tegra_udc.c
@@ -52,8 +52,8 @@
#include "tegra_udc.h"
-#define DRIVER_DESC "Nvidia Tegra High-Speed USB SOC \
- Device Controller driver"
+#define DRIVER_DESC "Nvidia Tegra High-Speed USB SOC " \
+ "Device Controller driver"
#define DRIVER_AUTHOR "Venkat Moganty/Rakesh Bodla"
#define DRIVER_VERSION "Apr 30, 2012"
@@ -95,6 +95,11 @@ static const u8 tegra_udc_test_packet[53] = {
0xfc, 0x7e, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0x7e
};
+#ifdef CONFIG_MACH_COLIBRI_T20
+/* To limit the speed of USB to full speed */
+extern int g_usb_high_speed;
+#endif /* CONFIG_MACH_COLIBRI_T20 */
+
static struct tegra_udc *the_udc;
#ifdef CONFIG_TEGRA_GADGET_BOOST_CPU_FREQ
@@ -253,6 +258,16 @@ static int dr_controller_reset(struct tegra_udc *udc)
cpu_relax();
}
+#ifdef CONFIG_MACH_COLIBRI_T20
+ /* To limit the speed of USB to full speed */
+ if (!g_usb_high_speed) {
+ tmp = udc_readl(udc, PORTSCX_REG_OFFSET);
+ tmp |= PORTSCX_PORT_FORCE_FULL_SPEED;
+ udc_writel(udc, tmp, PORTSCX_REG_OFFSET);
+ tmp = udc_readl(udc, PORTSCX_REG_OFFSET);
+ }
+#endif /* CONFIG_MACH_COLIBRI_T20 */
+
DBG("%s(%d) END\n", __func__, __LINE__);
return 0;
}