• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/arch/arm/mach-s3c64xx/include/mach/
1/* arch/arm/plat-s3c64xx/include/plat/pll.h
2 *
3 * Copyright 2008 Openmoko, Inc.
4 * Copyright 2008 Simtec Electronics
5 *	Ben Dooks <ben@simtec.co.uk>
6 *	http://armlinux.simtec.co.uk/
7 *
8 * S3C64XX PLL code
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2 as
12 * published by the Free Software Foundation.
13*/
14
15#define S3C6400_PLL_MDIV_MASK	((1 << (25-16+1)) - 1)
16#define S3C6400_PLL_PDIV_MASK	((1 << (13-8+1)) - 1)
17#define S3C6400_PLL_SDIV_MASK	((1 << (2-0+1)) - 1)
18#define S3C6400_PLL_MDIV_SHIFT	(16)
19#define S3C6400_PLL_PDIV_SHIFT	(8)
20#define S3C6400_PLL_SDIV_SHIFT	(0)
21
22#include <asm/div64.h>
23#include <plat/pll6553x.h>
24
25static inline unsigned long s3c6400_get_pll(unsigned long baseclk,
26					    u32 pllcon)
27{
28	u32 mdiv, pdiv, sdiv;
29	u64 fvco = baseclk;
30
31	mdiv = (pllcon >> S3C6400_PLL_MDIV_SHIFT) & S3C6400_PLL_MDIV_MASK;
32	pdiv = (pllcon >> S3C6400_PLL_PDIV_SHIFT) & S3C6400_PLL_PDIV_MASK;
33	sdiv = (pllcon >> S3C6400_PLL_SDIV_SHIFT) & S3C6400_PLL_SDIV_MASK;
34
35	fvco *= mdiv;
36	do_div(fvco, (pdiv << sdiv));
37
38	return (unsigned long)fvco;
39}
40
41static inline unsigned long s3c6400_get_epll(unsigned long baseclk)
42{
43	return s3c_get_pll6553x(baseclk, __raw_readl(S3C_EPLL_CON0),
44				__raw_readl(S3C_EPLL_CON1));
45}
46