diff options
author | Paul Mackerras <paulus@samba.org> | 2008-02-06 22:08:37 +1100 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-02-06 22:08:37 +1100 |
commit | b370b08274a25cf1e2015fb7ce65c43173c8156f (patch) | |
tree | 0c8f990148da4ca1275ac5471c93c519754f4aec /arch/powerpc/platforms/83xx/usb.c | |
parent | 75e89b02e338d0db27f8e5d66642c7e2ae49c326 (diff) | |
parent | 7e25867fe8d705bcf707ef52004b669eb795d06d (diff) | |
download | kernel_samsung_smdk4412-b370b08274a25cf1e2015fb7ce65c43173c8156f.zip kernel_samsung_smdk4412-b370b08274a25cf1e2015fb7ce65c43173c8156f.tar.gz kernel_samsung_smdk4412-b370b08274a25cf1e2015fb7ce65c43173c8156f.tar.bz2 |
Merge branch 'for-2.6.25' of master.kernel.org:/pub/scm/linux/kernel/git/galak/powerpc into for-2.6.25
Diffstat (limited to 'arch/powerpc/platforms/83xx/usb.c')
-rw-r--r-- | arch/powerpc/platforms/83xx/usb.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/arch/powerpc/platforms/83xx/usb.c b/arch/powerpc/platforms/83xx/usb.c index 681230a..471fdd8 100644 --- a/arch/powerpc/platforms/83xx/usb.c +++ b/arch/powerpc/platforms/83xx/usb.c @@ -104,6 +104,7 @@ int mpc831x_usb_cfg(void) u32 temp; void __iomem *immap, *usb_regs; struct device_node *np = NULL; + struct device_node *immr_node = NULL; const void *prop; struct resource res; int ret = 0; @@ -124,10 +125,15 @@ int mpc831x_usb_cfg(void) } /* Configure clock */ - temp = in_be32(immap + MPC83XX_SCCR_OFFS); - temp &= ~MPC83XX_SCCR_USB_MASK; - temp |= MPC83XX_SCCR_USB_DRCM_11; /* 1:3 */ - out_be32(immap + MPC83XX_SCCR_OFFS, temp); + immr_node = of_get_parent(np); + if (immr_node && of_device_is_compatible(immr_node, "fsl,mpc8315-immr")) + clrsetbits_be32(immap + MPC83XX_SCCR_OFFS, + MPC8315_SCCR_USB_MASK, + MPC8315_SCCR_USB_DRCM_11); + else + clrsetbits_be32(immap + MPC83XX_SCCR_OFFS, + MPC83XX_SCCR_USB_MASK, + MPC83XX_SCCR_USB_DRCM_11); /* Configure pin mux for ULPI. There is no pin mux for UTMI */ if (prop && !strcmp(prop, "ulpi")) { @@ -144,6 +150,9 @@ int mpc831x_usb_cfg(void) iounmap(immap); + if (immr_node) + of_node_put(immr_node); + /* Map USB SOC space */ ret = of_address_to_resource(np, 0, &res); if (ret) { |