immap_83xx.h 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898
  1. /*
  2. * (C) Copyright 2004-2007 Freescale Semiconductor, Inc.
  3. *
  4. * MPC83xx Internal Memory Map
  5. *
  6. * Contributors:
  7. * Dave Liu <daveliu@freescale.com>
  8. * Tanya Jiang <tanya.jiang@freescale.com>
  9. * Mandy Lavi <mandy.lavi@freescale.com>
  10. * Eran Liberty <liberty@freescale.com>
  11. *
  12. * This program is free software; you can redistribute it and/or
  13. * modify it under the terms of the GNU General Public License as
  14. * published by the Free Software Foundation; either version 2 of
  15. * the License, or (at your option) any later version.
  16. *
  17. * This program is distributed in the hope that it will be useful,
  18. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  19. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  20. * GNU General Public License for more details.
  21. *
  22. * You should have received a copy of the GNU General Public License
  23. * along with this program; if not, write to the Free Software
  24. * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  25. * MA 02111-1307 USA
  26. *
  27. */
  28. #ifndef __IMMAP_83xx__
  29. #define __IMMAP_83xx__
  30. #include <asm/types.h>
  31. #include <asm/fsl_i2c.h>
  32. #include <asm/mpc8xxx_spi.h>
  33. #include <asm/fsl_lbc.h>
  34. /*
  35. * Local Access Window
  36. */
  37. typedef struct law83xx {
  38. u32 bar; /* LBIU local access window base address register */
  39. u32 ar; /* LBIU local access window attribute register */
  40. } law83xx_t;
  41. /*
  42. * System configuration registers
  43. */
  44. typedef struct sysconf83xx {
  45. u32 immrbar; /* Internal memory map base address register */
  46. u8 res0[0x04];
  47. u32 altcbar; /* Alternate configuration base address register */
  48. u8 res1[0x14];
  49. law83xx_t lblaw[4]; /* LBIU local access window */
  50. u8 res2[0x20];
  51. law83xx_t pcilaw[2]; /* PCI local access window */
  52. u8 res3[0x10];
  53. law83xx_t pcielaw[2]; /* PCI Express local access window */
  54. u8 res4[0x10];
  55. law83xx_t ddrlaw[2]; /* DDR local access window */
  56. u8 res5[0x50];
  57. u32 sgprl; /* System General Purpose Register Low */
  58. u32 sgprh; /* System General Purpose Register High */
  59. u32 spridr; /* System Part and Revision ID Register */
  60. u8 res6[0x04];
  61. u32 spcr; /* System Priority Configuration Register */
  62. u32 sicrl; /* System I/O Configuration Register Low */
  63. u32 sicrh; /* System I/O Configuration Register High */
  64. u8 res7[0x04];
  65. u32 sidcr0; /* System I/O Delay Configuration Register 0 */
  66. u32 sidcr1; /* System I/O Delay Configuration Register 1 */
  67. u32 ddrcdr; /* DDR Control Driver Register */
  68. u32 ddrdsr; /* DDR Debug Status Register */
  69. u32 obir; /* Output Buffer Impedance Register */
  70. u8 res8[0xC];
  71. u32 pecr1; /* PCI Express control register 1 */
  72. u32 pecr2; /* PCI Express control register 2 */
  73. u8 res9[0xB8];
  74. } sysconf83xx_t;
  75. /*
  76. * Watch Dog Timer (WDT) Registers
  77. */
  78. typedef struct wdt83xx {
  79. u8 res0[4];
  80. u32 swcrr; /* System watchdog control register */
  81. u32 swcnr; /* System watchdog count register */
  82. u8 res1[2];
  83. u16 swsrr; /* System watchdog service register */
  84. u8 res2[0xF0];
  85. } wdt83xx_t;
  86. /*
  87. * RTC/PIT Module Registers
  88. */
  89. typedef struct rtclk83xx {
  90. u32 cnr; /* control register */
  91. u32 ldr; /* load register */
  92. u32 psr; /* prescale register */
  93. u32 ctr; /* counter value field register */
  94. u32 evr; /* event register */
  95. u32 alr; /* alarm register */
  96. u8 res0[0xE8];
  97. } rtclk83xx_t;
  98. /*
  99. * Global timer module
  100. */
  101. typedef struct gtm83xx {
  102. u8 cfr1; /* Timer1/2 Configuration */
  103. u8 res0[3];
  104. u8 cfr2; /* Timer3/4 Configuration */
  105. u8 res1[10];
  106. u16 mdr1; /* Timer1 Mode Register */
  107. u16 mdr2; /* Timer2 Mode Register */
  108. u16 rfr1; /* Timer1 Reference Register */
  109. u16 rfr2; /* Timer2 Reference Register */
  110. u16 cpr1; /* Timer1 Capture Register */
  111. u16 cpr2; /* Timer2 Capture Register */
  112. u16 cnr1; /* Timer1 Counter Register */
  113. u16 cnr2; /* Timer2 Counter Register */
  114. u16 mdr3; /* Timer3 Mode Register */
  115. u16 mdr4; /* Timer4 Mode Register */
  116. u16 rfr3; /* Timer3 Reference Register */
  117. u16 rfr4; /* Timer4 Reference Register */
  118. u16 cpr3; /* Timer3 Capture Register */
  119. u16 cpr4; /* Timer4 Capture Register */
  120. u16 cnr3; /* Timer3 Counter Register */
  121. u16 cnr4; /* Timer4 Counter Register */
  122. u16 evr1; /* Timer1 Event Register */
  123. u16 evr2; /* Timer2 Event Register */
  124. u16 evr3; /* Timer3 Event Register */
  125. u16 evr4; /* Timer4 Event Register */
  126. u16 psr1; /* Timer1 Prescaler Register */
  127. u16 psr2; /* Timer2 Prescaler Register */
  128. u16 psr3; /* Timer3 Prescaler Register */
  129. u16 psr4; /* Timer4 Prescaler Register */
  130. u8 res[0xC0];
  131. } gtm83xx_t;
  132. /*
  133. * Integrated Programmable Interrupt Controller
  134. */
  135. typedef struct ipic83xx {
  136. u32 sicfr; /* System Global Interrupt Configuration Register */
  137. u32 sivcr; /* System Global Interrupt Vector Register */
  138. u32 sipnr_h; /* System Internal Interrupt Pending Register - High */
  139. u32 sipnr_l; /* System Internal Interrupt Pending Register - Low */
  140. u32 siprr_a; /* System Internal Interrupt Group A Priority Register */
  141. u8 res0[8];
  142. u32 siprr_d; /* System Internal Interrupt Group D Priority Register */
  143. u32 simsr_h; /* System Internal Interrupt Mask Register - High */
  144. u32 simsr_l; /* System Internal Interrupt Mask Register - Low */
  145. u8 res1[4];
  146. u32 sepnr; /* System External Interrupt Pending Register */
  147. u32 smprr_a; /* System Mixed Interrupt Group A Priority Register */
  148. u32 smprr_b; /* System Mixed Interrupt Group B Priority Register */
  149. u32 semsr; /* System External Interrupt Mask Register */
  150. u32 secnr; /* System External Interrupt Control Register */
  151. u32 sersr; /* System Error Status Register */
  152. u32 sermr; /* System Error Mask Register */
  153. u32 sercr; /* System Error Control Register */
  154. u8 res2[4];
  155. u32 sifcr_h; /* System Internal Interrupt Force Register - High */
  156. u32 sifcr_l; /* System Internal Interrupt Force Register - Low */
  157. u32 sefcr; /* System External Interrupt Force Register */
  158. u32 serfr; /* System Error Force Register */
  159. u32 scvcr; /* System Critical Interrupt Vector Register */
  160. u32 smvcr; /* System Management Interrupt Vector Register */
  161. u8 res3[0x98];
  162. } ipic83xx_t;
  163. /*
  164. * System Arbiter Registers
  165. */
  166. typedef struct arbiter83xx {
  167. u32 acr; /* Arbiter Configuration Register */
  168. u32 atr; /* Arbiter Timers Register */
  169. u8 res[4];
  170. u32 aer; /* Arbiter Event Register */
  171. u32 aidr; /* Arbiter Interrupt Definition Register */
  172. u32 amr; /* Arbiter Mask Register */
  173. u32 aeatr; /* Arbiter Event Attributes Register */
  174. u32 aeadr; /* Arbiter Event Address Register */
  175. u32 aerr; /* Arbiter Event Response Register */
  176. u8 res1[0xDC];
  177. } arbiter83xx_t;
  178. /*
  179. * Reset Module
  180. */
  181. typedef struct reset83xx {
  182. u32 rcwl; /* Reset Configuration Word Low Register */
  183. u32 rcwh; /* Reset Configuration Word High Register */
  184. u8 res0[8];
  185. u32 rsr; /* Reset Status Register */
  186. u32 rmr; /* Reset Mode Register */
  187. u32 rpr; /* Reset protection Register */
  188. u32 rcr; /* Reset Control Register */
  189. u32 rcer; /* Reset Control Enable Register */
  190. u8 res1[0xDC];
  191. } reset83xx_t;
  192. /*
  193. * Clock Module
  194. */
  195. typedef struct clk83xx {
  196. u32 spmr; /* system PLL mode Register */
  197. u32 occr; /* output clock control Register */
  198. u32 sccr; /* system clock control Register */
  199. u8 res0[0xF4];
  200. } clk83xx_t;
  201. /*
  202. * Power Management Control Module
  203. */
  204. typedef struct pmc83xx {
  205. u32 pmccr; /* PMC Configuration Register */
  206. u32 pmcer; /* PMC Event Register */
  207. u32 pmcmr; /* PMC Mask Register */
  208. u32 pmccr1; /* PMC Configuration Register 1 */
  209. u32 pmccr2; /* PMC Configuration Register 2 */
  210. u8 res0[0xEC];
  211. } pmc83xx_t;
  212. /*
  213. * General purpose I/O module
  214. */
  215. typedef struct gpio83xx {
  216. u32 dir; /* direction register */
  217. u32 odr; /* open drain register */
  218. u32 dat; /* data register */
  219. u32 ier; /* interrupt event register */
  220. u32 imr; /* interrupt mask register */
  221. u32 icr; /* external interrupt control register */
  222. u8 res0[0xE8];
  223. } gpio83xx_t;
  224. /*
  225. * QE Ports Interrupts Registers
  226. */
  227. typedef struct qepi83xx {
  228. u8 res0[0xC];
  229. u32 qepier; /* QE Ports Interrupt Event Register */
  230. u32 qepimr; /* QE Ports Interrupt Mask Register */
  231. u32 qepicr; /* QE Ports Interrupt Control Register */
  232. u8 res1[0xE8];
  233. } qepi83xx_t;
  234. /*
  235. * QE Parallel I/O Ports
  236. */
  237. typedef struct gpio_n {
  238. u32 podr; /* Open Drain Register */
  239. u32 pdat; /* Data Register */
  240. u32 dir1; /* direction register 1 */
  241. u32 dir2; /* direction register 2 */
  242. u32 ppar1; /* Pin Assignment Register 1 */
  243. u32 ppar2; /* Pin Assignment Register 2 */
  244. } gpio_n_t;
  245. typedef struct qegpio83xx {
  246. gpio_n_t ioport[0x7];
  247. u8 res0[0x358];
  248. } qepio83xx_t;
  249. /*
  250. * QE Secondary Bus Access Windows
  251. */
  252. typedef struct qesba83xx {
  253. u32 lbmcsar; /* Local bus memory controller start address */
  254. u32 sdmcsar; /* Secondary DDR memory controller start address */
  255. u8 res0[0x38];
  256. u32 lbmcear; /* Local bus memory controller end address */
  257. u32 sdmcear; /* Secondary DDR memory controller end address */
  258. u8 res1[0x38];
  259. u32 lbmcar; /* Local bus memory controller attributes */
  260. u32 sdmcar; /* Secondary DDR memory controller attributes */
  261. u8 res2[0x378];
  262. } qesba83xx_t;
  263. /*
  264. * DDR Memory Controller Memory Map
  265. */
  266. typedef struct ddr_cs_bnds {
  267. u32 csbnds;
  268. u8 res0[4];
  269. } ddr_cs_bnds_t;
  270. typedef struct ddr83xx {
  271. ddr_cs_bnds_t csbnds[4];/* Chip Select x Memory Bounds */
  272. u8 res0[0x60];
  273. u32 cs_config[4]; /* Chip Select x Configuration */
  274. u8 res1[0x70];
  275. u32 timing_cfg_3; /* SDRAM Timing Configuration 3 */
  276. u32 timing_cfg_0; /* SDRAM Timing Configuration 0 */
  277. u32 timing_cfg_1; /* SDRAM Timing Configuration 1 */
  278. u32 timing_cfg_2; /* SDRAM Timing Configuration 2 */
  279. u32 sdram_cfg; /* SDRAM Control Configuration */
  280. u32 sdram_cfg2; /* SDRAM Control Configuration 2 */
  281. u32 sdram_mode; /* SDRAM Mode Configuration */
  282. u32 sdram_mode2; /* SDRAM Mode Configuration 2 */
  283. u32 sdram_md_cntl; /* SDRAM Mode Control */
  284. u32 sdram_interval; /* SDRAM Interval Configuration */
  285. u32 ddr_data_init; /* SDRAM Data Initialization */
  286. u8 res2[4];
  287. u32 sdram_clk_cntl; /* SDRAM Clock Control */
  288. u8 res3[0x14];
  289. u32 ddr_init_addr; /* DDR training initialization address */
  290. u32 ddr_init_ext_addr; /* DDR training initialization extended address */
  291. u8 res4[0xAA8];
  292. u32 ddr_ip_rev1; /* DDR IP block revision 1 */
  293. u32 ddr_ip_rev2; /* DDR IP block revision 2 */
  294. u8 res5[0x200];
  295. u32 data_err_inject_hi; /* Memory Data Path Error Injection Mask High */
  296. u32 data_err_inject_lo; /* Memory Data Path Error Injection Mask Low */
  297. u32 ecc_err_inject; /* Memory Data Path Error Injection Mask ECC */
  298. u8 res6[0x14];
  299. u32 capture_data_hi; /* Memory Data Path Read Capture High */
  300. u32 capture_data_lo; /* Memory Data Path Read Capture Low */
  301. u32 capture_ecc; /* Memory Data Path Read Capture ECC */
  302. u8 res7[0x14];
  303. u32 err_detect; /* Memory Error Detect */
  304. u32 err_disable; /* Memory Error Disable */
  305. u32 err_int_en; /* Memory Error Interrupt Enable */
  306. u32 capture_attributes; /* Memory Error Attributes Capture */
  307. u32 capture_address; /* Memory Error Address Capture */
  308. u32 capture_ext_address;/* Memory Error Extended Address Capture */
  309. u32 err_sbe; /* Memory Single-Bit ECC Error Management */
  310. u8 res8[0xA4];
  311. u32 debug_reg;
  312. u8 res9[0xFC];
  313. } ddr83xx_t;
  314. /*
  315. * DUART
  316. */
  317. typedef struct duart83xx {
  318. u8 urbr_ulcr_udlb; /* combined register for URBR, UTHR and UDLB */
  319. u8 uier_udmb; /* combined register for UIER and UDMB */
  320. u8 uiir_ufcr_uafr; /* combined register for UIIR, UFCR and UAFR */
  321. u8 ulcr; /* line control register */
  322. u8 umcr; /* MODEM control register */
  323. u8 ulsr; /* line status register */
  324. u8 umsr; /* MODEM status register */
  325. u8 uscr; /* scratch register */
  326. u8 res0[8];
  327. u8 udsr; /* DMA status register */
  328. u8 res1[3];
  329. u8 res2[0xEC];
  330. } duart83xx_t;
  331. /*
  332. * DMA/Messaging Unit
  333. */
  334. typedef struct dma83xx {
  335. u32 res0[0xC]; /* 0x0-0x29 reseverd */
  336. u32 omisr; /* 0x30 Outbound message interrupt status register */
  337. u32 omimr; /* 0x34 Outbound message interrupt mask register */
  338. u32 res1[0x6]; /* 0x38-0x49 reserved */
  339. u32 imr0; /* 0x50 Inbound message register 0 */
  340. u32 imr1; /* 0x54 Inbound message register 1 */
  341. u32 omr0; /* 0x58 Outbound message register 0 */
  342. u32 omr1; /* 0x5C Outbound message register 1 */
  343. u32 odr; /* 0x60 Outbound doorbell register */
  344. u32 res2; /* 0x64-0x67 reserved */
  345. u32 idr; /* 0x68 Inbound doorbell register */
  346. u32 res3[0x5]; /* 0x6C-0x79 reserved */
  347. u32 imisr; /* 0x80 Inbound message interrupt status register */
  348. u32 imimr; /* 0x84 Inbound message interrupt mask register */
  349. u32 res4[0x1E]; /* 0x88-0x99 reserved */
  350. u32 dmamr0; /* 0x100 DMA 0 mode register */
  351. u32 dmasr0; /* 0x104 DMA 0 status register */
  352. u32 dmacdar0; /* 0x108 DMA 0 current descriptor address register */
  353. u32 res5; /* 0x10C reserved */
  354. u32 dmasar0; /* 0x110 DMA 0 source address register */
  355. u32 res6; /* 0x114 reserved */
  356. u32 dmadar0; /* 0x118 DMA 0 destination address register */
  357. u32 res7; /* 0x11C reserved */
  358. u32 dmabcr0; /* 0x120 DMA 0 byte count register */
  359. u32 dmandar0; /* 0x124 DMA 0 next descriptor address register */
  360. u32 res8[0x16]; /* 0x128-0x179 reserved */
  361. u32 dmamr1; /* 0x180 DMA 1 mode register */
  362. u32 dmasr1; /* 0x184 DMA 1 status register */
  363. u32 dmacdar1; /* 0x188 DMA 1 current descriptor address register */
  364. u32 res9; /* 0x18C reserved */
  365. u32 dmasar1; /* 0x190 DMA 1 source address register */
  366. u32 res10; /* 0x194 reserved */
  367. u32 dmadar1; /* 0x198 DMA 1 destination address register */
  368. u32 res11; /* 0x19C reserved */
  369. u32 dmabcr1; /* 0x1A0 DMA 1 byte count register */
  370. u32 dmandar1; /* 0x1A4 DMA 1 next descriptor address register */
  371. u32 res12[0x16]; /* 0x1A8-0x199 reserved */
  372. u32 dmamr2; /* 0x200 DMA 2 mode register */
  373. u32 dmasr2; /* 0x204 DMA 2 status register */
  374. u32 dmacdar2; /* 0x208 DMA 2 current descriptor address register */
  375. u32 res13; /* 0x20C reserved */
  376. u32 dmasar2; /* 0x210 DMA 2 source address register */
  377. u32 res14; /* 0x214 reserved */
  378. u32 dmadar2; /* 0x218 DMA 2 destination address register */
  379. u32 res15; /* 0x21C reserved */
  380. u32 dmabcr2; /* 0x220 DMA 2 byte count register */
  381. u32 dmandar2; /* 0x224 DMA 2 next descriptor address register */
  382. u32 res16[0x16]; /* 0x228-0x279 reserved */
  383. u32 dmamr3; /* 0x280 DMA 3 mode register */
  384. u32 dmasr3; /* 0x284 DMA 3 status register */
  385. u32 dmacdar3; /* 0x288 DMA 3 current descriptor address register */
  386. u32 res17; /* 0x28C reserved */
  387. u32 dmasar3; /* 0x290 DMA 3 source address register */
  388. u32 res18; /* 0x294 reserved */
  389. u32 dmadar3; /* 0x298 DMA 3 destination address register */
  390. u32 res19; /* 0x29C reserved */
  391. u32 dmabcr3; /* 0x2A0 DMA 3 byte count register */
  392. u32 dmandar3; /* 0x2A4 DMA 3 next descriptor address register */
  393. u32 dmagsr; /* 0x2A8 DMA general status register */
  394. u32 res20[0x15]; /* 0x2AC-0x2FF reserved */
  395. } dma83xx_t;
  396. /*
  397. * PCI Software Configuration Registers
  398. */
  399. typedef struct pciconf83xx {
  400. u32 config_address;
  401. u32 config_data;
  402. u32 int_ack;
  403. u8 res[116];
  404. } pciconf83xx_t;
  405. /*
  406. * PCI Outbound Translation Register
  407. */
  408. typedef struct pci_outbound_window {
  409. u32 potar;
  410. u8 res0[4];
  411. u32 pobar;
  412. u8 res1[4];
  413. u32 pocmr;
  414. u8 res2[4];
  415. } pot83xx_t;
  416. /*
  417. * Sequencer
  418. */
  419. typedef struct ios83xx {
  420. pot83xx_t pot[6];
  421. u8 res0[0x60];
  422. u32 pmcr;
  423. u8 res1[4];
  424. u32 dtcr;
  425. u8 res2[4];
  426. } ios83xx_t;
  427. /*
  428. * PCI Controller Control and Status Registers
  429. */
  430. typedef struct pcictrl83xx {
  431. u32 esr;
  432. u32 ecdr;
  433. u32 eer;
  434. u32 eatcr;
  435. u32 eacr;
  436. u32 eeacr;
  437. u32 edlcr;
  438. u32 edhcr;
  439. u32 gcr;
  440. u32 ecr;
  441. u32 gsr;
  442. u8 res0[12];
  443. u32 pitar2;
  444. u8 res1[4];
  445. u32 pibar2;
  446. u32 piebar2;
  447. u32 piwar2;
  448. u8 res2[4];
  449. u32 pitar1;
  450. u8 res3[4];
  451. u32 pibar1;
  452. u32 piebar1;
  453. u32 piwar1;
  454. u8 res4[4];
  455. u32 pitar0;
  456. u8 res5[4];
  457. u32 pibar0;
  458. u8 res6[4];
  459. u32 piwar0;
  460. u8 res7[132];
  461. } pcictrl83xx_t;
  462. /*
  463. * USB
  464. */
  465. typedef struct usb83xx {
  466. u8 fixme[0x1000];
  467. } usb83xx_t;
  468. /*
  469. * TSEC
  470. */
  471. typedef struct tsec83xx {
  472. u8 fixme[0x1000];
  473. } tsec83xx_t;
  474. /*
  475. * Security
  476. */
  477. typedef struct security83xx {
  478. u8 fixme[0x10000];
  479. } security83xx_t;
  480. /*
  481. * PCI Express
  482. */
  483. struct pex_inbound_window {
  484. u32 ar;
  485. u32 tar;
  486. u32 barl;
  487. u32 barh;
  488. };
  489. struct pex_outbound_window {
  490. u32 ar;
  491. u32 bar;
  492. u32 tarl;
  493. u32 tarh;
  494. };
  495. struct pex_csb_bridge {
  496. u32 pex_csb_ver;
  497. u32 pex_csb_cab;
  498. u32 pex_csb_ctrl;
  499. u8 res0[8];
  500. u32 pex_dms_dstmr;
  501. u8 res1[4];
  502. u32 pex_cbs_stat;
  503. u8 res2[0x20];
  504. u32 pex_csb_obctrl;
  505. u32 pex_csb_obstat;
  506. u8 res3[0x98];
  507. u32 pex_csb_ibctrl;
  508. u32 pex_csb_ibstat;
  509. u8 res4[0xb8];
  510. u32 pex_wdma_ctrl;
  511. u32 pex_wdma_addr;
  512. u32 pex_wdma_stat;
  513. u8 res5[0x94];
  514. u32 pex_rdma_ctrl;
  515. u32 pex_rdma_addr;
  516. u32 pex_rdma_stat;
  517. u8 res6[0xd4];
  518. u32 pex_ombcr;
  519. u32 pex_ombdr;
  520. u8 res7[0x38];
  521. u32 pex_imbcr;
  522. u32 pex_imbdr;
  523. u8 res8[0x38];
  524. u32 pex_int_enb;
  525. u32 pex_int_stat;
  526. u32 pex_int_apio_vec1;
  527. u32 pex_int_apio_vec2;
  528. u8 res9[0x10];
  529. u32 pex_int_ppio_vec1;
  530. u32 pex_int_ppio_vec2;
  531. u32 pex_int_wdma_vec1;
  532. u32 pex_int_wdma_vec2;
  533. u32 pex_int_rdma_vec1;
  534. u32 pex_int_rdma_vec2;
  535. u32 pex_int_misc_vec;
  536. u8 res10[4];
  537. u32 pex_int_axi_pio_enb;
  538. u32 pex_int_axi_wdma_enb;
  539. u32 pex_int_axi_rdma_enb;
  540. u32 pex_int_axi_misc_enb;
  541. u32 pex_int_axi_pio_stat;
  542. u32 pex_int_axi_wdma_stat;
  543. u32 pex_int_axi_rdma_stat;
  544. u32 pex_int_axi_misc_stat;
  545. u8 res11[0xa0];
  546. struct pex_outbound_window pex_outbound_win[4];
  547. u8 res12[0x100];
  548. u32 pex_epiwtar0;
  549. u32 pex_epiwtar1;
  550. u32 pex_epiwtar2;
  551. u32 pex_epiwtar3;
  552. u8 res13[0x70];
  553. struct pex_inbound_window pex_inbound_win[4];
  554. };
  555. typedef struct pex83xx {
  556. u8 pex_cfg_header[0x404];
  557. u32 pex_ltssm_stat;
  558. u8 res0[0x30];
  559. u32 pex_ack_replay_timeout;
  560. u8 res1[4];
  561. u32 pex_gclk_ratio;
  562. u8 res2[0xc];
  563. u32 pex_pm_timer;
  564. u32 pex_pme_timeout;
  565. u8 res3[4];
  566. u32 pex_aspm_req_timer;
  567. u8 res4[0x18];
  568. u32 pex_ssvid_update;
  569. u8 res5[0x34];
  570. u32 pex_cfg_ready;
  571. u8 res6[0x24];
  572. u32 pex_bar_sizel;
  573. u8 res7[4];
  574. u32 pex_bar_sel;
  575. u8 res8[0x20];
  576. u32 pex_bar_pf;
  577. u8 res9[0x88];
  578. u32 pex_pme_to_ack_tor;
  579. u8 res10[0xc];
  580. u32 pex_ss_intr_mask;
  581. u8 res11[0x25c];
  582. struct pex_csb_bridge bridge;
  583. u8 res12[0x160];
  584. } pex83xx_t;
  585. /*
  586. * SATA
  587. */
  588. typedef struct sata83xx {
  589. u8 fixme[0x1000];
  590. } sata83xx_t;
  591. /*
  592. * eSDHC
  593. */
  594. typedef struct sdhc83xx {
  595. u8 fixme[0x1000];
  596. } sdhc83xx_t;
  597. /*
  598. * SerDes
  599. */
  600. typedef struct serdes83xx {
  601. u8 fixme[0x100];
  602. } serdes83xx_t;
  603. /*
  604. * On Chip ROM
  605. */
  606. typedef struct rom83xx {
  607. u8 mem[0x10000];
  608. } rom83xx_t;
  609. /*
  610. * TDM
  611. */
  612. typedef struct tdm83xx {
  613. u8 fixme[0x200];
  614. } tdm83xx_t;
  615. /*
  616. * TDM DMAC
  617. */
  618. typedef struct tdmdmac83xx {
  619. u8 fixme[0x2000];
  620. } tdmdmac83xx_t;
  621. #if defined(CONFIG_MPC834X)
  622. typedef struct immap {
  623. sysconf83xx_t sysconf; /* System configuration */
  624. wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
  625. rtclk83xx_t rtc; /* Real Time Clock Module Registers */
  626. rtclk83xx_t pit; /* Periodic Interval Timer */
  627. gtm83xx_t gtm[2]; /* Global Timers Module */
  628. ipic83xx_t ipic; /* Integrated Programmable Interrupt Controller */
  629. arbiter83xx_t arbiter; /* System Arbiter Registers */
  630. reset83xx_t reset; /* Reset Module */
  631. clk83xx_t clk; /* System Clock Module */
  632. pmc83xx_t pmc; /* Power Management Control Module */
  633. gpio83xx_t gpio[2]; /* General purpose I/O module */
  634. u8 res0[0x200];
  635. u8 dll_ddr[0x100];
  636. u8 dll_lbc[0x100];
  637. u8 res1[0xE00];
  638. ddr83xx_t ddr; /* DDR Memory Controller Memory */
  639. fsl_i2c_t i2c[2]; /* I2C Controllers */
  640. u8 res2[0x1300];
  641. duart83xx_t duart[2]; /* DUART */
  642. u8 res3[0x900];
  643. fsl_lbus_t lbus; /* Local Bus Controller Registers */
  644. u8 res4[0x1000];
  645. spi8xxx_t spi; /* Serial Peripheral Interface */
  646. dma83xx_t dma; /* DMA */
  647. pciconf83xx_t pci_conf[2]; /* PCI Software Configuration Registers */
  648. ios83xx_t ios; /* Sequencer */
  649. pcictrl83xx_t pci_ctrl[2]; /* PCI Controller Control and Status Registers */
  650. u8 res5[0x19900];
  651. usb83xx_t usb[2];
  652. tsec83xx_t tsec[2];
  653. u8 res6[0xA000];
  654. security83xx_t security;
  655. u8 res7[0xC0000];
  656. } immap_t;
  657. #elif defined(CONFIG_MPC8313)
  658. typedef struct immap {
  659. sysconf83xx_t sysconf; /* System configuration */
  660. wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
  661. rtclk83xx_t rtc; /* Real Time Clock Module Registers */
  662. rtclk83xx_t pit; /* Periodic Interval Timer */
  663. gtm83xx_t gtm[2]; /* Global Timers Module */
  664. ipic83xx_t ipic; /* Integrated Programmable Interrupt Controller */
  665. arbiter83xx_t arbiter; /* System Arbiter Registers */
  666. reset83xx_t reset; /* Reset Module */
  667. clk83xx_t clk; /* System Clock Module */
  668. pmc83xx_t pmc; /* Power Management Control Module */
  669. gpio83xx_t gpio[1]; /* General purpose I/O module */
  670. u8 res0[0x1300];
  671. ddr83xx_t ddr; /* DDR Memory Controller Memory */
  672. fsl_i2c_t i2c[2]; /* I2C Controllers */
  673. u8 res1[0x1300];
  674. duart83xx_t duart[2]; /* DUART */
  675. u8 res2[0x900];
  676. fsl_lbus_t lbus; /* Local Bus Controller Registers */
  677. u8 res3[0x1000];
  678. spi8xxx_t spi; /* Serial Peripheral Interface */
  679. dma83xx_t dma; /* DMA */
  680. pciconf83xx_t pci_conf[1]; /* PCI Software Configuration Registers */
  681. u8 res4[0x80];
  682. ios83xx_t ios; /* Sequencer */
  683. pcictrl83xx_t pci_ctrl[1]; /* PCI Controller Control and Status Registers */
  684. u8 res5[0x1aa00];
  685. usb83xx_t usb[1];
  686. tsec83xx_t tsec[2];
  687. u8 res6[0xA000];
  688. security83xx_t security;
  689. u8 res7[0xC0000];
  690. } immap_t;
  691. #elif defined(CONFIG_MPC8315)
  692. typedef struct immap {
  693. sysconf83xx_t sysconf; /* System configuration */
  694. wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
  695. rtclk83xx_t rtc; /* Real Time Clock Module Registers */
  696. rtclk83xx_t pit; /* Periodic Interval Timer */
  697. gtm83xx_t gtm[2]; /* Global Timers Module */
  698. ipic83xx_t ipic; /* Integrated Programmable Interrupt Controller */
  699. arbiter83xx_t arbiter; /* System Arbiter Registers */
  700. reset83xx_t reset; /* Reset Module */
  701. clk83xx_t clk; /* System Clock Module */
  702. pmc83xx_t pmc; /* Power Management Control Module */
  703. gpio83xx_t gpio[1]; /* General purpose I/O module */
  704. u8 res0[0x1300];
  705. ddr83xx_t ddr; /* DDR Memory Controller Memory */
  706. fsl_i2c_t i2c[2]; /* I2C Controllers */
  707. u8 res1[0x1300];
  708. duart83xx_t duart[2]; /* DUART */
  709. u8 res2[0x900];
  710. fsl_lbus_t lbus; /* Local Bus Controller Registers */
  711. u8 res3[0x1000];
  712. spi8xxx_t spi; /* Serial Peripheral Interface */
  713. dma83xx_t dma; /* DMA */
  714. pciconf83xx_t pci_conf[1]; /* PCI Software Configuration Registers */
  715. u8 res4[0x80];
  716. ios83xx_t ios; /* Sequencer */
  717. pcictrl83xx_t pci_ctrl[1]; /* PCI Controller Control and Status Registers */
  718. u8 res5[0xa00];
  719. pex83xx_t pciexp[2]; /* PCI Express Controller */
  720. u8 res6[0xb000];
  721. tdm83xx_t tdm; /* TDM Controller */
  722. u8 res7[0x1e00];
  723. sata83xx_t sata[2]; /* SATA Controller */
  724. u8 res8[0x9000];
  725. usb83xx_t usb[1]; /* USB DR Controller */
  726. tsec83xx_t tsec[2];
  727. u8 res9[0x6000];
  728. tdmdmac83xx_t tdmdmac; /* TDM DMAC */
  729. u8 res10[0x2000];
  730. security83xx_t security;
  731. u8 res11[0xA3000];
  732. serdes83xx_t serdes[1]; /* SerDes Registers */
  733. u8 res12[0x1CF00];
  734. } immap_t;
  735. #elif defined(CONFIG_MPC837X)
  736. typedef struct immap {
  737. sysconf83xx_t sysconf; /* System configuration */
  738. wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
  739. rtclk83xx_t rtc; /* Real Time Clock Module Registers */
  740. rtclk83xx_t pit; /* Periodic Interval Timer */
  741. gtm83xx_t gtm[2]; /* Global Timers Module */
  742. ipic83xx_t ipic; /* Integrated Programmable Interrupt Controller */
  743. arbiter83xx_t arbiter; /* System Arbiter Registers */
  744. reset83xx_t reset; /* Reset Module */
  745. clk83xx_t clk; /* System Clock Module */
  746. pmc83xx_t pmc; /* Power Management Control Module */
  747. gpio83xx_t gpio[2]; /* General purpose I/O module */
  748. u8 res0[0x1200];
  749. ddr83xx_t ddr; /* DDR Memory Controller Memory */
  750. fsl_i2c_t i2c[2]; /* I2C Controllers */
  751. u8 res1[0x1300];
  752. duart83xx_t duart[2]; /* DUART */
  753. u8 res2[0x900];
  754. fsl_lbus_t lbus; /* Local Bus Controller Registers */
  755. u8 res3[0x1000];
  756. spi8xxx_t spi; /* Serial Peripheral Interface */
  757. dma83xx_t dma; /* DMA */
  758. pciconf83xx_t pci_conf[1]; /* PCI Software Configuration Registers */
  759. u8 res4[0x80];
  760. ios83xx_t ios; /* Sequencer */
  761. pcictrl83xx_t pci_ctrl[1]; /* PCI Controller Control and Status Registers */
  762. u8 res5[0xa00];
  763. pex83xx_t pciexp[2]; /* PCI Express Controller */
  764. u8 res6[0xd000];
  765. sata83xx_t sata[4]; /* SATA Controller */
  766. u8 res7[0x7000];
  767. usb83xx_t usb[1]; /* USB DR Controller */
  768. tsec83xx_t tsec[2];
  769. u8 res8[0x8000];
  770. sdhc83xx_t sdhc; /* SDHC Controller */
  771. u8 res9[0x1000];
  772. security83xx_t security;
  773. u8 res10[0xA3000];
  774. serdes83xx_t serdes[2]; /* SerDes Registers */
  775. u8 res11[0xCE00];
  776. rom83xx_t rom; /* On Chip ROM */
  777. } immap_t;
  778. #elif defined(CONFIG_MPC8360)
  779. typedef struct immap {
  780. sysconf83xx_t sysconf; /* System configuration */
  781. wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
  782. rtclk83xx_t rtc; /* Real Time Clock Module Registers */
  783. rtclk83xx_t pit; /* Periodic Interval Timer */
  784. u8 res0[0x200];
  785. ipic83xx_t ipic; /* Integrated Programmable Interrupt Controller */
  786. arbiter83xx_t arbiter; /* System Arbiter Registers */
  787. reset83xx_t reset; /* Reset Module */
  788. clk83xx_t clk; /* System Clock Module */
  789. pmc83xx_t pmc; /* Power Management Control Module */
  790. qepi83xx_t qepi; /* QE Ports Interrupts Registers */
  791. u8 res1[0x300];
  792. u8 dll_ddr[0x100];
  793. u8 dll_lbc[0x100];
  794. u8 res2[0x200];
  795. qepio83xx_t qepio; /* QE Parallel I/O ports */
  796. qesba83xx_t qesba; /* QE Secondary Bus Access Windows */
  797. u8 res3[0x400];
  798. ddr83xx_t ddr; /* DDR Memory Controller Memory */
  799. fsl_i2c_t i2c[2]; /* I2C Controllers */
  800. u8 res4[0x1300];
  801. duart83xx_t duart[2]; /* DUART */
  802. u8 res5[0x900];
  803. fsl_lbus_t lbus; /* Local Bus Controller Registers */
  804. u8 res6[0x2000];
  805. dma83xx_t dma; /* DMA */
  806. pciconf83xx_t pci_conf[1]; /* PCI Software Configuration Registers */
  807. u8 res7[128];
  808. ios83xx_t ios; /* Sequencer (IOS) */
  809. pcictrl83xx_t pci_ctrl[1]; /* PCI Controller Control and Status Registers */
  810. u8 res8[0x4A00];
  811. ddr83xx_t ddr_secondary; /* Secondary DDR Memory Controller Memory Map */
  812. u8 res9[0x22000];
  813. security83xx_t security;
  814. u8 res10[0xC0000];
  815. u8 qe[0x100000]; /* QE block */
  816. } immap_t;
  817. #elif defined(CONFIG_MPC832X)
  818. typedef struct immap {
  819. sysconf83xx_t sysconf; /* System configuration */
  820. wdt83xx_t wdt; /* Watch Dog Timer (WDT) Registers */
  821. rtclk83xx_t rtc; /* Real Time Clock Module Registers */
  822. rtclk83xx_t pit; /* Periodic Interval Timer */
  823. gtm83xx_t gtm[2]; /* Global Timers Module */
  824. ipic83xx_t ipic; /* Integrated Programmable Interrupt Controller */
  825. arbiter83xx_t arbiter; /* System Arbiter Registers */
  826. reset83xx_t reset; /* Reset Module */
  827. clk83xx_t clk; /* System Clock Module */
  828. pmc83xx_t pmc; /* Power Management Control Module */
  829. qepi83xx_t qepi; /* QE Ports Interrupts Registers */
  830. u8 res0[0x300];
  831. u8 dll_ddr[0x100];
  832. u8 dll_lbc[0x100];
  833. u8 res1[0x200];
  834. qepio83xx_t qepio; /* QE Parallel I/O ports */
  835. u8 res2[0x800];
  836. ddr83xx_t ddr; /* DDR Memory Controller Memory */
  837. fsl_i2c_t i2c[2]; /* I2C Controllers */
  838. u8 res3[0x1300];
  839. duart83xx_t duart[2]; /* DUART */
  840. u8 res4[0x900];
  841. fsl_lbus_t lbus; /* Local Bus Controller Registers */
  842. u8 res5[0x2000];
  843. dma83xx_t dma; /* DMA */
  844. pciconf83xx_t pci_conf[1]; /* PCI Software Configuration Registers */
  845. u8 res6[128];
  846. ios83xx_t ios; /* Sequencer (IOS) */
  847. pcictrl83xx_t pci_ctrl[1]; /* PCI Controller Control and Status Registers */
  848. u8 res7[0x27A00];
  849. security83xx_t security;
  850. u8 res8[0xC0000];
  851. u8 qe[0x100000]; /* QE block */
  852. } immap_t;
  853. #endif
  854. #endif /* __IMMAP_83xx__ */