Merge tag 'linux-watchdog-5.15-rc7' of git://www.linux-watchdog.org/linux-watchdog
[platform/kernel/linux-starfive.git] / include / linux / irqchip / irq-bcm2836.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Root interrupt controller for the BCM2836 (Raspberry Pi 2).
4  *
5  * Copyright 2015 Broadcom
6  */
7
8 #define LOCAL_CONTROL                   0x000
9 #define LOCAL_PRESCALER                 0x008
10
11 /*
12  * The low 2 bits identify the CPU that the GPU IRQ goes to, and the
13  * next 2 bits identify the CPU that the GPU FIQ goes to.
14  */
15 #define LOCAL_GPU_ROUTING               0x00c
16 /* When setting bits 0-3, enables PMU interrupts on that CPU. */
17 #define LOCAL_PM_ROUTING_SET            0x010
18 /* When setting bits 0-3, disables PMU interrupts on that CPU. */
19 #define LOCAL_PM_ROUTING_CLR            0x014
20 /*
21  * The low 4 bits of this are the CPU's timer IRQ enables, and the
22  * next 4 bits are the CPU's timer FIQ enables (which override the IRQ
23  * bits).
24  */
25 #define LOCAL_TIMER_INT_CONTROL0        0x040
26 /*
27  * The low 4 bits of this are the CPU's per-mailbox IRQ enables, and
28  * the next 4 bits are the CPU's per-mailbox FIQ enables (which
29  * override the IRQ bits).
30  */
31 #define LOCAL_MAILBOX_INT_CONTROL0      0x050
32 /*
33  * The CPU's interrupt status register.  Bits are defined by the
34  * LOCAL_IRQ_* bits below.
35  */
36 #define LOCAL_IRQ_PENDING0              0x060
37 /* Same status bits as above, but for FIQ. */
38 #define LOCAL_FIQ_PENDING0              0x070
39 /*
40  * Mailbox write-to-set bits.  There are 16 mailboxes, 4 per CPU, and
41  * these bits are organized by mailbox number and then CPU number.  We
42  * use mailbox 0 for IPIs.  The mailbox's interrupt is raised while
43  * any bit is set.
44  */
45 #define LOCAL_MAILBOX0_SET0             0x080
46 #define LOCAL_MAILBOX3_SET0             0x08c
47 /* Mailbox write-to-clear bits. */
48 #define LOCAL_MAILBOX0_CLR0             0x0c0
49 #define LOCAL_MAILBOX3_CLR0             0x0cc
50
51 #define LOCAL_IRQ_CNTPSIRQ      0
52 #define LOCAL_IRQ_CNTPNSIRQ     1
53 #define LOCAL_IRQ_CNTHPIRQ      2
54 #define LOCAL_IRQ_CNTVIRQ       3
55 #define LOCAL_IRQ_MAILBOX0      4
56 #define LOCAL_IRQ_MAILBOX1      5
57 #define LOCAL_IRQ_MAILBOX2      6
58 #define LOCAL_IRQ_MAILBOX3      7
59 #define LOCAL_IRQ_GPU_FAST      8
60 #define LOCAL_IRQ_PMU_FAST      9
61 #define LAST_IRQ                LOCAL_IRQ_PMU_FAST