xref: /rk3399_ARM-atf/include/plat/marvell/odyssey/csr/ody-csrs-gpio.h (revision 12d80bbbf6031228bdd910eccb03bb185e8df527)
1*4b8b8d74SJaiprakash Singh #ifndef __ODY_CSRS_GPIO_H__
2*4b8b8d74SJaiprakash Singh #define __ODY_CSRS_GPIO_H__
3*4b8b8d74SJaiprakash Singh /* This file is auto-generated. Do not edit */
4*4b8b8d74SJaiprakash Singh 
5*4b8b8d74SJaiprakash Singh /***********************license start***********************************
6*4b8b8d74SJaiprakash Singh * Copyright (C) 2021-2026 Marvell.
7*4b8b8d74SJaiprakash Singh * SPDX-License-Identifier: BSD-3-Clause
8*4b8b8d74SJaiprakash Singh * https://spdx.org/licenses
9*4b8b8d74SJaiprakash Singh ***********************license end**************************************/
10*4b8b8d74SJaiprakash Singh 
11*4b8b8d74SJaiprakash Singh 
12*4b8b8d74SJaiprakash Singh /**
13*4b8b8d74SJaiprakash Singh  * @file
14*4b8b8d74SJaiprakash Singh  *
15*4b8b8d74SJaiprakash Singh  * Configuration and status register (CSR) address and type definitions for
16*4b8b8d74SJaiprakash Singh  * GPIO.
17*4b8b8d74SJaiprakash Singh  *
18*4b8b8d74SJaiprakash Singh  * This file is auto generated. Do not edit.
19*4b8b8d74SJaiprakash Singh  *
20*4b8b8d74SJaiprakash Singh  */
21*4b8b8d74SJaiprakash Singh 
22*4b8b8d74SJaiprakash Singh /**
23*4b8b8d74SJaiprakash Singh  * Enumeration gpio_assigned_pin_e
24*4b8b8d74SJaiprakash Singh  *
25*4b8b8d74SJaiprakash Singh  * GPIO Assigned Pin Number Enumeration
26*4b8b8d74SJaiprakash Singh  * Enumerates GPIO pin numbers which have certain dedicated hardware and boot usage. In
27*4b8b8d74SJaiprakash Singh  * general a given GPIO may be used for the purpose listed here, or for any other
28*4b8b8d74SJaiprakash Singh  * purpose that is not listed here. For example SPI0_IO0 must use GPIO16 (0x10) if the
29*4b8b8d74SJaiprakash Singh  * SPI IO0 function is needed, but if SPI IO0 is not needed GPIO16 is free for use, but
30*4b8b8d74SJaiprakash Singh  * GPIO16 could not be used for BOOT_WAIT as BOOT_WAIT is listed here as requiring
31*4b8b8d74SJaiprakash Singh  * GPIO10 (0xA).
32*4b8b8d74SJaiprakash Singh  */
33*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_BOOT_COMPLETE (0xa)
34*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_BOOT_REQ (9)
35*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_BOOT_WAIT (0xe)
36*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_FAIL_CODE (0xb)
37*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_GSERP_PHY_SIF_JTG_CLK (0x35)
38*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_GSERP_PHY_SIF_JTG_DEN (0x37)
39*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_GSERP_PHY_SIF_JTG_DIN (0x34)
40*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_GSERP_PHY_SIF_JTG_DOUT (0x36)
41*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_I3C3_SCL (0x31)
42*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_I3C3_SDA (0x30)
43*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_I3C4_SCL (0x33)
44*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_I3C4_SDA (0x32)
45*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_MCAST_IRQ_0 (4)
46*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_MCAST_IRQ_1 (5)
47*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_MCAST_IRQ_2 (6)
48*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_MCAST_IRQ_3 (7)
49*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_PLL_LOCK (0x2d)
50*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI0_CLK (0x18)
51*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI0_CS0 (0x1a)
52*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI0_CS1 (0x1b)
53*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI0_CS2 (0x1c)
54*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI0_CS3 (0x1d)
55*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI0_DQS (0x19)
56*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI0_IO0 (0x10)
57*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI0_IO1 (0x11)
58*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI0_IO2 (0x12)
59*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI0_IO3 (0x13)
60*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI0_IO4 (0x14)
61*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI0_IO5 (0x15)
62*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI0_IO6 (0x16)
63*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI0_IO7 (0x17)
64*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI0_RESET (0x2f)
65*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI1_CLK (0x26)
66*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI1_CS0 (0x28)
67*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI1_CS1 (0x29)
68*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI1_CS2 (0x2a)
69*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI1_CS3 (0x2b)
70*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI1_DQS (0x27)
71*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI1_IO0 (0x1e)
72*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI1_IO1 (0x1f)
73*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI1_IO2 (0x20)
74*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI1_IO3 (0x21)
75*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI1_IO4 (0x22)
76*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI1_IO5 (0x23)
77*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI1_IO6 (0x24)
78*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI1_IO7 (0x25)
79*4b8b8d74SJaiprakash Singh #define ODY_GPIO_ASSIGNED_PIN_E_SPI1_RESET (0x2c)
80*4b8b8d74SJaiprakash Singh 
81*4b8b8d74SJaiprakash Singh /**
82*4b8b8d74SJaiprakash Singh  * Enumeration gpio_bar_e
83*4b8b8d74SJaiprakash Singh  *
84*4b8b8d74SJaiprakash Singh  * GPIO Base Address Register Enumeration
85*4b8b8d74SJaiprakash Singh  * Enumerates the base address registers.
86*4b8b8d74SJaiprakash Singh  */
87*4b8b8d74SJaiprakash Singh #define ODY_GPIO_BAR_E_GPIO_PF_BAR0 (0x803000000000ll)
88*4b8b8d74SJaiprakash Singh #define ODY_GPIO_BAR_E_GPIO_PF_BAR0_SIZE 0x10000ull
89*4b8b8d74SJaiprakash Singh #define ODY_GPIO_BAR_E_GPIO_PF_BAR4 (0x803000f00000ll)
90*4b8b8d74SJaiprakash Singh #define ODY_GPIO_BAR_E_GPIO_PF_BAR4_SIZE 0x100000ull
91*4b8b8d74SJaiprakash Singh 
92*4b8b8d74SJaiprakash Singh /**
93*4b8b8d74SJaiprakash Singh  * Enumeration gpio_int_vec_e
94*4b8b8d74SJaiprakash Singh  *
95*4b8b8d74SJaiprakash Singh  * GPIO MSI-X Vector Enumeration
96*4b8b8d74SJaiprakash Singh  * Enumerates the MSI-X interrupt vectors.
97*4b8b8d74SJaiprakash Singh  */
98*4b8b8d74SJaiprakash Singh #define ODY_GPIO_INT_VEC_E_INTR_PINX(a) (0x52 + 2 * (a))
99*4b8b8d74SJaiprakash Singh #define ODY_GPIO_INT_VEC_E_INTR_PINX_CLEAR(a) (0x53 + 2 * (a))
100*4b8b8d74SJaiprakash Singh #define ODY_GPIO_INT_VEC_E_MC_INTR1_PPX(a) (0x40 + (a))
101*4b8b8d74SJaiprakash Singh #define ODY_GPIO_INT_VEC_E_MC_INTR_PPX(a) (0 + (a))
102*4b8b8d74SJaiprakash Singh 
103*4b8b8d74SJaiprakash Singh /**
104*4b8b8d74SJaiprakash Singh  * Enumeration gpio_pin_sel_e
105*4b8b8d74SJaiprakash Singh  *
106*4b8b8d74SJaiprakash Singh  * GPIO Pin Select Enumeration
107*4b8b8d74SJaiprakash Singh  * Enumerates the GPIO pin function selections for GPIO_BIT_CFG()[PIN_SEL].
108*4b8b8d74SJaiprakash Singh  *
109*4b8b8d74SJaiprakash Singh  * The GPIO pins can be configured as either input, output or input/output/bidirectional
110*4b8b8d74SJaiprakash Singh  * depending on the GPIO_PIN_SEL_E used as described in the value's description.  When
111*4b8b8d74SJaiprakash Singh  * a GPIO pin is used as input, the value is provided to the described function, and is
112*4b8b8d74SJaiprakash Singh  * also readable via GPIO_RX_DAT.
113*4b8b8d74SJaiprakash Singh  *
114*4b8b8d74SJaiprakash Singh  * Multiple GPIO pins may not be configured to point to the same input encoding, or
115*4b8b8d74SJaiprakash Singh  * the input result is unpredictable (e.g. GPIO_BIT_CFG(1)[PIN_SEL] and
116*4b8b8d74SJaiprakash Singh  * GPIO_BIT_CFG(2)[PIN_SEL] cannot both be 0x80).
117*4b8b8d74SJaiprakash Singh  *
118*4b8b8d74SJaiprakash Singh  * If a given select is not assigned to any pin, then that virtual input receives a
119*4b8b8d74SJaiprakash Singh  * logical zero.  E.g. if no GPIO_BIT_CFG()[PIN_SEL] has the value ::TIM_GPIO_CLK,
120*4b8b8d74SJaiprakash Singh  * then the GPIO will provide the TIM block's external clock input with the value of
121*4b8b8d74SJaiprakash Singh  * zero.
122*4b8b8d74SJaiprakash Singh  */
123*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_BOOT_REQ (0x3e0)
124*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_BOOT_WAIT (0x3e1)
125*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_BTS_BFN_CLK (0x506)
126*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_BTS_BFN_IN (0x505)
127*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_BTS_BFN_OUT (0x510)
128*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_BTS_CGBFN_OUT (0x50d)
129*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_BTS_CGCLK_OUT (0x50e)
130*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_BTS_CGTENMS_OUT (0x50c)
131*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_BTS_DAC_CLK (0x511)
132*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_BTS_EXTREFX_CLK(a) (0x500 + (a))
133*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_BTS_PWM_DOUT (0x513)
134*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_BTS_PWM_SCLK (0x512)
135*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_BTS_RFP_IN (0x504)
136*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_BTS_RFP_OUT (0x50f)
137*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_BTS_TPX(a) (0x507 + (a))
138*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_CORE_RESET_IN (0x480)
139*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_CORE_RESET_OUT (0x481)
140*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_GPIO_CLKX(a) (0x260 + (a))
141*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_GPIO_CLK_SYNCEX(a) (3 + (a))
142*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_GPIO_PTP_CKOUT (1)
143*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_GPIO_PTP_PPS (2)
144*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_GPIO_PTP_SYSCK (8)
145*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_GPIO_SW (0)
146*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_GSERPX_DTESTX(a, b) (0x5a0 + 0x10 * (a) + (b))
147*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_GSERPX_GPIX(a, b) (0x670 + 8 * (a) + (b))
148*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_GSERPX_GPOX(a, b) (0x6e0 + 8 * (a) + (b))
149*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_GSERPX_PHY_SIF_INX(a, b) (0x520 + 3 * (a) + (b))
150*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_GSERPX_PHY_SIF_OUT(a) (0x580 + (a))
151*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_GSERPX_PRAM_SIF_INX(a, b) (0x550 + 3 * (a) + (b))
152*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_GSERPX_PRAM_SIF_OUT(a) (0x590 + (a))
153*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_GSERPX_UART_RXX(a, b) (0x7a0 + 5 * (a) + (b))
154*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_GSERPX_UART_TXX(a, b) (0x750 + 5 * (a) + (b))
155*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_I3CX_SCL(a) (0x28d + (a))
156*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_I3CX_SDA(a) (0x291 + (a))
157*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_MCDX_IN(a) (0x23f + (a))
158*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_MCDX_OUT(a) (0x242 + (a))
159*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_MCP_RESET_IN (0x482)
160*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_MCP_RESET_OUT (0x483)
161*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_OCLA_EXT_TRIGGER (0x231)
162*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_PBUS_ADX(a) (0xfa + (a))
163*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_PBUS_ALEX(a) (0xe8 + (a))
164*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_PBUS_CEX(a) (0xec + (a))
165*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_PBUS_CLE (0xe0)
166*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_PBUS_DIR (0xe4)
167*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_PBUS_DMACKX(a) (0xe6 + (a))
168*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_PBUS_DMARQX(a) (0x11a + (a))
169*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_PBUS_OE (0xe3)
170*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_PBUS_WAIT (0xe1)
171*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_PBUS_WE (0xe2)
172*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_PLL_LOCK (0x131)
173*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_PTP_EVTCNT (0x252)
174*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_PTP_EXT_CLK (0x250)
175*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_PTP_TSTMP (0x251)
176*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_SCP_RESET_IN (0x484)
177*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_SCP_RESET_OUT (0x485)
178*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_SMIX_MDC(a) (0x253 + (a))
179*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_SMIX_MDIO(a) (0x255 + (a))
180*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_SPI0_CLK (0x274)
181*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_SPI0_CSX(a) (0x270 + (a))
182*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_SPI0_DQS (0x275)
183*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_SPI0_IOX(a) (0x278 + (a))
184*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_SPI0_RESET (0x276)
185*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_SPI1_CLK (0x280)
186*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_SPI1_CSX(a) (0x284 + (a))
187*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_SPI1_DQS (0x281)
188*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_SPI1_IOX(a) (0x288 + (a))
189*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_SPI1_RESET (0x282)
190*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_TIMER (0x11c)
191*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_TIM_GPIO_CLK (0x230)
192*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_TWS_SCLX(a) (0x298 + (a))
193*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_TWS_SDAX(a) (0x2a4 + (a))
194*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_UARTX_CTS(a) (0x3c0 + (a))
195*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_UARTX_DCD(a) (0x3b0 + (a))
196*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_UARTX_DSR(a) (0x3b8 + (a))
197*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_UARTX_DTR(a) (0x390 + (a))
198*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_UARTX_RI(a) (0x3a8 + (a))
199*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_UARTX_RTS(a) (0x398 + (a))
200*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_UARTX_SIN(a) (0x3c8 + (a))
201*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PIN_SEL_E_UARTX_SOUT(a) (0x3a0 + (a))
202*4b8b8d74SJaiprakash Singh 
203*4b8b8d74SJaiprakash Singh /**
204*4b8b8d74SJaiprakash Singh  * Enumeration gpio_strap_pin_e
205*4b8b8d74SJaiprakash Singh  *
206*4b8b8d74SJaiprakash Singh  * GPIO Strap Pin Number Enumeration
207*4b8b8d74SJaiprakash Singh  * Enumerates GPIO pin numbers with their associated strap functions. The names of
208*4b8b8d74SJaiprakash Singh  * these values are used as the documented name of each
209*4b8b8d74SJaiprakash Singh  * strap. e.g. GPIO_STRAP_PIN_E::BOOT_METHOD0 describes the GPIO0/BOOT_METHOD0 strap.
210*4b8b8d74SJaiprakash Singh  * For strap state, see GPIO_STRAP and GPIO_STRAP1.
211*4b8b8d74SJaiprakash Singh  */
212*4b8b8d74SJaiprakash Singh #define ODY_GPIO_STRAP_PIN_E_AVS_DISABLE (9)
213*4b8b8d74SJaiprakash Singh #define ODY_GPIO_STRAP_PIN_E_BOOT_METHOD0 (0)
214*4b8b8d74SJaiprakash Singh #define ODY_GPIO_STRAP_PIN_E_BOOT_METHOD1 (1)
215*4b8b8d74SJaiprakash Singh #define ODY_GPIO_STRAP_PIN_E_BOOT_METHOD2 (2)
216*4b8b8d74SJaiprakash Singh #define ODY_GPIO_STRAP_PIN_E_BOOT_METHOD3 (3)
217*4b8b8d74SJaiprakash Singh #define ODY_GPIO_STRAP_PIN_E_BOOT_METHOD4 (0xc)
218*4b8b8d74SJaiprakash Singh #define ODY_GPIO_STRAP_PIN_E_BOOT_METHOD5 (0xd)
219*4b8b8d74SJaiprakash Singh #define ODY_GPIO_STRAP_PIN_E_PCIE0_EP_MODE (0xf)
220*4b8b8d74SJaiprakash Singh #define ODY_GPIO_STRAP_PIN_E_REF_CLK_TERMINATION (0xb)
221*4b8b8d74SJaiprakash Singh 
222*4b8b8d74SJaiprakash Singh /**
223*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_bit_cfg#
224*4b8b8d74SJaiprakash Singh  *
225*4b8b8d74SJaiprakash Singh  * GPIO Bit Configuration Registers
226*4b8b8d74SJaiprakash Singh  * Each register provides configuration information for the corresponding GPIO
227*4b8b8d74SJaiprakash Singh  * pin. There may be more indicies in this register than GPIO pins, any such
228*4b8b8d74SJaiprakash Singh  * unimplemented indexes should not be reprogrammed.
229*4b8b8d74SJaiprakash Singh  *
230*4b8b8d74SJaiprakash Singh  * Each index is only accessible to the requestor(s) permitted with GPIO_BIT_PERMIT().
231*4b8b8d74SJaiprakash Singh  *
232*4b8b8d74SJaiprakash Singh  * When permitted, this register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
233*4b8b8d74SJaiprakash Singh  */
234*4b8b8d74SJaiprakash Singh union ody_gpio_bit_cfgx {
235*4b8b8d74SJaiprakash Singh 	uint64_t u;
236*4b8b8d74SJaiprakash Singh 	struct ody_gpio_bit_cfgx_s {
237*4b8b8d74SJaiprakash Singh 		uint64_t tx_oe                       : 1;
238*4b8b8d74SJaiprakash Singh 		uint64_t pin_xor                     : 1;
239*4b8b8d74SJaiprakash Singh 		uint64_t int_en                      : 1;
240*4b8b8d74SJaiprakash Singh 		uint64_t int_type                    : 1;
241*4b8b8d74SJaiprakash Singh 		uint64_t fil_cnt                     : 4;
242*4b8b8d74SJaiprakash Singh 		uint64_t fil_sel                     : 4;
243*4b8b8d74SJaiprakash Singh 		uint64_t tx_od                       : 1;
244*4b8b8d74SJaiprakash Singh 		uint64_t blink_en                    : 2;
245*4b8b8d74SJaiprakash Singh 		uint64_t reserved_15                 : 1;
246*4b8b8d74SJaiprakash Singh 		uint64_t pin_sel                     : 11;
247*4b8b8d74SJaiprakash Singh 		uint64_t reserved_27_63              : 37;
248*4b8b8d74SJaiprakash Singh 	} s;
249*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_bit_cfgx_s cn; */
250*4b8b8d74SJaiprakash Singh };
251*4b8b8d74SJaiprakash Singh typedef union ody_gpio_bit_cfgx ody_gpio_bit_cfgx_t;
252*4b8b8d74SJaiprakash Singh 
253*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_BIT_CFGX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_BIT_CFGX(uint64_t a)254*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_BIT_CFGX(uint64_t a)
255*4b8b8d74SJaiprakash Singh {
256*4b8b8d74SJaiprakash Singh 	if (a <= 63)
257*4b8b8d74SJaiprakash Singh 		return 0x803000000400ll + 8ll * ((a) & 0x3f);
258*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_BIT_CFGX", 1, a, 0, 0, 0, 0, 0);
259*4b8b8d74SJaiprakash Singh }
260*4b8b8d74SJaiprakash Singh 
261*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_BIT_CFGX(a) ody_gpio_bit_cfgx_t
262*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_BIT_CFGX(a) CSR_TYPE_NCB
263*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_BIT_CFGX(a) "GPIO_BIT_CFGX"
264*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_BIT_CFGX(a) 0x0 /* PF_BAR0 */
265*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_BIT_CFGX(a) (a)
266*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_BIT_CFGX(a) (a), -1, -1, -1
267*4b8b8d74SJaiprakash Singh 
268*4b8b8d74SJaiprakash Singh /**
269*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_bit_permit#
270*4b8b8d74SJaiprakash Singh  *
271*4b8b8d74SJaiprakash Singh  * GPIO Bit Permit Register
272*4b8b8d74SJaiprakash Singh  * This register determines which requestor(s) are permitted to access which GPIO pins.
273*4b8b8d74SJaiprakash Singh  *
274*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with GPIO_PERMIT.
275*4b8b8d74SJaiprakash Singh  * (That is, only the GPIO_PERMIT permitted agent can change the permission settings of
276*4b8b8d74SJaiprakash Singh  * all requestors.)
277*4b8b8d74SJaiprakash Singh  *
278*4b8b8d74SJaiprakash Singh  * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
279*4b8b8d74SJaiprakash Singh  */
280*4b8b8d74SJaiprakash Singh union ody_gpio_bit_permitx {
281*4b8b8d74SJaiprakash Singh 	uint64_t u;
282*4b8b8d74SJaiprakash Singh 	struct ody_gpio_bit_permitx_s {
283*4b8b8d74SJaiprakash Singh 		uint64_t permitdis                   : 5;
284*4b8b8d74SJaiprakash Singh 		uint64_t reserved_5_63               : 59;
285*4b8b8d74SJaiprakash Singh 	} s;
286*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_bit_permitx_s cn; */
287*4b8b8d74SJaiprakash Singh };
288*4b8b8d74SJaiprakash Singh typedef union ody_gpio_bit_permitx ody_gpio_bit_permitx_t;
289*4b8b8d74SJaiprakash Singh 
290*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_BIT_PERMITX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_BIT_PERMITX(uint64_t a)291*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_BIT_PERMITX(uint64_t a)
292*4b8b8d74SJaiprakash Singh {
293*4b8b8d74SJaiprakash Singh 	if (a <= 63)
294*4b8b8d74SJaiprakash Singh 		return 0x803000002000ll + 8ll * ((a) & 0x3f);
295*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_BIT_PERMITX", 1, a, 0, 0, 0, 0, 0);
296*4b8b8d74SJaiprakash Singh }
297*4b8b8d74SJaiprakash Singh 
298*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_BIT_PERMITX(a) ody_gpio_bit_permitx_t
299*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_BIT_PERMITX(a) CSR_TYPE_NCB
300*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_BIT_PERMITX(a) "GPIO_BIT_PERMITX"
301*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_BIT_PERMITX(a) 0x0 /* PF_BAR0 */
302*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_BIT_PERMITX(a) (a)
303*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_BIT_PERMITX(a) (a), -1, -1, -1
304*4b8b8d74SJaiprakash Singh 
305*4b8b8d74SJaiprakash Singh /**
306*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_blink_cfg
307*4b8b8d74SJaiprakash Singh  *
308*4b8b8d74SJaiprakash Singh  * GPIO Output Blinker Configuration Register
309*4b8b8d74SJaiprakash Singh  * This register configures the blink generator.
310*4b8b8d74SJaiprakash Singh  *
311*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with GPIO_PERMIT.
312*4b8b8d74SJaiprakash Singh  *
313*4b8b8d74SJaiprakash Singh  * When permitted, this register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
314*4b8b8d74SJaiprakash Singh  */
315*4b8b8d74SJaiprakash Singh union ody_gpio_blink_cfg {
316*4b8b8d74SJaiprakash Singh 	uint64_t u;
317*4b8b8d74SJaiprakash Singh 	struct ody_gpio_blink_cfg_s {
318*4b8b8d74SJaiprakash Singh 		uint64_t stretch_on                  : 4;
319*4b8b8d74SJaiprakash Singh 		uint64_t stretch_off                 : 4;
320*4b8b8d74SJaiprakash Singh 		uint64_t max_on                      : 4;
321*4b8b8d74SJaiprakash Singh 		uint64_t force_off                   : 4;
322*4b8b8d74SJaiprakash Singh 		uint64_t reserved_16_63              : 48;
323*4b8b8d74SJaiprakash Singh 	} s;
324*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_blink_cfg_s cn; */
325*4b8b8d74SJaiprakash Singh };
326*4b8b8d74SJaiprakash Singh typedef union ody_gpio_blink_cfg ody_gpio_blink_cfg_t;
327*4b8b8d74SJaiprakash Singh 
328*4b8b8d74SJaiprakash Singh #define ODY_GPIO_BLINK_CFG ODY_GPIO_BLINK_CFG_FUNC()
329*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_BLINK_CFG_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GPIO_BLINK_CFG_FUNC(void)330*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_BLINK_CFG_FUNC(void)
331*4b8b8d74SJaiprakash Singh {
332*4b8b8d74SJaiprakash Singh 	return 0x803000001440ll;
333*4b8b8d74SJaiprakash Singh }
334*4b8b8d74SJaiprakash Singh 
335*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_BLINK_CFG ody_gpio_blink_cfg_t
336*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_BLINK_CFG CSR_TYPE_NCB
337*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_BLINK_CFG "GPIO_BLINK_CFG"
338*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_BLINK_CFG 0x0 /* PF_BAR0 */
339*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_BLINK_CFG 0
340*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_BLINK_CFG -1, -1, -1, -1
341*4b8b8d74SJaiprakash Singh 
342*4b8b8d74SJaiprakash Singh /**
343*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_blink_freq
344*4b8b8d74SJaiprakash Singh  *
345*4b8b8d74SJaiprakash Singh  * GPIO Blink Clock Register
346*4b8b8d74SJaiprakash Singh  * This register configures the blink generator.
347*4b8b8d74SJaiprakash Singh  *
348*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with GPIO_PERMIT.
349*4b8b8d74SJaiprakash Singh  *
350*4b8b8d74SJaiprakash Singh  * When permitted, this register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
351*4b8b8d74SJaiprakash Singh  */
352*4b8b8d74SJaiprakash Singh union ody_gpio_blink_freq {
353*4b8b8d74SJaiprakash Singh 	uint64_t u;
354*4b8b8d74SJaiprakash Singh 	struct ody_gpio_blink_freq_s {
355*4b8b8d74SJaiprakash Singh 		uint64_t div                         : 27;
356*4b8b8d74SJaiprakash Singh 		uint64_t reserved_27_63              : 37;
357*4b8b8d74SJaiprakash Singh 	} s;
358*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_blink_freq_s cn; */
359*4b8b8d74SJaiprakash Singh };
360*4b8b8d74SJaiprakash Singh typedef union ody_gpio_blink_freq ody_gpio_blink_freq_t;
361*4b8b8d74SJaiprakash Singh 
362*4b8b8d74SJaiprakash Singh #define ODY_GPIO_BLINK_FREQ ODY_GPIO_BLINK_FREQ_FUNC()
363*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_BLINK_FREQ_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GPIO_BLINK_FREQ_FUNC(void)364*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_BLINK_FREQ_FUNC(void)
365*4b8b8d74SJaiprakash Singh {
366*4b8b8d74SJaiprakash Singh 	return 0x803000001448ll;
367*4b8b8d74SJaiprakash Singh }
368*4b8b8d74SJaiprakash Singh 
369*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_BLINK_FREQ ody_gpio_blink_freq_t
370*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_BLINK_FREQ CSR_TYPE_NCB
371*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_BLINK_FREQ "GPIO_BLINK_FREQ"
372*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_BLINK_FREQ 0x0 /* PF_BAR0 */
373*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_BLINK_FREQ 0
374*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_BLINK_FREQ -1, -1, -1, -1
375*4b8b8d74SJaiprakash Singh 
376*4b8b8d74SJaiprakash Singh /**
377*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_clk_gen#
378*4b8b8d74SJaiprakash Singh  *
379*4b8b8d74SJaiprakash Singh  * GPIO Clock Generator Registers
380*4b8b8d74SJaiprakash Singh  * This register configures the clock generators. The number of generators is
381*4b8b8d74SJaiprakash Singh  * discoverable in GPIO_CONST[CLKGEN].
382*4b8b8d74SJaiprakash Singh  *
383*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with GPIO_PERMIT.
384*4b8b8d74SJaiprakash Singh  *
385*4b8b8d74SJaiprakash Singh  * When permitted, this register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
386*4b8b8d74SJaiprakash Singh  */
387*4b8b8d74SJaiprakash Singh union ody_gpio_clk_genx {
388*4b8b8d74SJaiprakash Singh 	uint64_t u;
389*4b8b8d74SJaiprakash Singh 	struct ody_gpio_clk_genx_s {
390*4b8b8d74SJaiprakash Singh 		uint64_t n                           : 32;
391*4b8b8d74SJaiprakash Singh 		uint64_t high                        : 32;
392*4b8b8d74SJaiprakash Singh 	} s;
393*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_clk_genx_s cn; */
394*4b8b8d74SJaiprakash Singh };
395*4b8b8d74SJaiprakash Singh typedef union ody_gpio_clk_genx ody_gpio_clk_genx_t;
396*4b8b8d74SJaiprakash Singh 
397*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_CLK_GENX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_CLK_GENX(uint64_t a)398*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_CLK_GENX(uint64_t a)
399*4b8b8d74SJaiprakash Singh {
400*4b8b8d74SJaiprakash Singh 	if (a <= 7)
401*4b8b8d74SJaiprakash Singh 		return 0x803000001800ll + 8ll * ((a) & 0x7);
402*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_CLK_GENX", 1, a, 0, 0, 0, 0, 0);
403*4b8b8d74SJaiprakash Singh }
404*4b8b8d74SJaiprakash Singh 
405*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_CLK_GENX(a) ody_gpio_clk_genx_t
406*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_CLK_GENX(a) CSR_TYPE_NCB
407*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_CLK_GENX(a) "GPIO_CLK_GENX"
408*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_CLK_GENX(a) 0x0 /* PF_BAR0 */
409*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_CLK_GENX(a) (a)
410*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_CLK_GENX(a) (a), -1, -1, -1
411*4b8b8d74SJaiprakash Singh 
412*4b8b8d74SJaiprakash Singh /**
413*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_clk_synce#
414*4b8b8d74SJaiprakash Singh  *
415*4b8b8d74SJaiprakash Singh  * GPIO Clock SyncE Registers
416*4b8b8d74SJaiprakash Singh  * Certain SerDes may be configured as a clock source. The GPIO block can support up to two
417*4b8b8d74SJaiprakash Singh  * unique clocks to send out any GPIO pin as configured when GPIO_BIT_CFG()[PIN_SEL] =
418*4b8b8d74SJaiprakash Singh  * GPIO_PIN_SEL_E::GPIO_CLK_SYNCE(0..1). The clock can be divided by 20, 40, 80 or 160
419*4b8b8d74SJaiprakash Singh  * of the selected SerDes clock. Legal values are based on the number of SerDes.
420*4b8b8d74SJaiprakash Singh  *
421*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with GPIO_PERMIT.
422*4b8b8d74SJaiprakash Singh  *
423*4b8b8d74SJaiprakash Singh  * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
424*4b8b8d74SJaiprakash Singh  */
425*4b8b8d74SJaiprakash Singh union ody_gpio_clk_syncex {
426*4b8b8d74SJaiprakash Singh 	uint64_t u;
427*4b8b8d74SJaiprakash Singh 	struct ody_gpio_clk_syncex_s {
428*4b8b8d74SJaiprakash Singh 		uint64_t lane_sel                    : 2;
429*4b8b8d74SJaiprakash Singh 		uint64_t div                         : 2;
430*4b8b8d74SJaiprakash Singh 		uint64_t reserved_4_7                : 4;
431*4b8b8d74SJaiprakash Singh 		uint64_t qlm_sel                     : 4;
432*4b8b8d74SJaiprakash Singh 		uint64_t reserved_12_63              : 52;
433*4b8b8d74SJaiprakash Singh 	} s;
434*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_clk_syncex_s cn; */
435*4b8b8d74SJaiprakash Singh };
436*4b8b8d74SJaiprakash Singh typedef union ody_gpio_clk_syncex ody_gpio_clk_syncex_t;
437*4b8b8d74SJaiprakash Singh 
438*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_CLK_SYNCEX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_CLK_SYNCEX(uint64_t a)439*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_CLK_SYNCEX(uint64_t a)
440*4b8b8d74SJaiprakash Singh {
441*4b8b8d74SJaiprakash Singh 	if (a <= 1)
442*4b8b8d74SJaiprakash Singh 		return 0x803000000060ll + 8ll * ((a) & 0x1);
443*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_CLK_SYNCEX", 1, a, 0, 0, 0, 0, 0);
444*4b8b8d74SJaiprakash Singh }
445*4b8b8d74SJaiprakash Singh 
446*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_CLK_SYNCEX(a) ody_gpio_clk_syncex_t
447*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_CLK_SYNCEX(a) CSR_TYPE_NCB
448*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_CLK_SYNCEX(a) "GPIO_CLK_SYNCEX"
449*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_CLK_SYNCEX(a) 0x0 /* PF_BAR0 */
450*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_CLK_SYNCEX(a) (a)
451*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_CLK_SYNCEX(a) (a), -1, -1, -1
452*4b8b8d74SJaiprakash Singh 
453*4b8b8d74SJaiprakash Singh /**
454*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_const
455*4b8b8d74SJaiprakash Singh  *
456*4b8b8d74SJaiprakash Singh  * GPIO Constants Register
457*4b8b8d74SJaiprakash Singh  * This register contains constants for software discovery.
458*4b8b8d74SJaiprakash Singh  *
459*4b8b8d74SJaiprakash Singh  * This register is accessible to all requestors (regardless of GPIO_PERMIT).
460*4b8b8d74SJaiprakash Singh  *
461*4b8b8d74SJaiprakash Singh  * When permitted, this register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
462*4b8b8d74SJaiprakash Singh  */
463*4b8b8d74SJaiprakash Singh union ody_gpio_const {
464*4b8b8d74SJaiprakash Singh 	uint64_t u;
465*4b8b8d74SJaiprakash Singh 	struct ody_gpio_const_s {
466*4b8b8d74SJaiprakash Singh 		uint64_t gpios                       : 8;
467*4b8b8d74SJaiprakash Singh 		uint64_t pp                          : 8;
468*4b8b8d74SJaiprakash Singh 		uint64_t clkgen                      : 4;
469*4b8b8d74SJaiprakash Singh 		uint64_t reserved_20_63              : 44;
470*4b8b8d74SJaiprakash Singh 	} s;
471*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_const_s cn; */
472*4b8b8d74SJaiprakash Singh };
473*4b8b8d74SJaiprakash Singh typedef union ody_gpio_const ody_gpio_const_t;
474*4b8b8d74SJaiprakash Singh 
475*4b8b8d74SJaiprakash Singh #define ODY_GPIO_CONST ODY_GPIO_CONST_FUNC()
476*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_CONST_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GPIO_CONST_FUNC(void)477*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_CONST_FUNC(void)
478*4b8b8d74SJaiprakash Singh {
479*4b8b8d74SJaiprakash Singh 	return 0x803000000090ll;
480*4b8b8d74SJaiprakash Singh }
481*4b8b8d74SJaiprakash Singh 
482*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_CONST ody_gpio_const_t
483*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_CONST CSR_TYPE_NCB
484*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_CONST "GPIO_CONST"
485*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_CONST 0x0 /* PF_BAR0 */
486*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_CONST 0
487*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_CONST -1, -1, -1, -1
488*4b8b8d74SJaiprakash Singh 
489*4b8b8d74SJaiprakash Singh /**
490*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_intr#
491*4b8b8d74SJaiprakash Singh  *
492*4b8b8d74SJaiprakash Singh  * GPIO Bit Interrupt Registers
493*4b8b8d74SJaiprakash Singh  * Each register provides interrupt information for the corresponding GPIO pin.
494*4b8b8d74SJaiprakash Singh  * GPIO_INTR() interrupts can be level or edge interrupts depending on GPIO_BIT_CFG()[INT_TYPE].
495*4b8b8d74SJaiprakash Singh  *
496*4b8b8d74SJaiprakash Singh  * Each index is only accessible to the requestor(s) permitted with GPIO_BIT_PERMIT().
497*4b8b8d74SJaiprakash Singh  *
498*4b8b8d74SJaiprakash Singh  * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
499*4b8b8d74SJaiprakash Singh  */
500*4b8b8d74SJaiprakash Singh union ody_gpio_intrx {
501*4b8b8d74SJaiprakash Singh 	uint64_t u;
502*4b8b8d74SJaiprakash Singh 	struct ody_gpio_intrx_s {
503*4b8b8d74SJaiprakash Singh 		uint64_t intr                        : 1;
504*4b8b8d74SJaiprakash Singh 		uint64_t intr_w1s                    : 1;
505*4b8b8d74SJaiprakash Singh 		uint64_t intr_ena_w1c                : 1;
506*4b8b8d74SJaiprakash Singh 		uint64_t intr_ena_w1s                : 1;
507*4b8b8d74SJaiprakash Singh 		uint64_t reserved_4_63               : 60;
508*4b8b8d74SJaiprakash Singh 	} s;
509*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_intrx_s cn; */
510*4b8b8d74SJaiprakash Singh };
511*4b8b8d74SJaiprakash Singh typedef union ody_gpio_intrx ody_gpio_intrx_t;
512*4b8b8d74SJaiprakash Singh 
513*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_INTRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_INTRX(uint64_t a)514*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_INTRX(uint64_t a)
515*4b8b8d74SJaiprakash Singh {
516*4b8b8d74SJaiprakash Singh 	if (a <= 63)
517*4b8b8d74SJaiprakash Singh 		return 0x803000000800ll + 8ll * ((a) & 0x3f);
518*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_INTRX", 1, a, 0, 0, 0, 0, 0);
519*4b8b8d74SJaiprakash Singh }
520*4b8b8d74SJaiprakash Singh 
521*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_INTRX(a) ody_gpio_intrx_t
522*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_INTRX(a) CSR_TYPE_NCB
523*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_INTRX(a) "GPIO_INTRX"
524*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_INTRX(a) 0x0 /* PF_BAR0 */
525*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_INTRX(a) (a)
526*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_INTRX(a) (a), -1, -1, -1
527*4b8b8d74SJaiprakash Singh 
528*4b8b8d74SJaiprakash Singh /**
529*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_io_ctl
530*4b8b8d74SJaiprakash Singh  *
531*4b8b8d74SJaiprakash Singh  * GPIO I/O Control Register
532*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with GPIO_PERMIT.
533*4b8b8d74SJaiprakash Singh  *
534*4b8b8d74SJaiprakash Singh  * When permitted, this register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
535*4b8b8d74SJaiprakash Singh  */
536*4b8b8d74SJaiprakash Singh union ody_gpio_io_ctl {
537*4b8b8d74SJaiprakash Singh 	uint64_t u;
538*4b8b8d74SJaiprakash Singh 	struct ody_gpio_io_ctl_s {
539*4b8b8d74SJaiprakash Singh 		uint64_t slew0                       : 2;
540*4b8b8d74SJaiprakash Singh 		uint64_t drive0                      : 2;
541*4b8b8d74SJaiprakash Singh 		uint64_t slew1                       : 2;
542*4b8b8d74SJaiprakash Singh 		uint64_t drive1                      : 2;
543*4b8b8d74SJaiprakash Singh 		uint64_t slew2                       : 2;
544*4b8b8d74SJaiprakash Singh 		uint64_t drive2                      : 2;
545*4b8b8d74SJaiprakash Singh 		uint64_t slew3                       : 2;
546*4b8b8d74SJaiprakash Singh 		uint64_t drive3                      : 2;
547*4b8b8d74SJaiprakash Singh 		uint64_t slew4                       : 2;
548*4b8b8d74SJaiprakash Singh 		uint64_t drive4                      : 2;
549*4b8b8d74SJaiprakash Singh 		uint64_t slew5                       : 2;
550*4b8b8d74SJaiprakash Singh 		uint64_t drive5                      : 2;
551*4b8b8d74SJaiprakash Singh 		uint64_t slew6                       : 2;
552*4b8b8d74SJaiprakash Singh 		uint64_t drive6                      : 2;
553*4b8b8d74SJaiprakash Singh 		uint64_t slew7                       : 2;
554*4b8b8d74SJaiprakash Singh 		uint64_t drive7                      : 2;
555*4b8b8d74SJaiprakash Singh 		uint64_t reserved_32_63              : 32;
556*4b8b8d74SJaiprakash Singh 	} s;
557*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_io_ctl_s cn; */
558*4b8b8d74SJaiprakash Singh };
559*4b8b8d74SJaiprakash Singh typedef union ody_gpio_io_ctl ody_gpio_io_ctl_t;
560*4b8b8d74SJaiprakash Singh 
561*4b8b8d74SJaiprakash Singh #define ODY_GPIO_IO_CTL ODY_GPIO_IO_CTL_FUNC()
562*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_IO_CTL_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GPIO_IO_CTL_FUNC(void)563*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_IO_CTL_FUNC(void)
564*4b8b8d74SJaiprakash Singh {
565*4b8b8d74SJaiprakash Singh 	return 0x803000000080ll;
566*4b8b8d74SJaiprakash Singh }
567*4b8b8d74SJaiprakash Singh 
568*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_IO_CTL ody_gpio_io_ctl_t
569*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_IO_CTL CSR_TYPE_NCB
570*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_IO_CTL "GPIO_IO_CTL"
571*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_IO_CTL 0x0 /* PF_BAR0 */
572*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_IO_CTL 0
573*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_IO_CTL -1, -1, -1, -1
574*4b8b8d74SJaiprakash Singh 
575*4b8b8d74SJaiprakash Singh /**
576*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_mc_intr#
577*4b8b8d74SJaiprakash Singh  *
578*4b8b8d74SJaiprakash Singh  * GPIO Bit Multicast Interrupt Registers
579*4b8b8d74SJaiprakash Singh  * Each register provides interrupt multicasting for GPIO(4..7).
580*4b8b8d74SJaiprakash Singh  *
581*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with GPIO_PERMIT.
582*4b8b8d74SJaiprakash Singh  *
583*4b8b8d74SJaiprakash Singh  * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
584*4b8b8d74SJaiprakash Singh  */
585*4b8b8d74SJaiprakash Singh union ody_gpio_mc_intrx {
586*4b8b8d74SJaiprakash Singh 	uint64_t u;
587*4b8b8d74SJaiprakash Singh 	struct ody_gpio_mc_intrx_s {
588*4b8b8d74SJaiprakash Singh 		uint64_t intr                        : 64;
589*4b8b8d74SJaiprakash Singh 	} s;
590*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_mc_intrx_s cn; */
591*4b8b8d74SJaiprakash Singh };
592*4b8b8d74SJaiprakash Singh typedef union ody_gpio_mc_intrx ody_gpio_mc_intrx_t;
593*4b8b8d74SJaiprakash Singh 
594*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTRX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_MC_INTRX(uint64_t a)595*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTRX(uint64_t a)
596*4b8b8d74SJaiprakash Singh {
597*4b8b8d74SJaiprakash Singh 	if ((a >= 4) && (a <= 7))
598*4b8b8d74SJaiprakash Singh 		return 0x803000001000ll + 8ll * ((a) & 0x7);
599*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_MC_INTRX", 1, a, 0, 0, 0, 0, 0);
600*4b8b8d74SJaiprakash Singh }
601*4b8b8d74SJaiprakash Singh 
602*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_MC_INTRX(a) ody_gpio_mc_intrx_t
603*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_MC_INTRX(a) CSR_TYPE_NCB
604*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_MC_INTRX(a) "GPIO_MC_INTRX"
605*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_MC_INTRX(a) 0x0 /* PF_BAR0 */
606*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_MC_INTRX(a) (a)
607*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_MC_INTRX(a) (a), -1, -1, -1
608*4b8b8d74SJaiprakash Singh 
609*4b8b8d74SJaiprakash Singh /**
610*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_mc_intr#_ena_w1c
611*4b8b8d74SJaiprakash Singh  *
612*4b8b8d74SJaiprakash Singh  * GPIO Bit Multicast Interrupt Registers
613*4b8b8d74SJaiprakash Singh  * This register clears interrupt enable bits.
614*4b8b8d74SJaiprakash Singh  */
615*4b8b8d74SJaiprakash Singh union ody_gpio_mc_intrx_ena_w1c {
616*4b8b8d74SJaiprakash Singh 	uint64_t u;
617*4b8b8d74SJaiprakash Singh 	struct ody_gpio_mc_intrx_ena_w1c_s {
618*4b8b8d74SJaiprakash Singh 		uint64_t intr                        : 64;
619*4b8b8d74SJaiprakash Singh 	} s;
620*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_mc_intrx_ena_w1c_s cn; */
621*4b8b8d74SJaiprakash Singh };
622*4b8b8d74SJaiprakash Singh typedef union ody_gpio_mc_intrx_ena_w1c ody_gpio_mc_intrx_ena_w1c_t;
623*4b8b8d74SJaiprakash Singh 
624*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTRX_ENA_W1C(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_MC_INTRX_ENA_W1C(uint64_t a)625*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTRX_ENA_W1C(uint64_t a)
626*4b8b8d74SJaiprakash Singh {
627*4b8b8d74SJaiprakash Singh 	if ((a >= 4) && (a <= 7))
628*4b8b8d74SJaiprakash Singh 		return 0x803000001200ll + 8ll * ((a) & 0x7);
629*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_MC_INTRX_ENA_W1C", 1, a, 0, 0, 0, 0, 0);
630*4b8b8d74SJaiprakash Singh }
631*4b8b8d74SJaiprakash Singh 
632*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_MC_INTRX_ENA_W1C(a) ody_gpio_mc_intrx_ena_w1c_t
633*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_MC_INTRX_ENA_W1C(a) CSR_TYPE_NCB
634*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_MC_INTRX_ENA_W1C(a) "GPIO_MC_INTRX_ENA_W1C"
635*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_MC_INTRX_ENA_W1C(a) 0x0 /* PF_BAR0 */
636*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_MC_INTRX_ENA_W1C(a) (a)
637*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_MC_INTRX_ENA_W1C(a) (a), -1, -1, -1
638*4b8b8d74SJaiprakash Singh 
639*4b8b8d74SJaiprakash Singh /**
640*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_mc_intr#_ena_w1s
641*4b8b8d74SJaiprakash Singh  *
642*4b8b8d74SJaiprakash Singh  * GPIO Bit Multicast Interrupt Registers
643*4b8b8d74SJaiprakash Singh  * This register sets interrupt enable bits.
644*4b8b8d74SJaiprakash Singh  */
645*4b8b8d74SJaiprakash Singh union ody_gpio_mc_intrx_ena_w1s {
646*4b8b8d74SJaiprakash Singh 	uint64_t u;
647*4b8b8d74SJaiprakash Singh 	struct ody_gpio_mc_intrx_ena_w1s_s {
648*4b8b8d74SJaiprakash Singh 		uint64_t intr                        : 64;
649*4b8b8d74SJaiprakash Singh 	} s;
650*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_mc_intrx_ena_w1s_s cn; */
651*4b8b8d74SJaiprakash Singh };
652*4b8b8d74SJaiprakash Singh typedef union ody_gpio_mc_intrx_ena_w1s ody_gpio_mc_intrx_ena_w1s_t;
653*4b8b8d74SJaiprakash Singh 
654*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTRX_ENA_W1S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_MC_INTRX_ENA_W1S(uint64_t a)655*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTRX_ENA_W1S(uint64_t a)
656*4b8b8d74SJaiprakash Singh {
657*4b8b8d74SJaiprakash Singh 	if ((a >= 4) && (a <= 7))
658*4b8b8d74SJaiprakash Singh 		return 0x803000001300ll + 8ll * ((a) & 0x7);
659*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_MC_INTRX_ENA_W1S", 1, a, 0, 0, 0, 0, 0);
660*4b8b8d74SJaiprakash Singh }
661*4b8b8d74SJaiprakash Singh 
662*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_MC_INTRX_ENA_W1S(a) ody_gpio_mc_intrx_ena_w1s_t
663*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_MC_INTRX_ENA_W1S(a) CSR_TYPE_NCB
664*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_MC_INTRX_ENA_W1S(a) "GPIO_MC_INTRX_ENA_W1S"
665*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_MC_INTRX_ENA_W1S(a) 0x0 /* PF_BAR0 */
666*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_MC_INTRX_ENA_W1S(a) (a)
667*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_MC_INTRX_ENA_W1S(a) (a), -1, -1, -1
668*4b8b8d74SJaiprakash Singh 
669*4b8b8d74SJaiprakash Singh /**
670*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_mc_intr#_w1s
671*4b8b8d74SJaiprakash Singh  *
672*4b8b8d74SJaiprakash Singh  * GPIO Bit Multicast Interrupt Registers
673*4b8b8d74SJaiprakash Singh  * This register sets interrupt bits.
674*4b8b8d74SJaiprakash Singh  */
675*4b8b8d74SJaiprakash Singh union ody_gpio_mc_intrx_w1s {
676*4b8b8d74SJaiprakash Singh 	uint64_t u;
677*4b8b8d74SJaiprakash Singh 	struct ody_gpio_mc_intrx_w1s_s {
678*4b8b8d74SJaiprakash Singh 		uint64_t intr                        : 64;
679*4b8b8d74SJaiprakash Singh 	} s;
680*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_mc_intrx_w1s_s cn; */
681*4b8b8d74SJaiprakash Singh };
682*4b8b8d74SJaiprakash Singh typedef union ody_gpio_mc_intrx_w1s ody_gpio_mc_intrx_w1s_t;
683*4b8b8d74SJaiprakash Singh 
684*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTRX_W1S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_MC_INTRX_W1S(uint64_t a)685*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTRX_W1S(uint64_t a)
686*4b8b8d74SJaiprakash Singh {
687*4b8b8d74SJaiprakash Singh 	if ((a >= 4) && (a <= 7))
688*4b8b8d74SJaiprakash Singh 		return 0x803000001100ll + 8ll * ((a) & 0x7);
689*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_MC_INTRX_W1S", 1, a, 0, 0, 0, 0, 0);
690*4b8b8d74SJaiprakash Singh }
691*4b8b8d74SJaiprakash Singh 
692*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_MC_INTRX_W1S(a) ody_gpio_mc_intrx_w1s_t
693*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_MC_INTRX_W1S(a) CSR_TYPE_NCB
694*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_MC_INTRX_W1S(a) "GPIO_MC_INTRX_W1S"
695*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_MC_INTRX_W1S(a) 0x0 /* PF_BAR0 */
696*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_MC_INTRX_W1S(a) (a)
697*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_MC_INTRX_W1S(a) (a), -1, -1, -1
698*4b8b8d74SJaiprakash Singh 
699*4b8b8d74SJaiprakash Singh /**
700*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_mc_intr1#
701*4b8b8d74SJaiprakash Singh  *
702*4b8b8d74SJaiprakash Singh  * GPIO Bit Multicast Interrupt Registers
703*4b8b8d74SJaiprakash Singh  * Each register provides interrupt multicasting for GPIO(4..7).
704*4b8b8d74SJaiprakash Singh  *
705*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with GPIO_PERMIT.
706*4b8b8d74SJaiprakash Singh  *
707*4b8b8d74SJaiprakash Singh  * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
708*4b8b8d74SJaiprakash Singh  */
709*4b8b8d74SJaiprakash Singh union ody_gpio_mc_intr1x {
710*4b8b8d74SJaiprakash Singh 	uint64_t u;
711*4b8b8d74SJaiprakash Singh 	struct ody_gpio_mc_intr1x_s {
712*4b8b8d74SJaiprakash Singh 		uint64_t intr                        : 18;
713*4b8b8d74SJaiprakash Singh 		uint64_t reserved_18_63              : 46;
714*4b8b8d74SJaiprakash Singh 	} s;
715*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_mc_intr1x_s cn; */
716*4b8b8d74SJaiprakash Singh };
717*4b8b8d74SJaiprakash Singh typedef union ody_gpio_mc_intr1x ody_gpio_mc_intr1x_t;
718*4b8b8d74SJaiprakash Singh 
719*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTR1X(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_MC_INTR1X(uint64_t a)720*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTR1X(uint64_t a)
721*4b8b8d74SJaiprakash Singh {
722*4b8b8d74SJaiprakash Singh 	if ((a >= 4) && (a <= 7))
723*4b8b8d74SJaiprakash Singh 		return 0x803000001040ll + 8ll * ((a) & 0x7);
724*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_MC_INTR1X", 1, a, 0, 0, 0, 0, 0);
725*4b8b8d74SJaiprakash Singh }
726*4b8b8d74SJaiprakash Singh 
727*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_MC_INTR1X(a) ody_gpio_mc_intr1x_t
728*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_MC_INTR1X(a) CSR_TYPE_NCB
729*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_MC_INTR1X(a) "GPIO_MC_INTR1X"
730*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_MC_INTR1X(a) 0x0 /* PF_BAR0 */
731*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_MC_INTR1X(a) (a)
732*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_MC_INTR1X(a) (a), -1, -1, -1
733*4b8b8d74SJaiprakash Singh 
734*4b8b8d74SJaiprakash Singh /**
735*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_mc_intr1#_ena_w1c
736*4b8b8d74SJaiprakash Singh  *
737*4b8b8d74SJaiprakash Singh  * GPIO Bit Multicast Interrupt Registers
738*4b8b8d74SJaiprakash Singh  * This register clears interrupt enable bits.
739*4b8b8d74SJaiprakash Singh  */
740*4b8b8d74SJaiprakash Singh union ody_gpio_mc_intr1x_ena_w1c {
741*4b8b8d74SJaiprakash Singh 	uint64_t u;
742*4b8b8d74SJaiprakash Singh 	struct ody_gpio_mc_intr1x_ena_w1c_s {
743*4b8b8d74SJaiprakash Singh 		uint64_t intr                        : 18;
744*4b8b8d74SJaiprakash Singh 		uint64_t reserved_18_63              : 46;
745*4b8b8d74SJaiprakash Singh 	} s;
746*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_mc_intr1x_ena_w1c_s cn; */
747*4b8b8d74SJaiprakash Singh };
748*4b8b8d74SJaiprakash Singh typedef union ody_gpio_mc_intr1x_ena_w1c ody_gpio_mc_intr1x_ena_w1c_t;
749*4b8b8d74SJaiprakash Singh 
750*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTR1X_ENA_W1C(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_MC_INTR1X_ENA_W1C(uint64_t a)751*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTR1X_ENA_W1C(uint64_t a)
752*4b8b8d74SJaiprakash Singh {
753*4b8b8d74SJaiprakash Singh 	if ((a >= 4) && (a <= 7))
754*4b8b8d74SJaiprakash Singh 		return 0x803000001240ll + 8ll * ((a) & 0x7);
755*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_MC_INTR1X_ENA_W1C", 1, a, 0, 0, 0, 0, 0);
756*4b8b8d74SJaiprakash Singh }
757*4b8b8d74SJaiprakash Singh 
758*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_MC_INTR1X_ENA_W1C(a) ody_gpio_mc_intr1x_ena_w1c_t
759*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_MC_INTR1X_ENA_W1C(a) CSR_TYPE_NCB
760*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_MC_INTR1X_ENA_W1C(a) "GPIO_MC_INTR1X_ENA_W1C"
761*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_MC_INTR1X_ENA_W1C(a) 0x0 /* PF_BAR0 */
762*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_MC_INTR1X_ENA_W1C(a) (a)
763*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_MC_INTR1X_ENA_W1C(a) (a), -1, -1, -1
764*4b8b8d74SJaiprakash Singh 
765*4b8b8d74SJaiprakash Singh /**
766*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_mc_intr1#_ena_w1s
767*4b8b8d74SJaiprakash Singh  *
768*4b8b8d74SJaiprakash Singh  * GPIO Bit Multicast Interrupt Registers
769*4b8b8d74SJaiprakash Singh  * This register sets interrupt enable bits.
770*4b8b8d74SJaiprakash Singh  */
771*4b8b8d74SJaiprakash Singh union ody_gpio_mc_intr1x_ena_w1s {
772*4b8b8d74SJaiprakash Singh 	uint64_t u;
773*4b8b8d74SJaiprakash Singh 	struct ody_gpio_mc_intr1x_ena_w1s_s {
774*4b8b8d74SJaiprakash Singh 		uint64_t intr                        : 18;
775*4b8b8d74SJaiprakash Singh 		uint64_t reserved_18_63              : 46;
776*4b8b8d74SJaiprakash Singh 	} s;
777*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_mc_intr1x_ena_w1s_s cn; */
778*4b8b8d74SJaiprakash Singh };
779*4b8b8d74SJaiprakash Singh typedef union ody_gpio_mc_intr1x_ena_w1s ody_gpio_mc_intr1x_ena_w1s_t;
780*4b8b8d74SJaiprakash Singh 
781*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTR1X_ENA_W1S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_MC_INTR1X_ENA_W1S(uint64_t a)782*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTR1X_ENA_W1S(uint64_t a)
783*4b8b8d74SJaiprakash Singh {
784*4b8b8d74SJaiprakash Singh 	if ((a >= 4) && (a <= 7))
785*4b8b8d74SJaiprakash Singh 		return 0x803000001340ll + 8ll * ((a) & 0x7);
786*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_MC_INTR1X_ENA_W1S", 1, a, 0, 0, 0, 0, 0);
787*4b8b8d74SJaiprakash Singh }
788*4b8b8d74SJaiprakash Singh 
789*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_MC_INTR1X_ENA_W1S(a) ody_gpio_mc_intr1x_ena_w1s_t
790*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_MC_INTR1X_ENA_W1S(a) CSR_TYPE_NCB
791*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_MC_INTR1X_ENA_W1S(a) "GPIO_MC_INTR1X_ENA_W1S"
792*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_MC_INTR1X_ENA_W1S(a) 0x0 /* PF_BAR0 */
793*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_MC_INTR1X_ENA_W1S(a) (a)
794*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_MC_INTR1X_ENA_W1S(a) (a), -1, -1, -1
795*4b8b8d74SJaiprakash Singh 
796*4b8b8d74SJaiprakash Singh /**
797*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_mc_intr1#_w1s
798*4b8b8d74SJaiprakash Singh  *
799*4b8b8d74SJaiprakash Singh  * GPIO Bit Multicast Interrupt Registers
800*4b8b8d74SJaiprakash Singh  * This register sets interrupt bits.
801*4b8b8d74SJaiprakash Singh  */
802*4b8b8d74SJaiprakash Singh union ody_gpio_mc_intr1x_w1s {
803*4b8b8d74SJaiprakash Singh 	uint64_t u;
804*4b8b8d74SJaiprakash Singh 	struct ody_gpio_mc_intr1x_w1s_s {
805*4b8b8d74SJaiprakash Singh 		uint64_t intr                        : 18;
806*4b8b8d74SJaiprakash Singh 		uint64_t reserved_18_63              : 46;
807*4b8b8d74SJaiprakash Singh 	} s;
808*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_mc_intr1x_w1s_s cn; */
809*4b8b8d74SJaiprakash Singh };
810*4b8b8d74SJaiprakash Singh typedef union ody_gpio_mc_intr1x_w1s ody_gpio_mc_intr1x_w1s_t;
811*4b8b8d74SJaiprakash Singh 
812*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTR1X_W1S(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_MC_INTR1X_W1S(uint64_t a)813*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MC_INTR1X_W1S(uint64_t a)
814*4b8b8d74SJaiprakash Singh {
815*4b8b8d74SJaiprakash Singh 	if ((a >= 4) && (a <= 7))
816*4b8b8d74SJaiprakash Singh 		return 0x803000001140ll + 8ll * ((a) & 0x7);
817*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_MC_INTR1X_W1S", 1, a, 0, 0, 0, 0, 0);
818*4b8b8d74SJaiprakash Singh }
819*4b8b8d74SJaiprakash Singh 
820*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_MC_INTR1X_W1S(a) ody_gpio_mc_intr1x_w1s_t
821*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_MC_INTR1X_W1S(a) CSR_TYPE_NCB
822*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_MC_INTR1X_W1S(a) "GPIO_MC_INTR1X_W1S"
823*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_MC_INTR1X_W1S(a) 0x0 /* PF_BAR0 */
824*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_MC_INTR1X_W1S(a) (a)
825*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_MC_INTR1X_W1S(a) (a), -1, -1, -1
826*4b8b8d74SJaiprakash Singh 
827*4b8b8d74SJaiprakash Singh /**
828*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_misc_strap
829*4b8b8d74SJaiprakash Singh  *
830*4b8b8d74SJaiprakash Singh  * GPIO Misc Strap Value Register
831*4b8b8d74SJaiprakash Singh  * This register contains the miscellaneous strap state.
832*4b8b8d74SJaiprakash Singh  *
833*4b8b8d74SJaiprakash Singh  * Miscellaneous straps are enumerated by GPIO_MISC_STRAP_PIN_E, where the value 0x0
834*4b8b8d74SJaiprakash Singh  * corresponds to bit zero in this register.
835*4b8b8d74SJaiprakash Singh  *
836*4b8b8d74SJaiprakash Singh  * This register is accessible to all requestors (regardless of GPIO_PERMIT).
837*4b8b8d74SJaiprakash Singh  *
838*4b8b8d74SJaiprakash Singh  * When permitted, this register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
839*4b8b8d74SJaiprakash Singh  */
840*4b8b8d74SJaiprakash Singh union ody_gpio_misc_strap {
841*4b8b8d74SJaiprakash Singh 	uint64_t u;
842*4b8b8d74SJaiprakash Singh 	struct ody_gpio_misc_strap_s {
843*4b8b8d74SJaiprakash Singh 		uint64_t reserved_0_15               : 16;
844*4b8b8d74SJaiprakash Singh 		uint64_t uart0_rts                   : 1;
845*4b8b8d74SJaiprakash Singh 		uint64_t uart1_rts                   : 1;
846*4b8b8d74SJaiprakash Singh 		uint64_t reserved_18_63              : 46;
847*4b8b8d74SJaiprakash Singh 	} s;
848*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_misc_strap_s cn; */
849*4b8b8d74SJaiprakash Singh };
850*4b8b8d74SJaiprakash Singh typedef union ody_gpio_misc_strap ody_gpio_misc_strap_t;
851*4b8b8d74SJaiprakash Singh 
852*4b8b8d74SJaiprakash Singh #define ODY_GPIO_MISC_STRAP ODY_GPIO_MISC_STRAP_FUNC()
853*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MISC_STRAP_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GPIO_MISC_STRAP_FUNC(void)854*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MISC_STRAP_FUNC(void)
855*4b8b8d74SJaiprakash Singh {
856*4b8b8d74SJaiprakash Singh 	return 0x803000000030ll;
857*4b8b8d74SJaiprakash Singh }
858*4b8b8d74SJaiprakash Singh 
859*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_MISC_STRAP ody_gpio_misc_strap_t
860*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_MISC_STRAP CSR_TYPE_NCB
861*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_MISC_STRAP "GPIO_MISC_STRAP"
862*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_MISC_STRAP 0x0 /* PF_BAR0 */
863*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_MISC_STRAP 0
864*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_MISC_STRAP -1, -1, -1, -1
865*4b8b8d74SJaiprakash Singh 
866*4b8b8d74SJaiprakash Singh /**
867*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_misc_supply
868*4b8b8d74SJaiprakash Singh  *
869*4b8b8d74SJaiprakash Singh  * GPIO Misc Supply Value Register
870*4b8b8d74SJaiprakash Singh  * This register contains the state of the GPIO power supplies.
871*4b8b8d74SJaiprakash Singh  *
872*4b8b8d74SJaiprakash Singh  * This register is accessible to all requestors (regardless of GPIO_PERMIT).
873*4b8b8d74SJaiprakash Singh  *
874*4b8b8d74SJaiprakash Singh  * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
875*4b8b8d74SJaiprakash Singh  */
876*4b8b8d74SJaiprakash Singh union ody_gpio_misc_supply {
877*4b8b8d74SJaiprakash Singh 	uint64_t u;
878*4b8b8d74SJaiprakash Singh 	struct ody_gpio_misc_supply_s {
879*4b8b8d74SJaiprakash Singh 		uint64_t reserved_0_63               : 64;
880*4b8b8d74SJaiprakash Singh 	} s;
881*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_misc_supply_s cn; */
882*4b8b8d74SJaiprakash Singh };
883*4b8b8d74SJaiprakash Singh typedef union ody_gpio_misc_supply ody_gpio_misc_supply_t;
884*4b8b8d74SJaiprakash Singh 
885*4b8b8d74SJaiprakash Singh #define ODY_GPIO_MISC_SUPPLY ODY_GPIO_MISC_SUPPLY_FUNC()
886*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MISC_SUPPLY_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GPIO_MISC_SUPPLY_FUNC(void)887*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MISC_SUPPLY_FUNC(void)
888*4b8b8d74SJaiprakash Singh {
889*4b8b8d74SJaiprakash Singh 	return 0x803000000038ll;
890*4b8b8d74SJaiprakash Singh }
891*4b8b8d74SJaiprakash Singh 
892*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_MISC_SUPPLY ody_gpio_misc_supply_t
893*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_MISC_SUPPLY CSR_TYPE_NCB
894*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_MISC_SUPPLY "GPIO_MISC_SUPPLY"
895*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_MISC_SUPPLY 0x0 /* PF_BAR0 */
896*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_MISC_SUPPLY 0
897*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_MISC_SUPPLY -1, -1, -1, -1
898*4b8b8d74SJaiprakash Singh 
899*4b8b8d74SJaiprakash Singh /**
900*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_msix_pba#
901*4b8b8d74SJaiprakash Singh  *
902*4b8b8d74SJaiprakash Singh  * GPIO MSI-X Pending Bit Array Registers
903*4b8b8d74SJaiprakash Singh  * This register is the MSI-X PBA table; the bit number is indexed by the GPIO_INT_VEC_E enumeration.
904*4b8b8d74SJaiprakash Singh  *
905*4b8b8d74SJaiprakash Singh  * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
906*4b8b8d74SJaiprakash Singh  */
907*4b8b8d74SJaiprakash Singh union ody_gpio_msix_pbax {
908*4b8b8d74SJaiprakash Singh 	uint64_t u;
909*4b8b8d74SJaiprakash Singh 	struct ody_gpio_msix_pbax_s {
910*4b8b8d74SJaiprakash Singh 		uint64_t pend                        : 64;
911*4b8b8d74SJaiprakash Singh 	} s;
912*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_msix_pbax_s cn; */
913*4b8b8d74SJaiprakash Singh };
914*4b8b8d74SJaiprakash Singh typedef union ody_gpio_msix_pbax ody_gpio_msix_pbax_t;
915*4b8b8d74SJaiprakash Singh 
916*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MSIX_PBAX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_MSIX_PBAX(uint64_t a)917*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MSIX_PBAX(uint64_t a)
918*4b8b8d74SJaiprakash Singh {
919*4b8b8d74SJaiprakash Singh 	if (a <= 3)
920*4b8b8d74SJaiprakash Singh 		return 0x803000ff0000ll + 8ll * ((a) & 0x3);
921*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_MSIX_PBAX", 1, a, 0, 0, 0, 0, 0);
922*4b8b8d74SJaiprakash Singh }
923*4b8b8d74SJaiprakash Singh 
924*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_MSIX_PBAX(a) ody_gpio_msix_pbax_t
925*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_MSIX_PBAX(a) CSR_TYPE_NCB
926*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_MSIX_PBAX(a) "GPIO_MSIX_PBAX"
927*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_MSIX_PBAX(a) 0x4 /* PF_BAR4 */
928*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_MSIX_PBAX(a) (a)
929*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_MSIX_PBAX(a) (a), -1, -1, -1
930*4b8b8d74SJaiprakash Singh 
931*4b8b8d74SJaiprakash Singh /**
932*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_msix_vec#_addr
933*4b8b8d74SJaiprakash Singh  *
934*4b8b8d74SJaiprakash Singh  * GPIO MSI-X Vector-Table Address Register
935*4b8b8d74SJaiprakash Singh  * This register is the MSI-X vector table, indexed by the GPIO_INT_VEC_E enumeration.
936*4b8b8d74SJaiprakash Singh  *
937*4b8b8d74SJaiprakash Singh  * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
938*4b8b8d74SJaiprakash Singh  */
939*4b8b8d74SJaiprakash Singh union ody_gpio_msix_vecx_addr {
940*4b8b8d74SJaiprakash Singh 	uint64_t u;
941*4b8b8d74SJaiprakash Singh 	struct ody_gpio_msix_vecx_addr_s {
942*4b8b8d74SJaiprakash Singh 		uint64_t secvec                      : 1;
943*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1                  : 1;
944*4b8b8d74SJaiprakash Singh 		uint64_t addr                        : 51;
945*4b8b8d74SJaiprakash Singh 		uint64_t reserved_53_63              : 11;
946*4b8b8d74SJaiprakash Singh 	} s;
947*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_msix_vecx_addr_s cn; */
948*4b8b8d74SJaiprakash Singh };
949*4b8b8d74SJaiprakash Singh typedef union ody_gpio_msix_vecx_addr ody_gpio_msix_vecx_addr_t;
950*4b8b8d74SJaiprakash Singh 
951*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MSIX_VECX_ADDR(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_MSIX_VECX_ADDR(uint64_t a)952*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MSIX_VECX_ADDR(uint64_t a)
953*4b8b8d74SJaiprakash Singh {
954*4b8b8d74SJaiprakash Singh 	if (a <= 209)
955*4b8b8d74SJaiprakash Singh 		return 0x803000f00000ll + 0x10ll * ((a) & 0xff);
956*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_MSIX_VECX_ADDR", 1, a, 0, 0, 0, 0, 0);
957*4b8b8d74SJaiprakash Singh }
958*4b8b8d74SJaiprakash Singh 
959*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_MSIX_VECX_ADDR(a) ody_gpio_msix_vecx_addr_t
960*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_MSIX_VECX_ADDR(a) CSR_TYPE_NCB
961*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_MSIX_VECX_ADDR(a) "GPIO_MSIX_VECX_ADDR"
962*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_MSIX_VECX_ADDR(a) 0x4 /* PF_BAR4 */
963*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_MSIX_VECX_ADDR(a) (a)
964*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_MSIX_VECX_ADDR(a) (a), -1, -1, -1
965*4b8b8d74SJaiprakash Singh 
966*4b8b8d74SJaiprakash Singh /**
967*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_msix_vec#_ctl
968*4b8b8d74SJaiprakash Singh  *
969*4b8b8d74SJaiprakash Singh  * GPIO MSI-X Vector-Table Control and Data Register
970*4b8b8d74SJaiprakash Singh  * This register is the MSI-X vector table, indexed by the GPIO_INT_VEC_E enumeration.
971*4b8b8d74SJaiprakash Singh  *
972*4b8b8d74SJaiprakash Singh  * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
973*4b8b8d74SJaiprakash Singh  */
974*4b8b8d74SJaiprakash Singh union ody_gpio_msix_vecx_ctl {
975*4b8b8d74SJaiprakash Singh 	uint64_t u;
976*4b8b8d74SJaiprakash Singh 	struct ody_gpio_msix_vecx_ctl_s {
977*4b8b8d74SJaiprakash Singh 		uint64_t data                        : 32;
978*4b8b8d74SJaiprakash Singh 		uint64_t mask                        : 1;
979*4b8b8d74SJaiprakash Singh 		uint64_t reserved_33_63              : 31;
980*4b8b8d74SJaiprakash Singh 	} s;
981*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_msix_vecx_ctl_s cn; */
982*4b8b8d74SJaiprakash Singh };
983*4b8b8d74SJaiprakash Singh typedef union ody_gpio_msix_vecx_ctl ody_gpio_msix_vecx_ctl_t;
984*4b8b8d74SJaiprakash Singh 
985*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MSIX_VECX_CTL(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_MSIX_VECX_CTL(uint64_t a)986*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MSIX_VECX_CTL(uint64_t a)
987*4b8b8d74SJaiprakash Singh {
988*4b8b8d74SJaiprakash Singh 	if (a <= 209)
989*4b8b8d74SJaiprakash Singh 		return 0x803000f00008ll + 0x10ll * ((a) & 0xff);
990*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_MSIX_VECX_CTL", 1, a, 0, 0, 0, 0, 0);
991*4b8b8d74SJaiprakash Singh }
992*4b8b8d74SJaiprakash Singh 
993*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_MSIX_VECX_CTL(a) ody_gpio_msix_vecx_ctl_t
994*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_MSIX_VECX_CTL(a) CSR_TYPE_NCB
995*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_MSIX_VECX_CTL(a) "GPIO_MSIX_VECX_CTL"
996*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_MSIX_VECX_CTL(a) 0x4 /* PF_BAR4 */
997*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_MSIX_VECX_CTL(a) (a)
998*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_MSIX_VECX_CTL(a) (a), -1, -1, -1
999*4b8b8d74SJaiprakash Singh 
1000*4b8b8d74SJaiprakash Singh /**
1001*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_multi_cast
1002*4b8b8d74SJaiprakash Singh  *
1003*4b8b8d74SJaiprakash Singh  * GPIO Multicast Register
1004*4b8b8d74SJaiprakash Singh  * This register enables multicast GPIO interrupts.
1005*4b8b8d74SJaiprakash Singh  *
1006*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with GPIO_PERMIT.
1007*4b8b8d74SJaiprakash Singh  *
1008*4b8b8d74SJaiprakash Singh  * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1009*4b8b8d74SJaiprakash Singh  */
1010*4b8b8d74SJaiprakash Singh union ody_gpio_multi_cast {
1011*4b8b8d74SJaiprakash Singh 	uint64_t u;
1012*4b8b8d74SJaiprakash Singh 	struct ody_gpio_multi_cast_s {
1013*4b8b8d74SJaiprakash Singh 		uint64_t en                          : 1;
1014*4b8b8d74SJaiprakash Singh 		uint64_t reserved_1_63               : 63;
1015*4b8b8d74SJaiprakash Singh 	} s;
1016*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_multi_cast_s cn; */
1017*4b8b8d74SJaiprakash Singh };
1018*4b8b8d74SJaiprakash Singh typedef union ody_gpio_multi_cast ody_gpio_multi_cast_t;
1019*4b8b8d74SJaiprakash Singh 
1020*4b8b8d74SJaiprakash Singh #define ODY_GPIO_MULTI_CAST ODY_GPIO_MULTI_CAST_FUNC()
1021*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MULTI_CAST_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GPIO_MULTI_CAST_FUNC(void)1022*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_MULTI_CAST_FUNC(void)
1023*4b8b8d74SJaiprakash Singh {
1024*4b8b8d74SJaiprakash Singh 	return 0x803000000018ll;
1025*4b8b8d74SJaiprakash Singh }
1026*4b8b8d74SJaiprakash Singh 
1027*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_MULTI_CAST ody_gpio_multi_cast_t
1028*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_MULTI_CAST CSR_TYPE_NCB
1029*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_MULTI_CAST "GPIO_MULTI_CAST"
1030*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_MULTI_CAST 0x0 /* PF_BAR0 */
1031*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_MULTI_CAST 0
1032*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_MULTI_CAST -1, -1, -1, -1
1033*4b8b8d74SJaiprakash Singh 
1034*4b8b8d74SJaiprakash Singh /**
1035*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_permit
1036*4b8b8d74SJaiprakash Singh  *
1037*4b8b8d74SJaiprakash Singh  * GPIO Permit Register
1038*4b8b8d74SJaiprakash Singh  * This register determines which requestor(s) are permitted to access which GPIO global
1039*4b8b8d74SJaiprakash Singh  * registers.
1040*4b8b8d74SJaiprakash Singh  *
1041*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with GPIO_PERMIT.
1042*4b8b8d74SJaiprakash Singh  * (That is, only the GPIO_PERMIT permitted agent can change the permission settings of
1043*4b8b8d74SJaiprakash Singh  * all requestors.)
1044*4b8b8d74SJaiprakash Singh  *
1045*4b8b8d74SJaiprakash Singh  * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1046*4b8b8d74SJaiprakash Singh  */
1047*4b8b8d74SJaiprakash Singh union ody_gpio_permit {
1048*4b8b8d74SJaiprakash Singh 	uint64_t u;
1049*4b8b8d74SJaiprakash Singh 	struct ody_gpio_permit_s {
1050*4b8b8d74SJaiprakash Singh 		uint64_t permitdis                   : 5;
1051*4b8b8d74SJaiprakash Singh 		uint64_t reserved_5_63               : 59;
1052*4b8b8d74SJaiprakash Singh 	} s;
1053*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_permit_s cn; */
1054*4b8b8d74SJaiprakash Singh };
1055*4b8b8d74SJaiprakash Singh typedef union ody_gpio_permit ody_gpio_permit_t;
1056*4b8b8d74SJaiprakash Singh 
1057*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PERMIT ODY_GPIO_PERMIT_FUNC()
1058*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_PERMIT_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GPIO_PERMIT_FUNC(void)1059*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_PERMIT_FUNC(void)
1060*4b8b8d74SJaiprakash Singh {
1061*4b8b8d74SJaiprakash Singh 	return 0x803000001500ll;
1062*4b8b8d74SJaiprakash Singh }
1063*4b8b8d74SJaiprakash Singh 
1064*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_PERMIT ody_gpio_permit_t
1065*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_PERMIT CSR_TYPE_NCB
1066*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_PERMIT "GPIO_PERMIT"
1067*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_PERMIT 0x0 /* PF_BAR0 */
1068*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_PERMIT 0
1069*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_PERMIT -1, -1, -1, -1
1070*4b8b8d74SJaiprakash Singh 
1071*4b8b8d74SJaiprakash Singh /**
1072*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_pkg_ver
1073*4b8b8d74SJaiprakash Singh  *
1074*4b8b8d74SJaiprakash Singh  * Chip Package Version Register
1075*4b8b8d74SJaiprakash Singh  * This register reads the package version.
1076*4b8b8d74SJaiprakash Singh  */
1077*4b8b8d74SJaiprakash Singh union ody_gpio_pkg_ver {
1078*4b8b8d74SJaiprakash Singh 	uint64_t u;
1079*4b8b8d74SJaiprakash Singh 	struct ody_gpio_pkg_ver_s {
1080*4b8b8d74SJaiprakash Singh 		uint64_t pkg_ver                     : 4;
1081*4b8b8d74SJaiprakash Singh 		uint64_t reserved_4_63               : 60;
1082*4b8b8d74SJaiprakash Singh 	} s;
1083*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_pkg_ver_s cn; */
1084*4b8b8d74SJaiprakash Singh };
1085*4b8b8d74SJaiprakash Singh typedef union ody_gpio_pkg_ver ody_gpio_pkg_ver_t;
1086*4b8b8d74SJaiprakash Singh 
1087*4b8b8d74SJaiprakash Singh #define ODY_GPIO_PKG_VER ODY_GPIO_PKG_VER_FUNC()
1088*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_PKG_VER_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GPIO_PKG_VER_FUNC(void)1089*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_PKG_VER_FUNC(void)
1090*4b8b8d74SJaiprakash Singh {
1091*4b8b8d74SJaiprakash Singh 	return 0x803000001610ll;
1092*4b8b8d74SJaiprakash Singh }
1093*4b8b8d74SJaiprakash Singh 
1094*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_PKG_VER ody_gpio_pkg_ver_t
1095*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_PKG_VER CSR_TYPE_NCB
1096*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_PKG_VER "GPIO_PKG_VER"
1097*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_PKG_VER 0x0 /* PF_BAR0 */
1098*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_PKG_VER 0
1099*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_PKG_VER -1, -1, -1, -1
1100*4b8b8d74SJaiprakash Singh 
1101*4b8b8d74SJaiprakash Singh /**
1102*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_pull_down#
1103*4b8b8d74SJaiprakash Singh  *
1104*4b8b8d74SJaiprakash Singh  * GPIO control for Pull-down Register
1105*4b8b8d74SJaiprakash Singh  * This register controls the pull-down for GPIOs. Each bit of this register corresponds
1106*4b8b8d74SJaiprakash Singh  * to a GPIO IO. These pull-downs are not replacement for proper board pull-downs.
1107*4b8b8d74SJaiprakash Singh  */
1108*4b8b8d74SJaiprakash Singh union ody_gpio_pull_downx {
1109*4b8b8d74SJaiprakash Singh 	uint64_t u;
1110*4b8b8d74SJaiprakash Singh 	struct ody_gpio_pull_downx_s {
1111*4b8b8d74SJaiprakash Singh 		uint64_t pull_down                   : 64;
1112*4b8b8d74SJaiprakash Singh 	} s;
1113*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_pull_downx_s cn; */
1114*4b8b8d74SJaiprakash Singh };
1115*4b8b8d74SJaiprakash Singh typedef union ody_gpio_pull_downx ody_gpio_pull_downx_t;
1116*4b8b8d74SJaiprakash Singh 
1117*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_PULL_DOWNX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_PULL_DOWNX(uint64_t a)1118*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_PULL_DOWNX(uint64_t a)
1119*4b8b8d74SJaiprakash Singh {
1120*4b8b8d74SJaiprakash Singh 	if (a <= 1)
1121*4b8b8d74SJaiprakash Singh 		return 0x803000001630ll + 8ll * ((a) & 0x1);
1122*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_PULL_DOWNX", 1, a, 0, 0, 0, 0, 0);
1123*4b8b8d74SJaiprakash Singh }
1124*4b8b8d74SJaiprakash Singh 
1125*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_PULL_DOWNX(a) ody_gpio_pull_downx_t
1126*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_PULL_DOWNX(a) CSR_TYPE_NCB
1127*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_PULL_DOWNX(a) "GPIO_PULL_DOWNX"
1128*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_PULL_DOWNX(a) 0x0 /* PF_BAR0 */
1129*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_PULL_DOWNX(a) (a)
1130*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_PULL_DOWNX(a) (a), -1, -1, -1
1131*4b8b8d74SJaiprakash Singh 
1132*4b8b8d74SJaiprakash Singh /**
1133*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_pull_up#
1134*4b8b8d74SJaiprakash Singh  *
1135*4b8b8d74SJaiprakash Singh  * GPIO control for Pull-up Register
1136*4b8b8d74SJaiprakash Singh  * This register controls the pull-up for GPIOs. Each bit of this register corresponds
1137*4b8b8d74SJaiprakash Singh  * to a GPIO IO. These pull-ups are not replacement for proper board pull-ups.
1138*4b8b8d74SJaiprakash Singh  */
1139*4b8b8d74SJaiprakash Singh union ody_gpio_pull_upx {
1140*4b8b8d74SJaiprakash Singh 	uint64_t u;
1141*4b8b8d74SJaiprakash Singh 	struct ody_gpio_pull_upx_s {
1142*4b8b8d74SJaiprakash Singh 		uint64_t pull_up                     : 64;
1143*4b8b8d74SJaiprakash Singh 	} s;
1144*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_pull_upx_s cn; */
1145*4b8b8d74SJaiprakash Singh };
1146*4b8b8d74SJaiprakash Singh typedef union ody_gpio_pull_upx ody_gpio_pull_upx_t;
1147*4b8b8d74SJaiprakash Singh 
1148*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_PULL_UPX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_GPIO_PULL_UPX(uint64_t a)1149*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_PULL_UPX(uint64_t a)
1150*4b8b8d74SJaiprakash Singh {
1151*4b8b8d74SJaiprakash Singh 	if (a <= 1)
1152*4b8b8d74SJaiprakash Singh 		return 0x803000001620ll + 8ll * ((a) & 0x1);
1153*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("GPIO_PULL_UPX", 1, a, 0, 0, 0, 0, 0);
1154*4b8b8d74SJaiprakash Singh }
1155*4b8b8d74SJaiprakash Singh 
1156*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_PULL_UPX(a) ody_gpio_pull_upx_t
1157*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_PULL_UPX(a) CSR_TYPE_NCB
1158*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_PULL_UPX(a) "GPIO_PULL_UPX"
1159*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_PULL_UPX(a) 0x0 /* PF_BAR0 */
1160*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_PULL_UPX(a) (a)
1161*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_PULL_UPX(a) (a), -1, -1, -1
1162*4b8b8d74SJaiprakash Singh 
1163*4b8b8d74SJaiprakash Singh /**
1164*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_rx_dat
1165*4b8b8d74SJaiprakash Singh  *
1166*4b8b8d74SJaiprakash Singh  * GPIO Receive Data Register
1167*4b8b8d74SJaiprakash Singh  * This register contains the state of the GPIO pins, which is after glitch filter and XOR
1168*4b8b8d74SJaiprakash Singh  * inverter (GPIO_BIT_CFG()[PIN_XOR]). GPIO inputs always report to GPIO_RX_DAT despite of
1169*4b8b8d74SJaiprakash Singh  * the value of GPIO_BIT_CFG()[PIN_SEL].
1170*4b8b8d74SJaiprakash Singh  * GPIO_RX_DAT reads GPIO input data for the first 64 GPIOs, and GPIO_RX1_DAT the remainder.
1171*4b8b8d74SJaiprakash Singh  *
1172*4b8b8d74SJaiprakash Singh  * Each bit in this register is only accessible to the requestor(s) permitted with
1173*4b8b8d74SJaiprakash Singh  * GPIO_BIT_PERMIT(), but error will not be reported when there are bits are not
1174*4b8b8d74SJaiprakash Singh  * permitted by GPIO_BIT_PERMIT().
1175*4b8b8d74SJaiprakash Singh  *
1176*4b8b8d74SJaiprakash Singh  * When permitted, this register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1177*4b8b8d74SJaiprakash Singh  */
1178*4b8b8d74SJaiprakash Singh union ody_gpio_rx_dat {
1179*4b8b8d74SJaiprakash Singh 	uint64_t u;
1180*4b8b8d74SJaiprakash Singh 	struct ody_gpio_rx_dat_s {
1181*4b8b8d74SJaiprakash Singh 		uint64_t dat                         : 64;
1182*4b8b8d74SJaiprakash Singh 	} s;
1183*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_rx_dat_s cn; */
1184*4b8b8d74SJaiprakash Singh };
1185*4b8b8d74SJaiprakash Singh typedef union ody_gpio_rx_dat ody_gpio_rx_dat_t;
1186*4b8b8d74SJaiprakash Singh 
1187*4b8b8d74SJaiprakash Singh #define ODY_GPIO_RX_DAT ODY_GPIO_RX_DAT_FUNC()
1188*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_RX_DAT_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GPIO_RX_DAT_FUNC(void)1189*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_RX_DAT_FUNC(void)
1190*4b8b8d74SJaiprakash Singh {
1191*4b8b8d74SJaiprakash Singh 	return 0x803000000000ll;
1192*4b8b8d74SJaiprakash Singh }
1193*4b8b8d74SJaiprakash Singh 
1194*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_RX_DAT ody_gpio_rx_dat_t
1195*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_RX_DAT CSR_TYPE_NCB
1196*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_RX_DAT "GPIO_RX_DAT"
1197*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_RX_DAT 0x0 /* PF_BAR0 */
1198*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_RX_DAT 0
1199*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_RX_DAT -1, -1, -1, -1
1200*4b8b8d74SJaiprakash Singh 
1201*4b8b8d74SJaiprakash Singh /**
1202*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_strap
1203*4b8b8d74SJaiprakash Singh  *
1204*4b8b8d74SJaiprakash Singh  * GPIO Strap Value Register
1205*4b8b8d74SJaiprakash Singh  * This register contains the first 64 GPIO strap data captured at the rising edge of DC_OK.
1206*4b8b8d74SJaiprakash Singh  * GPIO_STRAP1 contains the remaining GPIOs.
1207*4b8b8d74SJaiprakash Singh  *
1208*4b8b8d74SJaiprakash Singh  * Straps are enumerated by GPIO_STRAP_PIN_E.
1209*4b8b8d74SJaiprakash Singh  *
1210*4b8b8d74SJaiprakash Singh  * This register is accessible to all requestors (regardless of GPIO_PERMIT).
1211*4b8b8d74SJaiprakash Singh  *
1212*4b8b8d74SJaiprakash Singh  * When permitted, this register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1213*4b8b8d74SJaiprakash Singh  */
1214*4b8b8d74SJaiprakash Singh union ody_gpio_strap {
1215*4b8b8d74SJaiprakash Singh 	uint64_t u;
1216*4b8b8d74SJaiprakash Singh 	struct ody_gpio_strap_s {
1217*4b8b8d74SJaiprakash Singh 		uint64_t strap                       : 64;
1218*4b8b8d74SJaiprakash Singh 	} s;
1219*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_strap_s cn; */
1220*4b8b8d74SJaiprakash Singh };
1221*4b8b8d74SJaiprakash Singh typedef union ody_gpio_strap ody_gpio_strap_t;
1222*4b8b8d74SJaiprakash Singh 
1223*4b8b8d74SJaiprakash Singh #define ODY_GPIO_STRAP ODY_GPIO_STRAP_FUNC()
1224*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_STRAP_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GPIO_STRAP_FUNC(void)1225*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_STRAP_FUNC(void)
1226*4b8b8d74SJaiprakash Singh {
1227*4b8b8d74SJaiprakash Singh 	return 0x803000000028ll;
1228*4b8b8d74SJaiprakash Singh }
1229*4b8b8d74SJaiprakash Singh 
1230*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_STRAP ody_gpio_strap_t
1231*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_STRAP CSR_TYPE_NCB
1232*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_STRAP "GPIO_STRAP"
1233*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_STRAP 0x0 /* PF_BAR0 */
1234*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_STRAP 0
1235*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_STRAP -1, -1, -1, -1
1236*4b8b8d74SJaiprakash Singh 
1237*4b8b8d74SJaiprakash Singh /**
1238*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_thermal_hot
1239*4b8b8d74SJaiprakash Singh  *
1240*4b8b8d74SJaiprakash Singh  * Chip Thermal Hot Register
1241*4b8b8d74SJaiprakash Singh  * This register reads and drives the thermal hot pin (THERMAL_HOT_L).
1242*4b8b8d74SJaiprakash Singh  *
1243*4b8b8d74SJaiprakash Singh  * This register is only accessible to the requestor(s) permitted with GPIO_PERMIT.
1244*4b8b8d74SJaiprakash Singh  *
1245*4b8b8d74SJaiprakash Singh  * This register is not accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1246*4b8b8d74SJaiprakash Singh  */
1247*4b8b8d74SJaiprakash Singh union ody_gpio_thermal_hot {
1248*4b8b8d74SJaiprakash Singh 	uint64_t u;
1249*4b8b8d74SJaiprakash Singh 	struct ody_gpio_thermal_hot_s {
1250*4b8b8d74SJaiprakash Singh 		uint64_t pin                         : 1;
1251*4b8b8d74SJaiprakash Singh 		uint64_t drv                         : 1;
1252*4b8b8d74SJaiprakash Singh 		uint64_t reserved_2_63               : 62;
1253*4b8b8d74SJaiprakash Singh 	} s;
1254*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_thermal_hot_s cn; */
1255*4b8b8d74SJaiprakash Singh };
1256*4b8b8d74SJaiprakash Singh typedef union ody_gpio_thermal_hot ody_gpio_thermal_hot_t;
1257*4b8b8d74SJaiprakash Singh 
1258*4b8b8d74SJaiprakash Singh #define ODY_GPIO_THERMAL_HOT ODY_GPIO_THERMAL_HOT_FUNC()
1259*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_THERMAL_HOT_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GPIO_THERMAL_HOT_FUNC(void)1260*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_THERMAL_HOT_FUNC(void)
1261*4b8b8d74SJaiprakash Singh {
1262*4b8b8d74SJaiprakash Singh 	return 0x803000001618ll;
1263*4b8b8d74SJaiprakash Singh }
1264*4b8b8d74SJaiprakash Singh 
1265*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_THERMAL_HOT ody_gpio_thermal_hot_t
1266*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_THERMAL_HOT CSR_TYPE_NCB
1267*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_THERMAL_HOT "GPIO_THERMAL_HOT"
1268*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_THERMAL_HOT 0x0 /* PF_BAR0 */
1269*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_THERMAL_HOT 0
1270*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_THERMAL_HOT -1, -1, -1, -1
1271*4b8b8d74SJaiprakash Singh 
1272*4b8b8d74SJaiprakash Singh /**
1273*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_tx_clr
1274*4b8b8d74SJaiprakash Singh  *
1275*4b8b8d74SJaiprakash Singh  * GPIO Transmit Clear Mask Register
1276*4b8b8d74SJaiprakash Singh  * This register clears GPIO output data for the first 64 GPIOs, and GPIO_TX1_CLR the
1277*4b8b8d74SJaiprakash Singh  * remainder.
1278*4b8b8d74SJaiprakash Singh  *
1279*4b8b8d74SJaiprakash Singh  * Each bit in this register is only accessible to the requestor(s) permitted with
1280*4b8b8d74SJaiprakash Singh  * GPIO_BIT_PERMIT(), but error will not be reported when there are bits are not
1281*4b8b8d74SJaiprakash Singh  * permitted by GPIO_BIT_PERMIT().
1282*4b8b8d74SJaiprakash Singh  *
1283*4b8b8d74SJaiprakash Singh  * When permitted, this register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1284*4b8b8d74SJaiprakash Singh  */
1285*4b8b8d74SJaiprakash Singh union ody_gpio_tx_clr {
1286*4b8b8d74SJaiprakash Singh 	uint64_t u;
1287*4b8b8d74SJaiprakash Singh 	struct ody_gpio_tx_clr_s {
1288*4b8b8d74SJaiprakash Singh 		uint64_t clr                         : 64;
1289*4b8b8d74SJaiprakash Singh 	} s;
1290*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_tx_clr_s cn; */
1291*4b8b8d74SJaiprakash Singh };
1292*4b8b8d74SJaiprakash Singh typedef union ody_gpio_tx_clr ody_gpio_tx_clr_t;
1293*4b8b8d74SJaiprakash Singh 
1294*4b8b8d74SJaiprakash Singh #define ODY_GPIO_TX_CLR ODY_GPIO_TX_CLR_FUNC()
1295*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_TX_CLR_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GPIO_TX_CLR_FUNC(void)1296*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_TX_CLR_FUNC(void)
1297*4b8b8d74SJaiprakash Singh {
1298*4b8b8d74SJaiprakash Singh 	return 0x803000000010ll;
1299*4b8b8d74SJaiprakash Singh }
1300*4b8b8d74SJaiprakash Singh 
1301*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_TX_CLR ody_gpio_tx_clr_t
1302*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_TX_CLR CSR_TYPE_NCB
1303*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_TX_CLR "GPIO_TX_CLR"
1304*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_TX_CLR 0x0 /* PF_BAR0 */
1305*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_TX_CLR 0
1306*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_TX_CLR -1, -1, -1, -1
1307*4b8b8d74SJaiprakash Singh 
1308*4b8b8d74SJaiprakash Singh /**
1309*4b8b8d74SJaiprakash Singh  * Register (NCB) gpio_tx_set
1310*4b8b8d74SJaiprakash Singh  *
1311*4b8b8d74SJaiprakash Singh  * GPIO Transmit Set Mask Register
1312*4b8b8d74SJaiprakash Singh  * This register sets GPIO output data. GPIO_TX_SET sets the first 64 GPIOs, and
1313*4b8b8d74SJaiprakash Singh  * GPIO_TX1_SET the remainder.
1314*4b8b8d74SJaiprakash Singh  *
1315*4b8b8d74SJaiprakash Singh  * Each bit in this register is only accessible to the requestor(s) permitted with
1316*4b8b8d74SJaiprakash Singh  * GPIO_BIT_PERMIT(), but error will not be reported when there are bits are not
1317*4b8b8d74SJaiprakash Singh  * permitted by GPIO_BIT_PERMIT().
1318*4b8b8d74SJaiprakash Singh  *
1319*4b8b8d74SJaiprakash Singh  * When permitted, this register is accessible through ROM scripts; see SCR_WRITE32_S[ADDR].
1320*4b8b8d74SJaiprakash Singh  */
1321*4b8b8d74SJaiprakash Singh union ody_gpio_tx_set {
1322*4b8b8d74SJaiprakash Singh 	uint64_t u;
1323*4b8b8d74SJaiprakash Singh 	struct ody_gpio_tx_set_s {
1324*4b8b8d74SJaiprakash Singh 		uint64_t set                         : 64;
1325*4b8b8d74SJaiprakash Singh 	} s;
1326*4b8b8d74SJaiprakash Singh 	/* struct ody_gpio_tx_set_s cn; */
1327*4b8b8d74SJaiprakash Singh };
1328*4b8b8d74SJaiprakash Singh typedef union ody_gpio_tx_set ody_gpio_tx_set_t;
1329*4b8b8d74SJaiprakash Singh 
1330*4b8b8d74SJaiprakash Singh #define ODY_GPIO_TX_SET ODY_GPIO_TX_SET_FUNC()
1331*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_TX_SET_FUNC(void) __attribute__ ((pure, always_inline));
ODY_GPIO_TX_SET_FUNC(void)1332*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_GPIO_TX_SET_FUNC(void)
1333*4b8b8d74SJaiprakash Singh {
1334*4b8b8d74SJaiprakash Singh 	return 0x803000000008ll;
1335*4b8b8d74SJaiprakash Singh }
1336*4b8b8d74SJaiprakash Singh 
1337*4b8b8d74SJaiprakash Singh #define typedef_ODY_GPIO_TX_SET ody_gpio_tx_set_t
1338*4b8b8d74SJaiprakash Singh #define bustype_ODY_GPIO_TX_SET CSR_TYPE_NCB
1339*4b8b8d74SJaiprakash Singh #define basename_ODY_GPIO_TX_SET "GPIO_TX_SET"
1340*4b8b8d74SJaiprakash Singh #define device_bar_ODY_GPIO_TX_SET 0x0 /* PF_BAR0 */
1341*4b8b8d74SJaiprakash Singh #define busnum_ODY_GPIO_TX_SET 0
1342*4b8b8d74SJaiprakash Singh #define arguments_ODY_GPIO_TX_SET -1, -1, -1, -1
1343*4b8b8d74SJaiprakash Singh 
1344*4b8b8d74SJaiprakash Singh #endif /* __ODY_CSRS_GPIO_H__ */
1345