Skip to content

Commit

Permalink
[POWERPC] 83xx: Handle mpc8360 rev. 2.1 RGMII timing erratum
Browse files Browse the repository at this point in the history
If on a rev. 2.1, adjust UCC clock and data timing characteristics
as specified in the rev.2.1 erratum #2.

Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
  • Loading branch information
Kim Phillips authored and Kumar Gala committed Nov 20, 2007
1 parent 34be456 commit 29a50a8
Showing 1 changed file with 28 additions and 3 deletions.
31 changes: 28 additions & 3 deletions arch/powerpc/platforms/83xx/mpc836x_mds.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
}

Expand Down

0 comments on commit 29a50a8

Please sign in to comment.