1 /******************************************************************************
3 © 1995-2003, 2004, 2005-2011 Freescale Semiconductor, Inc.
6 This is proprietary source code of Freescale Semiconductor Inc.,
7 and its use is subject to the NetComm Device Drivers EULA.
8 The copyright notice above does not evidence any actual or intended
9 publication of such source code.
11 ALTERNATIVELY, redistribution and use in source and binary forms, with
12 or without modification, are permitted provided that the following
14 * Redistributions of source code must retain the above copyright
15 notice, this list of conditions and the following disclaimer.
16 * Redistributions in binary form must reproduce the above copyright
17 notice, this list of conditions and the following disclaimer in the
18 documentation and/or other materials provided with the distribution.
19 * Neither the name of Freescale Semiconductor nor the
20 names of its contributors may be used to endorse or promote products
21 derived from this software without specific prior written permission.
23 THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
24 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
25 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26 DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
27 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
28 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
30 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
32 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 **************************************************************************/
37 @File part_integration_ext.h
39 @Description P2041 external definitions and structures.
40 *//***************************************************************************/
41 #ifndef __PART_INTEGRATION_EXT_H
42 #define __PART_INTEGRATION_EXT_H
45 #include "ddr_std_ext.h"
47 #include "dpaa_integration_ext.h"
50 /**************************************************************************//**
51 @Group P2041_chip_id P2041 Application Programming Interface
53 @Description P2041 Chip functions,definitions and enums.
56 *//***************************************************************************/
60 #define INTG_MAX_NUM_OF_CORES 4
63 /**************************************************************************//**
64 @Description Module types.
65 *//***************************************************************************/
66 typedef enum e_ModuleId
68 e_MODULE_ID_DUART_1 = 0,
75 e_MODULE_ID_QM, /**< Queue manager module */
76 e_MODULE_ID_BM, /**< Buffer manager module */
77 e_MODULE_ID_QM_CE_PORTAL_0,
78 e_MODULE_ID_QM_CI_PORTAL_0,
79 e_MODULE_ID_QM_CE_PORTAL_1,
80 e_MODULE_ID_QM_CI_PORTAL_1,
81 e_MODULE_ID_QM_CE_PORTAL_2,
82 e_MODULE_ID_QM_CI_PORTAL_2,
83 e_MODULE_ID_QM_CE_PORTAL_3,
84 e_MODULE_ID_QM_CI_PORTAL_3,
85 e_MODULE_ID_QM_CE_PORTAL_4,
86 e_MODULE_ID_QM_CI_PORTAL_4,
87 e_MODULE_ID_QM_CE_PORTAL_5,
88 e_MODULE_ID_QM_CI_PORTAL_5,
89 e_MODULE_ID_QM_CE_PORTAL_6,
90 e_MODULE_ID_QM_CI_PORTAL_6,
91 e_MODULE_ID_QM_CE_PORTAL_7,
92 e_MODULE_ID_QM_CI_PORTAL_7,
93 e_MODULE_ID_QM_CE_PORTAL_8,
94 e_MODULE_ID_QM_CI_PORTAL_8,
95 e_MODULE_ID_QM_CE_PORTAL_9,
96 e_MODULE_ID_QM_CI_PORTAL_9,
97 e_MODULE_ID_BM_CE_PORTAL_0,
98 e_MODULE_ID_BM_CI_PORTAL_0,
99 e_MODULE_ID_BM_CE_PORTAL_1,
100 e_MODULE_ID_BM_CI_PORTAL_1,
101 e_MODULE_ID_BM_CE_PORTAL_2,
102 e_MODULE_ID_BM_CI_PORTAL_2,
103 e_MODULE_ID_BM_CE_PORTAL_3,
104 e_MODULE_ID_BM_CI_PORTAL_3,
105 e_MODULE_ID_BM_CE_PORTAL_4,
106 e_MODULE_ID_BM_CI_PORTAL_4,
107 e_MODULE_ID_BM_CE_PORTAL_5,
108 e_MODULE_ID_BM_CI_PORTAL_5,
109 e_MODULE_ID_BM_CE_PORTAL_6,
110 e_MODULE_ID_BM_CI_PORTAL_6,
111 e_MODULE_ID_BM_CE_PORTAL_7,
112 e_MODULE_ID_BM_CI_PORTAL_7,
113 e_MODULE_ID_BM_CE_PORTAL_8,
114 e_MODULE_ID_BM_CI_PORTAL_8,
115 e_MODULE_ID_BM_CE_PORTAL_9,
116 e_MODULE_ID_BM_CI_PORTAL_9,
117 e_MODULE_ID_FM, /**< Frame manager module */
118 e_MODULE_ID_FM_RTC, /**< FM Real-Time-Clock */
119 e_MODULE_ID_FM_MURAM, /**< FM Multi-User-RAM */
120 e_MODULE_ID_FM_BMI, /**< FM BMI block */
121 e_MODULE_ID_FM_QMI, /**< FM QMI block */
122 e_MODULE_ID_FM_PARSER, /**< FM parser block */
123 e_MODULE_ID_FM_PORT_HO1, /**< FM Host-command/offline-parsing port block */
124 e_MODULE_ID_FM_PORT_HO2, /**< FM Host-command/offline-parsing port block */
125 e_MODULE_ID_FM_PORT_HO3, /**< FM Host-command/offline-parsing port block */
126 e_MODULE_ID_FM_PORT_HO4, /**< FM Host-command/offline-parsing port block */
127 e_MODULE_ID_FM_PORT_HO5, /**< FM Host-command/offline-parsing port block */
128 e_MODULE_ID_FM_PORT_HO6, /**< FM Host-command/offline-parsing port block */
129 e_MODULE_ID_FM_PORT_HO7, /**< FM Host-command/offline-parsing port block */
130 e_MODULE_ID_FM_PORT_1GRx1, /**< FM Rx 1G MAC port block */
131 e_MODULE_ID_FM_PORT_1GRx2, /**< FM Rx 1G MAC port block */
132 e_MODULE_ID_FM_PORT_1GRx3, /**< FM Rx 1G MAC port block */
133 e_MODULE_ID_FM_PORT_1GRx4, /**< FM Rx 1G MAC port block */
134 e_MODULE_ID_FM_PORT_1GRx5, /**< FM Rx 1G MAC port block */
135 e_MODULE_ID_FM_PORT_10GRx, /**< FM Rx 10G MAC port block */
136 e_MODULE_ID_FM_PORT_1GTx1, /**< FM Tx 1G MAC port block */
137 e_MODULE_ID_FM_PORT_1GTx2, /**< FM Tx 1G MAC port block */
138 e_MODULE_ID_FM_PORT_1GTx3, /**< FM Tx 1G MAC port block */
139 e_MODULE_ID_FM_PORT_1GTx4, /**< FM Tx 1G MAC port block */
140 e_MODULE_ID_FM_PORT_1GTx5, /**< FM Tx 1G MAC port block */
141 e_MODULE_ID_FM_PORT_10GTx, /**< FM Tx 10G MAC port block */
142 e_MODULE_ID_FM_PLCR, /**< FM Policer */
143 e_MODULE_ID_FM_KG, /**< FM Keygen */
144 e_MODULE_ID_FM_DMA, /**< FM DMA */
145 e_MODULE_ID_FM_FPM, /**< FM FPM */
146 e_MODULE_ID_FM_IRAM, /**< FM Instruction-RAM */
147 e_MODULE_ID_FM_1GMDIO1, /**< FM 1G MDIO MAC 1*/
148 e_MODULE_ID_FM_1GMDIO2, /**< FM 1G MDIO MAC 2*/
149 e_MODULE_ID_FM_1GMDIO3, /**< FM 1G MDIO MAC 3*/
150 e_MODULE_ID_FM_1GMDIO4, /**< FM 1G MDIO MAC 4*/
151 e_MODULE_ID_FM_1GMDIO5, /**< FM 1G MDIO MAC 5*/
152 e_MODULE_ID_FM_10GMDIO, /**< FM 10G MDIO */
153 e_MODULE_ID_FM_PRS_IRAM, /**< FM SW-parser Instruction-RAM */
154 e_MODULE_ID_FM_1GMAC1, /**< FM 1G MAC #1 */
155 e_MODULE_ID_FM_1GMAC2, /**< FM 1G MAC #2 */
156 e_MODULE_ID_FM_1GMAC3, /**< FM 1G MAC #3 */
157 e_MODULE_ID_FM_1GMAC4, /**< FM 1G MAC #4 */
158 e_MODULE_ID_FM_1GMAC5, /**< FM 1G MAC #5 */
159 e_MODULE_ID_FM_10GMAC, /**< FM 10G MAC */
161 e_MODULE_ID_SEC_GEN, /**< SEC 4.0 General registers */
162 e_MODULE_ID_SEC_QI, /**< SEC 4.0 QI registers */
163 e_MODULE_ID_SEC_JQ0, /**< SEC 4.0 JQ-0 registers */
164 e_MODULE_ID_SEC_JQ1, /**< SEC 4.0 JQ-1 registers */
165 e_MODULE_ID_SEC_JQ2, /**< SEC 4.0 JQ-2 registers */
166 e_MODULE_ID_SEC_JQ3, /**< SEC 4.0 JQ-3 registers */
167 e_MODULE_ID_SEC_RTIC, /**< SEC 4.0 RTIC registers */
168 e_MODULE_ID_SEC_DECO0_CCB0, /**< SEC 4.0 DECO-0/CCB-0 registers */
169 e_MODULE_ID_SEC_DECO1_CCB1, /**< SEC 4.0 DECO-1/CCB-1 registers */
170 e_MODULE_ID_SEC_DECO2_CCB2, /**< SEC 4.0 DECO-2/CCB-2 registers */
171 e_MODULE_ID_SEC_DECO3_CCB3, /**< SEC 4.0 DECO-3/CCB-3 registers */
172 e_MODULE_ID_SEC_DECO4_CCB4, /**< SEC 4.0 DECO-4/CCB-4 registers */
174 e_MODULE_ID_PIC, /**< PIC */
175 e_MODULE_ID_GPIO, /**< GPIO */
176 e_MODULE_ID_SERDES, /**< SERDES */
177 e_MODULE_ID_CPC, /**< CoreNet-Platform-Cache */
178 e_MODULE_ID_DUMMY_LAST
181 #define NUM_OF_MODULES e_MODULE_ID_DUMMY_LAST
183 /* Offsets relative to CCSR base */
184 #define P2041_OFFSET_LAW 0x00000c00
185 #define P2041_OFFSET_DDR 0x00008000
186 #define P2041_OFFSET_CPC 0x00010000
187 #define P2041_OFFSET_CCM 0x00018000
188 #define P2041_OFFSET_PAMU 0x00020000
189 #define P2041_OFFSET_PIC 0x00040000
190 #define P2041_OFFSET_GUTIL 0x000e0000
191 #define P2041_OFFSET_RCPM 0x000e2000
192 #define P2041_OFFSET_SERDES 0x000ea000
193 #define P2041_OFFSET_DMA1 0x00100100
194 #define P2041_OFFSET_DMA2 0x00101100
195 #define P2041_OFFSET_ESPI 0x00110000
196 #define P2041_OFFSET_ESDHC 0x00114000
197 #define P2041_OFFSET_I2C1 0x00118000
198 #define P2041_OFFSET_I2C2 0x00118100
199 #define P2041_OFFSET_I2C3 0x00119000
200 #define P2041_OFFSET_I2C4 0x00119100
201 #define P2041_OFFSET_DUART1 0x0011c500
202 #define P2041_OFFSET_DUART2 0x0011c600
203 #define P2041_OFFSET_DUART3 0x0011d500
204 #define P2041_OFFSET_DUART4 0x0011d600
205 #define P2041_OFFSET_LBC 0x00124000
206 #define P2041_OFFSET_GPIO 0x00130000
207 #define P2041_OFFSET_PCIE1 0x00200000
208 #define P2041_OFFSET_PCIE2 0x00201000
209 #define P2041_OFFSET_PCIE3 0x00202000
210 #define P2041_OFFSET_USB1 0x00210000
211 #define P2041_OFFSET_USB2 0x00211000
212 #define P2041_OFFSET_USB_PHY 0x00214000
213 #define P2041_OFFSET_SATA1 0x00220000
214 #define P2041_OFFSET_SATA2 0x00221000
215 #define P2041_OFFSET_SEC_GEN 0x00300000
216 #define P2041_OFFSET_SEC_JQ0 0x00301000
217 #define P2041_OFFSET_SEC_JQ1 0x00302000
218 #define P2041_OFFSET_SEC_JQ2 0x00303000
219 #define P2041_OFFSET_SEC_JQ3 0x00304000
220 #define P2041_OFFSET_SEC_RESERVED 0x00305000
221 #define P2041_OFFSET_SEC_RTIC 0x00306000
222 #define P2041_OFFSET_SEC_QI 0x00307000
223 #define P2041_OFFSET_SEC_DECO0_CCB0 0x00308000
224 #define P2041_OFFSET_SEC_DECO1_CCB1 0x00309000
225 #define P2041_OFFSET_PME 0x00316000
226 #define P2041_OFFSET_QM 0x00318000
227 #define P2041_OFFSET_BM 0x0031a000
228 #define P2041_OFFSET_FM 0x00400000
230 #define P2041_OFFSET_FM_MURAM P2041_OFFSET_FM
231 #define P2041_OFFSET_FM_BMI (P2041_OFFSET_FM + 0x00080000)
232 #define P2041_OFFSET_FM_QMI (P2041_OFFSET_FM + 0x00080400)
233 #define P2041_OFFSET_FM_PARSER (P2041_OFFSET_FM + 0x00080800)
234 #define P2041_OFFSET_FM_PORT_HO1 (P2041_OFFSET_FM + 0x00081000) /* host command/offline parser */
235 #define P2041_OFFSET_FM_PORT_HO2 (P2041_OFFSET_FM + 0x00082000)
236 #define P2041_OFFSET_FM_PORT_HO3 (P2041_OFFSET_FM + 0x00083000)
237 #define P2041_OFFSET_FM_PORT_HO4 (P2041_OFFSET_FM + 0x00084000)
238 #define P2041_OFFSET_FM_PORT_HO5 (P2041_OFFSET_FM + 0x00085000)
239 #define P2041_OFFSET_FM_PORT_HO6 (P2041_OFFSET_FM + 0x00086000)
240 #define P2041_OFFSET_FM_PORT_HO7 (P2041_OFFSET_FM + 0x00087000)
241 #define P2041_OFFSET_FM_PORT_1GRX1 (P2041_OFFSET_FM + 0x00088000)
242 #define P2041_OFFSET_FM_PORT_1GRX2 (P2041_OFFSET_FM + 0x00089000)
243 #define P2041_OFFSET_FM_PORT_1GRX3 (P2041_OFFSET_FM + 0x0008a000)
244 #define P2041_OFFSET_FM_PORT_1GRX4 (P2041_OFFSET_FM + 0x0008b000)
245 #define P2041_OFFSET_FM_PORT_1GRX5 (P2041_OFFSET_FM + 0x0008c000)
246 #define P2041_OFFSET_FM_PORT_10GRX (P2041_OFFSET_FM + 0x00090000)
247 #define P2041_OFFSET_FM_PORT_1GTX1 (P2041_OFFSET_FM + 0x000a8000)
248 #define P2041_OFFSET_FM_PORT_1GTX2 (P2041_OFFSET_FM + 0x000a9000)
249 #define P2041_OFFSET_FM_PORT_1GTX3 (P2041_OFFSET_FM + 0x000aa000)
250 #define P2041_OFFSET_FM_PORT_1GTX4 (P2041_OFFSET_FM + 0x000ab000)
251 #define P2041_OFFSET_FM_PORT_1GTX5 (P2041_OFFSET_FM + 0x000ac000)
252 #define P2041_OFFSET_FM_PORT_10GTX (P2041_OFFSET_FM + 0x000b0000)
253 #define P2041_OFFSET_FM_PLCR (P2041_OFFSET_FM + 0x000c0000)
254 #define P2041_OFFSET_FM_KG (P2041_OFFSET_FM + 0x000c1000)
255 #define P2041_OFFSET_FM_DMA (P2041_OFFSET_FM + 0x000c2000)
256 #define P2041_OFFSET_FM_FPM (P2041_OFFSET_FM + 0x000c3000)
257 #define P2041_OFFSET_FM_IRAM (P2041_OFFSET_FM + 0x000c4000)
258 #define P2041_OFFSET_FM_PARSER_IRAM (P2041_OFFSET_FM + 0x000c7000)
259 #define P2041_OFFSET_FM_1GMAC1 (P2041_OFFSET_FM + 0x000e0000)
260 #define P2041_OFFSET_FM_1GMDIO (P2041_OFFSET_FM + 0x000e1000 + 0x120)
261 #define P2041_OFFSET_FM_1GMAC2 (P2041_OFFSET_FM + 0x000e2000)
262 #define P2041_OFFSET_FM_1GMAC3 (P2041_OFFSET_FM + 0x000e4000)
263 #define P2041_OFFSET_FM_1GMAC4 (P2041_OFFSET_FM + 0x000e6000)
264 #define P2041_OFFSET_FM_1GMAC5 (P2041_OFFSET_FM + 0x000e8000)
265 #define P2041_OFFSET_FM_10GMAC (P2041_OFFSET_FM + 0x000f0000)
266 #define P2041_OFFSET_FM_10GMDIO (P2041_OFFSET_FM + 0x000f1000 + 0x030)
267 #define P2041_OFFSET_FM_RTC (P2041_OFFSET_FM + 0x000fe000)
269 /* Offsets relative to QM or BM portals base */
270 #define P2041_OFFSET_PORTALS_CE_AREA 0x000000 /* cache enabled area */
271 #define P2041_OFFSET_PORTALS_CI_AREA 0x100000 /* cache inhibited area */
273 #define P2041_CE_PORTAL_SIZE 0x4000
274 #define P2041_CI_PORTAL_SIZE 0x1000
276 #define P2041_OFFSET_PORTALS_CE(portal) \
277 (P2041_OFFSET_PORTALS_CE_AREA + P2041_CE_PORTAL_SIZE * (portal))
278 #define P2041_OFFSET_PORTALS_CI(portal) \
279 (P2041_OFFSET_PORTALS_CI_AREA + P2041_CI_PORTAL_SIZE * (portal))
282 /**************************************************************************//**
283 @Description Transaction source ID (for memory conrollers error reporting).
284 *//***************************************************************************/
285 typedef enum e_TransSrc
287 e_TRANS_SRC_PCIE_1 = 0x0, /**< PCI Express 1 */
288 e_TRANS_SRC_PCIE_2 = 0x1, /**< PCI Express 2 */
289 e_TRANS_SRC_PCIE_3 = 0x2, /**< PCI Express 3 */
290 e_TRANS_SRC_SRIO_1 = 0x8, /**< SRIO 1 */
291 e_TRANS_SRC_SRIO_2 = 0x9, /**< SRIO 2 */
292 e_TRANS_SRC_BMAN = 0x18, /**< BMan */
293 e_TRANS_SRC_PAMU = 0x1C, /**< PAMU */
294 e_TRANS_SRC_PME = 0x20, /**< PME */
295 e_TRANS_SRC_SEC = 0x21, /**< Security engine */
296 e_TRANS_SRC_QMAN = 0x3C, /**< QMan */
297 e_TRANS_SRC_USB_1 = 0x40, /**< USB 1 */
298 e_TRANS_SRC_USB_2 = 0x41, /**< USB 2 */
299 e_TRANS_SRC_ESDHC = 0x44, /**< eSDHC */
300 e_TRANS_SRC_PBL = 0x48, /**< Pre-boot loader */
301 e_TRANS_SRC_NPC = 0x4B, /**< Nexus port controller */
302 e_TRANS_SRC_RMAN = 0x5D, /**< RIO message manager */
303 e_TRANS_SRC_SATA_1 = 0x60, /**< SATA 1 */
304 e_TRANS_SRC_SATA_2 = 0x61, /**< SATA 2 */
305 e_TRANS_SRC_DMA_1 = 0x70, /**< DMA 1 */
306 e_TRANS_SRC_DMA_2 = 0x71, /**< DMA 2 */
307 e_TRANS_SRC_CORE_0_INST = 0x80, /**< Processor 0 (instruction) */
308 e_TRANS_SRC_CORE_0_DATA = 0x81, /**< Processor 0 (data) */
309 e_TRANS_SRC_CORE_1_INST = 0x82, /**< Processor 1 (instruction) */
310 e_TRANS_SRC_CORE_1_DATA = 0x83, /**< Processor 1 (data) */
311 e_TRANS_SRC_CORE_2_INST = 0x84, /**< Processor 2 (instruction) */
312 e_TRANS_SRC_CORE_2_DATA = 0x85, /**< Processor 2 (data) */
313 e_TRANS_SRC_CORE_3_INST = 0x86, /**< Processor 3 (instruction) */
314 e_TRANS_SRC_CORE_3_DATA = 0x87, /**< Processor 3 (data) */
315 e_TRANS_SRC_FM_10G = 0xC0, /**< FM XAUI */
316 e_TRANS_SRC_FM_HO_1 = 0xC1, /**< FM offline, host 1 */
317 e_TRANS_SRC_FM_HO_2 = 0xC2, /**< FM offline, host 2 */
318 e_TRANS_SRC_FM_HO_3 = 0xC3, /**< FM offline, host 3 */
319 e_TRANS_SRC_FM_HO_4 = 0xC4, /**< FM offline, host 4 */
320 e_TRANS_SRC_FM_HO_5 = 0xC5, /**< FM offline, host 5 */
321 e_TRANS_SRC_FM_HO_6 = 0xC6, /**< FM offline, host 6 */
322 e_TRANS_SRC_FM_HO_7 = 0xC7, /**< FM offline, host 7 */
323 e_TRANS_SRC_FM_GETH_1 = 0xC8, /**< FM GETH 1 */
324 e_TRANS_SRC_FM_GETH_2 = 0xC9, /**< FM GETH 2 */
325 e_TRANS_SRC_FM_GETH_3 = 0xCA, /**< FM GETH 3 */
326 e_TRANS_SRC_FM_GETH_4 = 0xCB, /**< FM GETH 4 */
327 e_TRANS_SRC_FM_GETH_5 = 0xCC /**< FM GETH 5 */
330 /**************************************************************************//**
331 @Description Local Access Window Target interface ID
332 *//***************************************************************************/
333 typedef enum e_P2041LawTargetId
335 e_P2041_LAW_TARGET_PCIE_1 = 0x0, /**< PCI Express 1 */
336 e_P2041_LAW_TARGET_PCIE_2 = 0x1, /**< PCI Express 2 */
337 e_P2041_LAW_TARGET_PCIE_3 = 0x2, /**< PCI Express 3 */
338 e_P2041_LAW_TARGET_SRIO_1 = 0x8, /**< SRIO 1 */
339 e_P2041_LAW_TARGET_SRIO_2 = 0x9, /**< SRIO 2 */
340 e_P2041_LAW_TARGET_DDR_CPC = 0x10, /**< DDR controller or CPC SRAM */
341 e_P2041_LAW_TARGET_BMAN = 0x18, /**< BMAN target interface ID */
342 e_P2041_LAW_TARGET_DCSR = 0x1D, /**< DCSR */
343 e_P2041_LAW_TARGET_LBC = 0x1F, /**< Local Bus target interface ID */
344 e_P2041_LAW_TARGET_QMAN = 0x3C, /**< QMAN target interface ID */
345 e_P2041_LAW_TARGET_NONE = 0xFF /**< None */
346 } e_P2041LawTargetId;
348 /***************************************************************
349 P2041 general routines
350 ****************************************************************/
351 /**************************************************************************//**
352 @Group P2041_init_grp P2041 Initialization Unit
354 @Description P2041 initialization unit API functions, definitions and enums
357 *//***************************************************************************/
359 /**************************************************************************//**
360 @Description Part ID and revision number
361 *//***************************************************************************/
362 typedef enum e_P2041DeviceName
364 e_P2041_REV_INVALID = 0x00000000, /**< Invalid revision */
365 e_P2040_REV_1_0 = (int)0x82180010, /**< P2040 with security, revision 1.0 */
366 e_P2040_REV_1_0_NO_SEC = (int)0x82100010, /**< P2040 without security, revision 1.0 */
367 e_P2041_REV_1_0 = (int)0x82180110, /**< P2041 with security, revision 1.0 */
368 e_P2041_REV_1_0_NO_SEC = (int)0x82100110 /**< P2041 without security, revision 1.0 */
371 /**************************************************************************//**
372 @Description Device Disable Register
373 *//***************************************************************************/
374 typedef enum e_P2041DeviceDisable
376 e_P2041_DEV_DISABLE_PCIE_1 = 0, /**< PCI Express controller 1 disable */
377 e_P2041_DEV_DISABLE_PCIE_2, /**< PCI Express controller 2 disable */
378 e_P2041_DEV_DISABLE_PCIE_3, /**< PCI Express controller 3 disable */
379 e_P2041_DEV_DISABLE_RMAN = 4, /**< RapidIO message manager disable */
380 e_P2041_DEV_DISABLE_SRIO_1, /**< Serial RapidIO controller 1 disable */
381 e_P2041_DEV_DISABLE_SRIO_2, /**< Serial RapidIO controller 2 disable */
382 e_P2041_DEV_DISABLE_DMA_1 = 9, /**< DMA controller 1 disable */
383 e_P2041_DEV_DISABLE_DMA_2, /**< DMA controller 2 disable */
384 e_P2041_DEV_DISABLE_DDR, /**< DDR controller disable */
385 e_P2041_DEV_DISABLE_SATA_1 = 17, /**< SATA controller 1 disable */
386 e_P2041_DEV_DISABLE_SATA_2, /**< SATA controller 2 disable */
387 e_P2041_DEV_DISABLE_LBC, /**< eLBC controller disable */
388 e_P2041_DEV_DISABLE_USB_1, /**< USB controller 1 disable */
389 e_P2041_DEV_DISABLE_USB_2, /**< USB controller 2 disable */
390 e_P2041_DEV_DISABLE_ESDHC = 23, /**< eSDHC controller disable */
391 e_P2041_DEV_DISABLE_GPIO, /**< GPIO controller disable */
392 e_P2041_DEV_DISABLE_ESPI, /**< eSPI controller disable */
393 e_P2041_DEV_DISABLE_I2C_1, /**< I2C module 1 (controllers 1 and 2) disable */
394 e_P2041_DEV_DISABLE_I2C_2, /**< I2C module 2 (controllers 3 and 4) disable */
395 e_P2041_DEV_DISABLE_DUART_1 = 30, /**< DUART controller 1 disable */
396 e_P2041_DEV_DISABLE_DUART_2, /**< DUART controller 2 disable */
397 e_P2041_DEV_DISABLE_DISR1_DUMMY_LAST = 32,
398 /**< Dummy entry signing end of DEVDISR1 register controllers */
399 e_P2041_DEV_DISABLE_PME = e_P2041_DEV_DISABLE_DISR1_DUMMY_LAST,
400 /**< Pattern match engine disable */
401 e_P2041_DEV_DISABLE_SEC, /**< Security disable */
402 e_P2041_DEV_DISABLE_QM_BM = e_P2041_DEV_DISABLE_DISR1_DUMMY_LAST + 4,
403 /**< Queue manager/buffer manager disable */
404 e_P2041_DEV_DISABLE_FM = e_P2041_DEV_DISABLE_DISR1_DUMMY_LAST + 6,
405 /**< Frame manager disable */
406 e_P2041_DEV_DISABLE_10G, /**< 10G Ethernet controller disable */
407 e_P2041_DEV_DISABLE_DTSEC_1,
408 /**< dTSEC controller 1 disable */
409 e_P2041_DEV_DISABLE_DTSEC_2, /**< dTSEC controller 2 disable */
410 e_P2041_DEV_DISABLE_DTSEC_3, /**< dTSEC controller 3 disable */
411 e_P2041_DEV_DISABLE_DTSEC_4, /**< dTSEC controller 4 disable */
412 e_P2041_DEV_DISABLE_DTSEC_5 /**< dTSEC controller 5 disable */
413 } e_P2041DeviceDisable;
416 /**************************************************************************//*
417 @Description structure representing P2041 devices configuration
418 *//***************************************************************************/
419 typedef struct t_P2041Devices
427 uint16_t serdesLane; /**< Most significant bits represent lanes used by this bank,
428 one bit for lane, lane A is the first and so on, e.g.,
429 set 0xF000 for ABCD lanes */
430 e_EnetInterface ethIf;
434 } dtsecs[FM_MAX_NUM_OF_1G_MACS];
444 /**************************************************************************//**
445 @Function P2041_GetRevInfo
447 @Description Obtain revision information.
449 @Param[in] gutilBase - Gutil memory map virtual base address.
451 @Return Part ID and revision.
452 *//***************************************************************************/
453 e_P2041DeviceName P2041_GetRevInfo(uintptr_t gutilBase);
455 /**************************************************************************//**
456 @Function P2041_GetE500Factor
458 @Description Obtain core's multiplication factors.
460 @Param[in] gutilBase - Gutil memory map virtual base address.
461 @Param[in] coreIndex - Core index.
462 @Param[out] p_E500MulFactor - E500 to CCB multification factor.
463 @Param[out] p_E500DivFactor - E500 to CCB division factor.
465 *//***************************************************************************/
466 void P2041_GetE500Factor(uintptr_t gutilBase,
468 uint32_t *p_E500MulFactor,
469 uint32_t *p_E500DivFactor);
471 /**************************************************************************//**
472 @Function P2041_GetCcbFactor
474 @Description Obtain system multiplication factor.
476 @Param[in] gutilBase - Gutil memory map virtual base address.
478 @Return System multiplication factor.
479 *//***************************************************************************/
480 uint32_t P2041_GetCcbFactor(uintptr_t gutilBase);
482 /**************************************************************************//**
483 @Function P2041_GetDdrFactor
485 @Description Obtain DDR clock multiplication factor.
487 @Param[in] gutilBase - Gutil memory map virtual base address.
489 @Return DDR clock multiplication factor.
490 *//***************************************************************************/
491 uint32_t P2041_GetDdrFactor(uintptr_t gutilBase);
493 /**************************************************************************//**
494 @Function P2041_GetDdrType
496 @Description Obtain DDR memory type.
498 @Param[in] gutilBase - Gutil memory map virtual base address.
501 *//***************************************************************************/
502 e_DdrType P2041_GetDdrType(uintptr_t gutilBase);
504 /**************************************************************************//**
505 @Function P2041_GetFmFactor
507 @Description returns FM multiplication factors. (This value is returned using
508 two parameters to avoid using float parameter).
510 @Param[in] gutilBase - Gutil memory map virtual base address.
511 @Param[out] p_FmMulFactor - FM to CCB multification factor.
512 @Param[out] p_FmDivFactor - FM to CCB division factor.
514 *//***************************************************************************/
515 void P2041_GetFmFactor(uintptr_t gutilBase,
516 uint32_t *p_FmMulFactor,
517 uint32_t *p_FmDivFactor);
520 void P2041_CoreTimeBaseEnable(uintptr_t rcpmBase);
521 void P2041_CoreTimeBaseDisable(uintptr_t rcpmBase);
523 typedef enum e_SerdesProtocol
525 SRDS_PROTOCOL_NONE = 0,
531 SRDS_PROTOCOL_SGMII_FM,
532 SRDS_PROTOCOL_XAUI_FM,
538 t_Error P2041_DeviceDisable(uintptr_t gutilBase, e_P2041DeviceDisable device, bool disable);
539 void P2041_GetDevicesConfiguration(uintptr_t gutilBase, t_P2041Devices *p_Devices);
540 t_Error P2041_PamuDisableBypass(uintptr_t gutilBase, uint8_t pamuId, bool disable);
541 void P2041_SetDmaLiodn(uintptr_t gutilBase, uint8_t dmaId, uint16_t liodn);
542 uint32_t P2041_SerdesRcwGetProtocol(uintptr_t gutilBase);
543 bool P2041_SerdesRcwIsDeviceConfigured(uintptr_t gutilBase, e_SerdesProtocol device);
544 bool P2041_SerdesRcwIsLaneEnabled(uintptr_t gutilBase, uint32_t lane);
546 /** @} */ /* end of P2041_init_grp group */
547 /** @} */ /* end of P2041_grp group */
550 /*****************************************************************************
551 INTEGRATION-SPECIFIC MODULE CODES
552 ******************************************************************************/
553 #define MODULE_UNKNOWN 0x00000000
554 #define MODULE_MEM 0x00010000
555 #define MODULE_MM 0x00020000
556 #define MODULE_CORE 0x00030000
557 #define MODULE_P2041 0x00040000
558 #define MODULE_P2041_PLATFORM 0x00050000
559 #define MODULE_PM 0x00060000
560 #define MODULE_MMU 0x00070000
561 #define MODULE_PIC 0x00080000
562 #define MODULE_CPC 0x00090000
563 #define MODULE_DUART 0x000a0000
564 #define MODULE_SERDES 0x000b0000
565 #define MODULE_PIO 0x000c0000
566 #define MODULE_QM 0x000d0000
567 #define MODULE_BM 0x000e0000
568 #define MODULE_SEC 0x000f0000
569 #define MODULE_LAW 0x00100000
570 #define MODULE_LBC 0x00110000
571 #define MODULE_PAMU 0x00120000
572 #define MODULE_FM 0x00130000
573 #define MODULE_FM_MURAM 0x00140000
574 #define MODULE_FM_PCD 0x00150000
575 #define MODULE_FM_RTC 0x00160000
576 #define MODULE_FM_MAC 0x00170000
577 #define MODULE_FM_PORT 0x00180000
578 #define MODULE_DPA_PORT 0x00190000
579 #define MODULE_MII 0x001a0000
580 #define MODULE_I2C 0x001b0000
581 #define MODULE_DMA 0x001c0000
582 #define MODULE_DDR 0x001d0000
583 #define MODULE_ESPI 0x001e0000
585 /*****************************************************************************
586 PAMU INTEGRATION-SPECIFIC DEFINITIONS
587 ******************************************************************************/
588 #define PAMU_NUM_OF_PARTITIONS 4
591 /*****************************************************************************
592 LAW INTEGRATION-SPECIFIC DEFINITIONS
593 ******************************************************************************/
594 #define LAW_NUM_OF_WINDOWS 32
595 #define LAW_MIN_WINDOW_SIZE 0x0000000000001000LL /**< 4KB */
596 #define LAW_MAX_WINDOW_SIZE 0x0000002000000000LL /**< 64GB */
599 /*****************************************************************************
600 LBC INTEGRATION-SPECIFIC DEFINITIONS
601 ******************************************************************************/
602 /**************************************************************************//**
603 @Group lbc_exception_grp LBC Exception Unit
605 @Description LBC Exception unit API functions, definitions and enums
608 *//***************************************************************************/
610 /**************************************************************************//**
613 @Collection LBC Errors Bit Mask
615 These errors are reported through the exceptions callback..
616 The values can be or'ed in any combination in the errors mask
617 parameter of the errors report structure.
619 These errors can also be passed as a bit-mask to
620 LBC_EnableErrorChecking() or LBC_DisableErrorChecking(),
621 for enabling or disabling error checking.
623 *//***************************************************************************/
624 #define LBC_ERR_BUS_MONITOR 0x80000000 /**< Bus monitor error */
625 #define LBC_ERR_PARITY_ECC 0x20000000 /**< Parity error for GPCM/UPM */
626 #define LBC_ERR_WRITE_PROTECT 0x04000000 /**< Write protection error */
627 #define LBC_ERR_CHIP_SELECT 0x00080000 /**< Unrecognized chip select */
629 #define LBC_ERR_ALL (LBC_ERR_BUS_MONITOR | LBC_ERR_PARITY_ECC | \
630 LBC_ERR_WRITE_PROTECT | LBC_ERR_CHIP_SELECT)
631 /**< All possible errors */
633 /** @} */ /* end of lbc_exception_grp group */
635 #define LBC_INCORRECT_ERROR_REPORT_ERRATA
637 #define LBC_NUM_OF_BANKS 4
638 #define LBC_MAX_CS_SIZE 0x0000000100000000LL /* Up to 4G memory block size */
639 #define LBC_PARITY_SUPPORT
640 #define LBC_ADDRESS_HOLD_TIME_CTRL
641 #define LBC_HIGH_CLK_DIVIDERS
642 #define LBC_FCM_AVAILABLE
644 /*****************************************************************************
645 GPIO INTEGRATION-SPECIFIC DEFINITIONS
646 ******************************************************************************/
647 #define GPIO_NUM_OF_PORTS 1 /**< Number of ports in GPIO module;
648 Each port contains up to 32 I/O pins. */
650 #define GPIO_VALID_PIN_MASKS \
651 { /* Port A */ 0xFFFFFFFF }
653 #define GPIO_VALID_INTR_MASKS \
654 { /* Port A */ 0xFFFFFFFF }
657 /*****************************************************************************
658 SERDES INTEGRATION-SPECIFIC DEFINITIONS
659 ******************************************************************************/
660 #define SRDS_MAX_LANES 10 /* Lanes C - H on bank 1, lanes A - D on bank 2 */
661 #define SRDS_MAX_BANK 2
663 /* Serdes lanes general information provided in the following form:
664 1) Lane index in Serdes Control Registers Map
665 2) Lane enable/disable bit number in RCW
666 3) Lane bank index */
681 #define SRDS_PROTOCOL_OPTIONS \
682 /* Protocol Lane assignment */ \
684 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
685 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
686 /* 0x02 */ {SRDS_PROTOCOL_PCIE1, SRDS_PROTOCOL_PCIE1, \
687 SRDS_PROTOCOL_SRIO1, SRDS_PROTOCOL_SRIO1, SRDS_PROTOCOL_SRIO1, SRDS_PROTOCOL_SRIO1, \
688 SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM}, \
689 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
690 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
691 /* 0x05 */ {SRDS_PROTOCOL_PCIE1, SRDS_PROTOCOL_PCIE3, \
692 SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, \
693 SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM}, \
694 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
695 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
696 /* 0x08 */ {SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, \
697 SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, \
698 0, 0, SRDS_PROTOCOL_SATA1, SRDS_PROTOCOL_SATA2}, \
699 /* 0x09 */ {SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, \
700 SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, \
701 SRDS_PROTOCOL_XAUI_FM, SRDS_PROTOCOL_XAUI_FM, SRDS_PROTOCOL_XAUI_FM, SRDS_PROTOCOL_XAUI_FM}, \
702 /* 0x0A */ {SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, \
703 SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, \
704 SRDS_PROTOCOL_PCIE3, SRDS_PROTOCOL_PCIE3, SRDS_PROTOCOL_PCIE3, SRDS_PROTOCOL_PCIE3}, \
705 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
706 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
707 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
708 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
709 /* 0x0F */ {SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, \
710 SRDS_PROTOCOL_SRIO2, SRDS_PROTOCOL_SRIO2, SRDS_PROTOCOL_SRIO1, SRDS_PROTOCOL_SRIO1, \
711 SRDS_PROTOCOL_PCIE3, SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM}, \
712 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
713 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
714 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
715 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
716 /* 0x14 */ {SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, \
717 SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_SRIO1, SRDS_PROTOCOL_SRIO1, \
718 SRDS_PROTOCOL_AURORA, SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM}, \
719 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
720 /* 0x16 */ {SRDS_PROTOCOL_PCIE1, SRDS_PROTOCOL_PCIE3, \
721 SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, \
722 0, 0, SRDS_PROTOCOL_SATA1, SRDS_PROTOCOL_SATA2}, \
723 /* 0x17 */ {SRDS_PROTOCOL_PCIE1, SRDS_PROTOCOL_PCIE3, \
724 SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, \
725 SRDS_PROTOCOL_XAUI_FM, SRDS_PROTOCOL_XAUI_FM, SRDS_PROTOCOL_XAUI_FM, SRDS_PROTOCOL_XAUI_FM}, \
726 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
727 /* 0x19 */ {SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, \
728 SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, \
729 0, 0, SRDS_PROTOCOL_SATA1, SRDS_PROTOCOL_SATA2}, \
730 /* 0x1A */ {SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, \
731 SRDS_PROTOCOL_SRIO2, SRDS_PROTOCOL_SRIO2, SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, \
732 0, 0, SRDS_PROTOCOL_SATA1, SRDS_PROTOCOL_SATA2}, \
733 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
734 /* 0x1C */ {SRDS_PROTOCOL_PCIE1, SRDS_PROTOCOL_SGMII_FM, \
735 SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_PCIE2, SRDS_PROTOCOL_SGMII_FM, SRDS_PROTOCOL_SGMII_FM, \
736 SRDS_PROTOCOL_AURORA, SRDS_PROTOCOL_SGMII_FM, 0, 0} \
740 /*****************************************************************************
741 DDR INTEGRATION-SPECIFIC DEFINITIONS
742 ******************************************************************************/
743 #define DDR_NUM_OF_VALID_CS 4
745 /*****************************************************************************
746 DMA INTEGRATION-SPECIFIC DEFINITIONS
747 ******************************************************************************/
748 #define DMA_NUM_OF_CONTROLLERS 2
750 /*****************************************************************************
751 CPC INTEGRATION-SPECIFIC DEFINITIONS
752 ******************************************************************************/
754 #define CPC_MAX_SIZE_SRAM_ERRATA_CPC4
755 #define CPC_HARDWARE_FLUSH_ERRATA_CPC10
758 #endif /* __PART_INTEGRATION_EXT_H */