initial support for 2.6.30
[openwrt/openwrt.git] / target / linux / ppc40x / patches-2.6.30 / 002-disable_emac_loopback_mode.patch
1 --- a/arch/powerpc/platforms/40x/kilauea.c
2 +++ b/arch/powerpc/platforms/40x/kilauea.c
3 @@ -21,6 +21,8 @@
4 #include <asm/uic.h>
5 #include <asm/pci-bridge.h>
6 #include <asm/ppc4xx.h>
7 +#include <asm/dcr.h>
8 +#include <asm/dcr-regs.h>
9
10 static __initdata struct of_device_id kilauea_of_bus[] = {
11 { .compatible = "ibm,plb4", },
12 @@ -46,6 +48,13 @@ static int __init kilauea_probe(void)
13
14 ppc_pci_set_flags(PPC_PCI_REASSIGN_ALL_RSRC);
15
16 + /*
17 + * 405EX(r) has SDR0_MFR[E0CS/E1CS] set after reset. This selects
18 + * the internal loopback mode. Clear these bits so that both EMACs
19 + * don't use loopback mode as deafult.
20 + */
21 + mtdcri(SDR0, SDR0_MFR, mfdcri(SDR0, SDR0_MFR) & ~0x0c000000);
22 +
23 return 1;
24 }
25