arm: mxs: be more careful when enabling gpmi_clk
The data sheet says that the DIV field cannot change while the CLKGATE bit is set or modified. So do it a little more carefully, by first clearing the bit, waiting for that to appear, then setting the DIV field. Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
This commit is contained in:
committed by
Stefano Babic
parent
fb94625229
commit
abaf5c9804
@@ -103,8 +103,11 @@ int arch_cpu_init(void)
|
|||||||
&clkctrl_regs->hw_clkctrl_clkseq_set);
|
&clkctrl_regs->hw_clkctrl_clkseq_set);
|
||||||
|
|
||||||
/* Set GPMI clock to ref_xtal / 1 */
|
/* Set GPMI clock to ref_xtal / 1 */
|
||||||
|
clrbits_le32(&clkctrl_regs->hw_clkctrl_gpmi, CLKCTRL_GPMI_CLKGATE);
|
||||||
|
while (readl(&clkctrl_regs->hw_clkctrl_gpmi) & CLKCTRL_GPMI_CLKGATE)
|
||||||
|
;
|
||||||
clrsetbits_le32(&clkctrl_regs->hw_clkctrl_gpmi,
|
clrsetbits_le32(&clkctrl_regs->hw_clkctrl_gpmi,
|
||||||
CLKCTRL_GPMI_CLKGATE | CLKCTRL_GPMI_DIV_MASK, 1);
|
CLKCTRL_GPMI_DIV_MASK, 1);
|
||||||
|
|
||||||
udelay(1000);
|
udelay(1000);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user