summaryrefslogtreecommitdiff
path: root/cpu/mpc83xx/cpu_init.c
diff options
context:
space:
mode:
authorAndre Schwarz <andre.schwarz@matrix-vision.de>2008-06-23 11:40:56 +0200
committerKim Phillips <kim.phillips@freescale.com>2008-06-25 17:04:28 -0500
commit846f1574ddddeda2bc227655e687308695f41cdc (patch)
tree80d5babf6387fc12c2a174c9305c9c6e706464b7 /cpu/mpc83xx/cpu_init.c
parent4890246a2c5df90a74e2941e3673a49bbd36aee9 (diff)
downloadu-boot-imx-846f1574ddddeda2bc227655e687308695f41cdc.zip
u-boot-imx-846f1574ddddeda2bc227655e687308695f41cdc.tar.gz
u-boot-imx-846f1574ddddeda2bc227655e687308695f41cdc.tar.bz2
fix system config overwrite @ MPC834x and MPC8313
During 83xx setup the "System I/O configuration register high" gets overwritten with user defined value if CFG_SICRH is defined. Regarding to the MPC834x manual (Table 5-28 reve.1) bits 28+29 of SICRH must keep their reset value regardless of configuration. On my board (using RGMII) those bits are set after reset - yet it's unclear where they come from. The patch keeps both bits on MPC834x and MPC8313. Signed-off-by: Andre Schwarz <andre.schwarz@matrix-vision.de> Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
Diffstat (limited to 'cpu/mpc83xx/cpu_init.c')
-rw-r--r--cpu/mpc83xx/cpu_init.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/cpu/mpc83xx/cpu_init.c b/cpu/mpc83xx/cpu_init.c
index fb184d8..67c9e57 100644
--- a/cpu/mpc83xx/cpu_init.c
+++ b/cpu/mpc83xx/cpu_init.c
@@ -181,8 +181,13 @@ void cpu_init_f (volatile immap_t * im)
/* System General Purpose Register */
#ifdef CFG_SICRH
+#if defined(CONFIG_MPC834X) || defined(CONFIG_MPC8313)
+ /* regarding to MPC34x manual rev.1 bits 28..29 must be preserved */
+ im->sysconf.sicrh = (im->sysconf.sicrh & 0x0000000C) | CFG_SICRH;
+#else
im->sysconf.sicrh = CFG_SICRH;
#endif
+#endif
#ifdef CFG_SICRL
im->sysconf.sicrl = CFG_SICRL;
#endif