--- a/arch/powerpc/platforms/40x/kilauea.c +++ b/arch/powerpc/platforms/40x/kilauea.c @@ -21,6 +21,8 @@ #include <asm/uic.h> #include <asm/pci-bridge.h> #include <asm/ppc4xx.h> +#include <asm/dcr.h> +#include <asm/dcr-regs.h> static __initdata struct of_device_id kilauea_of_bus[] = { { .compatible = "ibm,plb4", }, @@ -46,6 +48,13 @@ static int __init kilauea_probe(void) ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC; + /* + * 405EX(r) has SDR0_MFR[E0CS/E1CS] set after reset. This selects + * the internal loopback mode. Clear these bits so that both EMACs + * don't use loopback mode as deafult. + */ + mtdcri(SDR0, SDR0_MFR, mfdcri(SDR0, SDR0_MFR) & ~0x0c000000); + return 1; }