clock.h
来自「linux 内核源代码」· C头文件 代码 · 共 72 行
H
72 行
/* * include/asm-arm/arch-ns9xxx/clock.h * * Copyright (C) 2007 by Digi International Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 as published by * the Free Software Foundation. */#ifndef __ASM_ARCH_CLOCK_H#define __ASM_ARCH_CLOCK_H#include <asm/arch-ns9xxx/regs-sys.h>#define CRYSTAL 29491200 /* Hz *//* The HRM calls this value f_vco */static inline u32 ns9xxx_systemclock(void) __attribute__((const));static inline u32 ns9xxx_systemclock(void){ u32 pll = __raw_readl(SYS_PLL); /* * The system clock should be a multiple of HZ * TIMERCLOCKSELECT (in * time.c). * * The following values are given: * - TIMERCLOCKSELECT == 2^i for an i in {0 .. 6} * - CRYSTAL == 29491200 == 2^17 * 3^2 * 5^2 * - ND in {0 .. 31} * - FS in {0 .. 3} * * Assuming the worst, we consider: * - TIMERCLOCKSELECT == 64 * - ND == 0 * - FS == 3 * * So HZ should be a divisor of: * (CRYSTAL * (ND + 1) >> FS) / TIMERCLOCKSELECT * == (2^17 * 3^2 * 5^2 * 1 >> 3) / 64 * == 2^8 * 3^2 * 5^2 * == 57600 * * Currently HZ is defined to be 100 for this platform. * * Fine. */ return CRYSTAL * (REGGETIM(pll, SYS_PLL, ND) + 1) >> REGGETIM(pll, SYS_PLL, FS);}static inline u32 ns9xxx_cpuclock(void) __attribute__((const));static inline u32 ns9xxx_cpuclock(void){ return ns9xxx_systemclock() / 2;}static inline u32 ns9xxx_ahbclock(void) __attribute__((const));static inline u32 ns9xxx_ahbclock(void){ return ns9xxx_systemclock() / 4;}static inline u32 ns9xxx_bbusclock(void) __attribute__((const));static inline u32 ns9xxx_bbusclock(void){ return ns9xxx_systemclock() / 8;}#endif /* ifndef __ASM_ARCH_CLOCK_H */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?