aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ppc40x/patches-2.6.30/002-disable_emac_loopback_mode.patch
blob: a82a7a1320fc3b7d22dd1cef5b76bce496aa11c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
--- 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_set_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;
 }