Add support for USB on PSC3 for the mpc5200
authorEric Millbrandt <emillbrandt@coldhaus.com>
Thu, 13 Aug 2009 13:32:37 +0000 (08:32 -0500)
committerWolfgang Denk <wd@denx.de>
Tue, 25 Aug 2009 10:57:55 +0000 (12:57 +0200)
Support USB on PSC3 on the mpc5200.  Before this patch, enabling USB support
would reconfigure PSC4 and PSC5 to USB.  The mpc5200 does not support USB
enabled on both the standard USB port and PSC3.  This patch masks the
appropriate bits when enabling USB.

Signed-off-by: Eric Millbrandt <emillbrandt@dekaresearch.com>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Remy Bohmer <linux@bohmer.net>
README
cpu/mpc5xxx/usb.c
cpu/mpc5xxx/usb_ohci.c

diff --git a/README b/README
index cf3867dcf39d68c739711593937a530b4fcfb7f1..246ae2badca47cefc8106de76bc2adfbbee859e4 100644 (file)
--- a/README
+++ b/README
@@ -858,9 +858,13 @@ The following options need to be configured:
                MPC5200 USB requires additional defines:
                        CONFIG_USB_CLOCK
                                for 528 MHz Clock: 0x0001bbbb
+                       CONFIG_PSC3_USB
+                               for USB on PSC3
                        CONFIG_USB_CONFIG
                                for differential drivers: 0x00001000
                                for single ended drivers: 0x00005000
+                               for differential drivers on PSC3: 0x00000100
+                               for single ended drivers on PSC3: 0x00004100
                        CONFIG_SYS_USB_EVENT_POLL
                                May be defined to allow interrupt polling
                                instead of using asynchronous interrupts
index 8f2b66a518645a3681f72f519a19c7826d2ce24f..bec7da3eab230baa483db96afbedd32f11beb3e6 100644 (file)
@@ -32,9 +32,13 @@ int usb_cpu_init(void)
        /* Set the USB Clock                                                 */
        *(vu_long *)MPC5XXX_CDM_48_FDC = CONFIG_USB_CLOCK;
 
+#ifdef CONFIG_PSC3_USB /* USB is using the alternate configuration */
+       /* remove all PSC3 USB bits first before ORing in ours */
+       *(vu_long *)MPC5XXX_GPS_PORT_CONFIG &= ~0x00804f00;
+#else
        /* remove all USB bits first before ORing in ours */
        *(vu_long *)MPC5XXX_GPS_PORT_CONFIG &= ~0x00807000;
-
+#endif
        /* Activate USB port                                                 */
        *(vu_long *)MPC5XXX_GPS_PORT_CONFIG |= CONFIG_USB_CONFIG;
 
index 61a4e3fb6767736f992f13180cb460132dc2c7c4..66a4af8d8e5299e7c840cb44c847f366f89ccec4 100644 (file)
@@ -1576,9 +1576,13 @@ int usb_lowlevel_init(void)
        /* Set the USB Clock                                                 */
        *(vu_long *)MPC5XXX_CDM_48_FDC = CONFIG_USB_CLOCK;
 
+#ifdef CONFIG_PSC3_USB /* USB is using the alternate configuration */
+       /* remove all PSC3 USB bits first before ORing in ours */
+       *(vu_long *)MPC5XXX_GPS_PORT_CONFIG &= ~0x00804f00;
+#else
        /* remove all USB bits first before ORing in ours */
        *(vu_long *)MPC5XXX_GPS_PORT_CONFIG &= ~0x00807000;
-
+#endif
        /* Activate USB port                                                 */
        *(vu_long *)MPC5XXX_GPS_PORT_CONFIG |= CONFIG_USB_CONFIG;