1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3 *
4 * Copyright (c) 2017 Tom Jones <tj@enoti.me>
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 * SUCH DAMAGE.
27 *
28 * $FreeBSD$
29 */
30
31 /*
32 * Copyright (c) 2016 Mark Kettenis
33 *
34 * Permission to use, copy, modify, and distribute this software for any
35 * purpose with or without fee is hereby granted, provided that the above
36 * copyright notice and this permission notice appear in all copies.
37 *
38 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
39 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
40 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
41 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
42 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
43 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
44 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
45 *
46 */
47
48
49 #define CHVGPIO_INTERRUPT_STATUS 0x0300
50 #define CHVGPIO_INTERRUPT_MASK 0x0380
51 #define CHVGPIO_PAD_CFG0 0x4400
52 #define CHVGPIO_PAD_CFG1 0x4404
53
54 #define CHVGPIO_PAD_CFG0_GPIORXSTATE 0x00000001
55 #define CHVGPIO_PAD_CFG0_GPIOTXSTATE 0x00000002
56 #define CHVGPIO_PAD_CFG0_INTSEL_MASK 0xf0000000
57 #define CHVGPIO_PAD_CFG0_INTSEL_SHIFT 28
58
59 #define CHVGPIO_PAD_CFG0_GPIOCFG_SHIFT 8
60 #define CHVGPIO_PAD_CFG0_GPIOCFG_MASK (7 << CHVGPIO_PAD_CFG0_GPIOCFG_SHIFT)
61 #define CHVGPIO_PAD_CFG0_GPIOCFG_GPIO 0
62 #define CHVGPIO_PAD_CFG0_GPIOCFG_GPO 1
63 #define CHVGPIO_PAD_CFG0_GPIOCFG_GPI 2
64 #define CHVGPIO_PAD_CFG0_GPIOCFG_HIZ 3
65
66 #define CHVGPIO_PAD_CFG1_INTWAKECFG_MASK 0x00000007
67 #define CHVGPIO_PAD_CFG1_INTWAKECFG_FALLING 0x00000001
68 #define CHVGPIO_PAD_CFG1_INTWAKECFG_RISING 0x00000002
69 #define CHVGPIO_PAD_CFG1_INTWAKECFG_BOTH 0x00000003
70 #define CHVGPIO_PAD_CFG1_INTWAKECFG_LEVEL 0x00000004
71 #define CHVGPIO_PAD_CFG1_INVRXTX_MASK 0x000000f0
72 #define CHVGPIO_PAD_CFG1_INVRXTX_RXDATA 0x00000040
73
74 /*
75 * The pads for the pins are arranged in groups of maximal 15 pins.
76 * The arrays below give the number of pins per group, such that we
77 * can validate the (untrusted) pin numbers from ACPI.
78 */
79 #define E_UID 3
80 #define E_BANK_PREFIX "eastbank"
81
82 const int chv_east_pins[] = {
83 12, 12, -1
84 };
85
86 const char *chv_east_pin_names[] = {
87 "PMU_SLP_S3_B",
88 "PMU_BATLOW_B",
89 "SUS_STAT_B",
90 "PMU_SLP_S0IX_B",
91 "PMU_AC_PRESENT",
92 "PMU_PLTRST_B",
93 "PMU_SUSCLK",
94 "PMU_SLP_LAN_B",
95 "PMU_PWRBTN_B",
96 "PMU_SLP_S4_B",
97 "PMU_WAKE_B",
98 "PMU_WAKE_LAN_B"
99
100 "MF_ISH_GPIO_3",
101 "MF_ISH_GPIO_7",
102 "MF_ISH_I2C1_SCL",
103 "MF_ISH_GPIO_1",
104 "MF_ISH_GPIO_5",
105 "MF_ISH_GPIO_9",
106 "MF_ISH_GPIO_0",
107 "MF_ISH_GPIO_4",
108 "MF_ISH_GPIO_8",
109 "MF_ISH_GPIO_2",
110 "MF_ISH_GPIO_6",
111 "MF_ISH_I2C1_SDA"
112 };
113
114 #define N_UID 2
115 #define N_BANK_PREFIX "northbank"
116
117 const int chv_north_pins[] = {
118 9, 13, 12, 12, 13, -1
119 };
120
121 const char *chv_north_pin_names[] = {
122 "GPIO_DFX0_PAD",
123 "GPIO_DFX3_PAD",
124 "GPIO_DFX7_PAD",
125 "GPIO_DFX1_PAD",
126 "GPIO_DFX5_PAD",
127 "GPIO_DFX4_PAD",
128 "GPIO_DFX8_PAD",
129 "GPIO_DFX2_PAD",
130 "GPIO_DFX6_PAD",
131
132 "GPIO_SUS0_PAD",
133 "SEC_GPIO_SUS10_PAD",
134 "GPIO_SUS3_PAD",
135 "GPIO_SUS7_PAD",
136 "GPIO_SUS1_PAD",
137 "GPIO_SUS5_PAD",
138 "SEC_GPIO_SUS11_PAD",
139 "GPIO_SUS4_PAD",
140 "SEC_GPIO_SUS8_PAD",
141 "GPIO_SUS2_PAD",
142 "GPIO_SUS6_PAD",
143 "CX_PREQ_B_PAD",
144 "SEC_GPIO_SUS9_PAD",
145
146 "TRST_B_PAD",
147 "TCK_PAD",
148 "PROCHOT_B_PAD",
149 "SVID0_DATA_PAD",
150 "TMS_PAD",
151 "CX_PRDY_B_2_PAD",
152 "TDO_2_PAD",
153 "CX_PRDY_B_PAD",
154 "SVID0_ALERT_B_PAD",
155 "TDO_PAD",
156 "SVID0_CLK_PAD",
157 "TDI_PAD",
158
159 "GP_CAMERASB05_PAD",
160 "GP_CAMERASB02_PAD",
161 "GP_CAMERASB08_PAD",
162 "GP_CAMERASB00_PAD",
163 "GP_CAMERASB06_PAD",
164 "GP_CAMERASB10_PAD",
165 "GP_CAMERASB03_PAD",
166 "GP_CAMERASB09_PAD",
167 "GP_CAMERASB01_PAD",
168 "GP_CAMERASB07_PAD",
169 "GP_CAMERASB11_PAD",
170 "GP_CAMERASB04_PAD",
171
172 "PANEL0_BKLTEN_PAD",
173 "HV_DDI0_HPD_PAD",
174 "HV_DDI2_DDC_SDA_PAD",
175 "PANEL1_BKLTCTL_PAD",
176 "HV_DDI1_HPD_PAD",
177 "PANEL0_BKLTCTL_PAD",
178 "HV_DDI0_DDC_SDA_PAD",
179 "HV_DDI2_DDC_SCL_PAD",
180 "HV_DDI2_HPD_PAD",
181 "PANEL1_VDDEN_PAD",
182 "PANEL1_BKLTEN_PAD",
183 "HV_DDI0_DDC_SCL_PAD",
184 "PANEL0_VDDEN_PAD",
185 };
186
187
188 #define SE_UID 4
189 #define SE_BANK_PREFIX "southeastbank"
190
191 const int chv_southeast_pins[] = {
192 8, 12, 6, 8, 10, 11, -1
193 };
194
195 const char *chv_southeast_pin_names[] = {
196 "MF_PLT_CLK0_PAD",
197 "PWM1_PAD",
198 "MF_PLT_CLK1_PAD",
199 "MF_PLT_CLK4_PAD",
200 "MF_PLT_CLK3_PAD",
201 "PWM0_PAD",
202 "MF_PLT_CLK5_PAD",
203 "MF_PLT_CLK2_PAD",
204
205 "SDMMC2_D3_CD_B_PAD",
206 "SDMMC1_CLK_PAD",
207 "SDMMC1_D0_PAD",
208 "SDMMC2_D1_PAD",
209 "SDMMC2_CLK_PAD",
210 "SDMMC1_D2_PAD",
211 "SDMMC2_D2_PAD",
212 "SDMMC2_CMD_PAD",
213 "SDMMC1_CMD_PAD",
214 "SDMMC1_D1_PAD",
215 "SDMMC2_D0_PAD",
216 "SDMMC1_D3_CD_B_PAD",
217
218 "SDMMC3_D1_PAD",
219 "SDMMC3_CLK_PAD",
220 "SDMMC3_D3_PAD",
221 "SDMMC3_D2_PAD",
222 "SDMMC3_CMD_PAD",
223 "SDMMC3_D0_PAD",
224
225 "MF_LPC_AD2_PAD",
226 "LPC_CLKRUNB_PAD",
227 "MF_LPC_AD0_PAD",
228 "LPC_FRAMEB_PAD",
229 "MF_LPC_CLKOUT1_PAD",
230 "MF_LPC_AD3_PAD",
231 "MF_LPC_CLKOUT0_PAD",
232 "MF_LPC_AD1_PAD",
233
234 "SPI1_MISO_PAD",
235 "SPI1_CS0_B_PAD",
236 "SPI1_CLK_PAD",
237 "MMC1_D6_PAD",
238 "SPI1_MOSI_PAD",
239 "MMC1_D5_PAD",
240 "SPI1_CS1_B_PAD",
241 "MMC1_D4_SD_WE_PAD",
242 "MMC1_D7_PAD",
243 "MMC1_RCLK_PAD",
244
245 "USB_OC1_B_PAD",
246 "PMU_RESETBUTTON_B_PAD",
247 "GPIO_ALERT_PAD",
248 "SDMMC3_PWR_EN_B_PAD",
249 "ILB_SERIRQ_PAD",
250 "USB_OC0_B_PAD",
251 "SDMMC3_CD_B_PAD",
252 "SPKR_PAD",
253 "SUSPWRDNACK_PAD",
254 "SPARE_PIN_PAD",
255 "SDMMC3_1P8_EN_PAD",
256 };
257
258 #define SW_UID 1
259 #define SW_BANK_PREFIX "southwestbank"
260
261 const int chv_southwest_pins[] = {
262 8, 8, 8, 8, 8, 8, 8, -1
263 };
264
265 const char *chv_southwest_pin_names[] = {
266 "FST_SPI_D2_PAD",
267 "FST_SPI_D0_PAD",
268 "FST_SPI_CLK_PAD",
269 "FST_SPI_D3_PAD",
270 "FST_SPI_CS1_B_PAD",
271 "FST_SPI_D1_PAD",
272 "FST_SPI_CS0_B_PAD",
273 "FST_SPI_CS2_B_PAD",
274
275 "UART1_RTS_B_PAD",
276 "UART1_RXD_PAD",
277 "UART2_RXD_PAD",
278 "UART1_CTS_B_PAD",
279 "UART2_RTS_B_PAD",
280 "UART1_TXD_PAD",
281 "UART2_TXD_PAD",
282 "UART2_CTS_B_PAD",
283
284 "MF_HDA_CLK"
285 "MF_HDA_RSTB",
286 "MF_HDA_SDIO",
287 "MF_HDA_SDO",
288 "MF_HDA_DOCKRSTB",
289 "MF_HDA_SYNC",
290 "MF_HDA_SDI1",
291 "MF_HDA_DOCKENB",
292
293 "I2C5_SDA_PAD",
294 "I2C4_SDA_PAD",
295 "I2C6_SDA_PAD",
296 "I2C5_SCL_PAD",
297 "I2C_NFC_SDA_PAD",
298 "I2C4_SCL_PAD",
299 "I2C6_SCL_PAD",
300 "I2C_NFC_SCL_PAD",
301
302 "I2C1_SDA_PAD",
303 "I2C0_SDA_PAD",
304 "I2C2_SDA_PAD",
305 "I2C1_SCL_PAD",
306 "I2C3_SDA_PAD",
307 "I2C0_SCL_PAD",
308 "I2C2_SCL_PAD",
309 "I2C3_SCL_PAD",
310
311 "SATA_GP0",
312 "SATA_GP1",
313 "SATA_LEDN",
314 "SATA_GP2",
315 "MF_SMB_ALERTB",
316 "SATA_GP3",
317 "MF_SMB_CLK",
318 "MF_SMB_DATA",
319
320 "PCIE_CLKREQ0B_PAD",
321 "PCIE_CLKREQ1B_PAD",
322 "GP_SSP_2_CLK_PAD",
323 "PCIE_CLKREQ2B_PAD",
324 "GP_SSP_2_RXD_PAD",
325 "PCIE_CLKREQ3B_PAD",
326 "GP_SSP_2_FS_PAD",
327 "GP_SSP_2_TXD_PAD",
328 };
329
330 const char *virtualgpio[] = {
331 "VIRTUAL0_PAD",
332 "VIRTUAL1_PAD",
333 "VIRTUAL2_PAD",
334 "VIRTUAL3_PAD",
335 "VIRTUAL4_PAD",
336 "VIRTUAL5_PAD",
337 "VIRTUAL6_PAD",
338 "VIRTUAL7_PAD",
339 };
Cache object: ef4972eb2f89884b0726a8085273092a
|