1 /*******************************************************************************
2  * Copyright 2019-2021 Microchip FPGA Embedded Systems Solutions.
3  *
4  * SPDX-License-Identifier: MIT
5  *
6  * @file hw_mssio_mux.h
7  * @author Microchip-FPGA Embedded Systems Solutions
8  *
9  *
10  * Note 1: This file should not be edited. If you need to modify a parameter
11  * without going through regenerating using the MSS Configurator Libero flow
12  * or editing the associated xml file
13  * the following method is recommended:
14 
15  * 1. edit the following file
16  * boards/your_board/platform_config/mpfs_hal_config/mss_sw_config.h
17 
18  * 2. define the value you want to override there.
19  * (Note: There is a commented example in the platform directory)
20 
21  * Note 2: The definition in mss_sw_config.h takes precedence, as
22  * mss_sw_config.h is included prior to the generated header files located in
23  * boards/your_board/fpga_design_config
24  *
25  */
26 
27 #ifndef HW_MSSIO_MUX_H_
28 #define HW_MSSIO_MUX_H_
29 
30 
31 #ifdef __cplusplus
32 extern  "C" {
33 #endif
34 
35 #if !defined (LIBERO_SETTING_IOMUX0_CR)
36 /*Selects whether the peripheral is connected to the Fabric or IOMUX structure.
37 */
38 #define LIBERO_SETTING_IOMUX0_CR    0x00000F9DUL
39     /* SPI0_FABRIC                       [0:1]   RW value= 0x1 */
40     /* SPI1_FABRIC                       [1:1]   RW value= 0x0 */
41     /* I2C0_FABRIC                       [2:1]   RW value= 0x1 */
42     /* I2C1_FABRIC                       [3:1]   RW value= 0x1 */
43     /* CAN0_FABRIC                       [4:1]   RW value= 0x1 */
44     /* CAN1_FABRIC                       [5:1]   RW value= 0x0 */
45     /* QSPI_FABRIC                       [6:1]   RW value= 0x0 */
46     /* MMUART0_FABRIC                    [7:1]   RW value= 0x1 */
47     /* MMUART1_FABRIC                    [8:1]   RW value= 0x1 */
48     /* MMUART2_FABRIC                    [9:1]   RW value= 0x1 */
49     /* MMUART3_FABRIC                    [10:1]  RW value= 0x1 */
50     /* MMUART4_FABRIC                    [11:1]  RW value= 0x1 */
51     /* MDIO0_FABRIC                      [12:1]  RW value= 0x0 */
52     /* MDIO1_FABRIC                      [13:1]  RW value= 0x0 */
53 #endif
54 #if !defined (LIBERO_SETTING_IOMUX1_CR)
55 /*Configures the IO Mux structure for each IO pad. 0 implies SD/SDIO, 1 implies
56 EMMC, 2 implies QSPI, 3 implies SPI,4 implies USB,5 implies MMUART,6 implies
57 I2C,7 implies CAN,8 implies MDIO,9 implies Miscellaneous,0xA implies Reserved
58 (Equivalent to Tristate),0xB implies GPIO ,0xC implies Fabric-test,0xD implies
59 Logic 0,0xE implies Logic 1, 0xF implies Tristate */
60 #define LIBERO_SETTING_IOMUX1_CR    0x11111111UL
61     /* PAD0                              [0:4]   RW value= 0x1 */
62     /* PAD1                              [4:4]   RW value= 0x1 */
63     /* PAD2                              [8:4]   RW value= 0x1 */
64     /* PAD3                              [12:4]  RW value= 0x1 */
65     /* PAD4                              [16:4]  RW value= 0x1 */
66     /* PAD5                              [20:4]  RW value= 0x1 */
67     /* PAD6                              [24:4]  RW value= 0x1 */
68     /* PAD7                              [28:4]  RW value= 0x1 */
69 #endif
70 #if !defined (LIBERO_SETTING_IOMUX2_CR)
71 /*Configures the IO Mux structure for each IO pad. 0 implies SD/SDIO, 1 implies
72 EMMC, 2 implies QSPI, 3 implies SPI,4 implies USB,5 implies MMUART,6 implies
73 I2C,7 implies CAN,8 implies MDIO,9 implies Miscellaneous,0xA implies Reserved
74 (Equivalent to Tristate),0xB implies GPIO ,0xC implies Fabric-test,0xD implies
75 Logic 0,0xE implies Logic 1, 0xF implies Tristate */
76 #define LIBERO_SETTING_IOMUX2_CR    0x00FF1111UL
77     /* PAD8                              [0:4]   RW value= 0x1 */
78     /* PAD9                              [4:4]   RW value= 0x1 */
79     /* PAD10                             [8:4]   RW value= 0x1 */
80     /* PAD11                             [12:4]  RW value= 0x1 */
81     /* PAD12                             [16:4]  RW value= 0xF */
82     /* PAD13                             [20:4]  RW value= 0xF */
83 #endif
84 #if !defined (LIBERO_SETTING_IOMUX3_CR)
85 /*Configures the IO Mux structure for each IO pad. 0 implies SD/SDIO, 1 implies
86 EMMC, 2 implies QSPI, 3 implies SPI,4 implies USB,5 implies MMUART,6 implies
87 I2C,7 implies CAN,8 implies MDIO,9 implies Miscellaneous,0xA implies Reserved
88 (Equivalent to Tristate),0xB implies GPIO ,0xC implies Fabric-test,0xD implies
89 Logic 0,0xE implies Logic 1, 0xF implies Tristate */
90 #define LIBERO_SETTING_IOMUX3_CR    0x44444444UL
91     /* PAD14                             [0:4]   RW value= 0x4 */
92     /* PAD15                             [4:4]   RW value= 0x4 */
93     /* PAD16                             [8:4]   RW value= 0x4 */
94     /* PAD17                             [12:4]  RW value= 0x4 */
95     /* PAD18                             [16:4]  RW value= 0x4 */
96     /* PAD19                             [20:4]  RW value= 0x4 */
97     /* PAD20                             [24:4]  RW value= 0x4 */
98     /* PAD21                             [28:4]  RW value= 0x4 */
99 #endif
100 #if !defined (LIBERO_SETTING_IOMUX4_CR)
101 /*Configures the IO Mux structure for each IO pad. 0 implies SD/SDIO, 1 implies
102 EMMC, 2 implies QSPI, 3 implies SPI,4 implies USB,5 implies MMUART,6 implies
103 I2C,7 implies CAN,8 implies MDIO,9 implies Miscellaneous,0xA implies Reserved
104 (Equivalent to Tristate),0xB implies GPIO ,0xC implies Fabric-test,0xD implies
105 Logic 0,0xE implies Logic 1, 0xF implies Tristate */
106 #define LIBERO_SETTING_IOMUX4_CR    0x88CC4444UL
107     /* PAD22                             [0:4]   RW value= 0x4 */
108     /* PAD23                             [4:4]   RW value= 0x4 */
109     /* PAD24                             [8:4]   RW value= 0x4 */
110     /* PAD25                             [12:4]  RW value= 0x4 */
111     /* PAD26                             [16:4]  RW value= 0xC */
112     /* PAD27                             [20:4]  RW value= 0xC */
113     /* PAD28                             [24:4]  RW value= 0x8 */
114     /* PAD29                             [28:4]  RW value= 0x8 */
115 #endif
116 #if !defined (LIBERO_SETTING_IOMUX5_CR)
117 /*Configures the IO Mux structure for each IO pad. 0 implies SD/SDIO, 1 implies
118 EMMC, 2 implies QSPI, 3 implies SPI,4 implies USB,5 implies MMUART,6 implies
119 I2C,7 implies CAN,8 implies MDIO,9 implies Miscellaneous,0xA implies Reserved
120 (Equivalent to Tristate),0xB implies GPIO ,0xC implies Fabric-test,0xD implies
121 Logic 0,0xE implies Logic 1, 0xF implies Tristate */
122 #define LIBERO_SETTING_IOMUX5_CR    0xF7772222UL
123     /* PAD30                             [0:4]   RW value= 0x2 */
124     /* PAD31                             [4:4]   RW value= 0x2 */
125     /* PAD32                             [8:4]   RW value= 0x2 */
126     /* PAD33                             [12:4]  RW value= 0x2 */
127     /* PAD34                             [16:4]  RW value= 0x7 */
128     /* PAD35                             [20:4]  RW value= 0x7 */
129     /* PAD36                             [24:4]  RW value= 0x7 */
130     /* PAD37                             [28:4]  RW value= 0xF */
131 #endif
132 #if !defined (LIBERO_SETTING_IOMUX6_CR)
133 /*Sets whether the MMC/SD Voltage select lines are inverted on entry to the
134 IOMUX structure */
135 #define LIBERO_SETTING_IOMUX6_CR    0x00000000UL
136     /* VLT_SEL                           [0:1]   RW value= 0x0 */
137     /* VLT_EN                            [1:1]   RW value= 0x0 */
138     /* VLT_CMD_DIR                       [2:1]   RW value= 0x0 */
139     /* VLT_DIR_0                         [3:1]   RW value= 0x0 */
140     /* VLT_DIR_1_3                       [4:1]   RW value= 0x0 */
141     /* SD_LED                            [5:1]   RW value= 0x0 */
142     /* SD_VOLT_0                         [6:1]   RW value= 0x0 */
143     /* SD_VOLT_1                         [7:1]   RW value= 0x0 */
144     /* SD_VOLT_2                         [8:1]   RW value= 0x0 */
145 #endif
146 #if !defined (LIBERO_SETTING_MSSIO_BANK4_CFG_CR)
147 /*Configures the MSSIO block using SCB write */
148 #define LIBERO_SETTING_MSSIO_BANK4_CFG_CR    0x00040A0DUL
149     /* BANK_PCODE                        [0:6]   RW value= 0xD */
150     /* RESERVED0                         [6:2]   RW value= 0x00 */
151     /* BANK_NCODE                        [8:6]   RW value= 0xA */
152     /* RESERVED1                         [14:2]  RW value= 0x0 */
153     /* VS                                [16:4]  RW value= 0x4 */
154     /* RESERVED2                         [20:12] RW value= 0x0 */
155 #endif
156 #if !defined (LIBERO_SETTING_MSSIO_BANK4_IO_CFG_0_1_CR)
157 /*IO electrical configuration for MSSIO pad */
158 #define LIBERO_SETTING_MSSIO_BANK4_IO_CFG_0_1_CR    0x09280928UL
159     /* IO_CFG_0                          [0:16]  RW value= 0x0928 */
160     /* IO_CFG_1                          [16:16] RW value= 0x0928 */
161 #endif
162 #if !defined (LIBERO_SETTING_MSSIO_BANK4_IO_CFG_2_3_CR)
163 /*IO electrical configuration for MSSIO pad */
164 #define LIBERO_SETTING_MSSIO_BANK4_IO_CFG_2_3_CR    0x09280928UL
165     /* IO_CFG_2                          [0:16]  RW value= 0x0928 */
166     /* IO_CFG_3                          [16:16] RW value= 0x0928 */
167 #endif
168 #if !defined (LIBERO_SETTING_MSSIO_BANK4_IO_CFG_4_5_CR)
169 /*IO electrical configuration for MSSIO pad */
170 #define LIBERO_SETTING_MSSIO_BANK4_IO_CFG_4_5_CR    0x09280928UL
171     /* IO_CFG_4                          [0:16]  RW value= 0x0928 */
172     /* IO_CFG_5                          [16:16] RW value= 0x0928 */
173 #endif
174 #if !defined (LIBERO_SETTING_MSSIO_BANK4_IO_CFG_6_7_CR)
175 /*IO electrical configuration for MSSIO pad */
176 #define LIBERO_SETTING_MSSIO_BANK4_IO_CFG_6_7_CR    0x09280928UL
177     /* IO_CFG_6                          [0:16]  RW value= 0x0928 */
178     /* IO_CFG_7                          [16:16] RW value= 0x0928 */
179 #endif
180 #if !defined (LIBERO_SETTING_MSSIO_BANK4_IO_CFG_8_9_CR)
181 /*IO electrical configuration for MSSIO pad */
182 #define LIBERO_SETTING_MSSIO_BANK4_IO_CFG_8_9_CR    0x09280928UL
183     /* IO_CFG_8                          [0:16]  RW value= 0x0928 */
184     /* IO_CFG_9                          [16:16] RW value= 0x0928 */
185 #endif
186 #if !defined (LIBERO_SETTING_MSSIO_BANK4_IO_CFG_10_11_CR)
187 /*IO electrical configuration for MSSIO pad */
188 #define LIBERO_SETTING_MSSIO_BANK4_IO_CFG_10_11_CR    0x09280928UL
189     /* IO_CFG_10                         [0:16]  RW value= 0x0928 */
190     /* IO_CFG_11                         [16:16] RW value= 0x0928 */
191 #endif
192 #if !defined (LIBERO_SETTING_MSSIO_BANK4_IO_CFG_12_13_CR)
193 /*IO electrical configuration for MSSIO pad */
194 #define LIBERO_SETTING_MSSIO_BANK4_IO_CFG_12_13_CR    0x09280928UL
195     /* IO_CFG_12                         [0:16]  RW value= 0x0928 */
196     /* IO_CFG_13                         [16:16] RW value= 0x0928 */
197 #endif
198 #if !defined (LIBERO_SETTING_MSSIO_BANK2_CFG_CR)
199 /*Configures the MSSIO block using SCB write */
200 #define LIBERO_SETTING_MSSIO_BANK2_CFG_CR    0x00080907UL
201     /* BANK_PCODE                        [0:6]   RW value= 0x7 */
202     /* RESERVED0                         [6:2]   RW value= 0x00 */
203     /* BANK_NCODE                        [8:6]   RW value= 0x9 */
204     /* RESERVED1                         [14:2]  RW value= 0x0 */
205     /* VS                                [16:4]  RW value= 0x8 */
206     /* RESERVED2                         [20:12] RW value= 0x0 */
207 #endif
208 #if !defined (LIBERO_SETTING_MSSIO_BANK2_IO_CFG_0_1_CR)
209 /*IO electrical configuration for MSSIO pad */
210 #define LIBERO_SETTING_MSSIO_BANK2_IO_CFG_0_1_CR    0x08290829UL
211     /* IO_CFG_0                          [0:16]  RW value= 0x0829 */
212     /* IO_CFG_1                          [16:16] RW value= 0x0829 */
213 #endif
214 #if !defined (LIBERO_SETTING_MSSIO_BANK2_IO_CFG_2_3_CR)
215 /*IO electrical configuration for MSSIO pad */
216 #define LIBERO_SETTING_MSSIO_BANK2_IO_CFG_2_3_CR    0x08290829UL
217     /* IO_CFG_2                          [0:16]  RW value= 0x0829 */
218     /* IO_CFG_3                          [16:16] RW value= 0x0829 */
219 #endif
220 #if !defined (LIBERO_SETTING_MSSIO_BANK2_IO_CFG_4_5_CR)
221 /*IO electrical configuration for MSSIO pad */
222 #define LIBERO_SETTING_MSSIO_BANK2_IO_CFG_4_5_CR    0x08290829UL
223     /* IO_CFG_4                          [0:16]  RW value= 0x0829 */
224     /* IO_CFG_5                          [16:16] RW value= 0x0829 */
225 #endif
226 #if !defined (LIBERO_SETTING_MSSIO_BANK2_IO_CFG_6_7_CR)
227 /*IO electrical configuration for MSSIO pad */
228 #define LIBERO_SETTING_MSSIO_BANK2_IO_CFG_6_7_CR    0x08290829UL
229     /* IO_CFG_6                          [0:16]  RW value= 0x0829 */
230     /* IO_CFG_7                          [16:16] RW value= 0x0829 */
231 #endif
232 #if !defined (LIBERO_SETTING_MSSIO_BANK2_IO_CFG_8_9_CR)
233 /*IO electrical configuration for MSSIO pad */
234 #define LIBERO_SETTING_MSSIO_BANK2_IO_CFG_8_9_CR    0x08290829UL
235     /* IO_CFG_8                          [0:16]  RW value= 0x0829 */
236     /* IO_CFG_9                          [16:16] RW value= 0x0829 */
237 #endif
238 #if !defined (LIBERO_SETTING_MSSIO_BANK2_IO_CFG_10_11_CR)
239 /*IO electrical configuration for MSSIO pad */
240 #define LIBERO_SETTING_MSSIO_BANK2_IO_CFG_10_11_CR    0x08290829UL
241     /* IO_CFG_10                         [0:16]  RW value= 0x0829 */
242     /* IO_CFG_11                         [16:16] RW value= 0x0829 */
243 #endif
244 #if !defined (LIBERO_SETTING_MSSIO_BANK2_IO_CFG_12_13_CR)
245 /*IO electrical configuration for MSSIO pad */
246 #define LIBERO_SETTING_MSSIO_BANK2_IO_CFG_12_13_CR    0x08290829UL
247     /* IO_CFG_12                         [0:16]  RW value= 0x0829 */
248     /* IO_CFG_13                         [16:16] RW value= 0x0829 */
249 #endif
250 #if !defined (LIBERO_SETTING_MSSIO_BANK2_IO_CFG_14_15_CR)
251 /*IO electrical configuration for MSSIO pad */
252 #define LIBERO_SETTING_MSSIO_BANK2_IO_CFG_14_15_CR    0x08290829UL
253     /* IO_CFG_14                         [0:16]  RW value= 0x0829 */
254     /* IO_CFG_15                         [16:16] RW value= 0x0829 */
255 #endif
256 #if !defined (LIBERO_SETTING_MSSIO_BANK2_IO_CFG_16_17_CR)
257 /*IO electrical configuration for MSSIO pad */
258 #define LIBERO_SETTING_MSSIO_BANK2_IO_CFG_16_17_CR    0x08290829UL
259     /* IO_CFG_16                         [0:16]  RW value= 0x0829 */
260     /* IO_CFG_17                         [16:16] RW value= 0x0829 */
261 #endif
262 #if !defined (LIBERO_SETTING_MSSIO_BANK2_IO_CFG_18_19_CR)
263 /*IO electrical configuration for MSSIO pad */
264 #define LIBERO_SETTING_MSSIO_BANK2_IO_CFG_18_19_CR    0x08290829UL
265     /* IO_CFG_18                         [0:16]  RW value= 0x0829 */
266     /* IO_CFG_19                         [16:16] RW value= 0x0829 */
267 #endif
268 #if !defined (LIBERO_SETTING_MSSIO_BANK2_IO_CFG_20_21_CR)
269 /*IO electrical configuration for MSSIO pad */
270 #define LIBERO_SETTING_MSSIO_BANK2_IO_CFG_20_21_CR    0x08290829UL
271     /* IO_CFG_20                         [0:16]  RW value= 0x0829 */
272     /* IO_CFG_21                         [16:16] RW value= 0x0829 */
273 #endif
274 #if !defined (LIBERO_SETTING_MSSIO_BANK2_IO_CFG_22_23_CR)
275 /*IO electrical configuration for MSSIO pad */
276 #define LIBERO_SETTING_MSSIO_BANK2_IO_CFG_22_23_CR    0x08290829UL
277     /* IO_CFG_22                         [0:16]  RW value= 0x0829 */
278     /* IO_CFG_23                         [16:16] RW value= 0x0829 */
279 #endif
280 #if !defined (LIBERO_SETTING_MSSIO_VB2_CFG)
281 /*default dpc values for MSSIO bank 2 */
282 #define LIBERO_SETTING_MSSIO_VB2_CFG    0x00000828UL
283     /* DPC_IO_CFG_IBUFMD_0               [0:1]   RW value= 0x0 */
284     /* DPC_IO_CFG_IBUFMD_1               [1:1]   RW value= 0x0 */
285     /* DPC_IO_CFG_IBUFMD_2               [2:1]   RW value= 0x0 */
286     /* DPC_IO_CFG_DRV_0                  [3:1]   RW value= 0x1 */
287     /* DPC_IO_CFG_DRV_1                  [4:1]   RW value= 0x0 */
288     /* DPC_IO_CFG_DRV_2                  [5:1]   RW value= 0x1 */
289     /* DPC_IO_CFG_DRV_3                  [6:1]   RW value= 0x0 */
290     /* DPC_IO_CFG_CLAMP                  [7:1]   RW value= 0x0 */
291     /* DPC_IO_CFG_ENHYST                 [8:1]   RW value= 0x0 */
292     /* DPC_IO_CFG_LOCKDN_EN              [9:1]   RW value= 0x0 */
293     /* DPC_IO_CFG_WPD                    [10:1]  RW value= 0x0 */
294     /* DPC_IO_CFG_WPU                    [11:1]  RW value= 0x1 */
295     /* DPC_IO_CFG_ATP_EN                 [12:1]  RW value= 0x0 */
296     /* DPC_IO_CFG_LP_PERSIST_EN          [13:1]  RW value= 0x0 */
297     /* DPC_IO_CFG_LP_BYPASS_EN           [14:1]  RW value= 0x0 */
298     /* RESERVED                          [15:17] R */
299 #endif
300 #if !defined (LIBERO_SETTING_MSSIO_VB4_CFG)
301 /*default dpc values for MSSIO bank 4 */
302 #define LIBERO_SETTING_MSSIO_VB4_CFG    0x00000828UL
303     /* DPC_IO_CFG_IBUFMD_0               [0:1]   RW value= 0x0 */
304     /* DPC_IO_CFG_IBUFMD_1               [1:1]   RW value= 0x0 */
305     /* DPC_IO_CFG_IBUFMD_2               [2:1]   RW value= 0x0 */
306     /* DPC_IO_CFG_DRV_0                  [3:1]   RW value= 0x1 */
307     /* DPC_IO_CFG_DRV_1                  [4:1]   RW value= 0x0 */
308     /* DPC_IO_CFG_DRV_2                  [5:1]   RW value= 0x1 */
309     /* DPC_IO_CFG_DRV_3                  [6:1]   RW value= 0x0 */
310     /* DPC_IO_CFG_CLAMP                  [7:1]   RW value= 0x0 */
311     /* DPC_IO_CFG_ENHYST                 [8:1]   RW value= 0x0 */
312     /* DPC_IO_CFG_LOCKDN_EN              [9:1]   RW value= 0x0 */
313     /* DPC_IO_CFG_WPD                    [10:1]  RW value= 0x0 */
314     /* DPC_IO_CFG_WPU                    [11:1]  RW value= 0x1 */
315     /* DPC_IO_CFG_ATP_EN                 [12:1]  RW value= 0x0 */
316     /* DPC_IO_CFG_LP_PERSIST_EN          [13:1]  RW value= 0x0 */
317     /* DPC_IO_CFG_LP_BYPASS_EN           [14:1]  RW value= 0x0 */
318     /* RESERVED                          [15:17] R */
319 #endif
320 #if !defined (LIBERO_SETTING_MSSIO_CONFIGURATION_OPTIONS)
321 /*Indicates if eMMC is configured for use (bit 0 == 1), If SD is configued for
322 use (bit 1 == 1). Bit 2 indicates which one should be used by default on MSS
323 embedded software startup ( bit2 == 0, implies default is eMMC, bit2 == 1,
324 implies default is SD). The eMMC configuration is always defined in xml tag
325 (io_mux, the SD configuration is always defined in xml tag (io_mux_alt). All
326 other elements in the (o_mux) and (io_mux_alt) not releating to eMMC/SD
327 differences should be the same values. */
328 #define LIBERO_SETTING_MSSIO_CONFIGURATION_OPTIONS    0x00000000UL
329     /* EMMC_CONFIGURED                   [0:1]   RW value= 0x0 */
330     /* SD_CONFIGURED                     [1:1]   RW value= 0x0 */
331     /* DEFAULT_ON_START                  [2:1]   RW value= 0x0 */
332 #endif
333 
334 #ifdef __cplusplus
335 }
336 #endif
337 
338 
339 #endif /* #ifdef HW_MSSIO_MUX_H_ */
340 
341