]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/powerpc/platforms/83xx/usb.c
powerpc/83xx: fix ULPI setup for MPC8315 processors
[linux-2.6-omap-h63xx.git] / arch / powerpc / platforms / 83xx / usb.c
index 64bcf0a33c71903fa3978de2c28d9b4df8c4bbba..cc99c280aad943ea93631a51de1399db5a90565a 100644 (file)
@@ -137,15 +137,21 @@ int mpc831x_usb_cfg(void)
 
        /* Configure pin mux for ULPI.  There is no pin mux for UTMI */
        if (prop && !strcmp(prop, "ulpi")) {
-               temp = in_be32(immap + MPC83XX_SICRL_OFFS);
-               temp &= ~MPC831X_SICRL_USB_MASK;
-               temp |= MPC831X_SICRL_USB_ULPI;
-               out_be32(immap + MPC83XX_SICRL_OFFS, temp);
-
-               temp = in_be32(immap + MPC83XX_SICRH_OFFS);
-               temp &= ~MPC831X_SICRH_USB_MASK;
-               temp |= MPC831X_SICRH_USB_ULPI;
-               out_be32(immap + MPC83XX_SICRH_OFFS, temp);
+               if (of_device_is_compatible(immr_node, "fsl,mpc8315-immr")) {
+                       clrsetbits_be32(immap + MPC83XX_SICRL_OFFS,
+                                       MPC8315_SICRL_USB_MASK,
+                                       MPC8315_SICRL_USB_ULPI);
+                       clrsetbits_be32(immap + MPC83XX_SICRH_OFFS,
+                                       MPC8315_SICRH_USB_MASK,
+                                       MPC8315_SICRH_USB_ULPI);
+               } else {
+                       clrsetbits_be32(immap + MPC83XX_SICRL_OFFS,
+                                       MPC831X_SICRL_USB_MASK,
+                                       MPC831X_SICRL_USB_ULPI);
+                       clrsetbits_be32(immap + MPC83XX_SICRH_OFFS,
+                                       MPC831X_SICRH_USB_MASK,
+                                       MPC831X_SICRH_USB_ULPI);
+               }
        }
 
        iounmap(immap);