Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/sh/boards/mach-highlander/irq-r7780rp.c
15126 views
1
/*
2
* Renesas Solutions Highlander R7780RP-1 Support.
3
*
4
* Copyright (C) 2002 Atom Create Engineering Co., Ltd.
5
* Copyright (C) 2006 Paul Mundt
6
* Copyright (C) 2008 Magnus Damm
7
*
8
* This file is subject to the terms and conditions of the GNU General Public
9
* License. See the file "COPYING" in the main directory of this archive
10
* for more details.
11
*/
12
#include <linux/init.h>
13
#include <linux/irq.h>
14
#include <linux/io.h>
15
#include <mach/highlander.h>
16
17
enum {
18
UNUSED = 0,
19
20
/* board specific interrupt sources */
21
22
AX88796, /* Ethernet controller */
23
PSW, /* Push Switch */
24
CF, /* Compact Flash */
25
26
PCI_A,
27
PCI_B,
28
PCI_C,
29
PCI_D,
30
};
31
32
static struct intc_vect vectors[] __initdata = {
33
INTC_IRQ(PCI_A, 65), /* dirty: overwrite cpu vectors for pci */
34
INTC_IRQ(PCI_B, 66),
35
INTC_IRQ(PCI_C, 67),
36
INTC_IRQ(PCI_D, 68),
37
INTC_IRQ(CF, IRQ_CF),
38
INTC_IRQ(PSW, IRQ_PSW),
39
INTC_IRQ(AX88796, IRQ_AX88796),
40
};
41
42
static struct intc_mask_reg mask_registers[] __initdata = {
43
{ 0xa5000000, 0, 16, /* IRLMSK */
44
{ PCI_A, PCI_B, PCI_C, PCI_D, CF, 0, 0, 0,
45
0, 0, 0, 0, 0, 0, PSW, AX88796 } },
46
};
47
48
static unsigned char irl2irq[HL_NR_IRL] __initdata = {
49
65, 66, 67, 68,
50
IRQ_CF, 0, 0, 0,
51
0, 0, 0, 0,
52
IRQ_AX88796, IRQ_PSW
53
};
54
55
static DECLARE_INTC_DESC(intc_desc, "r7780rp", vectors,
56
NULL, mask_registers, NULL, NULL);
57
58
unsigned char * __init highlander_plat_irq_setup(void)
59
{
60
if (__raw_readw(0xa5000600)) {
61
printk(KERN_INFO "Using r7780rp interrupt controller.\n");
62
register_intc_controller(&intc_desc);
63
return irl2irq;
64
}
65
66
return NULL;
67
}
68
69