浏览代码

arm: rmobile: lager: Fix change of the CPU frequency

The change of the CPU frequency is waited for until PLL0ST of the PLLECR is
set to 1.

Signed-off-by: Hisashi Nakamura <hisashi.nakamura.ak@renesas.com>
Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Nobuhiro Iwamatsu 10 年之前
父节点
当前提交
d8659c6d25
共有 2 个文件被更改,包括 7 次插入0 次删除
  1. 2 0
      arch/arm/include/asm/arch-rmobile/rcar-base.h
  2. 5 0
      board/renesas/lager/lager.c

+ 2 - 0
arch/arm/include/asm/arch-rmobile/rcar-base.h

@@ -385,6 +385,8 @@
 #define PLL0CR			0xE61500D8
 #define PLL0_STC_MASK		0x7F000000
 #define PLL0_STC_BIT		24
+#define PLLECR			0xE61500D0
+#define PLL0ST			0x100
 
 #ifndef __ASSEMBLY__
 #include <asm/types.h>

+ 5 - 0
board/renesas/lager/lager.c

@@ -36,9 +36,14 @@ void s_init(void)
 
 	/* CPU frequency setting. Set to 1.4GHz */
 	if (rmobile_get_cpu_rev_integer() >= R8A7790_CUT_ES2X) {
+		u32 stat = 0;
 		u32 stc = ((1400 / CLK2MHZ(CONFIG_SYS_CLK_FREQ)) - 1)
 			<< PLL0_STC_BIT;
 		clrsetbits_le32(PLL0CR, PLL0_STC_MASK, stc);
+
+		do {
+			stat = readl(PLLECR) & PLL0ST;
+		} while (stat == 0x0);
 	}
 
 	/* QoS(Quality-of-Service) Init */