|
@@ -51,6 +51,26 @@ void cpu_init_f(immap_t __iomem *immr)
|
|
|
clrsetbits_be32(&immr->im_clkrst.car_sccr, ~SCCR_MASK,
|
|
|
CONFIG_SYS_SCCR);
|
|
|
|
|
|
+ /*
|
|
|
+ * MPC866/885 ERRATA GLL2
|
|
|
+ * Description:
|
|
|
+ * In 1:2:1 mode, when HRESET is detected at the positive edge of
|
|
|
+ * EXTCLK, then there will be a loss of phase between
|
|
|
+ * EXTCLK and CLKOUT.
|
|
|
+ *
|
|
|
+ * Workaround:
|
|
|
+ * Reprogram the SCCR:
|
|
|
+ * 1. Write 1'b00 to SCCR[EBDF].
|
|
|
+ * 2. Write 1'b01 to SCCR[EBDF].
|
|
|
+ * 3. Rewrite the desired value to the PLPRCR register.
|
|
|
+ */
|
|
|
+ reg = in_be32(&immr->im_clkrst.car_sccr);
|
|
|
+ /* Are we in mode 1:2:1 ? */
|
|
|
+ if ((reg & SCCR_EBDF11) == SCCR_EBDF01) {
|
|
|
+ clrbits_be32(&immr->im_clkrst.car_sccr, SCCR_EBDF11);
|
|
|
+ setbits_be32(&immr->im_clkrst.car_sccr, SCCR_EBDF01);
|
|
|
+ }
|
|
|
+
|
|
|
/* PLL (CPU clock) settings (15-30) */
|
|
|
|
|
|
out_be32(&immr->im_clkrstk.cark_plprcrk, KAPWR_KEY);
|