From 6c3a64bb8e14e01ef1b4ef3ca2750cebc1ecd76f Mon Sep 17 00:00:00 2001 From: Kim Phillips Date: Mon, 5 Nov 2007 12:15:51 -0600 Subject: [PATCH] --- yaml --- r: 73959 b: refs/heads/master c: 29a50a8bd04ce88efe530fad4d0e21d045c0f25a h: refs/heads/master i: 73957: d21b522a8212f3d39dd74c4b8e9dbf856a86f8e2 73955: b898405d89e678205c079f9537f20d7297b71360 73951: ce3c85edf4c1304d77aa2fe271432058a4739d1c v: v3 --- [refs] | 2 +- .../arch/powerpc/platforms/83xx/mpc836x_mds.c | 31 +++++++++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 64675fb70646..1b2ad471e15b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 34be4561cd47bab1cd5796ea355dd373264da288 +refs/heads/master: 29a50a8bd04ce88efe530fad4d0e21d045c0f25a diff --git a/trunk/arch/powerpc/platforms/83xx/mpc836x_mds.c b/trunk/arch/powerpc/platforms/83xx/mpc836x_mds.c index 0f3855c95ff5..0a722601a2f0 100644 --- a/trunk/arch/powerpc/platforms/83xx/mpc836x_mds.c +++ b/trunk/arch/powerpc/platforms/83xx/mpc836x_mds.c @@ -96,14 +96,39 @@ static void __init mpc836x_mds_setup_arch(void) if ((np = of_find_compatible_node(NULL, "network", "ucc_geth")) != NULL){ + uint svid; + /* Reset the Ethernet PHY */ - bcsr_regs[9] &= ~0x20; +#define BCSR9_GETHRST 0x20 + clrbits8(&bcsr_regs[9], BCSR9_GETHRST); udelay(1000); - bcsr_regs[9] |= 0x20; + setbits8(&bcsr_regs[9], BCSR9_GETHRST); + + /* handle mpc8360ea rev.2.1 erratum 2: RGMII Timing */ + svid = mfspr(SPRN_SVR); + if (svid == 0x80480021) { + void __iomem *immap; + + immap = ioremap(get_immrbase() + 0x14a8, 8); + + /* + * IMMR + 0x14A8[4:5] = 11 (clk delay for UCC 2) + * IMMR + 0x14A8[18:19] = 11 (clk delay for UCC 1) + */ + setbits32(immap, 0x0c003000); + + /* + * IMMR + 0x14AC[20:27] = 10101010 + * (data delay for both UCC's) + */ + clrsetbits_be32(immap + 4, 0xff0, 0xaa0); + + iounmap(immap); + } + iounmap(bcsr_regs); of_node_put(np); } - #endif /* CONFIG_QUICC_ENGINE */ }