{
#ifndef CONFIG_MBX
volatile memctl8xx_t *memctl = &immr->im_memctl;
- ulong reg;
+# ifdef CFG_PLPRCR
+ ulong mfmask;
+# endif
#endif
+ ulong reg;
/* SYPCR - contains watchdog control (11-9) */
#endif /* CONFIG_WATCHDOG */
/* SIUMCR - contains debug pin configuration (11-6) */
-
+#ifndef CONFIG_SVM_SC8xx
immr->im_siu_conf.sc_siumcr |= CFG_SIUMCR;
-
+#else
+ immr->im_siu_conf.sc_siumcr = CFG_SIUMCR;
+#endif
/* initialize timebase status and control register (11-26) */
/* unlock TBSCRK */
immr->im_sitk.sitk_piscrk = KAPWR_KEY;
immr->im_sit.sit_piscr = CFG_PISCR;
+ /* System integration timers. Don't change EBDF! (15-27) */
+
+ immr->im_clkrstk.cark_sccrk = KAPWR_KEY;
+ reg = immr->im_clkrst.car_sccr;
+ reg &= SCCR_MASK;
+ reg |= CFG_SCCR;
+ immr->im_clkrst.car_sccr = reg;
+
/* PLL (CPU clock) settings (15-30) */
immr->im_clkrstk.cark_plprcrk = KAPWR_KEY;
/* If CFG_PLPRCR (set in the various *_config.h files) tries to
* set the MF field, then just copy CFG_PLPRCR over car_plprcr,
- * otherwise OR in CFG_PLPRCR so we do not change the currentMF
+ * otherwise OR in CFG_PLPRCR so we do not change the current MF
* field value.
+ *
+ * For newer (starting MPC866) chips PLPRCR layout is different.
*/
-#if ((CFG_PLPRCR & PLPRCR_MF_MSK) != 0)
- reg = CFG_PLPRCR; /* reset control bits */
-#else
- reg = immr->im_clkrst.car_plprcr;
- reg &= PLPRCR_MF_MSK; /* isolate MF field */
- reg |= CFG_PLPRCR; /* reset control bits */
-#endif
+#ifdef CFG_PLPRCR
+ if (get_immr(0xFFFF) >= MPC8xx_NEW_CLK)
+ mfmask = PLPRCR_MFACT_MSK;
+ else
+ mfmask = PLPRCR_MF_MSK;
+
+ if ((CFG_PLPRCR & mfmask) != 0)
+ reg = CFG_PLPRCR; /* reset control bits */
+ else {
+ reg = immr->im_clkrst.car_plprcr;
+ reg &= mfmask; /* isolate MF-related fields */
+ reg |= CFG_PLPRCR; /* reset control bits */
+ }
immr->im_clkrst.car_plprcr = reg;
-
- /* System integration timers. Don't change EBDF! (15-27) */
-
- immr->im_clkrstk.cark_sccrk = KAPWR_KEY;
- reg = immr->im_clkrst.car_sccr;
- reg &= SCCR_MASK;
- reg |= CFG_SCCR;
- immr->im_clkrst.car_sccr = reg;
+#endif
/*
* Memory Controller:
* I owe him a free beer. - wd]
*/
-#if defined(CONFIG_GTH) || \
+#if defined(CONFIG_ADDERII) || \
+ defined(CONFIG_GTH) || \
defined(CONFIG_HERMES) || \
defined(CONFIG_ICU862) || \
defined(CONFIG_IP860) || \
defined(CONFIG_R360MPI) || \
defined(CONFIG_RPXCLASSIC) || \
defined(CONFIG_RPXLITE) || \
- defined(CONFIG_SPD823TS) || \
- (defined(CONFIG_MPC860T) && defined(CONFIG_FADS))
+ defined(CONFIG_SPD823TS)
memctl->memc_br0 = CFG_BR0_PRELIM;
#endif