xref: /rk3399_rockchip-uboot/arch/powerpc/include/asm/immap_83xx.h (revision 4e2e0df94d606531927e411123ae5ce3d2aed49c)
1a47a12beSStefan Roese /*
2d29d17d7SYork Sun  * Copyright 2004-2011 Freescale Semiconductor, Inc.
3a47a12beSStefan Roese  *
4a47a12beSStefan Roese  * MPC83xx Internal Memory Map
5a47a12beSStefan Roese  *
6a47a12beSStefan Roese  * Contributors:
7a47a12beSStefan Roese  *	Dave Liu <daveliu@freescale.com>
8a47a12beSStefan Roese  *	Tanya Jiang <tanya.jiang@freescale.com>
9a47a12beSStefan Roese  *	Mandy Lavi <mandy.lavi@freescale.com>
10a47a12beSStefan Roese  *	Eran Liberty <liberty@freescale.com>
11a47a12beSStefan Roese  *
121a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
13a47a12beSStefan Roese  */
14a47a12beSStefan Roese #ifndef __IMMAP_83xx__
15a47a12beSStefan Roese #define __IMMAP_83xx__
16a47a12beSStefan Roese 
17a47a12beSStefan Roese #include <asm/types.h>
18a47a12beSStefan Roese #include <asm/fsl_i2c.h>
19a47a12beSStefan Roese #include <asm/mpc8xxx_spi.h>
20a47a12beSStefan Roese #include <asm/fsl_lbc.h>
21a47a12beSStefan Roese #include <asm/fsl_dma.h>
22a47a12beSStefan Roese 
23a47a12beSStefan Roese /*
24a47a12beSStefan Roese  * Local Access Window
25a47a12beSStefan Roese  */
26a47a12beSStefan Roese typedef struct law83xx {
27a47a12beSStefan Roese 	u32 bar;		/* LBIU local access window base address register */
28a47a12beSStefan Roese 	u32 ar;			/* LBIU local access window attribute register */
29a47a12beSStefan Roese } law83xx_t;
30a47a12beSStefan Roese 
31a47a12beSStefan Roese /*
32a47a12beSStefan Roese  * System configuration registers
33a47a12beSStefan Roese  */
34a47a12beSStefan Roese typedef struct sysconf83xx {
35a47a12beSStefan Roese 	u32 immrbar;		/* Internal memory map base address register */
36a47a12beSStefan Roese 	u8 res0[0x04];
37a47a12beSStefan Roese 	u32 altcbar;		/* Alternate configuration base address register */
38a47a12beSStefan Roese 	u8 res1[0x14];
39a47a12beSStefan Roese 	law83xx_t lblaw[4];	/* LBIU local access window */
40a47a12beSStefan Roese 	u8 res2[0x20];
41a47a12beSStefan Roese 	law83xx_t pcilaw[2];	/* PCI local access window */
42a47a12beSStefan Roese 	u8 res3[0x10];
43a47a12beSStefan Roese 	law83xx_t pcielaw[2];	/* PCI Express local access window */
44a47a12beSStefan Roese 	u8 res4[0x10];
45a47a12beSStefan Roese 	law83xx_t ddrlaw[2];	/* DDR local access window */
46a47a12beSStefan Roese 	u8 res5[0x50];
47a47a12beSStefan Roese 	u32 sgprl;		/* System General Purpose Register Low */
48a47a12beSStefan Roese 	u32 sgprh;		/* System General Purpose Register High */
49a47a12beSStefan Roese 	u32 spridr;		/* System Part and Revision ID Register */
50a47a12beSStefan Roese 	u8 res6[0x04];
51a47a12beSStefan Roese 	u32 spcr;		/* System Priority Configuration Register */
52a47a12beSStefan Roese 	u32 sicrl;		/* System I/O Configuration Register Low */
53a47a12beSStefan Roese 	u32 sicrh;		/* System I/O Configuration Register High */
54a47a12beSStefan Roese 	u8 res7[0x04];
55a47a12beSStefan Roese 	u32 sidcr0;		/* System I/O Delay Configuration Register 0 */
56a47a12beSStefan Roese 	u32 sidcr1;		/* System I/O Delay Configuration Register 1 */
57a47a12beSStefan Roese 	u32 ddrcdr;		/* DDR Control Driver Register */
58a47a12beSStefan Roese 	u32 ddrdsr;		/* DDR Debug Status Register */
59a47a12beSStefan Roese 	u32 obir;		/* Output Buffer Impedance Register */
60a47a12beSStefan Roese 	u8 res8[0xC];
61a47a12beSStefan Roese 	u32 pecr1;		/* PCI Express control register 1 */
628afad91fSGerlando Falauto #if defined(CONFIG_MPC830x)
638afad91fSGerlando Falauto 	u32 sdhccr;		/* eSDHC Control Registers for MPC830x */
647c619ddcSIlya Yanok #else
65a47a12beSStefan Roese 	u32 pecr2;		/* PCI Express control register 2 */
667c619ddcSIlya Yanok #endif
67a88731a6SGerlando Falauto #if defined(CONFIG_MPC8309)
68a88731a6SGerlando Falauto 	u32 can_dbg_ctrl;
69a88731a6SGerlando Falauto 	u32 res9a;
70a88731a6SGerlando Falauto 	u32 gpr1;
71a88731a6SGerlando Falauto 	u8 res9b[0xAC];
72a88731a6SGerlando Falauto #else
73a47a12beSStefan Roese 	u8 res9[0xB8];
74a88731a6SGerlando Falauto #endif
75a47a12beSStefan Roese } sysconf83xx_t;
76a47a12beSStefan Roese 
77a47a12beSStefan Roese /*
78a47a12beSStefan Roese  * Watch Dog Timer (WDT) Registers
79a47a12beSStefan Roese  */
80a47a12beSStefan Roese typedef struct wdt83xx {
81a47a12beSStefan Roese 	u8 res0[4];
82a47a12beSStefan Roese 	u32 swcrr;		/* System watchdog control register */
83a47a12beSStefan Roese 	u32 swcnr;		/* System watchdog count register */
84a47a12beSStefan Roese 	u8 res1[2];
85a47a12beSStefan Roese 	u16 swsrr;		/* System watchdog service register */
86a47a12beSStefan Roese 	u8 res2[0xF0];
87a47a12beSStefan Roese } wdt83xx_t;
88a47a12beSStefan Roese 
89a47a12beSStefan Roese /*
90a47a12beSStefan Roese  * RTC/PIT Module Registers
91a47a12beSStefan Roese  */
92a47a12beSStefan Roese typedef struct rtclk83xx {
93a47a12beSStefan Roese 	u32 cnr;		/* control register */
94a47a12beSStefan Roese 	u32 ldr;		/* load register */
95a47a12beSStefan Roese 	u32 psr;		/* prescale register */
96a47a12beSStefan Roese 	u32 ctr;		/* counter value field register */
97a47a12beSStefan Roese 	u32 evr;		/* event register */
98a47a12beSStefan Roese 	u32 alr;		/* alarm register */
99a47a12beSStefan Roese 	u8 res0[0xE8];
100a47a12beSStefan Roese } rtclk83xx_t;
101a47a12beSStefan Roese 
102a47a12beSStefan Roese /*
103a47a12beSStefan Roese  * Global timer module
104a47a12beSStefan Roese  */
105a47a12beSStefan Roese typedef struct gtm83xx {
106a47a12beSStefan Roese 	u8 cfr1;		/* Timer1/2 Configuration */
107a47a12beSStefan Roese 	u8 res0[3];
108a47a12beSStefan Roese 	u8 cfr2;		/* Timer3/4 Configuration */
10963063cc7SKim Phillips 	u8 res1[11];
110a47a12beSStefan Roese 	u16 mdr1;		/* Timer1 Mode Register */
111a47a12beSStefan Roese 	u16 mdr2;		/* Timer2 Mode Register */
112a47a12beSStefan Roese 	u16 rfr1;		/* Timer1 Reference Register */
113a47a12beSStefan Roese 	u16 rfr2;		/* Timer2 Reference Register */
114a47a12beSStefan Roese 	u16 cpr1;		/* Timer1 Capture Register */
115a47a12beSStefan Roese 	u16 cpr2;		/* Timer2 Capture Register */
116a47a12beSStefan Roese 	u16 cnr1;		/* Timer1 Counter Register */
117a47a12beSStefan Roese 	u16 cnr2;		/* Timer2 Counter Register */
118a47a12beSStefan Roese 	u16 mdr3;		/* Timer3 Mode Register */
119a47a12beSStefan Roese 	u16 mdr4;		/* Timer4 Mode Register */
120a47a12beSStefan Roese 	u16 rfr3;		/* Timer3 Reference Register */
121a47a12beSStefan Roese 	u16 rfr4;		/* Timer4 Reference Register */
122a47a12beSStefan Roese 	u16 cpr3;		/* Timer3 Capture Register */
123a47a12beSStefan Roese 	u16 cpr4;		/* Timer4 Capture Register */
124a47a12beSStefan Roese 	u16 cnr3;		/* Timer3 Counter Register */
125a47a12beSStefan Roese 	u16 cnr4;		/* Timer4 Counter Register */
126a47a12beSStefan Roese 	u16 evr1;		/* Timer1 Event Register */
127a47a12beSStefan Roese 	u16 evr2;		/* Timer2 Event Register */
128a47a12beSStefan Roese 	u16 evr3;		/* Timer3 Event Register */
129a47a12beSStefan Roese 	u16 evr4;		/* Timer4 Event Register */
130a47a12beSStefan Roese 	u16 psr1;		/* Timer1 Prescaler Register */
131a47a12beSStefan Roese 	u16 psr2;		/* Timer2 Prescaler Register */
132a47a12beSStefan Roese 	u16 psr3;		/* Timer3 Prescaler Register */
133a47a12beSStefan Roese 	u16 psr4;		/* Timer4 Prescaler Register */
134a47a12beSStefan Roese 	u8 res[0xC0];
135a47a12beSStefan Roese } gtm83xx_t;
136a47a12beSStefan Roese 
137a47a12beSStefan Roese /*
138a47a12beSStefan Roese  * Integrated Programmable Interrupt Controller
139a47a12beSStefan Roese  */
140a47a12beSStefan Roese typedef struct ipic83xx {
141a47a12beSStefan Roese 	u32 sicfr;		/* System Global Interrupt Configuration Register */
142a47a12beSStefan Roese 	u32 sivcr;		/* System Global Interrupt Vector Register */
143a47a12beSStefan Roese 	u32 sipnr_h;		/* System Internal Interrupt Pending Register - High */
144a47a12beSStefan Roese 	u32 sipnr_l;		/* System Internal Interrupt Pending Register - Low */
145a47a12beSStefan Roese 	u32 siprr_a;		/* System Internal Interrupt Group A Priority Register */
1464713db66SJoe Hershberger 	u32 siprr_b;		/* System Internal Interrupt Group B Priority Register */
1474713db66SJoe Hershberger 	u32 siprr_c;		/* System Internal Interrupt Group C Priority Register */
148a47a12beSStefan Roese 	u32 siprr_d;		/* System Internal Interrupt Group D Priority Register */
149a47a12beSStefan Roese 	u32 simsr_h;		/* System Internal Interrupt Mask Register - High */
150a47a12beSStefan Roese 	u32 simsr_l;		/* System Internal Interrupt Mask Register - Low */
1514713db66SJoe Hershberger 	u32 sicnr;		/* System Internal Interrupt Control Register */
152a47a12beSStefan Roese 	u32 sepnr;		/* System External Interrupt Pending Register */
153a47a12beSStefan Roese 	u32 smprr_a;		/* System Mixed Interrupt Group A Priority Register */
154a47a12beSStefan Roese 	u32 smprr_b;		/* System Mixed Interrupt Group B Priority Register */
155a47a12beSStefan Roese 	u32 semsr;		/* System External Interrupt Mask Register */
156a47a12beSStefan Roese 	u32 secnr;		/* System External Interrupt Control Register */
157a47a12beSStefan Roese 	u32 sersr;		/* System Error Status Register */
158a47a12beSStefan Roese 	u32 sermr;		/* System Error Mask Register */
159a47a12beSStefan Roese 	u32 sercr;		/* System Error Control Register */
1604713db66SJoe Hershberger 	u32 sepcr;		/* System External Interrupt Polarity Control Register */
161a47a12beSStefan Roese 	u32 sifcr_h;		/* System Internal Interrupt Force Register - High */
162a47a12beSStefan Roese 	u32 sifcr_l;		/* System Internal Interrupt Force Register - Low */
163a47a12beSStefan Roese 	u32 sefcr;		/* System External Interrupt Force Register */
164a47a12beSStefan Roese 	u32 serfr;		/* System Error Force Register */
165a47a12beSStefan Roese 	u32 scvcr;		/* System Critical Interrupt Vector Register */
166a47a12beSStefan Roese 	u32 smvcr;		/* System Management Interrupt Vector Register */
1674713db66SJoe Hershberger 	u8 res[0x98];
168a47a12beSStefan Roese } ipic83xx_t;
169a47a12beSStefan Roese 
170a47a12beSStefan Roese /*
171a47a12beSStefan Roese  * System Arbiter Registers
172a47a12beSStefan Roese  */
173a47a12beSStefan Roese typedef struct arbiter83xx {
174a47a12beSStefan Roese 	u32 acr;		/* Arbiter Configuration Register */
175a47a12beSStefan Roese 	u32 atr;		/* Arbiter Timers Register */
176a47a12beSStefan Roese 	u8 res[4];
177a47a12beSStefan Roese 	u32 aer;		/* Arbiter Event Register */
178a47a12beSStefan Roese 	u32 aidr;		/* Arbiter Interrupt Definition Register */
179a47a12beSStefan Roese 	u32 amr;		/* Arbiter Mask Register */
180a47a12beSStefan Roese 	u32 aeatr;		/* Arbiter Event Attributes Register */
181a47a12beSStefan Roese 	u32 aeadr;		/* Arbiter Event Address Register */
182a47a12beSStefan Roese 	u32 aerr;		/* Arbiter Event Response Register */
183a47a12beSStefan Roese 	u8 res1[0xDC];
184a47a12beSStefan Roese } arbiter83xx_t;
185a47a12beSStefan Roese 
186a47a12beSStefan Roese /*
187a47a12beSStefan Roese  * Reset Module
188a47a12beSStefan Roese  */
189a47a12beSStefan Roese typedef struct reset83xx {
190a47a12beSStefan Roese 	u32 rcwl;		/* Reset Configuration Word Low Register */
191a47a12beSStefan Roese 	u32 rcwh;		/* Reset Configuration Word High Register */
192a47a12beSStefan Roese 	u8 res0[8];
193a47a12beSStefan Roese 	u32 rsr;		/* Reset Status Register */
194a47a12beSStefan Roese 	u32 rmr;		/* Reset Mode Register */
195a47a12beSStefan Roese 	u32 rpr;		/* Reset protection Register */
196a47a12beSStefan Roese 	u32 rcr;		/* Reset Control Register */
197a47a12beSStefan Roese 	u32 rcer;		/* Reset Control Enable Register */
198a47a12beSStefan Roese 	u8 res1[0xDC];
199a47a12beSStefan Roese } reset83xx_t;
200a47a12beSStefan Roese 
201a47a12beSStefan Roese /*
202a47a12beSStefan Roese  * Clock Module
203a47a12beSStefan Roese  */
204a47a12beSStefan Roese typedef struct clk83xx {
205a47a12beSStefan Roese 	u32 spmr;		/* system PLL mode Register */
206a47a12beSStefan Roese 	u32 occr;		/* output clock control Register */
207a47a12beSStefan Roese 	u32 sccr;		/* system clock control Register */
208a47a12beSStefan Roese 	u8 res0[0xF4];
209a47a12beSStefan Roese } clk83xx_t;
210a47a12beSStefan Roese 
211a47a12beSStefan Roese /*
212a47a12beSStefan Roese  * Power Management Control Module
213a47a12beSStefan Roese  */
214a47a12beSStefan Roese typedef struct pmc83xx {
215a47a12beSStefan Roese 	u32 pmccr;		/* PMC Configuration Register */
216a47a12beSStefan Roese 	u32 pmcer;		/* PMC Event Register */
217a47a12beSStefan Roese 	u32 pmcmr;		/* PMC Mask Register */
218a47a12beSStefan Roese 	u32 pmccr1;		/* PMC Configuration Register 1 */
219a47a12beSStefan Roese 	u32 pmccr2;		/* PMC Configuration Register 2 */
220a47a12beSStefan Roese 	u8 res0[0xEC];
221a47a12beSStefan Roese } pmc83xx_t;
222a47a12beSStefan Roese 
223a47a12beSStefan Roese /*
224a47a12beSStefan Roese  * General purpose I/O module
225a47a12beSStefan Roese  */
226a47a12beSStefan Roese typedef struct gpio83xx {
227a47a12beSStefan Roese 	u32 dir;		/* direction register */
228a47a12beSStefan Roese 	u32 odr;		/* open drain register */
229a47a12beSStefan Roese 	u32 dat;		/* data register */
230a47a12beSStefan Roese 	u32 ier;		/* interrupt event register */
231a47a12beSStefan Roese 	u32 imr;		/* interrupt mask register */
232a47a12beSStefan Roese 	u32 icr;		/* external interrupt control register */
233a47a12beSStefan Roese 	u8 res0[0xE8];
234a47a12beSStefan Roese } gpio83xx_t;
235a47a12beSStefan Roese 
236a47a12beSStefan Roese /*
237a47a12beSStefan Roese  * QE Ports Interrupts Registers
238a47a12beSStefan Roese  */
239a47a12beSStefan Roese typedef struct qepi83xx {
240a47a12beSStefan Roese 	u8 res0[0xC];
241a47a12beSStefan Roese 	u32 qepier;		/* QE Ports Interrupt Event Register */
242a47a12beSStefan Roese 	u32 qepimr;		/* QE Ports Interrupt Mask Register */
243a47a12beSStefan Roese 	u32 qepicr;		/* QE Ports Interrupt Control Register */
244a47a12beSStefan Roese 	u8 res1[0xE8];
245a47a12beSStefan Roese } qepi83xx_t;
246a47a12beSStefan Roese 
247a47a12beSStefan Roese /*
248a47a12beSStefan Roese  * QE Parallel I/O Ports
249a47a12beSStefan Roese  */
250a47a12beSStefan Roese typedef struct gpio_n {
251a47a12beSStefan Roese 	u32 podr;		/* Open Drain Register */
252a47a12beSStefan Roese 	u32 pdat;		/* Data Register */
253a47a12beSStefan Roese 	u32 dir1;		/* direction register 1 */
254a47a12beSStefan Roese 	u32 dir2;		/* direction register 2 */
255a47a12beSStefan Roese 	u32 ppar1;		/* Pin Assignment Register 1 */
256a47a12beSStefan Roese 	u32 ppar2;		/* Pin Assignment Register 2 */
257a47a12beSStefan Roese } gpio_n_t;
258a47a12beSStefan Roese 
259a47a12beSStefan Roese typedef struct qegpio83xx {
260a47a12beSStefan Roese 	gpio_n_t ioport[0x7];
261a47a12beSStefan Roese 	u8 res0[0x358];
262a47a12beSStefan Roese } qepio83xx_t;
263a47a12beSStefan Roese 
264a47a12beSStefan Roese /*
265a47a12beSStefan Roese  * QE Secondary Bus Access Windows
266a47a12beSStefan Roese  */
267a47a12beSStefan Roese typedef struct qesba83xx {
268a47a12beSStefan Roese 	u32 lbmcsar;		/* Local bus memory controller start address */
269a47a12beSStefan Roese 	u32 sdmcsar;		/* Secondary DDR memory controller start address */
270a47a12beSStefan Roese 	u8 res0[0x38];
271a47a12beSStefan Roese 	u32 lbmcear;		/* Local bus memory controller end address */
272a47a12beSStefan Roese 	u32 sdmcear;		/* Secondary DDR memory controller end address */
273a47a12beSStefan Roese 	u8 res1[0x38];
274a47a12beSStefan Roese 	u32 lbmcar;		/* Local bus memory controller attributes */
275a47a12beSStefan Roese 	u32 sdmcar;		/* Secondary DDR memory controller attributes */
276a47a12beSStefan Roese 	u8 res2[0x378];
277a47a12beSStefan Roese } qesba83xx_t;
278a47a12beSStefan Roese 
279a47a12beSStefan Roese /*
280a47a12beSStefan Roese  * DDR Memory Controller Memory Map
281a47a12beSStefan Roese  */
282d29d17d7SYork Sun #if defined(CONFIG_FSL_DDR2) || defined(CONFIG_FSL_DDR3)
283d29d17d7SYork Sun typedef struct ccsr_ddr {
284d29d17d7SYork Sun 	u32	cs0_bnds;		/* Chip Select 0 Memory Bounds */
285d29d17d7SYork Sun 	u8	res1[4];
286d29d17d7SYork Sun 	u32	cs1_bnds;		/* Chip Select 1 Memory Bounds */
287d29d17d7SYork Sun 	u8	res2[4];
288d29d17d7SYork Sun 	u32	cs2_bnds;		/* Chip Select 2 Memory Bounds */
289d29d17d7SYork Sun 	u8	res3[4];
290d29d17d7SYork Sun 	u32	cs3_bnds;		/* Chip Select 3 Memory Bounds */
291d29d17d7SYork Sun 	u8	res4[100];
292d29d17d7SYork Sun 	u32	cs0_config;		/* Chip Select Configuration */
293d29d17d7SYork Sun 	u32	cs1_config;		/* Chip Select Configuration */
294d29d17d7SYork Sun 	u32	cs2_config;		/* Chip Select Configuration */
295d29d17d7SYork Sun 	u32	cs3_config;		/* Chip Select Configuration */
296d29d17d7SYork Sun 	u8	res4a[48];
297d29d17d7SYork Sun 	u32	cs0_config_2;		/* Chip Select Configuration 2 */
298d29d17d7SYork Sun 	u32	cs1_config_2;		/* Chip Select Configuration 2 */
299d29d17d7SYork Sun 	u32	cs2_config_2;		/* Chip Select Configuration 2 */
300d29d17d7SYork Sun 	u32	cs3_config_2;		/* Chip Select Configuration 2 */
301d29d17d7SYork Sun 	u8	res5[48];
302d29d17d7SYork Sun 	u32	timing_cfg_3;		/* SDRAM Timing Configuration 3 */
303d29d17d7SYork Sun 	u32	timing_cfg_0;		/* SDRAM Timing Configuration 0 */
304d29d17d7SYork Sun 	u32	timing_cfg_1;		/* SDRAM Timing Configuration 1 */
305d29d17d7SYork Sun 	u32	timing_cfg_2;		/* SDRAM Timing Configuration 2 */
306d29d17d7SYork Sun 	u32	sdram_cfg;		/* SDRAM Control Configuration */
307d29d17d7SYork Sun 	u32	sdram_cfg_2;		/* SDRAM Control Configuration 2 */
308d29d17d7SYork Sun 	u32	sdram_mode;		/* SDRAM Mode Configuration */
309d29d17d7SYork Sun 	u32	sdram_mode_2;		/* SDRAM Mode Configuration 2 */
310d29d17d7SYork Sun 	u32	sdram_md_cntl;		/* SDRAM Mode Control */
311d29d17d7SYork Sun 	u32	sdram_interval;		/* SDRAM Interval Configuration */
312d29d17d7SYork Sun 	u32	sdram_data_init;	/* SDRAM Data initialization */
313d29d17d7SYork Sun 	u8	res6[4];
314d29d17d7SYork Sun 	u32	sdram_clk_cntl;		/* SDRAM Clock Control */
315d29d17d7SYork Sun 	u8	res7[20];
316d29d17d7SYork Sun 	u32	init_addr;		/* training init addr */
317d29d17d7SYork Sun 	u32	init_ext_addr;		/* training init extended addr */
318d29d17d7SYork Sun 	u8	res8_1[16];
319d29d17d7SYork Sun 	u32	timing_cfg_4;		/* SDRAM Timing Configuration 4 */
320d29d17d7SYork Sun 	u32	timing_cfg_5;		/* SDRAM Timing Configuration 5 */
321d29d17d7SYork Sun 	u8	reg8_1a[8];
322d29d17d7SYork Sun 	u32	ddr_zq_cntl;		/* ZQ calibration control*/
323d29d17d7SYork Sun 	u32	ddr_wrlvl_cntl;		/* write leveling control*/
324d29d17d7SYork Sun 	u8	reg8_1aa[4];
325d29d17d7SYork Sun 	u32	ddr_sr_cntr;		/* self refresh counter */
326d29d17d7SYork Sun 	u32	ddr_sdram_rcw_1;	/* Control Words 1 */
327d29d17d7SYork Sun 	u32	ddr_sdram_rcw_2;	/* Control Words 2 */
328d29d17d7SYork Sun 	u8	reg_1ab[8];
329d29d17d7SYork Sun 	u32	ddr_wrlvl_cntl_2;	/* write leveling control 2 */
330d29d17d7SYork Sun 	u32	ddr_wrlvl_cntl_3;	/* write leveling control 3 */
331d29d17d7SYork Sun 	u8	res8_1b[104];
332d29d17d7SYork Sun 	u32	sdram_mode_3;		/* SDRAM Mode Configuration 3 */
333d29d17d7SYork Sun 	u32	sdram_mode_4;		/* SDRAM Mode Configuration 4 */
334d29d17d7SYork Sun 	u32	sdram_mode_5;		/* SDRAM Mode Configuration 5 */
335d29d17d7SYork Sun 	u32	sdram_mode_6;		/* SDRAM Mode Configuration 6 */
336d29d17d7SYork Sun 	u32	sdram_mode_7;		/* SDRAM Mode Configuration 7 */
337d29d17d7SYork Sun 	u32	sdram_mode_8;		/* SDRAM Mode Configuration 8 */
338d29d17d7SYork Sun 	u8	res8_1ba[0x908];
339d29d17d7SYork Sun 	u32	ddr_dsr1;		/* Debug Status 1 */
340d29d17d7SYork Sun 	u32	ddr_dsr2;		/* Debug Status 2 */
341d29d17d7SYork Sun 	u32	ddr_cdr1;		/* Control Driver 1 */
342d29d17d7SYork Sun 	u32	ddr_cdr2;		/* Control Driver 2 */
343d29d17d7SYork Sun 	u8	res8_1c[200];
344d29d17d7SYork Sun 	u32	ip_rev1;		/* IP Block Revision 1 */
345d29d17d7SYork Sun 	u32	ip_rev2;		/* IP Block Revision 2 */
346d29d17d7SYork Sun 	u32	eor;			/* Enhanced Optimization Register */
347d29d17d7SYork Sun 	u8	res8_2[252];
348d29d17d7SYork Sun 	u32	mtcr;			/* Memory Test Control Register */
349d29d17d7SYork Sun 	u8	res8_3[28];
350d29d17d7SYork Sun 	u32	mtp1;			/* Memory Test Pattern 1 */
351d29d17d7SYork Sun 	u32	mtp2;			/* Memory Test Pattern 2 */
352d29d17d7SYork Sun 	u32	mtp3;			/* Memory Test Pattern 3 */
353d29d17d7SYork Sun 	u32	mtp4;			/* Memory Test Pattern 4 */
354d29d17d7SYork Sun 	u32	mtp5;			/* Memory Test Pattern 5 */
355d29d17d7SYork Sun 	u32	mtp6;			/* Memory Test Pattern 6 */
356d29d17d7SYork Sun 	u32	mtp7;			/* Memory Test Pattern 7 */
357d29d17d7SYork Sun 	u32	mtp8;			/* Memory Test Pattern 8 */
358d29d17d7SYork Sun 	u32	mtp9;			/* Memory Test Pattern 9 */
359d29d17d7SYork Sun 	u32	mtp10;			/* Memory Test Pattern 10 */
360d29d17d7SYork Sun 	u8	res8_4[184];
361d29d17d7SYork Sun 	u32	data_err_inject_hi;	/* Data Path Err Injection Mask High */
362d29d17d7SYork Sun 	u32	data_err_inject_lo;	/* Data Path Err Injection Mask Low */
363d29d17d7SYork Sun 	u32	ecc_err_inject;		/* Data Path Err Injection Mask ECC */
364d29d17d7SYork Sun 	u8	res9[20];
365d29d17d7SYork Sun 	u32	capture_data_hi;	/* Data Path Read Capture High */
366d29d17d7SYork Sun 	u32	capture_data_lo;	/* Data Path Read Capture Low */
367d29d17d7SYork Sun 	u32	capture_ecc;		/* Data Path Read Capture ECC */
368d29d17d7SYork Sun 	u8	res10[20];
369d29d17d7SYork Sun 	u32	err_detect;		/* Error Detect */
370d29d17d7SYork Sun 	u32	err_disable;		/* Error Disable */
371d29d17d7SYork Sun 	u32	err_int_en;
372d29d17d7SYork Sun 	u32	capture_attributes;	/* Error Attrs Capture */
373d29d17d7SYork Sun 	u32	capture_address;	/* Error Addr Capture */
374d29d17d7SYork Sun 	u32	capture_ext_address;	/* Error Extended Addr Capture */
375d29d17d7SYork Sun 	u32	err_sbe;		/* Single-Bit ECC Error Management */
376d29d17d7SYork Sun 	u8	res11[164];
377d29d17d7SYork Sun 	u32	debug[32];		/* debug_1 to debug_32 */
378d29d17d7SYork Sun 	u8	res12[128];
379d29d17d7SYork Sun } ccsr_ddr_t;
380d29d17d7SYork Sun #else
381a47a12beSStefan Roese typedef struct ddr_cs_bnds {
382a47a12beSStefan Roese 	u32 csbnds;
383a47a12beSStefan Roese 	u8 res0[4];
384a47a12beSStefan Roese } ddr_cs_bnds_t;
385a47a12beSStefan Roese 
386a47a12beSStefan Roese typedef struct ddr83xx {
387a47a12beSStefan Roese 	ddr_cs_bnds_t csbnds[4];/* Chip Select x Memory Bounds */
388a47a12beSStefan Roese 	u8 res0[0x60];
389a47a12beSStefan Roese 	u32 cs_config[4];	/* Chip Select x Configuration */
390a47a12beSStefan Roese 	u8 res1[0x70];
391a47a12beSStefan Roese 	u32 timing_cfg_3;	/* SDRAM Timing Configuration 3 */
392a47a12beSStefan Roese 	u32 timing_cfg_0;	/* SDRAM Timing Configuration 0 */
393a47a12beSStefan Roese 	u32 timing_cfg_1;	/* SDRAM Timing Configuration 1 */
394a47a12beSStefan Roese 	u32 timing_cfg_2;	/* SDRAM Timing Configuration 2 */
395a47a12beSStefan Roese 	u32 sdram_cfg;		/* SDRAM Control Configuration */
396a47a12beSStefan Roese 	u32 sdram_cfg2;		/* SDRAM Control Configuration 2 */
397a47a12beSStefan Roese 	u32 sdram_mode;		/* SDRAM Mode Configuration */
398a47a12beSStefan Roese 	u32 sdram_mode2;	/* SDRAM Mode Configuration 2 */
399a47a12beSStefan Roese 	u32 sdram_md_cntl;	/* SDRAM Mode Control */
400a47a12beSStefan Roese 	u32 sdram_interval;	/* SDRAM Interval Configuration */
401a47a12beSStefan Roese 	u32 ddr_data_init;	/* SDRAM Data Initialization */
402a47a12beSStefan Roese 	u8 res2[4];
403a47a12beSStefan Roese 	u32 sdram_clk_cntl;	/* SDRAM Clock Control */
404a47a12beSStefan Roese 	u8 res3[0x14];
405a47a12beSStefan Roese 	u32 ddr_init_addr;	/* DDR training initialization address */
406a47a12beSStefan Roese 	u32 ddr_init_ext_addr;	/* DDR training initialization extended address */
407a47a12beSStefan Roese 	u8 res4[0xAA8];
408a47a12beSStefan Roese 	u32 ddr_ip_rev1;	/* DDR IP block revision 1 */
409a47a12beSStefan Roese 	u32 ddr_ip_rev2;	/* DDR IP block revision 2 */
410a47a12beSStefan Roese 	u8 res5[0x200];
411a47a12beSStefan Roese 	u32 data_err_inject_hi;	/* Memory Data Path Error Injection Mask High */
412a47a12beSStefan Roese 	u32 data_err_inject_lo;	/* Memory Data Path Error Injection Mask Low */
413a47a12beSStefan Roese 	u32 ecc_err_inject;	/* Memory Data Path Error Injection Mask ECC */
414a47a12beSStefan Roese 	u8 res6[0x14];
415a47a12beSStefan Roese 	u32 capture_data_hi;	/* Memory Data Path Read Capture High */
416a47a12beSStefan Roese 	u32 capture_data_lo;	/* Memory Data Path Read Capture Low */
417a47a12beSStefan Roese 	u32 capture_ecc;	/* Memory Data Path Read Capture ECC */
418a47a12beSStefan Roese 	u8 res7[0x14];
419a47a12beSStefan Roese 	u32 err_detect;		/* Memory Error Detect */
420a47a12beSStefan Roese 	u32 err_disable;	/* Memory Error Disable */
421a47a12beSStefan Roese 	u32 err_int_en;		/* Memory Error Interrupt Enable */
422a47a12beSStefan Roese 	u32 capture_attributes;	/* Memory Error Attributes Capture */
423a47a12beSStefan Roese 	u32 capture_address;	/* Memory Error Address Capture */
424a47a12beSStefan Roese 	u32 capture_ext_address;/* Memory Error Extended Address Capture */
425a47a12beSStefan Roese 	u32 err_sbe;		/* Memory Single-Bit ECC Error Management */
426a47a12beSStefan Roese 	u8 res8[0xA4];
427a47a12beSStefan Roese 	u32 debug_reg;
428a47a12beSStefan Roese 	u8 res9[0xFC];
429a47a12beSStefan Roese } ddr83xx_t;
430d29d17d7SYork Sun #endif
431a47a12beSStefan Roese 
432a47a12beSStefan Roese /*
433a47a12beSStefan Roese  * DUART
434a47a12beSStefan Roese  */
435a47a12beSStefan Roese typedef struct duart83xx {
436a47a12beSStefan Roese 	u8 urbr_ulcr_udlb;	/* combined register for URBR, UTHR and UDLB */
437a47a12beSStefan Roese 	u8 uier_udmb;		/* combined register for UIER and UDMB */
438a47a12beSStefan Roese 	u8 uiir_ufcr_uafr;	/* combined register for UIIR, UFCR and UAFR */
439a47a12beSStefan Roese 	u8 ulcr;		/* line control register */
440a47a12beSStefan Roese 	u8 umcr;		/* MODEM control register */
441a47a12beSStefan Roese 	u8 ulsr;		/* line status register */
442a47a12beSStefan Roese 	u8 umsr;		/* MODEM status register */
443a47a12beSStefan Roese 	u8 uscr;		/* scratch register */
444a47a12beSStefan Roese 	u8 res0[8];
445a47a12beSStefan Roese 	u8 udsr;		/* DMA status register */
446a47a12beSStefan Roese 	u8 res1[3];
447a47a12beSStefan Roese 	u8 res2[0xEC];
448a47a12beSStefan Roese } duart83xx_t;
449a47a12beSStefan Roese 
450a47a12beSStefan Roese /*
451a47a12beSStefan Roese  * DMA/Messaging Unit
452a47a12beSStefan Roese  */
453a47a12beSStefan Roese typedef struct dma83xx {
454a47a12beSStefan Roese 	u32 res0[0xC];		/* 0x0-0x29 reseverd */
455a47a12beSStefan Roese 	u32 omisr;		/* 0x30 Outbound message interrupt status register */
456a47a12beSStefan Roese 	u32 omimr;		/* 0x34 Outbound message interrupt mask register */
457a47a12beSStefan Roese 	u32 res1[0x6];		/* 0x38-0x49 reserved */
458a47a12beSStefan Roese 	u32 imr0;		/* 0x50 Inbound message register 0 */
459a47a12beSStefan Roese 	u32 imr1;		/* 0x54 Inbound message register 1 */
460a47a12beSStefan Roese 	u32 omr0;		/* 0x58 Outbound message register 0 */
461a47a12beSStefan Roese 	u32 omr1;		/* 0x5C Outbound message register 1 */
462a47a12beSStefan Roese 	u32 odr;		/* 0x60 Outbound doorbell register */
463a47a12beSStefan Roese 	u32 res2;		/* 0x64-0x67 reserved */
464a47a12beSStefan Roese 	u32 idr;		/* 0x68 Inbound doorbell register */
465a47a12beSStefan Roese 	u32 res3[0x5];		/* 0x6C-0x79 reserved */
466a47a12beSStefan Roese 	u32 imisr;		/* 0x80 Inbound message interrupt status register */
467a47a12beSStefan Roese 	u32 imimr;		/* 0x84 Inbound message interrupt mask register */
468a47a12beSStefan Roese 	u32 res4[0x1E];		/* 0x88-0x99 reserved */
469a47a12beSStefan Roese 	struct fsl_dma dma[4];
470a47a12beSStefan Roese } dma83xx_t;
471a47a12beSStefan Roese 
472a47a12beSStefan Roese /*
473a47a12beSStefan Roese  * PCI Software Configuration Registers
474a47a12beSStefan Roese  */
475a47a12beSStefan Roese typedef struct pciconf83xx {
476a47a12beSStefan Roese 	u32 config_address;
477a47a12beSStefan Roese 	u32 config_data;
478a47a12beSStefan Roese 	u32 int_ack;
479a47a12beSStefan Roese 	u8 res[116];
480a47a12beSStefan Roese } pciconf83xx_t;
481a47a12beSStefan Roese 
482a47a12beSStefan Roese /*
483a47a12beSStefan Roese  * PCI Outbound Translation Register
484a47a12beSStefan Roese  */
485a47a12beSStefan Roese typedef struct pci_outbound_window {
486a47a12beSStefan Roese 	u32 potar;
487a47a12beSStefan Roese 	u8 res0[4];
488a47a12beSStefan Roese 	u32 pobar;
489a47a12beSStefan Roese 	u8 res1[4];
490a47a12beSStefan Roese 	u32 pocmr;
491a47a12beSStefan Roese 	u8 res2[4];
492a47a12beSStefan Roese } pot83xx_t;
493a47a12beSStefan Roese 
494a47a12beSStefan Roese /*
495a47a12beSStefan Roese  * Sequencer
496a47a12beSStefan Roese  */
497a47a12beSStefan Roese typedef struct ios83xx {
498a47a12beSStefan Roese 	pot83xx_t pot[6];
499a47a12beSStefan Roese 	u8 res0[0x60];
500a47a12beSStefan Roese 	u32 pmcr;
501a47a12beSStefan Roese 	u8 res1[4];
502a47a12beSStefan Roese 	u32 dtcr;
503a47a12beSStefan Roese 	u8 res2[4];
504a47a12beSStefan Roese } ios83xx_t;
505a47a12beSStefan Roese 
506a47a12beSStefan Roese /*
507a47a12beSStefan Roese  * PCI Controller Control and Status Registers
508a47a12beSStefan Roese  */
509a47a12beSStefan Roese typedef struct pcictrl83xx {
510a47a12beSStefan Roese 	u32 esr;
511a47a12beSStefan Roese 	u32 ecdr;
512a47a12beSStefan Roese 	u32 eer;
513a47a12beSStefan Roese 	u32 eatcr;
514a47a12beSStefan Roese 	u32 eacr;
515a47a12beSStefan Roese 	u32 eeacr;
516a47a12beSStefan Roese 	u32 edlcr;
517a47a12beSStefan Roese 	u32 edhcr;
518a47a12beSStefan Roese 	u32 gcr;
519a47a12beSStefan Roese 	u32 ecr;
520a47a12beSStefan Roese 	u32 gsr;
521a47a12beSStefan Roese 	u8 res0[12];
522a47a12beSStefan Roese 	u32 pitar2;
523a47a12beSStefan Roese 	u8 res1[4];
524a47a12beSStefan Roese 	u32 pibar2;
525a47a12beSStefan Roese 	u32 piebar2;
526a47a12beSStefan Roese 	u32 piwar2;
527a47a12beSStefan Roese 	u8 res2[4];
528a47a12beSStefan Roese 	u32 pitar1;
529a47a12beSStefan Roese 	u8 res3[4];
530a47a12beSStefan Roese 	u32 pibar1;
531a47a12beSStefan Roese 	u32 piebar1;
532a47a12beSStefan Roese 	u32 piwar1;
533a47a12beSStefan Roese 	u8 res4[4];
534a47a12beSStefan Roese 	u32 pitar0;
535a47a12beSStefan Roese 	u8 res5[4];
536a47a12beSStefan Roese 	u32 pibar0;
537a47a12beSStefan Roese 	u8 res6[4];
538a47a12beSStefan Roese 	u32 piwar0;
539a47a12beSStefan Roese 	u8 res7[132];
540a47a12beSStefan Roese } pcictrl83xx_t;
541a47a12beSStefan Roese 
542a47a12beSStefan Roese /*
543a47a12beSStefan Roese  * USB
544a47a12beSStefan Roese  */
545a47a12beSStefan Roese typedef struct usb83xx {
546a47a12beSStefan Roese 	u8 fixme[0x1000];
547a47a12beSStefan Roese } usb83xx_t;
548a47a12beSStefan Roese 
549a47a12beSStefan Roese /*
550a47a12beSStefan Roese  * TSEC
551a47a12beSStefan Roese  */
552a47a12beSStefan Roese typedef struct tsec83xx {
553a47a12beSStefan Roese 	u8 fixme[0x1000];
554a47a12beSStefan Roese } tsec83xx_t;
555a47a12beSStefan Roese 
556a47a12beSStefan Roese /*
557a47a12beSStefan Roese  * Security
558a47a12beSStefan Roese  */
559a47a12beSStefan Roese typedef struct security83xx {
560a47a12beSStefan Roese 	u8 fixme[0x10000];
561a47a12beSStefan Roese } security83xx_t;
562a47a12beSStefan Roese 
563a47a12beSStefan Roese /*
564a47a12beSStefan Roese  *  PCI Express
565a47a12beSStefan Roese  */
566a47a12beSStefan Roese struct pex_inbound_window {
567a47a12beSStefan Roese 	u32 ar;
568a47a12beSStefan Roese 	u32 tar;
569a47a12beSStefan Roese 	u32 barl;
570a47a12beSStefan Roese 	u32 barh;
571a47a12beSStefan Roese };
572a47a12beSStefan Roese 
573a47a12beSStefan Roese struct pex_outbound_window {
574a47a12beSStefan Roese 	u32 ar;
575a47a12beSStefan Roese 	u32 bar;
576a47a12beSStefan Roese 	u32 tarl;
577a47a12beSStefan Roese 	u32 tarh;
578a47a12beSStefan Roese };
579a47a12beSStefan Roese 
580a47a12beSStefan Roese struct pex_csb_bridge {
581a47a12beSStefan Roese 	u32 pex_csb_ver;
582a47a12beSStefan Roese 	u32 pex_csb_cab;
583a47a12beSStefan Roese 	u32 pex_csb_ctrl;
584a47a12beSStefan Roese 	u8 res0[8];
585a47a12beSStefan Roese 	u32 pex_dms_dstmr;
586a47a12beSStefan Roese 	u8 res1[4];
587a47a12beSStefan Roese 	u32 pex_cbs_stat;
588a47a12beSStefan Roese 	u8 res2[0x20];
589a47a12beSStefan Roese 	u32 pex_csb_obctrl;
590a47a12beSStefan Roese 	u32 pex_csb_obstat;
591a47a12beSStefan Roese 	u8 res3[0x98];
592a47a12beSStefan Roese 	u32 pex_csb_ibctrl;
593a47a12beSStefan Roese 	u32 pex_csb_ibstat;
594a47a12beSStefan Roese 	u8 res4[0xb8];
595a47a12beSStefan Roese 	u32 pex_wdma_ctrl;
596a47a12beSStefan Roese 	u32 pex_wdma_addr;
597a47a12beSStefan Roese 	u32 pex_wdma_stat;
598a47a12beSStefan Roese 	u8 res5[0x94];
599a47a12beSStefan Roese 	u32 pex_rdma_ctrl;
600a47a12beSStefan Roese 	u32 pex_rdma_addr;
601a47a12beSStefan Roese 	u32 pex_rdma_stat;
602a47a12beSStefan Roese 	u8 res6[0xd4];
603a47a12beSStefan Roese 	u32 pex_ombcr;
604a47a12beSStefan Roese 	u32 pex_ombdr;
605a47a12beSStefan Roese 	u8 res7[0x38];
606a47a12beSStefan Roese 	u32 pex_imbcr;
607a47a12beSStefan Roese 	u32 pex_imbdr;
608a47a12beSStefan Roese 	u8 res8[0x38];
609a47a12beSStefan Roese 	u32 pex_int_enb;
610a47a12beSStefan Roese 	u32 pex_int_stat;
611a47a12beSStefan Roese 	u32 pex_int_apio_vec1;
612a47a12beSStefan Roese 	u32 pex_int_apio_vec2;
613a47a12beSStefan Roese 	u8 res9[0x10];
614a47a12beSStefan Roese 	u32 pex_int_ppio_vec1;
615a47a12beSStefan Roese 	u32 pex_int_ppio_vec2;
616a47a12beSStefan Roese 	u32 pex_int_wdma_vec1;
617a47a12beSStefan Roese 	u32 pex_int_wdma_vec2;
618a47a12beSStefan Roese 	u32 pex_int_rdma_vec1;
619a47a12beSStefan Roese 	u32 pex_int_rdma_vec2;
620a47a12beSStefan Roese 	u32 pex_int_misc_vec;
621a47a12beSStefan Roese 	u8 res10[4];
622a47a12beSStefan Roese 	u32 pex_int_axi_pio_enb;
623a47a12beSStefan Roese 	u32 pex_int_axi_wdma_enb;
624a47a12beSStefan Roese 	u32 pex_int_axi_rdma_enb;
625a47a12beSStefan Roese 	u32 pex_int_axi_misc_enb;
626a47a12beSStefan Roese 	u32 pex_int_axi_pio_stat;
627a47a12beSStefan Roese 	u32 pex_int_axi_wdma_stat;
628a47a12beSStefan Roese 	u32 pex_int_axi_rdma_stat;
629a47a12beSStefan Roese 	u32 pex_int_axi_misc_stat;
630a47a12beSStefan Roese 	u8 res11[0xa0];
631a47a12beSStefan Roese 	struct pex_outbound_window pex_outbound_win[4];
632a47a12beSStefan Roese 	u8 res12[0x100];
633a47a12beSStefan Roese 	u32 pex_epiwtar0;
634a47a12beSStefan Roese 	u32 pex_epiwtar1;
635a47a12beSStefan Roese 	u32 pex_epiwtar2;
636a47a12beSStefan Roese 	u32 pex_epiwtar3;
637a47a12beSStefan Roese 	u8 res13[0x70];
638a47a12beSStefan Roese 	struct pex_inbound_window pex_inbound_win[4];
639a47a12beSStefan Roese };
640a47a12beSStefan Roese 
641a47a12beSStefan Roese typedef struct pex83xx {
642a47a12beSStefan Roese 	u8 pex_cfg_header[0x404];
643a47a12beSStefan Roese 	u32 pex_ltssm_stat;
644a47a12beSStefan Roese 	u8 res0[0x30];
645a47a12beSStefan Roese 	u32 pex_ack_replay_timeout;
646a47a12beSStefan Roese 	u8 res1[4];
647a47a12beSStefan Roese 	u32 pex_gclk_ratio;
648a47a12beSStefan Roese 	u8 res2[0xc];
649a47a12beSStefan Roese 	u32 pex_pm_timer;
650a47a12beSStefan Roese 	u32 pex_pme_timeout;
651a47a12beSStefan Roese 	u8 res3[4];
652a47a12beSStefan Roese 	u32 pex_aspm_req_timer;
653a47a12beSStefan Roese 	u8 res4[0x18];
654a47a12beSStefan Roese 	u32 pex_ssvid_update;
655a47a12beSStefan Roese 	u8 res5[0x34];
656a47a12beSStefan Roese 	u32 pex_cfg_ready;
657a47a12beSStefan Roese 	u8 res6[0x24];
658a47a12beSStefan Roese 	u32 pex_bar_sizel;
659a47a12beSStefan Roese 	u8 res7[4];
660a47a12beSStefan Roese 	u32 pex_bar_sel;
661a47a12beSStefan Roese 	u8 res8[0x20];
662a47a12beSStefan Roese 	u32 pex_bar_pf;
663a47a12beSStefan Roese 	u8 res9[0x88];
664a47a12beSStefan Roese 	u32 pex_pme_to_ack_tor;
665a47a12beSStefan Roese 	u8 res10[0xc];
666a47a12beSStefan Roese 	u32 pex_ss_intr_mask;
667a47a12beSStefan Roese 	u8 res11[0x25c];
668a47a12beSStefan Roese 	struct pex_csb_bridge bridge;
669a47a12beSStefan Roese 	u8 res12[0x160];
670a47a12beSStefan Roese } pex83xx_t;
671a47a12beSStefan Roese 
672a47a12beSStefan Roese /*
673a47a12beSStefan Roese  * SATA
674a47a12beSStefan Roese  */
675a47a12beSStefan Roese typedef struct sata83xx {
676a47a12beSStefan Roese 	u8 fixme[0x1000];
677a47a12beSStefan Roese } sata83xx_t;
678a47a12beSStefan Roese 
679a47a12beSStefan Roese /*
680a47a12beSStefan Roese  * eSDHC
681a47a12beSStefan Roese  */
682a47a12beSStefan Roese typedef struct sdhc83xx {
683a47a12beSStefan Roese 	u8 fixme[0x1000];
684a47a12beSStefan Roese } sdhc83xx_t;
685a47a12beSStefan Roese 
686a47a12beSStefan Roese /*
687a47a12beSStefan Roese  * SerDes
688a47a12beSStefan Roese  */
689a47a12beSStefan Roese typedef struct serdes83xx {
6907c619ddcSIlya Yanok 	u32 srdscr0;
6917c619ddcSIlya Yanok 	u32 srdscr1;
6927c619ddcSIlya Yanok 	u32 srdscr2;
6937c619ddcSIlya Yanok 	u32 srdscr3;
6947c619ddcSIlya Yanok 	u32 srdscr4;
6957c619ddcSIlya Yanok 	u8 res0[0xc];
6967c619ddcSIlya Yanok 	u32 srdsrstctl;
6977c619ddcSIlya Yanok 	u8 res1[0xdc];
698a47a12beSStefan Roese } serdes83xx_t;
699a47a12beSStefan Roese 
700a47a12beSStefan Roese /*
701a47a12beSStefan Roese  * On Chip ROM
702a47a12beSStefan Roese  */
703a47a12beSStefan Roese typedef struct rom83xx {
704a88731a6SGerlando Falauto #if defined(CONFIG_MPC8309)
705a88731a6SGerlando Falauto 	u8 mem[0x8000];
706a88731a6SGerlando Falauto #else
707a47a12beSStefan Roese 	u8 mem[0x10000];
708a88731a6SGerlando Falauto #endif
709a47a12beSStefan Roese } rom83xx_t;
710a47a12beSStefan Roese 
711a47a12beSStefan Roese /*
712a47a12beSStefan Roese  * TDM
713a47a12beSStefan Roese  */
714a47a12beSStefan Roese typedef struct tdm83xx {
715a47a12beSStefan Roese 	u8 fixme[0x200];
716a47a12beSStefan Roese } tdm83xx_t;
717a47a12beSStefan Roese 
718a47a12beSStefan Roese /*
719a47a12beSStefan Roese  * TDM DMAC
720a47a12beSStefan Roese  */
721a47a12beSStefan Roese typedef struct tdmdmac83xx {
722a47a12beSStefan Roese 	u8 fixme[0x2000];
723a47a12beSStefan Roese } tdmdmac83xx_t;
724a47a12beSStefan Roese 
725a47a12beSStefan Roese #if defined(CONFIG_MPC834x)
726a47a12beSStefan Roese typedef struct immap {
727a47a12beSStefan Roese 	sysconf83xx_t		sysconf;	/* System configuration */
728a47a12beSStefan Roese 	wdt83xx_t		wdt;		/* Watch Dog Timer (WDT) Registers */
729a47a12beSStefan Roese 	rtclk83xx_t		rtc;		/* Real Time Clock Module Registers */
730a47a12beSStefan Roese 	rtclk83xx_t		pit;		/* Periodic Interval Timer */
731a47a12beSStefan Roese 	gtm83xx_t		gtm[2];		/* Global Timers Module */
732a47a12beSStefan Roese 	ipic83xx_t		ipic;		/* Integrated Programmable Interrupt Controller */
733a47a12beSStefan Roese 	arbiter83xx_t		arbiter;	/* System Arbiter Registers */
734a47a12beSStefan Roese 	reset83xx_t		reset;		/* Reset Module */
735a47a12beSStefan Roese 	clk83xx_t		clk;		/* System Clock Module */
736a47a12beSStefan Roese 	pmc83xx_t		pmc;		/* Power Management Control Module */
737a47a12beSStefan Roese 	gpio83xx_t		gpio[2];	/* General purpose I/O module */
738a47a12beSStefan Roese 	u8			res0[0x200];
739a47a12beSStefan Roese 	u8			dll_ddr[0x100];
740a47a12beSStefan Roese 	u8			dll_lbc[0x100];
741a47a12beSStefan Roese 	u8			res1[0xE00];
742d29d17d7SYork Sun #if defined(CONFIG_FSL_DDR2) || defined(CONFIG_FSL_DDR3)
743d29d17d7SYork Sun 	ccsr_ddr_t		ddr;	/* DDR Memory Controller Memory */
744d29d17d7SYork Sun #else
745a47a12beSStefan Roese 	ddr83xx_t		ddr;	/* DDR Memory Controller Memory */
746d29d17d7SYork Sun #endif
747a47a12beSStefan Roese 	fsl_i2c_t		i2c[2];		/* I2C Controllers */
748a47a12beSStefan Roese 	u8			res2[0x1300];
749a47a12beSStefan Roese 	duart83xx_t		duart[2];	/* DUART */
750a47a12beSStefan Roese 	u8			res3[0x900];
751f51cdaf1SBecky Bruce 	fsl_lbc_t		im_lbc;		/* Local Bus Controller Regs */
752a47a12beSStefan Roese 	u8			res4[0x1000];
753a47a12beSStefan Roese 	spi8xxx_t		spi;		/* Serial Peripheral Interface */
754a47a12beSStefan Roese 	dma83xx_t		dma;		/* DMA */
755a47a12beSStefan Roese 	pciconf83xx_t		pci_conf[2];	/* PCI Software Configuration Registers */
756a47a12beSStefan Roese 	ios83xx_t		ios;		/* Sequencer */
757a47a12beSStefan Roese 	pcictrl83xx_t		pci_ctrl[2];	/* PCI Controller Control and Status Registers */
758a47a12beSStefan Roese 	u8			res5[0x19900];
759a47a12beSStefan Roese 	usb83xx_t		usb[2];
760a47a12beSStefan Roese 	tsec83xx_t		tsec[2];
761a47a12beSStefan Roese 	u8			res6[0xA000];
762a47a12beSStefan Roese 	security83xx_t		security;
763a47a12beSStefan Roese 	u8			res7[0xC0000];
764a47a12beSStefan Roese } immap_t;
765a47a12beSStefan Roese 
766*4e2e0df9Sramneek mehresh #ifndef	CONFIG_MPC834x
767a47a12beSStefan Roese #ifdef CONFIG_HAS_FSL_MPH_USB
76877354e9dSramneek mehresh #define CONFIG_SYS_MPC83xx_USB1_OFFSET  0x22000	/* use the MPH controller */
76977354e9dSramneek mehresh #define CONFIG_SYS_MPC83xx_USB2_OFFSET	0
770a47a12beSStefan Roese #else
77177354e9dSramneek mehresh #define CONFIG_SYS_MPC83xx_USB1_OFFSET	0
77277354e9dSramneek mehresh #define CONFIG_SYS_MPC83xx_USB2_OFFSET  0x23000	/* use the DR controller */
773a47a12beSStefan Roese #endif
774*4e2e0df9Sramneek mehresh #else
775*4e2e0df9Sramneek mehresh #define CONFIG_SYS_MPC83xx_USB1_OFFSET	0x22000
776*4e2e0df9Sramneek mehresh #define CONFIG_SYS_MPC83xx_USB2_OFFSET  0x23000
777*4e2e0df9Sramneek mehresh #endif
778a47a12beSStefan Roese 
779a47a12beSStefan Roese #elif defined(CONFIG_MPC8313)
780a47a12beSStefan Roese typedef struct immap {
781a47a12beSStefan Roese 	sysconf83xx_t		sysconf;	/* System configuration */
782a47a12beSStefan Roese 	wdt83xx_t		wdt;		/* Watch Dog Timer (WDT) Registers */
783a47a12beSStefan Roese 	rtclk83xx_t		rtc;		/* Real Time Clock Module Registers */
784a47a12beSStefan Roese 	rtclk83xx_t		pit;		/* Periodic Interval Timer */
785a47a12beSStefan Roese 	gtm83xx_t		gtm[2];		/* Global Timers Module */
786a47a12beSStefan Roese 	ipic83xx_t		ipic;		/* Integrated Programmable Interrupt Controller */
787a47a12beSStefan Roese 	arbiter83xx_t		arbiter;	/* System Arbiter Registers */
788a47a12beSStefan Roese 	reset83xx_t		reset;		/* Reset Module */
789a47a12beSStefan Roese 	clk83xx_t		clk;		/* System Clock Module */
790a47a12beSStefan Roese 	pmc83xx_t		pmc;		/* Power Management Control Module */
791a47a12beSStefan Roese 	gpio83xx_t		gpio[1];	/* General purpose I/O module */
792a47a12beSStefan Roese 	u8			res0[0x1300];
793a47a12beSStefan Roese 	ddr83xx_t		ddr;		/* DDR Memory Controller Memory */
794a47a12beSStefan Roese 	fsl_i2c_t		i2c[2];		/* I2C Controllers */
795a47a12beSStefan Roese 	u8			res1[0x1300];
796a47a12beSStefan Roese 	duart83xx_t		duart[2];	/* DUART */
797a47a12beSStefan Roese 	u8			res2[0x900];
798f51cdaf1SBecky Bruce 	fsl_lbc_t		im_lbc;		/* Local Bus Controller Regs */
799a47a12beSStefan Roese 	u8			res3[0x1000];
800a47a12beSStefan Roese 	spi8xxx_t		spi;		/* Serial Peripheral Interface */
801a47a12beSStefan Roese 	dma83xx_t		dma;		/* DMA */
802a47a12beSStefan Roese 	pciconf83xx_t		pci_conf[1];	/* PCI Software Configuration Registers */
803a47a12beSStefan Roese 	u8			res4[0x80];
804a47a12beSStefan Roese 	ios83xx_t		ios;		/* Sequencer */
805a47a12beSStefan Roese 	pcictrl83xx_t		pci_ctrl[1];	/* PCI Controller Control and Status Registers */
806a47a12beSStefan Roese 	u8			res5[0x1aa00];
807a47a12beSStefan Roese 	usb83xx_t		usb[1];
808a47a12beSStefan Roese 	tsec83xx_t		tsec[2];
809a47a12beSStefan Roese 	u8			res6[0xA000];
810a47a12beSStefan Roese 	security83xx_t		security;
811a47a12beSStefan Roese 	u8			res7[0xC0000];
812a47a12beSStefan Roese } immap_t;
813a47a12beSStefan Roese 
8147c619ddcSIlya Yanok #elif defined(CONFIG_MPC8308) || defined(CONFIG_MPC8315)
815a47a12beSStefan Roese typedef struct immap {
816a47a12beSStefan Roese 	sysconf83xx_t		sysconf;	/* System configuration */
817a47a12beSStefan Roese 	wdt83xx_t		wdt;		/* Watch Dog Timer (WDT) Registers */
818a47a12beSStefan Roese 	rtclk83xx_t		rtc;		/* Real Time Clock Module Registers */
819a47a12beSStefan Roese 	rtclk83xx_t		pit;		/* Periodic Interval Timer */
820a47a12beSStefan Roese 	gtm83xx_t		gtm[2];		/* Global Timers Module */
821a47a12beSStefan Roese 	ipic83xx_t		ipic;		/* Integrated Programmable Interrupt Controller */
822a47a12beSStefan Roese 	arbiter83xx_t		arbiter;	/* System Arbiter Registers */
823a47a12beSStefan Roese 	reset83xx_t		reset;		/* Reset Module */
824a47a12beSStefan Roese 	clk83xx_t		clk;		/* System Clock Module */
825a47a12beSStefan Roese 	pmc83xx_t		pmc;		/* Power Management Control Module */
826a47a12beSStefan Roese 	gpio83xx_t		gpio[1];	/* General purpose I/O module */
827a47a12beSStefan Roese 	u8			res0[0x1300];
828a47a12beSStefan Roese 	ddr83xx_t		ddr;		/* DDR Memory Controller Memory */
829a47a12beSStefan Roese 	fsl_i2c_t		i2c[2];		/* I2C Controllers */
830a47a12beSStefan Roese 	u8			res1[0x1300];
831a47a12beSStefan Roese 	duart83xx_t		duart[2];	/* DUART */
832a47a12beSStefan Roese 	u8			res2[0x900];
833f51cdaf1SBecky Bruce 	fsl_lbc_t		im_lbc;		/* Local Bus Controller Regs */
834a47a12beSStefan Roese 	u8			res3[0x1000];
835a47a12beSStefan Roese 	spi8xxx_t		spi;		/* Serial Peripheral Interface */
836a47a12beSStefan Roese 	dma83xx_t		dma;		/* DMA */
837a47a12beSStefan Roese 	pciconf83xx_t		pci_conf[1];	/* PCI Software Configuration Registers */
838a47a12beSStefan Roese 	u8			res4[0x80];
839a47a12beSStefan Roese 	ios83xx_t		ios;		/* Sequencer */
840a47a12beSStefan Roese 	pcictrl83xx_t		pci_ctrl[1];	/* PCI Controller Control and Status Registers */
841a47a12beSStefan Roese 	u8			res5[0xa00];
842a47a12beSStefan Roese 	pex83xx_t		pciexp[2];	/* PCI Express Controller */
843a47a12beSStefan Roese 	u8			res6[0xb000];
844a47a12beSStefan Roese 	tdm83xx_t		tdm;		/* TDM Controller */
845a47a12beSStefan Roese 	u8			res7[0x1e00];
846a47a12beSStefan Roese 	sata83xx_t		sata[2];	/* SATA Controller */
847a47a12beSStefan Roese 	u8			res8[0x9000];
848a47a12beSStefan Roese 	usb83xx_t		usb[1];		/* USB DR Controller */
849a47a12beSStefan Roese 	tsec83xx_t		tsec[2];
850a47a12beSStefan Roese 	u8			res9[0x6000];
851a47a12beSStefan Roese 	tdmdmac83xx_t		tdmdmac;	/* TDM DMAC */
852a47a12beSStefan Roese 	u8			res10[0x2000];
853a47a12beSStefan Roese 	security83xx_t		security;
854a47a12beSStefan Roese 	u8			res11[0xA3000];
855a47a12beSStefan Roese 	serdes83xx_t		serdes[1];	/* SerDes Registers */
856a47a12beSStefan Roese 	u8			res12[0x1CF00];
857a47a12beSStefan Roese } immap_t;
858a47a12beSStefan Roese 
859a47a12beSStefan Roese #elif defined(CONFIG_MPC837x)
860a47a12beSStefan Roese typedef struct immap {
861a47a12beSStefan Roese 	sysconf83xx_t		sysconf;	/* System configuration */
862a47a12beSStefan Roese 	wdt83xx_t		wdt;		/* Watch Dog Timer (WDT) Registers */
863a47a12beSStefan Roese 	rtclk83xx_t		rtc;		/* Real Time Clock Module Registers */
864a47a12beSStefan Roese 	rtclk83xx_t		pit;		/* Periodic Interval Timer */
865a47a12beSStefan Roese 	gtm83xx_t		gtm[2];		/* Global Timers Module */
866a47a12beSStefan Roese 	ipic83xx_t		ipic;		/* Integrated Programmable Interrupt Controller */
867a47a12beSStefan Roese 	arbiter83xx_t		arbiter;	/* System Arbiter Registers */
868a47a12beSStefan Roese 	reset83xx_t		reset;		/* Reset Module */
869a47a12beSStefan Roese 	clk83xx_t		clk;		/* System Clock Module */
870a47a12beSStefan Roese 	pmc83xx_t		pmc;		/* Power Management Control Module */
871a47a12beSStefan Roese 	gpio83xx_t		gpio[2];	/* General purpose I/O module */
872a47a12beSStefan Roese 	u8			res0[0x1200];
873a47a12beSStefan Roese 	ddr83xx_t		ddr;		/* DDR Memory Controller Memory */
874a47a12beSStefan Roese 	fsl_i2c_t		i2c[2];		/* I2C Controllers */
875a47a12beSStefan Roese 	u8			res1[0x1300];
876a47a12beSStefan Roese 	duart83xx_t		duart[2];	/* DUART */
877a47a12beSStefan Roese 	u8			res2[0x900];
878f51cdaf1SBecky Bruce 	fsl_lbc_t		im_lbc;		/* Local Bus Controller Regs */
879a47a12beSStefan Roese 	u8			res3[0x1000];
880a47a12beSStefan Roese 	spi8xxx_t		spi;		/* Serial Peripheral Interface */
881a47a12beSStefan Roese 	dma83xx_t		dma;		/* DMA */
882a47a12beSStefan Roese 	pciconf83xx_t		pci_conf[1];	/* PCI Software Configuration Registers */
883a47a12beSStefan Roese 	u8			res4[0x80];
884a47a12beSStefan Roese 	ios83xx_t		ios;		/* Sequencer */
885a47a12beSStefan Roese 	pcictrl83xx_t		pci_ctrl[1];	/* PCI Controller Control and Status Registers */
886a47a12beSStefan Roese 	u8			res5[0xa00];
887a47a12beSStefan Roese 	pex83xx_t		pciexp[2];	/* PCI Express Controller */
888a47a12beSStefan Roese 	u8			res6[0xd000];
889a47a12beSStefan Roese 	sata83xx_t		sata[4];	/* SATA Controller */
890a47a12beSStefan Roese 	u8			res7[0x7000];
891a47a12beSStefan Roese 	usb83xx_t		usb[1];		/* USB DR Controller */
892a47a12beSStefan Roese 	tsec83xx_t		tsec[2];
893a47a12beSStefan Roese 	u8			res8[0x8000];
894a47a12beSStefan Roese 	sdhc83xx_t		sdhc;		/* SDHC Controller */
895a47a12beSStefan Roese 	u8			res9[0x1000];
896a47a12beSStefan Roese 	security83xx_t		security;
897a47a12beSStefan Roese 	u8			res10[0xA3000];
898a47a12beSStefan Roese 	serdes83xx_t		serdes[2];	/* SerDes Registers */
899a47a12beSStefan Roese 	u8			res11[0xCE00];
900a47a12beSStefan Roese 	rom83xx_t		rom;		/* On Chip ROM */
901a47a12beSStefan Roese } immap_t;
902a47a12beSStefan Roese 
903a47a12beSStefan Roese #elif defined(CONFIG_MPC8360)
904a47a12beSStefan Roese typedef struct immap {
905a47a12beSStefan Roese 	sysconf83xx_t		sysconf;	/* System configuration */
906a47a12beSStefan Roese 	wdt83xx_t		wdt;		/* Watch Dog Timer (WDT) Registers */
907a47a12beSStefan Roese 	rtclk83xx_t		rtc;		/* Real Time Clock Module Registers */
908a47a12beSStefan Roese 	rtclk83xx_t		pit;		/* Periodic Interval Timer */
909a47a12beSStefan Roese 	u8			res0[0x200];
910a47a12beSStefan Roese 	ipic83xx_t		ipic;		/* Integrated Programmable Interrupt Controller */
911a47a12beSStefan Roese 	arbiter83xx_t		arbiter;	/* System Arbiter Registers */
912a47a12beSStefan Roese 	reset83xx_t		reset;		/* Reset Module */
913a47a12beSStefan Roese 	clk83xx_t		clk;		/* System Clock Module */
914a47a12beSStefan Roese 	pmc83xx_t		pmc;		/* Power Management Control Module */
915a47a12beSStefan Roese 	qepi83xx_t		qepi;		/* QE Ports Interrupts Registers */
916a47a12beSStefan Roese 	u8			res1[0x300];
917a47a12beSStefan Roese 	u8			dll_ddr[0x100];
918a47a12beSStefan Roese 	u8			dll_lbc[0x100];
919a47a12beSStefan Roese 	u8			res2[0x200];
920a47a12beSStefan Roese 	qepio83xx_t		qepio;		/* QE Parallel I/O ports */
921a47a12beSStefan Roese 	qesba83xx_t		qesba;		/* QE Secondary Bus Access Windows */
922a47a12beSStefan Roese 	u8			res3[0x400];
923a47a12beSStefan Roese 	ddr83xx_t		ddr;		/* DDR Memory Controller Memory */
924a47a12beSStefan Roese 	fsl_i2c_t		i2c[2];		/* I2C Controllers */
925a47a12beSStefan Roese 	u8			res4[0x1300];
926a47a12beSStefan Roese 	duart83xx_t		duart[2];	/* DUART */
927a47a12beSStefan Roese 	u8			res5[0x900];
928f51cdaf1SBecky Bruce 	fsl_lbc_t		im_lbc;		/* Local Bus Controller Regs */
929a47a12beSStefan Roese 	u8			res6[0x2000];
930a47a12beSStefan Roese 	dma83xx_t		dma;		/* DMA */
931a47a12beSStefan Roese 	pciconf83xx_t		pci_conf[1];	/* PCI Software Configuration Registers */
932a47a12beSStefan Roese 	u8			res7[128];
933a47a12beSStefan Roese 	ios83xx_t		ios;		/* Sequencer (IOS) */
934a47a12beSStefan Roese 	pcictrl83xx_t		pci_ctrl[1];	/* PCI Controller Control and Status Registers */
935a47a12beSStefan Roese 	u8			res8[0x4A00];
936a47a12beSStefan Roese 	ddr83xx_t		ddr_secondary;	/* Secondary DDR Memory Controller Memory Map */
937a47a12beSStefan Roese 	u8			res9[0x22000];
938a47a12beSStefan Roese 	security83xx_t		security;
939a47a12beSStefan Roese 	u8			res10[0xC0000];
940a47a12beSStefan Roese 	u8			qe[0x100000];	/* QE block */
941a47a12beSStefan Roese } immap_t;
942a47a12beSStefan Roese 
943a47a12beSStefan Roese #elif defined(CONFIG_MPC832x)
944a47a12beSStefan Roese typedef struct immap {
945a47a12beSStefan Roese 	sysconf83xx_t		sysconf;	/* System configuration */
946a47a12beSStefan Roese 	wdt83xx_t		wdt;		/* Watch Dog Timer (WDT) Registers */
947a47a12beSStefan Roese 	rtclk83xx_t		rtc;		/* Real Time Clock Module Registers */
948a47a12beSStefan Roese 	rtclk83xx_t		pit;		/* Periodic Interval Timer */
949a47a12beSStefan Roese 	gtm83xx_t		gtm[2];		/* Global Timers Module */
950a47a12beSStefan Roese 	ipic83xx_t		ipic;		/* Integrated Programmable Interrupt Controller */
951a47a12beSStefan Roese 	arbiter83xx_t		arbiter;	/* System Arbiter Registers */
952a47a12beSStefan Roese 	reset83xx_t		reset;		/* Reset Module */
953a47a12beSStefan Roese 	clk83xx_t		clk;		/* System Clock Module */
954a47a12beSStefan Roese 	pmc83xx_t		pmc;		/* Power Management Control Module */
955a47a12beSStefan Roese 	qepi83xx_t		qepi;		/* QE Ports Interrupts Registers */
956a47a12beSStefan Roese 	u8			res0[0x300];
957a47a12beSStefan Roese 	u8			dll_ddr[0x100];
958a47a12beSStefan Roese 	u8			dll_lbc[0x100];
959a47a12beSStefan Roese 	u8			res1[0x200];
960a47a12beSStefan Roese 	qepio83xx_t		qepio;		/* QE Parallel I/O ports */
961a47a12beSStefan Roese 	u8			res2[0x800];
962a47a12beSStefan Roese 	ddr83xx_t		ddr;		/* DDR Memory Controller Memory */
963a47a12beSStefan Roese 	fsl_i2c_t		i2c[2];		/* I2C Controllers */
964a47a12beSStefan Roese 	u8			res3[0x1300];
965a47a12beSStefan Roese 	duart83xx_t		duart[2];	/* DUART */
966a47a12beSStefan Roese 	u8			res4[0x900];
967f51cdaf1SBecky Bruce 	fsl_lbc_t		im_lbc;		/* Local Bus Controller Regs */
968a47a12beSStefan Roese 	u8			res5[0x2000];
969a47a12beSStefan Roese 	dma83xx_t		dma;		/* DMA */
970a47a12beSStefan Roese 	pciconf83xx_t		pci_conf[1];	/* PCI Software Configuration Registers */
971a47a12beSStefan Roese 	u8			res6[128];
972a47a12beSStefan Roese 	ios83xx_t		ios;		/* Sequencer (IOS) */
973a47a12beSStefan Roese 	pcictrl83xx_t		pci_ctrl[1];	/* PCI Controller Control and Status Registers */
974a47a12beSStefan Roese 	u8			res7[0x27A00];
975a47a12beSStefan Roese 	security83xx_t		security;
976a47a12beSStefan Roese 	u8			res8[0xC0000];
977a47a12beSStefan Roese 	u8			qe[0x100000];	/* QE block */
978a47a12beSStefan Roese } immap_t;
979a88731a6SGerlando Falauto #elif defined(CONFIG_MPC8309)
980a88731a6SGerlando Falauto typedef struct immap {
981a88731a6SGerlando Falauto 	sysconf83xx_t		sysconf;	/* System configuration */
982a88731a6SGerlando Falauto 	wdt83xx_t		wdt;		/* Watch Dog Timer (WDT) Registers */
983a88731a6SGerlando Falauto 	rtclk83xx_t		rtc;		/* Real Time Clock Module Registers */
984a88731a6SGerlando Falauto 	rtclk83xx_t		pit;		/* Periodic Interval Timer */
985a88731a6SGerlando Falauto 	gtm83xx_t		gtm[2];		/* Global Timers Module */
986a88731a6SGerlando Falauto 	ipic83xx_t		ipic;		/* Integrated Programmable Interrupt Controller */
987a88731a6SGerlando Falauto 	arbiter83xx_t		arbiter;	/* System Arbiter Registers */
988a88731a6SGerlando Falauto 	reset83xx_t		reset;		/* Reset Module */
989a88731a6SGerlando Falauto 	clk83xx_t		clk;		/* System Clock Module */
990a88731a6SGerlando Falauto 	pmc83xx_t		pmc;		/* Power Management Control Module */
991a88731a6SGerlando Falauto 	gpio83xx_t		gpio[2];	/* General purpose I/O module */
992a88731a6SGerlando Falauto 	u8			res0[0x500];	/* res0 1.25 KBytes added for 8309 */
993a88731a6SGerlando Falauto 	qepi83xx_t		qepi;		/* QE Ports Interrupts Registers */
994a88731a6SGerlando Falauto 	qepio83xx_t		qepio;		/* QE Parallel I/O ports */
995a88731a6SGerlando Falauto 	u8			res1[0x800];
996a88731a6SGerlando Falauto 	ddr83xx_t		ddr;		/* DDR Memory Controller Memory */
997a88731a6SGerlando Falauto 	fsl_i2c_t		i2c[2];		/* I2C Controllers */
998a88731a6SGerlando Falauto 	u8			res2[0x1300];
999a88731a6SGerlando Falauto 	duart83xx_t		duart[2];	/* DUART */
1000a88731a6SGerlando Falauto 	u8			res3[0x200];
1001a88731a6SGerlando Falauto 	duart83xx_t		duart1[2];	/* DUART */
1002a88731a6SGerlando Falauto 	u8			res4[0x500];
1003a88731a6SGerlando Falauto 	fsl_lbc_t		im_lbc;		/* Local Bus Controller Regs */
1004a88731a6SGerlando Falauto 	u8			res5[0x1000];
1005a88731a6SGerlando Falauto 	u8			spi[0x100];
1006a88731a6SGerlando Falauto 	u8			res6[0xf00];
1007a88731a6SGerlando Falauto 	dma83xx_t		dma;		/* DMA */
1008a88731a6SGerlando Falauto 	pciconf83xx_t		pci_conf[1];	/* PCI Configuration Registers */
1009a88731a6SGerlando Falauto 	u8			res7[0x80];
1010a88731a6SGerlando Falauto 	ios83xx_t		ios;		/* Sequencer (IOS) */
1011a88731a6SGerlando Falauto 	pcictrl83xx_t		pci_ctrl[1];	/* PCI Control & Status Registers */
1012a88731a6SGerlando Falauto 	u8			res8[0x13A00];
1013a88731a6SGerlando Falauto 	u8			can1[0x1000];	/* Flexcan 1 */
1014a88731a6SGerlando Falauto 	u8			can2[0x1000];	/* Flexcan 2 */
1015a88731a6SGerlando Falauto 	u8			res9[0x5000];
1016a88731a6SGerlando Falauto 	usb83xx_t		usb;
1017a88731a6SGerlando Falauto 	u8			res10[0x5000];
1018a88731a6SGerlando Falauto 	u8			can3[0x1000];	/* Flexcan 3 */
1019a88731a6SGerlando Falauto 	u8			can4[0x1000];	/* Flexcan 4 */
1020a88731a6SGerlando Falauto 	u8			res11[0x1000];
1021a88731a6SGerlando Falauto 	u8			dma1[0x2000];	/* DMA */
1022a88731a6SGerlando Falauto 	sdhc83xx_t		sdhc;		/* SDHC Controller */
1023a88731a6SGerlando Falauto 	u8			res12[0xC1000];
1024a88731a6SGerlando Falauto 	rom83xx_t		rom;		/* On Chip ROM */
1025a88731a6SGerlando Falauto 	u8			res13[0x8000];
1026a88731a6SGerlando Falauto 	u8			qe[0x100000];	/* QE block */
1027a88731a6SGerlando Falauto 	u8			res14[0xE00000];/* Added for 8309 */
1028a88731a6SGerlando Falauto } immap_t;
1029a47a12beSStefan Roese #endif
1030a47a12beSStefan Roese 
1031e76cd5d4SAndy Fleming #define CONFIG_SYS_MPC8xxx_DDR_OFFSET	(0x2000)
1032e76cd5d4SAndy Fleming #define CONFIG_SYS_MPC8xxx_DDR_ADDR \
1033e76cd5d4SAndy Fleming 			(CONFIG_SYS_IMMR + CONFIG_SYS_MPC8xxx_DDR_OFFSET)
1034a47a12beSStefan Roese #define CONFIG_SYS_MPC83xx_DMA_OFFSET	(0x8000)
1035d29d17d7SYork Sun #define CONFIG_SYS_MPC83xx_DMA_ADDR \
1036d29d17d7SYork Sun 			(CONFIG_SYS_IMMR + CONFIG_SYS_MPC83xx_DMA_OFFSET)
1037a47a12beSStefan Roese #define CONFIG_SYS_MPC83xx_ESDHC_OFFSET	(0x2e000)
1038d29d17d7SYork Sun #define CONFIG_SYS_MPC83xx_ESDHC_ADDR \
1039d29d17d7SYork Sun 			(CONFIG_SYS_IMMR + CONFIG_SYS_MPC83xx_ESDHC_OFFSET)
1040a47a12beSStefan Roese 
104177354e9dSramneek mehresh #ifndef CONFIG_SYS_MPC83xx_USB1_OFFSET
104277354e9dSramneek mehresh #define CONFIG_SYS_MPC83xx_USB1_OFFSET  0x23000
1043a47a12beSStefan Roese #endif
104477354e9dSramneek mehresh #define CONFIG_SYS_MPC83xx_USB1_ADDR \
104577354e9dSramneek mehresh 			(CONFIG_SYS_IMMR + CONFIG_SYS_MPC83xx_USB1_OFFSET)
104677354e9dSramneek mehresh #if defined(CONFIG_MPC834x)
104777354e9dSramneek mehresh #define CONFIG_SYS_MPC83xx_USB2_ADDR \
104877354e9dSramneek mehresh 			(CONFIG_SYS_IMMR + CONFIG_SYS_MPC83xx_USB2_OFFSET)
104977354e9dSramneek mehresh #endif
1050f51cdaf1SBecky Bruce #define CONFIG_SYS_LBC_ADDR (&((immap_t *)CONFIG_SYS_IMMR)->im_lbc)
1051a47a12beSStefan Roese 
1052a47a12beSStefan Roese #define CONFIG_SYS_TSEC1_OFFSET		0x24000
1053a47a12beSStefan Roese #define CONFIG_SYS_MDIO1_OFFSET		0x24000
1054a47a12beSStefan Roese 
1055a47a12beSStefan Roese #define TSEC_BASE_ADDR		(CONFIG_SYS_IMMR + CONFIG_SYS_TSEC1_OFFSET)
1056a47a12beSStefan Roese #define MDIO_BASE_ADDR		(CONFIG_SYS_IMMR + CONFIG_SYS_MDIO1_OFFSET)
1057a47a12beSStefan Roese #endif				/* __IMMAP_83xx__ */
1058