Linux 时钟模块分析1
2016-10-02 17:50
288 查看
1.硬件相关信息
NanoPC-T2用的是saumung 的S5P4418,所以参考 SEC_Users_Manual_S5P4418_Users_Manual_Preliminary_Ver.0.10.pdf 134页
PLL的结构示意图
2. 源码分析
PHY_BASEADDR_CLKPWR_MODULE 是寄存器基地址, 在 arch/arm/mach-s5p4418/prototype/base/nx_chip.h中定义
#define PHY_BASEADDR_CLKPWR_MODULE 0xC0010000
static struct NX_CLKPWR_RegisterSet * const clkpwr =
(struct NX_CLKPWR_RegisterSet *)IO_ADDRESS(PHY_BASEADDR_CLKPWR_MODULE);
static unsigned int pll_get_rate(unsigned int pllN, unsigned int xtal)
{
unsigned int val, val1, nP, nM, nS, nK;
val = clkpwr->PLLSETREG[pllN];
val1 = clkpwr->PLLSETREG_SSCG[pllN];
xtal /= 1000; /* Unit Khz */
nP= (val >> 18) & 0x03F;
nM= (val >> 8) & 0x3FF;
nS= (val >> 0) & 0x0FF;
nK= (val1>> 16) & 0xFFFF;
if(pllN < 2)
return (unsigned int)(((nM * xtal)/nP)>>nS)*1000;
else
return (unsigned int)((((nM * xtal)/nP)>>nS)+((((nK * xtal)/nP)>>nS)>>16))*1000;
}PLLL0 和PLL1是non-dithered PLL,计算公式入下:
PLLL0 和PLL1是dithered PLL,计算公式入下:
NanoPC-T2用的是saumung 的S5P4418,所以参考 SEC_Users_Manual_S5P4418_Users_Manual_Preliminary_Ver.0.10.pdf 134页
PLL的结构示意图
2. 源码分析
PHY_BASEADDR_CLKPWR_MODULE 是寄存器基地址, 在 arch/arm/mach-s5p4418/prototype/base/nx_chip.h中定义
#define PHY_BASEADDR_CLKPWR_MODULE 0xC0010000
static struct NX_CLKPWR_RegisterSet * const clkpwr =
(struct NX_CLKPWR_RegisterSet *)IO_ADDRESS(PHY_BASEADDR_CLKPWR_MODULE);
static unsigned int pll_get_rate(unsigned int pllN, unsigned int xtal)
{
unsigned int val, val1, nP, nM, nS, nK;
val = clkpwr->PLLSETREG[pllN];
val1 = clkpwr->PLLSETREG_SSCG[pllN];
xtal /= 1000; /* Unit Khz */
nP= (val >> 18) & 0x03F;
nM= (val >> 8) & 0x3FF;
nS= (val >> 0) & 0x0FF;
nK= (val1>> 16) & 0xFFFF;
if(pllN < 2)
return (unsigned int)(((nM * xtal)/nP)>>nS)*1000;
else
return (unsigned int)((((nM * xtal)/nP)>>nS)+((((nK * xtal)/nP)>>nS)>>16))*1000;
}PLLL0 和PLL1是non-dithered PLL,计算公式入下:
PLLL0 和PLL1是dithered PLL,计算公式入下:
相关文章推荐
- linux中CPU各个模块的时钟驱动函数分析
- Linux 时钟模块分析2
- ARM-Linux驱动--RTC(实时时钟)驱动分析
- ARM-Linux驱动--RTC(实时时钟)驱动分析 .
- Linux netfilter 学习笔记 之九 ip层netfilter的连接跟踪模块代码分析
- Linux netfilter 学习笔记 之九 ip层netfilter的连接跟踪模块代码分析
- Linux netfilter 学习笔记 之七 ip层netfilter的连接跟踪模块的概念及相关的数据结构分析
- s3c2410实时时钟模块要点分析
- linux驱动之模块驱动makefile详细分析
- linux 驱动程序 设备模块 设备号 设备文件创建 设备注册 字符驱动设备分析
- linux depmod命令参数及用法详解--分析可载入模块的相依性
- Linux vlan 功能模块分析
- ARM-linux s3c2440 之时钟分析
- Linux操作系统的安全模块要点分析
- linux音频alsa-uda134x驱动分析之二(时钟)
- Linux netfilter 学习笔记 之七 ip层netfilter的连接跟踪模块的概念及相关的数据结构分析
- ARM-Linux驱动--RTC(实时时钟)驱动分析
- linux 2.6.23时钟中断与调度分析
- Linux内核分析 - 网络[十二]:UDP模块 - socket
- 快速分析Linux环境下大规模源码各模块关系的小技巧