소스 검색

ARM: at91: clock: add PMC_PLLICPR init function

To avoid the duplicated code, add the PMC_PLLICPR init function.

Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
Tested-by: Heiko Schocher <hs@denx.de>
Reviewed-by: Andreas Bießmann <andreas.devel@googlemail.com>
Wenyou Yang 9 년 전
부모
커밋
c0b868c087
3개의 변경된 파일15개의 추가작업 그리고 0개의 파일을 삭제
  1. 7 0
      arch/arm/mach-at91/clock.c
  2. 7 0
      arch/arm/mach-at91/include/mach/at91_pmc.h
  3. 1 0
      arch/arm/mach-at91/include/mach/clk.h

+ 7 - 0
arch/arm/mach-at91/clock.c

@@ -112,3 +112,10 @@ void at91_usb_clk_init(u32 value)
 
 	writel(value, &pmc->usb);
 }
+
+void at91_pllicpr_init(u32 icpr)
+{
+	struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+
+	writel(icpr, &pmc->pllicpr);
+}

+ 7 - 0
arch/arm/mach-at91/include/mach/at91_pmc.h

@@ -246,4 +246,11 @@ typedef struct at91_pmc {
 #define		AT91_PMC_GCKRDY		(1 << 24)
 
 #define		AT91_PMC_PROTKEY	0x504d4301	/* Activation Code */
+
+/* PLL Charge Pump Current Register (PMC_PLLICPR) */
+#define AT91_PMC_ICP_PLLA(x)		(((x) & 0x3) << 0)
+#define AT91_PMC_IPLL_PLLA(x)		(((x) & 0x7) << 8)
+#define AT91_PMC_ICP_PLLU(x)		(((x) & 0x3) << 16)
+#define AT91_PMC_IVCO_PLLU(x)		(((x) & 0x3) << 24)
+
 #endif

+ 1 - 0
arch/arm/mach-at91/include/mach/clk.h

@@ -135,5 +135,6 @@ int at91_upll_clk_disable(void);
 void at91_usb_clk_init(u32 value);
 int at91_pllb_clk_enable(u32 pllbr);
 int at91_pllb_clk_disable(void);
+void at91_pllicpr_init(u32 icpr);
 
 #endif /* __ASM_ARM_ARCH_CLK_H__ */