diff options
Diffstat (limited to 'arch/arm/plat-omap/usb.c')
-rw-r--r-- | arch/arm/plat-omap/usb.c | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/arch/arm/plat-omap/usb.c b/arch/arm/plat-omap/usb.c index 509f2ed99e21..51033a4503c3 100644 --- a/arch/arm/plat-omap/usb.c +++ b/arch/arm/plat-omap/usb.c | |||
@@ -33,10 +33,10 @@ | |||
33 | #include <asm/system.h> | 33 | #include <asm/system.h> |
34 | #include <mach/hardware.h> | 34 | #include <mach/hardware.h> |
35 | 35 | ||
36 | #include <mach/control.h> | 36 | #include <plat/control.h> |
37 | #include <mach/mux.h> | 37 | #include <plat/mux.h> |
38 | #include <mach/usb.h> | 38 | #include <plat/usb.h> |
39 | #include <mach/board.h> | 39 | #include <plat/board.h> |
40 | 40 | ||
41 | #ifdef CONFIG_ARCH_OMAP1 | 41 | #ifdef CONFIG_ARCH_OMAP1 |
42 | 42 | ||
@@ -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); |
@@ -614,8 +622,8 @@ omap_otg_init(struct omap_usb_config *config) | |||
614 | if (config->otg || config->register_host) { | 622 | if (config->otg || config->register_host) { |
615 | syscon &= ~HST_IDLE_EN; | 623 | syscon &= ~HST_IDLE_EN; |
616 | ohci_device.dev.platform_data = config; | 624 | ohci_device.dev.platform_data = config; |
617 | if (cpu_is_omap730()) | 625 | if (cpu_is_omap7xx()) |
618 | ohci_resources[1].start = INT_730_USB_HHC_1; | 626 | ohci_resources[1].start = INT_7XX_USB_HHC_1; |
619 | status = platform_device_register(&ohci_device); | 627 | status = platform_device_register(&ohci_device); |
620 | if (status) | 628 | if (status) |
621 | pr_debug("can't register OHCI device, %d\n", status); | 629 | pr_debug("can't register OHCI device, %d\n", status); |
@@ -626,8 +634,8 @@ omap_otg_init(struct omap_usb_config *config) | |||
626 | if (config->otg) { | 634 | if (config->otg) { |
627 | syscon &= ~OTG_IDLE_EN; | 635 | syscon &= ~OTG_IDLE_EN; |
628 | otg_device.dev.platform_data = config; | 636 | otg_device.dev.platform_data = config; |
629 | if (cpu_is_omap730()) | 637 | if (cpu_is_omap7xx()) |
630 | otg_resources[1].start = INT_730_USB_OTG; | 638 | otg_resources[1].start = INT_7XX_USB_OTG; |
631 | status = platform_device_register(&otg_device); | 639 | status = platform_device_register(&otg_device); |
632 | if (status) | 640 | if (status) |
633 | pr_debug("can't register OTG device, %d\n", status); | 641 | pr_debug("can't register OTG device, %d\n", status); |
@@ -731,7 +739,7 @@ static inline void omap_1510_usb_init(struct omap_usb_config *config) {} | |||
731 | 739 | ||
732 | void __init omap_usb_init(struct omap_usb_config *pdata) | 740 | void __init omap_usb_init(struct omap_usb_config *pdata) |
733 | { | 741 | { |
734 | if (cpu_is_omap730() || cpu_is_omap16xx() || cpu_is_omap24xx()) | 742 | if (cpu_is_omap7xx() || cpu_is_omap16xx() || cpu_is_omap24xx()) |
735 | omap_otg_init(pdata); | 743 | omap_otg_init(pdata); |
736 | else if (cpu_is_omap15xx()) | 744 | else if (cpu_is_omap15xx()) |
737 | omap_1510_usb_init(pdata); | 745 | omap_1510_usb_init(pdata); |