aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-omap/usb.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/plat-omap/usb.c')
-rw-r--r--arch/arm/plat-omap/usb.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/arch/arm/plat-omap/usb.c b/arch/arm/plat-omap/usb.c
index 0ea1e0beb455..51033a4503c3 100644
--- a/arch/arm/plat-omap/usb.c
+++ b/arch/arm/plat-omap/usb.c
@@ -159,11 +159,14 @@ static u32 __init omap_usb0_init(unsigned nwires, unsigned is_device)
159 * - OTG support on this port not yet written 159 * - OTG support on this port not yet written
160 */ 160 */
161 161
162 l = omap_readl(USB_TRANSCEIVER_CTRL); 162 /* Don't do this for omap7xx -- it causes USB to not work correctly */
163 l &= ~(7 << 4); 163 if (!cpu_is_omap7xx()) {
164 if (!is_device) 164 l = omap_readl(USB_TRANSCEIVER_CTRL);
165 l |= (3 << 1); 165 l &= ~(7 << 4);
166 omap_writel(l, USB_TRANSCEIVER_CTRL); 166 if (!is_device)
167 l |= (3 << 1);
168 omap_writel(l, USB_TRANSCEIVER_CTRL);
169 }
167 170
168 return 3 << 16; 171 return 3 << 16;
169 } 172 }
@@ -603,7 +606,12 @@ omap_otg_init(struct omap_usb_config *config)
603 if (config->otg || config->register_dev) { 606 if (config->otg || config->register_dev) {
604 syscon &= ~DEV_IDLE_EN; 607 syscon &= ~DEV_IDLE_EN;
605 udc_device.dev.platform_data = config; 608 udc_device.dev.platform_data = config;
606 /* FIXME patch IRQ numbers for omap730 */ 609 /* IRQ numbers for omap7xx */
610 if(cpu_is_omap7xx()) {
611 udc_resources[1].start = INT_7XX_USB_GENI;
612 udc_resources[2].start = INT_7XX_USB_NON_ISO;
613 udc_resources[3].start = INT_7XX_USB_ISO;
614 }
607 status = platform_device_register(&udc_device); 615 status = platform_device_register(&udc_device);
608 if (status) 616 if (status)
609 pr_debug("can't register UDC device, %d\n", status); 617 pr_debug("can't register UDC device, %d\n", status);