#define EMI_DIV_MAX 8
#define NFC_DIV_MAX 8
-#define MX5_CBCMR 0x00015154
-#define MX5_CBCDR 0x02888945
-
struct fixed_pll_mfd {
u32 ref_clk_hz;
u32 mfd;
u32 cbcdr = __raw_readl(&mxc_ccm->cbcdr);
if (emi_clk > MAX_DDR_CLK) {
- printf("Warning:DDR clock should not exceed %d MHz\n",
+ printf("Warning: DDR clock should not exceed %d MHz\n",
MAX_DDR_CLK / SZ_DEC_1M);
emi_clk = MAX_DDR_CLK;
}
clk_src = get_periph_clk();
/* Find DDR clock input */
clk_sel = (cbcmr >> 10) & 0x3;
+#ifdef CONFIG_MX51
+ if (cbcdr & MXC_CCM_CBCDR_DDR_HIFREQ_SEL) {
+ clk_src = decode_pll(mxc_plls[PLL1_CLOCK], CONFIG_SYS_MX5_HCLK);
+ clk_sel = 4;
+ }
+#endif
switch (clk_sel) {
case 0:
shift = 16;
case 3:
shift = 10;
break;
+ case 4:
+ shift = 27;
+ break;
default:
return -EINVAL;
}
div = clk_src / emi_clk;
else
div = (clk_src / emi_clk) + 1;
- if (div > 8)
- div = 8;
+ if (--div > 7)
+ div = 7;
- cbcdr = cbcdr & ~(0x7 << shift);
- cbcdr |= ((div - 1) << shift);
+ cbcdr &= ~(0x7 << shift);
+ cbcdr |= div << shift;
__raw_writel(cbcdr, &mxc_ccm->cbcdr);
while (__raw_readl(&mxc_ccm->cdhipr) != 0)
;
return -EINVAL;
break;
default:
- printf("Warning:Unsupported or invalid clock type\n");
+ printf("Warning: Unsupported or invalid clock type: %d\n",
+ clk);
+ return -EINVAL;
}
return 0;