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 + -
显示快捷键?