1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 * Root interrupt controller for the BCM2836 (Raspberry Pi 2).
5 * Copyright 2015 Broadcom
8 #define LOCAL_CONTROL 0x000
9 #define LOCAL_PRESCALER 0x008
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.
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
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
25 #define LOCAL_TIMER_INT_CONTROL0 0x040
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).
31 #define LOCAL_MAILBOX_INT_CONTROL0 0x050
33 * The CPU's interrupt status register. Bits are defined by the
34 * LOCAL_IRQ_* bits below.
36 #define LOCAL_IRQ_PENDING0 0x060
37 /* Same status bits as above, but for FIQ. */
38 #define LOCAL_FIQ_PENDING0 0x070
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
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
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