Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/mach-h720x/cpu-h7201.c
10817 views
1
/*
2
* linux/arch/arm/mach-h720x/cpu-h7201.c
3
*
4
* Copyright (C) 2003 Thomas Gleixner <[email protected]>
5
* 2003 Robert Schwebel <[email protected]>
6
* 2004 Sascha Hauer <[email protected]>
7
*
8
* processor specific stuff for the Hynix h7201
9
*
10
* This program is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License version 2 as
12
* published by the Free Software Foundation.
13
*
14
*/
15
16
#include <linux/init.h>
17
#include <linux/interrupt.h>
18
#include <linux/module.h>
19
#include <asm/types.h>
20
#include <mach/hardware.h>
21
#include <asm/irq.h>
22
#include <mach/irqs.h>
23
#include <asm/mach/irq.h>
24
#include <asm/mach/time.h>
25
#include "common.h"
26
/*
27
* Timer interrupt handler
28
*/
29
static irqreturn_t
30
h7201_timer_interrupt(int irq, void *dev_id)
31
{
32
CPU_REG (TIMER_VIRT, TIMER_TOPSTAT);
33
timer_tick();
34
35
return IRQ_HANDLED;
36
}
37
38
static struct irqaction h7201_timer_irq = {
39
.name = "h7201 Timer Tick",
40
.flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
41
.handler = h7201_timer_interrupt,
42
};
43
44
/*
45
* Setup TIMER0 as system timer
46
*/
47
void __init h7201_init_time(void)
48
{
49
CPU_REG (TIMER_VIRT, TM0_PERIOD) = LATCH;
50
CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_RESET;
51
CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_REPEAT | TM_START;
52
CPU_REG (TIMER_VIRT, TIMER_TOPCTRL) = ENABLE_TM0_INTR | TIMER_ENABLE_BIT;
53
54
setup_irq(IRQ_TIMER0, &h7201_timer_irq);
55
}
56
57
struct sys_timer h7201_timer = {
58
.init = h7201_init_time,
59
.offset = h720x_gettimeoffset,
60
};
61
62