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
|