📄 time.c
字号:
/* * arch/arm/mach-lh7a40x/time.c * * Copyright (C) 2004 Logic Product Development * * 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. * */#include <linux/config.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/interrupt.h>#include <linux/time.h>#include <asm/hardware.h>#include <asm/io.h>#include <asm/irq.h>#include <asm/leds.h>#include <asm/mach/time.h>#include "common.h"#if HZ < 100# define TIMER_CONTROL TIMER_CONTROL2# define TIMER_LOAD TIMER_LOAD2# define TIMER_CONSTANT (508469/HZ)# define TIMER_MODE (TIMER_C_ENABLE | TIMER_C_PERIODIC | TIMER_C_508KHZ)# define TIMER_EOI TIMER_EOI2# define TIMER_IRQ IRQ_T2UI#else# define TIMER_CONTROL TIMER_CONTROL3# define TIMER_LOAD TIMER_LOAD3# define TIMER_CONSTANT (3686400/HZ)# define TIMER_MODE (TIMER_C_ENABLE | TIMER_C_PERIODIC)# define TIMER_EOI TIMER_EOI3# define TIMER_IRQ IRQ_T3UI#endifstatic irqreturn_tlh7a40x_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs){ write_seqlock(&xtime_lock); TIMER_EOI = 0; timer_tick(regs); write_sequnlock(&xtime_lock); return IRQ_HANDLED;}static struct irqaction lh7a40x_timer_irq = { .name = "LHA740x Timer Tick", .flags = SA_INTERRUPT | SA_TIMER, .handler = lh7a40x_timer_interrupt,};static void __init lh7a40x_timer_init(void){ /* Stop/disable all timers */ TIMER_CONTROL1 = 0; TIMER_CONTROL2 = 0; TIMER_CONTROL3 = 0; setup_irq (TIMER_IRQ, &lh7a40x_timer_irq); TIMER_LOAD = TIMER_CONSTANT; TIMER_CONTROL = TIMER_MODE;}struct sys_timer lh7a40x_timer = { .init = &lh7a40x_timer_init,};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -