| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | /* *  linux/arch/arm/kernel/arch_timer.c * *  Copyright (C) 2011 ARM Ltd. *  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. */#include <linux/init.h>#include <linux/kernel.h>#include <linux/delay.h>#include <linux/device.h>#include <linux/smp.h>#include <linux/cpu.h>#include <linux/jiffies.h>#include <linux/clockchips.h>#include <linux/interrupt.h>#include <linux/of_irq.h>#include <linux/io.h>#include <asm/cputype.h>#include <asm/delay.h>#include <asm/localtimer.h>#include <asm/arch_timer.h>#include <asm/system_info.h>#include <asm/sched_clock.h>static unsigned long arch_timer_rate;enum ppi_nr {	PHYS_SECURE_PPI,	PHYS_NONSECURE_PPI,	VIRT_PPI,	HYP_PPI,	MAX_TIMER_PPI};static int arch_timer_ppi[MAX_TIMER_PPI];static struct clock_event_device __percpu **arch_timer_evt;static struct delay_timer arch_delay_timer;static bool arch_timer_use_virtual = true;/* * Architected system timer support. */#define ARCH_TIMER_CTRL_ENABLE		(1 << 0)#define ARCH_TIMER_CTRL_IT_MASK		(1 << 1)#define ARCH_TIMER_CTRL_IT_STAT		(1 << 2)#define ARCH_TIMER_REG_CTRL		0#define ARCH_TIMER_REG_FREQ		1
 |