On Sun, 2003-04-20 at 21:20, [EMAIL PROTECTED] wrote:
> the linux.bin kernel boot
> 
> but crashes writing
> hub.c: new USB device 10:1a.0-1, assigned address 2
> 
> I've tried too with the 2.4.20-ben10 kernel
> 
> but same point of crash

Disable OHCI USB support for now, that should allow you to install,
then try the enclosed patch on top of -ben10 and let me know if
that helps with OHCI USB...

Ben.

--- linux-2.4.20-ben10/arch/ppc/platforms/pmac_feature.c        2003-04-02 
22:08:11.000000000 +0200
+++ linuxppc_benh_stable/arch/ppc/platforms/pmac_feature.c      2003-04-03 
00:39:17.000000000 +0200
@@ -1170,6 +1170,8 @@
                number = 0;
        else if (strncmp(prop, "usb1u148", 8) == 0)
                number = 2;
+       else if (strncmp(prop, "usb2u248", 8) == 0)
+               number = 4;
        else
                return -ENODEV;
 
@@ -1186,44 +1188,79 @@
                        mdelay(1);
                        LOCK(flags);
                        MACIO_BIS(KEYLARGO_FCR0, KL0_USB0_CELL_ENABLE);
-               } else {
+               } else if (number == 2) {
                        MACIO_BIC(KEYLARGO_FCR0, (KL0_USB1_PAD_SUSPEND0 | 
KL0_USB1_PAD_SUSPEND1));
                        UNLOCK(flags);
                        (void)MACIO_IN32(KEYLARGO_FCR0);
                        mdelay(1);
                        LOCK(flags);
                        MACIO_BIS(KEYLARGO_FCR0, KL0_USB1_CELL_ENABLE);
+               } else if (number == 4) {
+                       MACIO_BIC(KEYLARGO_FCR1, (KL1_USB2_PAD_SUSPEND0 | 
KL1_USB2_PAD_SUSPEND1));
+                       UNLOCK(flags);
+                       (void)MACIO_IN32(KEYLARGO_FCR1);
+                       mdelay(1);
+                       LOCK(flags);
+                       MACIO_BIS(KEYLARGO_FCR0, KL1_USB2_CELL_ENABLE);
+               }
+               if (number < 4) {
+                       reg = MACIO_IN32(KEYLARGO_FCR4);
+                       reg &=  ~(KL4_PORT_WAKEUP_ENABLE(number) | 
KL4_PORT_RESUME_WAKE_EN(number) |
+                               KL4_PORT_CONNECT_WAKE_EN(number) | 
KL4_PORT_DISCONNECT_WAKE_EN(number));
+                       reg &=  ~(KL4_PORT_WAKEUP_ENABLE(number+1) | 
KL4_PORT_RESUME_WAKE_EN(number+1) |
+                               KL4_PORT_CONNECT_WAKE_EN(number+1) | 
KL4_PORT_DISCONNECT_WAKE_EN(number+1));
+                       MACIO_OUT32(KEYLARGO_FCR4, reg);
+                       (void)MACIO_IN32(KEYLARGO_FCR4);
+                       udelay(10);
+               } else {
+                       reg = MACIO_IN32(KEYLARGO_FCR3);
+                       reg &=  ~(KL3_IT_PORT_WAKEUP_ENABLE(0) | 
KL3_IT_PORT_RESUME_WAKE_EN(0) |
+                               KL3_IT_PORT_CONNECT_WAKE_EN(0) | 
KL3_IT_PORT_DISCONNECT_WAKE_EN(0));
+                       reg &=  ~(KL3_IT_PORT_WAKEUP_ENABLE(1) | 
KL3_IT_PORT_RESUME_WAKE_EN(1) |
+                               KL3_IT_PORT_CONNECT_WAKE_EN(1) | 
KL3_IT_PORT_DISCONNECT_WAKE_EN(1));
+                       MACIO_OUT32(KEYLARGO_FCR3, reg);
+                       (void)MACIO_IN32(KEYLARGO_FCR3);
+                       udelay(10);
                }
-               reg = MACIO_IN32(KEYLARGO_FCR4);
-               reg &=  ~(KL4_PORT_WAKEUP_ENABLE(number) | 
KL4_PORT_RESUME_WAKE_EN(number) |
-                       KL4_PORT_CONNECT_WAKE_EN(number) | 
KL4_PORT_DISCONNECT_WAKE_EN(number));
-               reg &=  ~(KL4_PORT_WAKEUP_ENABLE(number+1) | 
KL4_PORT_RESUME_WAKE_EN(number+1) |
-                       KL4_PORT_CONNECT_WAKE_EN(number+1) | 
KL4_PORT_DISCONNECT_WAKE_EN(number+1));
-               MACIO_OUT32(KEYLARGO_FCR4, reg);
-               (void)MACIO_IN32(KEYLARGO_FCR4);
-               udelay(10);
        } else {
                /* Turn OFF */
-               reg = MACIO_IN32(KEYLARGO_FCR4);
-               reg |=  KL4_PORT_WAKEUP_ENABLE(number) | 
KL4_PORT_RESUME_WAKE_EN(number) |
-                       KL4_PORT_CONNECT_WAKE_EN(number) | 
KL4_PORT_DISCONNECT_WAKE_EN(number);
-               reg |=  KL4_PORT_WAKEUP_ENABLE(number+1) | 
KL4_PORT_RESUME_WAKE_EN(number+1) |
-                       KL4_PORT_CONNECT_WAKE_EN(number+1) | 
KL4_PORT_DISCONNECT_WAKE_EN(number+1);
-               MACIO_OUT32(KEYLARGO_FCR4, reg);
-               (void)MACIO_IN32(KEYLARGO_FCR4);
-               udelay(1);
+               if (number < 4) {
+                       reg = MACIO_IN32(KEYLARGO_FCR4);
+                       reg |=  KL4_PORT_WAKEUP_ENABLE(number) | 
KL4_PORT_RESUME_WAKE_EN(number) |
+                               KL4_PORT_CONNECT_WAKE_EN(number) | 
KL4_PORT_DISCONNECT_WAKE_EN(number);
+                       reg |=  KL4_PORT_WAKEUP_ENABLE(number+1) | 
KL4_PORT_RESUME_WAKE_EN(number+1) |
+                               KL4_PORT_CONNECT_WAKE_EN(number+1) | 
KL4_PORT_DISCONNECT_WAKE_EN(number+1);
+                       MACIO_OUT32(KEYLARGO_FCR4, reg);
+                       (void)MACIO_IN32(KEYLARGO_FCR4);
+                       udelay(1);
+               } else {
+                       reg = MACIO_IN32(KEYLARGO_FCR3);
+                       reg |=  KL3_IT_PORT_WAKEUP_ENABLE(0) | 
KL3_IT_PORT_RESUME_WAKE_EN(0) |
+                               KL3_IT_PORT_CONNECT_WAKE_EN(0) | 
KL3_IT_PORT_DISCONNECT_WAKE_EN(0);
+                       reg |=  KL3_IT_PORT_WAKEUP_ENABLE(1) | 
KL3_IT_PORT_RESUME_WAKE_EN(1) |
+                               KL3_IT_PORT_CONNECT_WAKE_EN(1) | 
KL3_IT_PORT_DISCONNECT_WAKE_EN(1);
+                       MACIO_OUT32(KEYLARGO_FCR3, reg);
+                       (void)MACIO_IN32(KEYLARGO_FCR3);
+                       udelay(1);
+               }
                if (number == 0) {
                        MACIO_BIC(KEYLARGO_FCR0, KL0_USB0_CELL_ENABLE);
                        (void)MACIO_IN32(KEYLARGO_FCR0);
                        udelay(1);
                        MACIO_BIS(KEYLARGO_FCR0, (KL0_USB0_PAD_SUSPEND0 | 
KL0_USB0_PAD_SUSPEND1));
                        (void)MACIO_IN32(KEYLARGO_FCR0);
-               } else {
+               } else if (number == 2) {
                        MACIO_BIC(KEYLARGO_FCR0, KL0_USB1_CELL_ENABLE);
                        (void)MACIO_IN32(KEYLARGO_FCR0);
                        udelay(1);
                        MACIO_BIS(KEYLARGO_FCR0, (KL0_USB1_PAD_SUSPEND0 | 
KL0_USB1_PAD_SUSPEND1));
                        (void)MACIO_IN32(KEYLARGO_FCR0);
+               } else if (number == 4) {
+                       MACIO_BIC(KEYLARGO_FCR1, KL1_USB2_CELL_ENABLE);
+                       (void)MACIO_IN32(KEYLARGO_FCR1);
+                       udelay(1);
+                       MACIO_BIS(KEYLARGO_FCR1, (KL1_USB2_PAD_SUSPEND0 | 
KL1_USB2_PAD_SUSPEND1));
+                       (void)MACIO_IN32(KEYLARGO_FCR1);
                }
                udelay(1);
        }

Reply via email to