coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
irq.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef _SOC_IRQ_H_
4 #define _SOC_IRQ_H_
5 
6 #define PIRQA_APIC_IRQ 16
7 #define PIRQB_APIC_IRQ 17
8 #define PIRQC_APIC_IRQ 18
9 #define PIRQD_APIC_IRQ 19
10 #define PIRQE_APIC_IRQ 20
11 #define PIRQF_APIC_IRQ 21
12 #define PIRQG_APIC_IRQ 22
13 #define PIRQH_APIC_IRQ 23
14 
15 /* The below IRQs are for when devices are in ACPI mode. Active low. */
16 #define LPE_DMA0_IRQ 24
17 #define LPE_DMA1_IRQ 25
18 #define LPE_SSP0_IRQ 26
19 #define LPE_SSP1_IRQ 27
20 #define LPE_SSP2_IRQ 28
21 #define LPE_IPC2HOST_IRQ 29
22 #define LPSS_I2C1_IRQ 32
23 #define LPSS_I2C2_IRQ 33
24 #define LPSS_I2C3_IRQ 34
25 #define LPSS_I2C4_IRQ 35
26 #define LPSS_I2C5_IRQ 36
27 #define LPSS_I2C6_IRQ 37
28 #define LPSS_I2C7_IRQ 38
29 #define LPSS_HSUART1_IRQ 39
30 #define LPSS_HSUART2_IRQ 40
31 #define LPSS_SPI_IRQ 41
32 #define LPSS_DMA1_IRQ 42
33 #define LPSS_DMA2_IRQ 43
34 #define SCC_EMMC_IRQ 45
35 #define SCC_SDIO_IRQ 46
36 #define SCC_SD_IRQ 47
37 
38 #define GPIO_N_IRQ 48
39 #define GPIO_SW_IRQ 49
40 #define GPIO_E_IRQ 50
41 
42 /* GPIO direct / dedicated IRQs. */
43 
44 /* NORTH COMMUNITY */
45 #define GPIO_N_DED_IRQ_0 51
46 #define GPIO_N_DED_IRQ_1 52
47 #define GPIO_N_DED_IRQ_2 53
48 #define GPIO_N_DED_IRQ_3 54
49 #define GPIO_N_DED_IRQ_4 55
50 #define GPIO_N_DED_IRQ_5 56
51 #define GPIO_N_DED_IRQ_6 57
52 #define GPIO_N_DED_IRQ_7 58
53 
54 /* SOUTH WEST COMMUNITY */
55 #define GPIO_SW_DED_IRQ_0 59
56 #define GPIO_SW_DED_IRQ_1 60
57 #define GPIO_SW_DED_IRQ_2 61
58 #define GPIO_SW_DED_IRQ_3 62
59 #define GPIO_SW_DED_IRQ_4 63
60 #define GPIO_SW_DED_IRQ_5 64
61 #define GPIO_SW_DED_IRQ_6 65
62 #define GPIO_SW_DED_IRQ_7 66
63 
64 /* EAST COMMUNITY */
65 #define GPIO_E_DED_IRQ_0 67
66 #define GPIO_E_DED_IRQ_1 68
67 #define GPIO_E_DED_IRQ_2 69
68 #define GPIO_E_DED_IRQ_3 70
69 #define GPIO_E_DED_IRQ_4 71
70 #define GPIO_E_DED_IRQ_5 72
71 #define GPIO_E_DED_IRQ_6 73
72 #define GPIO_E_DED_IRQ_7 74
73 #define GPIO_E_DED_IRQ_8 75
74 #define GPIO_E_DED_IRQ_9 76
75 #define GPIO_E_DED_IRQ_10 77
76 #define GPIO_E_DED_IRQ_11 78
77 #define GPIO_E_DED_IRQ_12 79
78 #define GPIO_E_DED_IRQ_13 80
79 #define GPIO_E_DED_IRQ_14 81
80 #define GPIO_E_DED_IRQ_15 82
81 
82 /* More IRQ */
83 #define LPSS_SPI2_IRQ 89
84 #define LPSS_SPI3_IRQ 90
85 #define GPIO_SE_IRQ 91
86 
87 /* GPIO direct / dedicated IRQs. */
88 /* SOUTH EAST COMMUNITY */
89 #define GPIO_SE_DED_IRQ_0 92
90 #define GPIO_SE_DED_IRQ_1 93
91 #define GPIO_SE_DED_IRQ_2 94
92 #define GPIO_SE_DED_IRQ_3 95
93 #define GPIO_SE_DED_IRQ_4 96
94 #define GPIO_SE_DED_IRQ_5 97
95 #define GPIO_SE_DED_IRQ_6 98
96 #define GPIO_SE_DED_IRQ_7 99
97 #define GPIO_SE_DED_IRQ_8 100
98 #define GPIO_SE_DED_IRQ_9 101
99 #define GPIO_SE_DED_IRQ_10 102
100 #define GPIO_SE_DED_IRQ_11 103
101 #define GPIO_SE_DED_IRQ_12 104
102 #define GPIO_SE_DED_IRQ_13 105
103 #define GPIO_SE_DED_IRQ_14 106
104 #define GPIO_SE_DED_IRQ_15 107
105 
106 /* OTHER IRQs */
107 #define GPIO_VIRTUAL 108
108 #define LPE_DMA2 109
109 #define LPE_SSP3 110
110 #define LPE_SSP4 111
111 #define LPE_SSP5 112
112 
113 /* DIRQs - Two levels of expansion to evaluate to numeric constants for ASL. */
114 #define _GPIO_N_DED_IRQ(slot) GPIO_N_DED_IRQ_##slot
115 #define _GPIO_SW_DED_IRQ(slot) GPIO_SW_DED_IRQ_##slot
116 #define _GPIO_E_DED_IRQ(slot) GPIO_E_DED_IRQ_##slot
117 #define _GPIO_SE_DED_IRQ(slot) GPIO_SE_DED_IRQ_##slot
118 #define GPIO_N_DED_IRQ(slot) _GPIO_N_DED_IRQ(slot)
119 #define GPIO_SW_DED_IRQ(slot) _GPIO_SW_DED_IRQ(slot)
120 #define GPIO_E_DED_IRQ(slot) _GPIO_E_DED_IRQ(slot)
121 #define GPIO_SE_DED_IRQ(slot) _GPIO_SE_DED_IRQ(slot)
122 
123 /* TODO NEED TO UPDATE THESE IN onboard.h */
124 #define _GPIO_S0_DED_IRQ(slot) GPIO_N_DED_IRQ_##slot
125 #define _GPIO_S5_DED_IRQ(slot) GPIO_SE_DED_IRQ_##slot
126 #define GPIO_S0_DED_IRQ(slot) _GPIO_N_DED_IRQ(slot)
127 #define GPIO_S5_DED_IRQ(slot) _GPIO_E_DED_IRQ(slot)
128 
129 /* PIC IRQ settings. */
130 #define PIRQ_PIC_IRQDISABLE 0x80
131 #define PIRQ_PIC_IRQ3 0x3
132 #define PIRQ_PIC_IRQ4 0x4
133 #define PIRQ_PIC_IRQ5 0x5
134 #define PIRQ_PIC_IRQ6 0x6
135 #define PIRQ_PIC_IRQ7 0x7
136 #define PIRQ_PIC_IRQ9 0x9
137 #define PIRQ_PIC_IRQ10 0xa
138 #define PIRQ_PIC_IRQ11 0xb
139 #define PIRQ_PIC_IRQ12 0xc
140 #define PIRQ_PIC_IRQ14 0xe
141 #define PIRQ_PIC_IRQ15 0xf
142 #define PIRQ_PIC_UNKNOWN_UNUSED 0xff
143 
144 /* Overloaded term, but these values determine the per device route. */
145 #define PIRQA 0
146 #define PIRQB 1
147 #define PIRQC 2
148 #define PIRQD 3
149 #define PIRQE 4
150 #define PIRQF 5
151 #define PIRQG 6
152 #define PIRQH 7
153 
154 /* These registers live behind the ILB_BASE_ADDRESS */
155 #define ACTL 0x00
156 # define SCIS_MASK 0x07
157 # define SCIS_IRQ9 0x00
158 # define SCIS_IRQ10 0x01
159 # define SCIS_IRQ11 0x02
160 # define SCIS_IRQ20 0x04
161 # define SCIS_IRQ21 0x05
162 # define SCIS_IRQ22 0x06
163 # define SCIS_IRQ23 0x07
164 
165 /*
166  * In each mainboard directory there should exist a header file irqroute.h that
167  * defines the PCI_DEV_PIRQ_ROUTES and PIRQ_PIC_ROUTES macros which
168  * consist of PCI_DEV_PIRQ_ROUTE and PIRQ_PIC entries.
169  */
170 
171 #if !defined(__ASSEMBLER__) && !defined(__ACPI__)
172 #include <stdint.h>
173 
174 #define NUM_IR_DEVS 32
175 #define NUM_PIRQS 8
176 
178  /* Per device configuration. */
180  /* Route path for each internal PIRQx in PIC mode. */
182 };
183 
184 extern const struct soc_irq_route global_soc_irq_route;
185 
186 #define DEFINE_IRQ_ROUTES \
187  const struct soc_irq_route global_soc_irq_route = { \
188  .pcidev = { PCI_DEV_PIRQ_ROUTES, }, \
189  .pic = { PIRQ_PIC_ROUTES, }, \
190  }
191 
192 /* The following macros are used for ACPI by the ASL compiler */
193 #define PCI_DEV_PIRQ_ROUTE(dev_, a_, b_, c_, d_) \
194  [dev_] = (((PIRQ ## d_) << 12) | ((PIRQ ## c_) << 8) | \
195  ((PIRQ ## b_) << 4) | ((PIRQ ## a_) << 0))
196 
197 #define PIRQ_PIC(pirq_, pic_irq_) \
198  [PIRQ ## pirq_] = PIRQ_PIC_IRQ ## pic_irq_
199 
200 #endif /* !defined(__ASSEMBLER__) && !defined(__ACPI__) */
201 
202 #endif /* _SOC_IRQ_H_ */
#define NUM_IR_DEVS
Definition: irq.h:174
#define NUM_PIRQS
Definition: irq.h:175
const struct soc_irq_route global_soc_irq_route
unsigned short uint16_t
Definition: stdint.h:11
unsigned char uint8_t
Definition: stdint.h:8
uint16_t pcidev[NUM_IR_DEVS]
Definition: irq.h:179
uint8_t pic[NUM_PIRQS]
Definition: irq.h:181