Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/mach-mmp/irq-pxa168.c
10817 views
1
/*
2
* linux/arch/arm/mach-mmp/irq.c
3
*
4
* Generic IRQ handling, GPIO IRQ demultiplexing, etc.
5
*
6
* Author: Bin Yang <[email protected]>
7
* Created: Sep 30, 2008
8
* Copyright: Marvell International Ltd.
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
#include <linux/init.h>
16
#include <linux/irq.h>
17
#include <linux/io.h>
18
19
#include <mach/regs-icu.h>
20
21
#include "common.h"
22
23
#define IRQ_ROUTE_TO_AP (ICU_INT_CONF_AP_INT | ICU_INT_CONF_IRQ)
24
25
#define PRIORITY_DEFAULT 0x1
26
#define PRIORITY_NONE 0x0 /* means IRQ disabled */
27
28
static void icu_mask_irq(struct irq_data *d)
29
{
30
__raw_writel(PRIORITY_NONE, ICU_INT_CONF(d->irq));
31
}
32
33
static void icu_unmask_irq(struct irq_data *d)
34
{
35
__raw_writel(IRQ_ROUTE_TO_AP | PRIORITY_DEFAULT, ICU_INT_CONF(d->irq));
36
}
37
38
static struct irq_chip icu_irq_chip = {
39
.name = "icu_irq",
40
.irq_ack = icu_mask_irq,
41
.irq_mask = icu_mask_irq,
42
.irq_unmask = icu_unmask_irq,
43
};
44
45
void __init icu_init_irq(void)
46
{
47
int irq;
48
49
for (irq = 0; irq < 64; irq++) {
50
icu_mask_irq(irq_get_irq_data(irq));
51
irq_set_chip_and_handler(irq, &icu_irq_chip, handle_level_irq);
52
set_irq_flags(irq, IRQF_VALID);
53
}
54
}
55
56