immap_83xx.h 20.4 KB
Newer Older
Eran Liberty's avatar
Eran Liberty committed
1
/*
2 3 4 5
 * (C) Copyright 2004-2006 Freescale Semiconductor, Inc.
 *
 * MPC83xx Internal Memory Map
 *
6 7 8 9 10
 * Contributors:
 *	Dave Liu <daveliu@freescale.com>
 *	Tanya Jiang <tanya.jiang@freescale.com>
 *	Mandy Lavi <mandy.lavi@freescale.com>
 *	Eran Liberty <liberty@freescale.com>
11 12 13 14 15 16 17 18
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 21 22 23 24 25
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 * MA 02111-1307 USA
26
 *
Eran Liberty's avatar
Eran Liberty committed
27
 */
28 29
#ifndef __IMMAP_83xx__
#define __IMMAP_83xx__
Eran Liberty's avatar
Eran Liberty committed
30 31

#include <asm/types.h>
32
#include <asm/fsl_i2c.h>
Eran Liberty's avatar
Eran Liberty committed
33

34
/*
35
 * Local Access Window
Eran Liberty's avatar
Eran Liberty committed
36
 */
37
typedef struct law83xx {
38 39
	u32 bar;		/* LBIU local access window base address register */
	u32 ar;			/* LBIU local access window attribute register */
40
} law83xx_t;
Eran Liberty's avatar
Eran Liberty committed
41

42
/*
43
 * System configuration registers
Eran Liberty's avatar
Eran Liberty committed
44
 */
45
typedef struct sysconf83xx {
46
	u32 immrbar;		/* Internal memory map base address register */
Eran Liberty's avatar
Eran Liberty committed
47
	u8 res0[0x04];
48
	u32 altcbar;		/* Alternate configuration base address register */
Eran Liberty's avatar
Eran Liberty committed
49
	u8 res1[0x14];
50
	law83xx_t lblaw[4];	/* LBIU local access window */
Eran Liberty's avatar
Eran Liberty committed
51
	u8 res2[0x20];
52
	law83xx_t pcilaw[2];	/* PCI local access window */
Eran Liberty's avatar
Eran Liberty committed
53
	u8 res3[0x30];
54
	law83xx_t ddrlaw[2];	/* DDR local access window */
Eran Liberty's avatar
Eran Liberty committed
55
	u8 res4[0x50];
56 57 58
	u32 sgprl;		/* System General Purpose Register Low */
	u32 sgprh;		/* System General Purpose Register High */
	u32 spridr;		/* System Part and Revision ID Register */
Eran Liberty's avatar
Eran Liberty committed
59
	u8 res5[0x04];
60
	u32 spcr;		/* System Priority Configuration Register */
61 62
	u32 sicrl;		/* System I/O Configuration Register Low */
	u32 sicrh;		/* System I/O Configuration Register High */
63 64 65 66
	u8 res6[0x0C];
	u32 ddrcdr;		/* DDR Control Driver Register */
	u32 ddrdsr;		/* DDR Debug Status Register */
	u8 res7[0xD0];
67
} sysconf83xx_t;
Eran Liberty's avatar
Eran Liberty committed
68

69
/*
Eran Liberty's avatar
Eran Liberty committed
70 71
 * Watch Dog Timer (WDT) Registers
 */
72
typedef struct wdt83xx {
73
	u8 res0[4];
74 75
	u32 swcrr;		/* System watchdog control register */
	u32 swcnr;		/* System watchdog count register */
76
	u8 res1[2];
77
	u16 swsrr;		/* System watchdog service register */
Eran Liberty's avatar
Eran Liberty committed
78
	u8 res2[0xF0];
79
} wdt83xx_t;
80

Eran Liberty's avatar
Eran Liberty committed
81 82 83
/*
 * RTC/PIT Module Registers
 */
84
typedef struct rtclk83xx {
85 86 87
	u32 cnr;		/* control register */
	u32 ldr;		/* load register */
	u32 psr;		/* prescale register */
88
	u32 ctr;		/* counter value field register */
89 90
	u32 evr;		/* event register */
	u32 alr;		/* alarm register */
Eran Liberty's avatar
Eran Liberty committed
91
	u8 res0[0xE8];
92
} rtclk83xx_t;
Eran Liberty's avatar
Eran Liberty committed
93 94

/*
95
 * Global timer module
Eran Liberty's avatar
Eran Liberty committed
96
 */
97
typedef struct gtm83xx {
98
	u8 cfr1;		/* Timer1/2 Configuration */
99
	u8 res0[3];
100
	u8 cfr2;		/* Timer3/4 Configuration */
101
	u8 res1[10];
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
	u16 mdr1;		/* Timer1 Mode Register */
	u16 mdr2;		/* Timer2 Mode Register */
	u16 rfr1;		/* Timer1 Reference Register */
	u16 rfr2;		/* Timer2 Reference Register */
	u16 cpr1;		/* Timer1 Capture Register */
	u16 cpr2;		/* Timer2 Capture Register */
	u16 cnr1;		/* Timer1 Counter Register */
	u16 cnr2;		/* Timer2 Counter Register */
	u16 mdr3;		/* Timer3 Mode Register */
	u16 mdr4;		/* Timer4 Mode Register */
	u16 rfr3;		/* Timer3 Reference Register */
	u16 rfr4;		/* Timer4 Reference Register */
	u16 cpr3;		/* Timer3 Capture Register */
	u16 cpr4;		/* Timer4 Capture Register */
	u16 cnr3;		/* Timer3 Counter Register */
	u16 cnr4;		/* Timer4 Counter Register */
	u16 evr1;		/* Timer1 Event Register */
	u16 evr2;		/* Timer2 Event Register */
	u16 evr3;		/* Timer3 Event Register */
	u16 evr4;		/* Timer4 Event Register */
	u16 psr1;		/* Timer1 Prescaler Register */
	u16 psr2;		/* Timer2 Prescaler Register */
	u16 psr3;		/* Timer3 Prescaler Register */
	u16 psr4;		/* Timer4 Prescaler Register */
126
	u8 res[0xC0];
127
} gtm83xx_t;
Eran Liberty's avatar
Eran Liberty committed
128 129 130 131

/*
 * Integrated Programmable Interrupt Controller
 */
132
typedef struct ipic83xx {
133 134 135 136 137
	u32 sicfr;		/* System Global Interrupt Configuration Register */
	u32 sivcr;		/* System Global Interrupt Vector Register */
	u32 sipnr_h;		/* System Internal Interrupt Pending Register - High */
	u32 sipnr_l;		/* System Internal Interrupt Pending Register - Low */
	u32 siprr_a;		/* System Internal Interrupt Group A Priority Register */
138
	u8 res0[8];
139 140 141
	u32 siprr_d;		/* System Internal Interrupt Group D Priority Register */
	u32 simsr_h;		/* System Internal Interrupt Mask Register - High */
	u32 simsr_l;		/* System Internal Interrupt Mask Register - Low */
142
	u8 res1[4];
143 144 145 146 147 148 149 150
	u32 sepnr;		/* System External Interrupt Pending Register */
	u32 smprr_a;		/* System Mixed Interrupt Group A Priority Register */
	u32 smprr_b;		/* System Mixed Interrupt Group B Priority Register */
	u32 semsr;		/* System External Interrupt Mask Register */
	u32 secnr;		/* System External Interrupt Control Register */
	u32 sersr;		/* System Error Status Register */
	u32 sermr;		/* System Error Mask Register */
	u32 sercr;		/* System Error Control Register */
151
	u8 res2[4];
152 153 154 155
	u32 sifcr_h;		/* System Internal Interrupt Force Register - High */
	u32 sifcr_l;		/* System Internal Interrupt Force Register - Low */
	u32 sefcr;		/* System External Interrupt Force Register */
	u32 serfr;		/* System Error Force Register */
156 157 158
	u32 scvcr;		/* System Critical Interrupt Vector Register */
	u32 smvcr;		/* System Management Interrupt Vector Register */
	u8 res3[0x98];
159
} ipic83xx_t;
Eran Liberty's avatar
Eran Liberty committed
160 161 162 163

/*
 * System Arbiter Registers
 */
164
typedef struct arbiter83xx {
165 166
	u32 acr;		/* Arbiter Configuration Register */
	u32 atr;		/* Arbiter Timers Register */
Eran Liberty's avatar
Eran Liberty committed
167
	u8 res[4];
168 169 170
	u32 aer;		/* Arbiter Event Register */
	u32 aidr;		/* Arbiter Interrupt Definition Register */
	u32 amr;		/* Arbiter Mask Register */
171 172
	u32 aeatr;		/* Arbiter Event Attributes Register */
	u32 aeadr;		/* Arbiter Event Address Register */
173
	u32 aerr;		/* Arbiter Event Response Register */
Eran Liberty's avatar
Eran Liberty committed
174
	u8 res1[0xDC];
175
} arbiter83xx_t;
Eran Liberty's avatar
Eran Liberty committed
176 177 178 179

/*
 * Reset Module
 */
180
typedef struct reset83xx {
181 182
	u32 rcwl;		/* Reset Configuration Word Low Register */
	u32 rcwh;		/* Reset Configuration Word High Register */
183
	u8 res0[8];
184 185 186 187 188
	u32 rsr;		/* Reset Status Register */
	u32 rmr;		/* Reset Mode Register */
	u32 rpr;		/* Reset protection Register */
	u32 rcr;		/* Reset Control Register */
	u32 rcer;		/* Reset Control Enable Register */
189
	u8 res1[0xDC];
190
} reset83xx_t;
191

192 193 194
/*
 * Clock Module
 */
195
typedef struct clk83xx {
196 197 198
	u32 spmr;		/* system PLL mode Register */
	u32 occr;		/* output clock control Register */
	u32 sccr;		/* system clock control Register */
199
	u8 res0[0xF4];
200
} clk83xx_t;
Eran Liberty's avatar
Eran Liberty committed
201 202 203 204

/*
 * Power Management Control Module
 */
205
typedef struct pmc83xx {
206 207 208
	u32 pmccr;		/* PMC Configuration Register */
	u32 pmcer;		/* PMC Event Register */
	u32 pmcmr;		/* PMC Mask Register */
Eran Liberty's avatar
Eran Liberty committed
209
	u8 res0[0xF4];
210
} pmc83xx_t;
Eran Liberty's avatar
Eran Liberty committed
211 212

/*
213
 * General purpose I/O module
Eran Liberty's avatar
Eran Liberty committed
214
 */
215
typedef struct gpio83xx {
216 217 218 219 220 221
	u32 dir;		/* direction register */
	u32 odr;		/* open drain register */
	u32 dat;		/* data register */
	u32 ier;		/* interrupt event register */
	u32 imr;		/* interrupt mask register */
	u32 icr;		/* external interrupt control register */
Eran Liberty's avatar
Eran Liberty committed
222
	u8 res0[0xE8];
223
} gpio83xx_t;
224 225 226 227 228 229 230 231 232 233 234 235 236

/*
 * QE Ports Interrupts Registers
 */
typedef struct qepi83xx {
	u8 res0[0xC];
	u32 qepier;		/* QE Ports Interrupt Event Register */
	u32 qepimr;		/* QE Ports Interrupt Mask Register */
	u32 qepicr;		/* QE Ports Interrupt Control Register */
	u8 res1[0xE8];
} qepi83xx_t;

/*
237
 * QE Parallel I/O Ports
238 239 240 241 242 243 244 245 246 247
 */
typedef struct gpio_n {
	u32 podr;		/* Open Drain Register */
	u32 pdat;		/* Data Register */
	u32 dir1;		/* direction register 1 */
	u32 dir2;		/* direction register 2 */
	u32 ppar1;		/* Pin Assignment Register 1 */
	u32 ppar2;		/* Pin Assignment Register 2 */
} gpio_n_t;

248
typedef struct qegpio83xx {
249 250
	gpio_n_t ioport[0x7];
	u8 res0[0x358];
251
} qepio83xx_t;
252 253 254 255 256 257 258 259 260 261 262

/*
 * QE Secondary Bus Access Windows
 */
typedef struct qesba83xx {
	u32 lbmcsar;		/* Local bus memory controller start address */
	u32 sdmcsar;		/* Secondary DDR memory controller start address */
	u8 res0[0x38];
	u32 lbmcear;		/* Local bus memory controller end address */
	u32 sdmcear;		/* Secondary DDR memory controller end address */
	u8 res1[0x38];
263
	u32 lbmcar;		/* Local bus memory controller attributes */
264
	u32 sdmcar;		/* Secondary DDR memory controller attributes */
265
	u8 res2[0x378];
266
} qesba83xx_t;
Eran Liberty's avatar
Eran Liberty committed
267

268
/*
Eran Liberty's avatar
Eran Liberty committed
269 270
 * DDR Memory Controller Memory Map
 */
271
typedef struct ddr_cs_bnds {
272
	u32 csbnds;
273
	u8 res0[4];
Eran Liberty's avatar
Eran Liberty committed
274 275
} ddr_cs_bnds_t;

276
typedef struct ddr83xx {
277
	ddr_cs_bnds_t csbnds[4];/* Chip Select x Memory Bounds */
278
	u8 res0[0x60];
279
	u32 cs_config[4];	/* Chip Select x Configuration */
280 281 282
	u8 res1[0x70];
	u32 timing_cfg_3;	/* SDRAM Timing Configuration 3 */
	u32 timing_cfg_0;	/* SDRAM Timing Configuration 0 */
283 284 285
	u32 timing_cfg_1;	/* SDRAM Timing Configuration 1 */
	u32 timing_cfg_2;	/* SDRAM Timing Configuration 2 */
	u32 sdram_cfg;		/* SDRAM Control Configuration */
286
	u32 sdram_cfg2;		/* SDRAM Control Configuration 2 */
287
	u32 sdram_mode;		/* SDRAM Mode Configuration */
288 289
	u32 sdram_mode2;	/* SDRAM Mode Configuration 2 */
	u32 sdram_md_cntl;	/* SDRAM Mode Control */
290
	u32 sdram_interval;	/* SDRAM Interval Configuration */
291 292 293 294 295 296 297 298 299 300
	u32 ddr_data_init;	/* SDRAM Data Initialization */
	u8 res2[4];
	u32 sdram_clk_cntl;	/* SDRAM Clock Control */
	u8 res3[0x14];
	u32 ddr_init_addr;	/* DDR training initialization address */
	u32 ddr_init_ext_addr;	/* DDR training initialization extended address */
	u8 res4[0xAA8];
	u32 ddr_ip_rev1;	/* DDR IP block revision 1 */
	u32 ddr_ip_rev2;	/* DDR IP block revision 2 */
	u8 res5[0x200];
301 302 303
	u32 data_err_inject_hi;	/* Memory Data Path Error Injection Mask High */
	u32 data_err_inject_lo;	/* Memory Data Path Error Injection Mask Low */
	u32 ecc_err_inject;	/* Memory Data Path Error Injection Mask ECC */
304
	u8 res6[0x14];
305 306 307
	u32 capture_data_hi;	/* Memory Data Path Read Capture High */
	u32 capture_data_lo;	/* Memory Data Path Read Capture Low */
	u32 capture_ecc;	/* Memory Data Path Read Capture ECC */
308
	u8 res7[0x14];
309 310 311 312 313 314 315
	u32 err_detect;		/* Memory Error Detect */
	u32 err_disable;	/* Memory Error Disable */
	u32 err_int_en;		/* Memory Error Interrupt Enable */
	u32 capture_attributes;	/* Memory Error Attributes Capture */
	u32 capture_address;	/* Memory Error Address Capture */
	u32 capture_ext_address;/* Memory Error Extended Address Capture */
	u32 err_sbe;		/* Memory Single-Bit ECC Error Management */
316
	u8 res8[0xA4];
Eran Liberty's avatar
Eran Liberty committed
317
	u32 debug_reg;
318
	u8 res9[0xFC];
319
} ddr83xx_t;
Eran Liberty's avatar
Eran Liberty committed
320 321 322 323

/*
 * DUART
 */
324
typedef struct duart83xx {
325 326 327 328 329 330 331 332
	u8 urbr_ulcr_udlb;	/* combined register for URBR, UTHR and UDLB */
	u8 uier_udmb;		/* combined register for UIER and UDMB */
	u8 uiir_ufcr_uafr;	/* combined register for UIIR, UFCR and UAFR */
	u8 ulcr;		/* line control register */
	u8 umcr;		/* MODEM control register */
	u8 ulsr;		/* line status register */
	u8 umsr;		/* MODEM status register */
	u8 uscr;		/* scratch register */
333
	u8 res0[8];
334
	u8 udsr;		/* DMA status register */
335 336
	u8 res1[3];
	u8 res2[0xEC];
337
} duart83xx_t;
Eran Liberty's avatar
Eran Liberty committed
338 339 340 341

/*
 * Local Bus Controller Registers
 */
342
typedef struct lbus_bank {
343 344
	u32 br;			/* Base Register */
	u32 or;			/* Option Register */
Eran Liberty's avatar
Eran Liberty committed
345 346
} lbus_bank_t;

347
typedef struct lbus83xx {
348 349
	lbus_bank_t bank[8];
	u8 res0[0x28];
350
	u32 mar;		/* UPM Address Register */
351
	u8 res1[0x4];
352 353 354
	u32 mamr;		/* UPMA Mode Register */
	u32 mbmr;		/* UPMB Mode Register */
	u32 mcmr;		/* UPMC Mode Register */
355
	u8 res2[0x8];
356 357
	u32 mrtpr;		/* Memory Refresh Timer Prescaler Register */
	u32 mdr;		/* UPM Data Register */
358
	u8 res3[0x8];
359
	u32 lsdmr;		/* SDRAM Mode Register */
360
	u8 res4[0x8];
361 362
	u32 lurt;		/* UPM Refresh Timer */
	u32 lsrt;		/* SDRAM Refresh Timer */
363
	u8 res5[0x8];
364 365 366 367 368
	u32 ltesr;		/* Transfer Error Status Register */
	u32 ltedr;		/* Transfer Error Disable Register */
	u32 lteir;		/* Transfer Error Interrupt Register */
	u32 lteatr;		/* Transfer Error Attributes Register */
	u32 ltear;		/* Transfer Error Address Register */
369
	u8 res6[0xC];
370 371
	u32 lbcr;		/* Configuration Register */
	u32 lcrr;		/* Clock Ratio Register */
372 373
	u8 res7[0x28];
	u8 res8[0xF00];
374
} lbus83xx_t;
Eran Liberty's avatar
Eran Liberty committed
375 376 377 378

/*
 * Serial Peripheral Interface
 */
379
typedef struct spi83xx {
380 381 382 383
	u32 mode;		/* mode register */
	u32 event;		/* event register */
	u32 mask;		/* mask register */
	u32 com;		/* command register */
384
	u8 res0[0x10];
385 386 387
	u32 tx;			/* transmit register */
	u32 rx;			/* receive register */
	u8 res1[0xFD8];
388
} spi83xx_t;
389 390 391 392

/*
 * DMA/Messaging Unit
 */
393
typedef struct dma83xx {
394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453
	u32 res0[0xC];		/* 0x0-0x29 reseverd */
	u32 omisr;		/* 0x30 Outbound message interrupt status register */
	u32 omimr;		/* 0x34 Outbound message interrupt mask register */
	u32 res1[0x6];		/* 0x38-0x49 reserved */
	u32 imr0;		/* 0x50 Inbound message register 0 */
	u32 imr1;		/* 0x54 Inbound message register 1 */
	u32 omr0;		/* 0x58 Outbound message register 0 */
	u32 omr1;		/* 0x5C Outbound message register 1 */
	u32 odr;		/* 0x60 Outbound doorbell register */
	u32 res2;		/* 0x64-0x67 reserved */
	u32 idr;		/* 0x68 Inbound doorbell register */
	u32 res3[0x5];		/* 0x6C-0x79 reserved */
	u32 imisr;		/* 0x80 Inbound message interrupt status register */
	u32 imimr;		/* 0x84 Inbound message interrupt mask register */
	u32 res4[0x1E];		/* 0x88-0x99 reserved */
	u32 dmamr0;		/* 0x100 DMA 0 mode register */
	u32 dmasr0;		/* 0x104 DMA 0 status register */
	u32 dmacdar0;		/* 0x108 DMA 0 current descriptor address register */
	u32 res5;		/* 0x10C reserved */
	u32 dmasar0;		/* 0x110 DMA 0 source address register */
	u32 res6;		/* 0x114 reserved */
	u32 dmadar0;		/* 0x118 DMA 0 destination address register */
	u32 res7;		/* 0x11C reserved */
	u32 dmabcr0;		/* 0x120 DMA 0 byte count register */
	u32 dmandar0;		/* 0x124 DMA 0 next descriptor address register */
	u32 res8[0x16];		/* 0x128-0x179 reserved */
	u32 dmamr1;		/* 0x180 DMA 1 mode register */
	u32 dmasr1;		/* 0x184 DMA 1 status register */
	u32 dmacdar1;		/* 0x188 DMA 1 current descriptor address register */
	u32 res9;		/* 0x18C reserved */
	u32 dmasar1;		/* 0x190 DMA 1 source address register */
	u32 res10;		/* 0x194 reserved */
	u32 dmadar1;		/* 0x198 DMA 1 destination address register */
	u32 res11;		/* 0x19C reserved */
	u32 dmabcr1;		/* 0x1A0 DMA 1 byte count register */
	u32 dmandar1;		/* 0x1A4 DMA 1 next descriptor address register */
	u32 res12[0x16];	/* 0x1A8-0x199 reserved */
	u32 dmamr2;		/* 0x200 DMA 2 mode register */
	u32 dmasr2;		/* 0x204 DMA 2 status register */
	u32 dmacdar2;		/* 0x208 DMA 2 current descriptor address register */
	u32 res13;		/* 0x20C reserved */
	u32 dmasar2;		/* 0x210 DMA 2 source address register */
	u32 res14;		/* 0x214 reserved */
	u32 dmadar2;		/* 0x218 DMA 2 destination address register */
	u32 res15;		/* 0x21C reserved */
	u32 dmabcr2;		/* 0x220 DMA 2 byte count register */
	u32 dmandar2;		/* 0x224 DMA 2 next descriptor address register */
	u32 res16[0x16];	/* 0x228-0x279 reserved */
	u32 dmamr3;		/* 0x280 DMA 3 mode register */
	u32 dmasr3;		/* 0x284 DMA 3 status register */
	u32 dmacdar3;		/* 0x288 DMA 3 current descriptor address register */
	u32 res17;		/* 0x28C reserved */
	u32 dmasar3;		/* 0x290 DMA 3 source address register */
	u32 res18;		/* 0x294 reserved */
	u32 dmadar3;		/* 0x298 DMA 3 destination address register */
	u32 res19;		/* 0x29C reserved */
	u32 dmabcr3;		/* 0x2A0 DMA 3 byte count register */
	u32 dmandar3;		/* 0x2A4 DMA 3 next descriptor address register */
	u32 dmagsr;		/* 0x2A8 DMA general status register */
	u32 res20[0x15];	/* 0x2AC-0x2FF reserved */
454
} dma83xx_t;
Eran Liberty's avatar
Eran Liberty committed
455 456 457 458

/*
 * PCI Software Configuration Registers
 */
459
typedef struct pciconf83xx {
460
	u32 config_address;
Eran Liberty's avatar
Eran Liberty committed
461 462
	u32 config_data;
	u32 int_ack;
463
	u8 res[116];
464
} pciconf83xx_t;
Eran Liberty's avatar
Eran Liberty committed
465 466 467 468 469

/*
 * PCI Outbound Translation Register
 */
typedef struct pci_outbound_window {
470 471 472 473 474 475
	u32 potar;
	u8 res0[4];
	u32 pobar;
	u8 res1[4];
	u32 pocmr;
	u8 res2[4];
476
} pot83xx_t;
477

Eran Liberty's avatar
Eran Liberty committed
478 479
/*
 * Sequencer
480
 */
481
typedef struct ios83xx {
482 483 484 485 486 487
	pot83xx_t pot[6];
	u8 res0[0x60];
	u32 pmcr;
	u8 res1[4];
	u32 dtcr;
	u8 res2[4];
488
} ios83xx_t;
Eran Liberty's avatar
Eran Liberty committed
489 490 491 492

/*
 * PCI Controller Control and Status Registers
 */
493
typedef struct pcictrl83xx {
494 495
	u32 esr;
	u32 ecdr;
Eran Liberty's avatar
Eran Liberty committed
496
	u32 eer;
497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523
	u32 eatcr;
	u32 eacr;
	u32 eeacr;
	u32 edlcr;
	u32 edhcr;
	u32 gcr;
	u32 ecr;
	u32 gsr;
	u8 res0[12];
	u32 pitar2;
	u8 res1[4];
	u32 pibar2;
	u32 piebar2;
	u32 piwar2;
	u8 res2[4];
	u32 pitar1;
	u8 res3[4];
	u32 pibar1;
	u32 piebar1;
	u32 piwar1;
	u8 res4[4];
	u32 pitar0;
	u8 res5[4];
	u32 pibar0;
	u8 res6[4];
	u32 piwar0;
	u8 res7[132];
524
} pcictrl83xx_t;
Eran Liberty's avatar
Eran Liberty committed
525 526

/*
527
 * USB
Eran Liberty's avatar
Eran Liberty committed
528
 */
529
typedef struct usb83xx {
Eran Liberty's avatar
Eran Liberty committed
530
	u8 fixme[0x2000];
531
} usb83xx_t;
Eran Liberty's avatar
Eran Liberty committed
532 533 534 535

/*
 * TSEC
 */
536
typedef struct tsec83xx {
Eran Liberty's avatar
Eran Liberty committed
537
	u8 fixme[0x1000];
538
} tsec83xx_t;
Eran Liberty's avatar
Eran Liberty committed
539 540 541 542

/*
 * Security
 */
543
typedef struct security83xx {
Eran Liberty's avatar
Eran Liberty committed
544
	u8 fixme[0x10000];
545
} security83xx_t;
Eran Liberty's avatar
Eran Liberty committed
546

547
#if defined(CONFIG_MPC834X)
548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582
typedef struct immap {
	sysconf83xx_t		sysconf;	/* System configuration */
	wdt83xx_t		wdt;		/* Watch Dog Timer (WDT) Registers */
	rtclk83xx_t		rtc;		/* Real Time Clock Module Registers */
	rtclk83xx_t		pit;		/* Periodic Interval Timer */
	gtm83xx_t		gtm[2];		/* Global Timers Module */
	ipic83xx_t		ipic;		/* Integrated Programmable Interrupt Controller */
	arbiter83xx_t		arbiter;	/* System Arbiter Registers */
	reset83xx_t		reset;		/* Reset Module */
	clk83xx_t		clk;		/* System Clock Module */
	pmc83xx_t		pmc;		/* Power Management Control Module */
	gpio83xx_t		gpio[2];	/* General purpose I/O module */
	u8			res0[0x200];
	u8			dll_ddr[0x100];
	u8			dll_lbc[0x100];
	u8			res1[0xE00];
	ddr83xx_t		ddr;		/* DDR Memory Controller Memory */
	fsl_i2c_t		i2c[2];		/* I2C Controllers */
	u8			res2[0x1300];
	duart83xx_t		duart[2];	/* DUART */
	u8			res3[0x900];
	lbus83xx_t		lbus;		/* Local Bus Controller Registers */
	u8			res4[0x1000];
	spi83xx_t		spi;		/* Serial Peripheral Interface */
	dma83xx_t		dma;		/* DMA */
	pciconf83xx_t		pci_conf[2];	/* PCI Software Configuration Registers */
	ios83xx_t		ios;		/* Sequencer */
	pcictrl83xx_t		pci_ctrl[2];	/* PCI Controller Control and Status Registers */
	u8			res5[0x19900];
	usb83xx_t		usb;
	tsec83xx_t		tsec[2];
	u8			res6[0xA000];
	security83xx_t		security;
	u8			res7[0xC0000];
} immap_t;
583

584
#elif defined(CONFIG_MPC8360)
Eran Liberty's avatar
Eran Liberty committed
585
typedef struct immap {
586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621
	sysconf83xx_t		sysconf;	/* System configuration */
	wdt83xx_t		wdt;		/* Watch Dog Timer (WDT) Registers */
	rtclk83xx_t		rtc;		/* Real Time Clock Module Registers */
	rtclk83xx_t		pit;		/* Periodic Interval Timer */
	u8			res0[0x200];
	ipic83xx_t		ipic;		/* Integrated Programmable Interrupt Controller */
	arbiter83xx_t		arbiter;	/* System Arbiter Registers */
	reset83xx_t		reset;		/* Reset Module */
	clk83xx_t		clk;		/* System Clock Module */
	pmc83xx_t		pmc;		/* Power Management Control Module */
	qepi83xx_t		qepi;		/* QE Ports Interrupts Registers */
	u8			res1[0x300];
	u8			dll_ddr[0x100];
	u8			dll_lbc[0x100];
	u8			res2[0x200];
	qepio83xx_t		qepio;		/* QE Parallel I/O ports */
	qesba83xx_t		qesba;		/* QE Secondary Bus Access Windows */
	u8			res3[0x400];
	ddr83xx_t		ddr;		/* DDR Memory Controller Memory */
	fsl_i2c_t		i2c[2];		/* I2C Controllers */
	u8			res4[0x1300];
	duart83xx_t		duart[2];	/* DUART */
	u8			res5[0x900];
	lbus83xx_t		lbus;		/* Local Bus Controller Registers */
	u8			res6[0x2000];
	dma83xx_t		dma;		/* DMA */
	pciconf83xx_t		pci_conf[1];	/* PCI Software Configuration Registers */
	u8			res7[128];
	ios83xx_t		ios;		/* Sequencer (IOS) */
	pcictrl83xx_t		pci_ctrl[1];	/* PCI Controller Control and Status Registers */
	u8			res8[0x4A00];
	ddr83xx_t		ddr_secondary;	/* Secondary DDR Memory Controller Memory Map */
	u8			res9[0x22000];
	security83xx_t		security;
	u8			res10[0xC0000];
	u8			qe[0x100000];	/* QE block */
Eran Liberty's avatar
Eran Liberty committed
622
} immap_t;
623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659

#elif defined(CONFIG_MPC832X)
typedef struct immap {
	sysconf83xx_t		sysconf;	/* System configuration */
	wdt83xx_t		wdt;		/* Watch Dog Timer (WDT) Registers */
	rtclk83xx_t		rtc;		/* Real Time Clock Module Registers */
	rtclk83xx_t		pit;		/* Periodic Interval Timer */
	gtm83xx_t		gtm[2];		/* Global Timers Module */
	ipic83xx_t		ipic;		/* Integrated Programmable Interrupt Controller */
	arbiter83xx_t		arbiter;	/* System Arbiter Registers */
	reset83xx_t		reset;		/* Reset Module */
	clk83xx_t		clk;		/* System Clock Module */
	pmc83xx_t		pmc;		/* Power Management Control Module */
	qepi83xx_t		qepi;		/* QE Ports Interrupts Registers */
	u8			res0[0x300];
	u8			dll_ddr[0x100];
	u8			dll_lbc[0x100];
	u8			res1[0x200];
	qepio83xx_t		qepio;		/* QE Parallel I/O ports */
	u8			res2[0x800];
	ddr83xx_t		ddr;		/* DDR Memory Controller Memory */
	fsl_i2c_t		i2c[2];		/* I2C Controllers */
	u8			res3[0x1300];
	duart83xx_t		duart[2];	/* DUART */
	u8			res4[0x900];
	lbus83xx_t		lbus;		/* Local Bus Controller Registers */
	u8			res5[0x2000];
	dma83xx_t		dma;		/* DMA */
	pciconf83xx_t		pci_conf[1];	/* PCI Software Configuration Registers */
	u8			res6[128];
	ios83xx_t		ios;		/* Sequencer (IOS) */
	pcictrl83xx_t		pci_ctrl[1];	/* PCI Controller Control and Status Registers */
	u8			res7[0x27A00];
	security83xx_t		security;
	u8			res8[0xC0000];
	u8			qe[0x100000];	/* QE block */
} immap_t;
660
#endif
Eran Liberty's avatar
Eran Liberty committed
661

662
#endif				/* __IMMAP_83xx__ */