]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/dev/gpio/chvgpio_reg.h
Ensure that the buffer is in nvme_single_map() mapped to single segment.
[FreeBSD/FreeBSD.git] / sys / dev / gpio / chvgpio_reg.h
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 };