diff options
author | Ben Dooks <ben-linux@fluff.org> | 2008-12-18 14:52:00 +0000 |
---|---|---|
committer | Ben Dooks <ben-linux@fluff.org> | 2008-12-18 14:52:00 +0000 |
commit | c6ad115876763e4f15055982ecb9579cb7abab5f (patch) | |
tree | 75d2b0f5f31540ff8a2dcdde9e0f087b25c68868 /arch/arm/plat-s3c24xx/include/plat/pll.h | |
parent | 1d19fdba149f4db055902c30b27adfb7d1ead058 (diff) | |
parent | 28ab44c5be60a9b91021a7cc7b4e202775c04764 (diff) | |
download | talos-op-linux-c6ad115876763e4f15055982ecb9579cb7abab5f.tar.gz talos-op-linux-c6ad115876763e4f15055982ecb9579cb7abab5f.zip |
Merge branch 'next-s3c24xx' into next-merged
Diffstat (limited to 'arch/arm/plat-s3c24xx/include/plat/pll.h')
-rw-r--r-- | arch/arm/plat-s3c24xx/include/plat/pll.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/arch/arm/plat-s3c24xx/include/plat/pll.h b/arch/arm/plat-s3c24xx/include/plat/pll.h new file mode 100644 index 000000000000..7ea8bffa7a9c --- /dev/null +++ b/arch/arm/plat-s3c24xx/include/plat/pll.h @@ -0,0 +1,37 @@ +/* linux/arch/arm/plat-s3c24xx/include/plat/pll.h + * + * Copyright 2008 Simtec Electronics + * Ben Dooks <ben@simtec.co.uk> + * http://armlinux.simtec.co.uk/ + * + * S3C24xx - common pll registers and code + */ + +#define S3C24XX_PLLCON_MDIVSHIFT 12 +#define S3C24XX_PLLCON_PDIVSHIFT 4 +#define S3C24XX_PLLCON_SDIVSHIFT 0 +#define S3C24XX_PLLCON_MDIVMASK ((1<<(1+(19-12)))-1) +#define S3C24XX_PLLCON_PDIVMASK ((1<<5)-1) +#define S3C24XX_PLLCON_SDIVMASK 3 + +#include <asm/div64.h> + +static inline unsigned int +s3c24xx_get_pll(unsigned int pllval, unsigned int baseclk) +{ + unsigned int mdiv, pdiv, sdiv; + uint64_t fvco; + + mdiv = pllval >> S3C24XX_PLLCON_MDIVSHIFT; + pdiv = pllval >> S3C24XX_PLLCON_PDIVSHIFT; + sdiv = pllval >> S3C24XX_PLLCON_SDIVSHIFT; + + mdiv &= S3C24XX_PLLCON_MDIVMASK; + pdiv &= S3C24XX_PLLCON_PDIVMASK; + sdiv &= S3C24XX_PLLCON_SDIVMASK; + + fvco = (uint64_t)baseclk * (mdiv + 8); + do_div(fvco, (pdiv + 2) << sdiv); + + return (unsigned int)fvco; +} |