/* * MPC8220 Internal Memory Map * Copyright (c) 2004 TsiChung Liew (Tsi-Chung.Liew@freescale.com) * * The Internal Memory Map of the 8220. * */ #ifndef __IMMAP_MPC8220__ #define __IMMAP_MPC8220__ /* * System configuration registers. */ typedef struct sys_conf { u16 mbar; /* 0x00 */ u16 res1; u16 res2; /* 0x04 */ u16 sdramds; u32 res3[6]; /* 0x08 */ u32 cscfg[6]; /* 0x20 */ u32 res4[2]; /* 0x38 */ u8 res5[3]; /* 0x40 */ u8 rstctrl; u8 res6[3]; /* 0x44 */ u8 rststat; u32 res7[2]; /* 0x48 */ u32 jtagid; /* 0x50 */ } sysconf8220_t; /* * Memory controller registers. */ typedef struct mem_ctlr { ushort mode; /* 0x100 */ ushort res1; u32 ctrl; /* 0x104 */ u32 cfg1; /* 0x108 */ u32 cfg2; /* 0x10c */ } memctl8220_t; /* * XLB Arbitration registers */ typedef struct xlb_arb { uint res1[16]; /* 0x200 */ uint config; /* 0x240 */ uint version; /* 0x244 */ uint status; /* 0x248 */ uint intEnable; /* 0x24c */ uint addrCap; /* 0x250 */ uint busSigCap; /* 0x254 */ uint addrTenTimeOut; /* 0x258 */ uint dataTenTimeOut; /* 0x25c */ uint busActTimeOut; /* 0x260 */ uint mastPriEn; /* 0x264 */ uint mastPriority; /* 0x268 */ uint baseAddr; /* 0x26c */ } xlbarb8220_t; /* * Flexbus registers */ typedef struct flexbus { ushort csar0; /* 0x00 */ ushort res1; uint csmr0; /* 0x04 */ uint cscr0; /* 0x08 */ ushort csar1; /* 0x0c */ ushort res2; uint csmr1; /* 0x10 */ uint cscr1; /* 0x14 */ ushort csar2; /* 0x18 */ ushort res3; uint csmr2; /* 0x1c */ uint cscr2; /* 0x20 */ ushort csar3; /* 0x24 */ ushort res4; uint csmr3; /* 0x28 */ uint cscr3; /* 0x2c */ ushort csar4; /* 0x30 */ ushort res5; uint csmr4; /* 0x34 */ uint cscr4; /* 0x38 */ ushort csar5; /* 0x3c */ ushort res6; uint csmr5; /* 0x40 */ uint cscr5; /* 0x44 */ } flexbus8220_t; /* * GPIO registers */ typedef struct gpio { u32 out; /* 0x00 */ u32 obs; /* 0x04 */ u32 obc; /* 0x08 */ u32 obt; /* 0x0c */ u32 en; /* 0x10 */ u32 ebs; /* 0x14 */ u32 ebc; /* 0x18 */ u32 ebt; /* 0x1c */ u32 mc; /* 0x20 */ u32 st; /* 0x24 */ u32 intr; /* 0x28 */ } gpio8220_t; /* * General Purpose Timer registers */ typedef struct gptimer { u8 OCPW; u8 OctIct; u8 Control; u8 Mode; u16 Prescl; /* Prescale */ u16 Count; /* Count */ u16 PwmWid; /* PWM Width */ u8 PwmOp; /* Output Polarity */ u8 PwmLd; /* Immediate Update */ u16 Capture; /* Capture internal counter */ u8 OvfPin; /* Ovf and Pin */ u8 Int; /* Interrupts */ } gptmr8220_t; /* * PSC registers */ typedef struct psc { u32 mr1_2; /* 0x00 Mode reg 1 & 2 */ u32 sr_csr; /* 0x04 Status/Clock Select reg */ u32 cr; /* 0x08 Command reg */ u8 xmitbuf[4]; /* 0x0c Receive/Transmit Buffer */ u32 ipcr_acr; /* 0x10 Input Port Change/Auxiliary Control reg */ u32 isr_imr; /* 0x14 Interrupt Status/Mask reg */ u32 ctur; /* 0x18 Counter Timer Upper reg */ u32 ctlr; /* 0x1c Counter Timer Lower reg */ u32 rsvd1[4]; /* 0x20 ... 0x2c */ u32 ivr; /* 0x30 Interrupt Vector reg */ u32 ipr; /* 0x34 Input Port reg */ u32 opsetr; /* 0x38 Output Port Set reg */ u32 opresetr; /* 0x3c Output Port Reset reg */ u32 sicr; /* 0x40 PSC/IrDA control reg */ u32 ircr1; /* 0x44 IrDA control reg 1*/ u32 ircr2; /* 0x48 IrDA control reg 2*/ u32 irsdr; /* 0x4c IrDA SIR Divide reg */ u32 irmdr; /* 0x50 IrDA MIR Divide reg */ u32 irfdr; /* 0x54 PSC IrDA FIR Divide reg */ u32 rfnum; /* 0x58 RX-FIFO counter */ u32 txnum; /* 0x5c TX-FIFO counter */ u32 rfdata; /* 0x60 RX-FIFO data */ u32 rfstat; /* 0x64 RX-FIFO status */ u32 rfcntl; /* 0x68 RX-FIFO control */ u32 rfalarm; /* 0x6c RX-FIFO alarm */ u32 rfrptr; /* 0x70 RX-FIFO read pointer */ u32 rfwptr; /* 0x74 RX-FIFO write pointer */ u32 rflfrptr; /* 0x78 RX-FIFO last read frame pointer */ u32 rflfwptr; /* 0x7c RX-FIFO last write frame pointer */ u32 tfdata; /* 0x80 TX-FIFO data */ u32 tfstat; /* 0x84 TX-FIFO status */ u32 tfcntl; /* 0x88 TX-FIFO control */ u32 tfalarm; /* 0x8c TX-FIFO alarm */ u32 tfrptr; /* 0x90 TX-FIFO read pointer */ u32 tfwptr; /* 0x94 TX-FIFO write pointer */ u32 tflfrptr; /* 0x98 TX-FIFO last read frame pointer */ u32 tflfwptr; /* 0x9c TX-FIFO last write frame pointer */ } psc8220_t; /* * Interrupt Controller registers */ typedef struct interrupt_controller { } intctl8220_t; /* Fast controllers */ /* * I2C registers */ typedef struct i2c { u8 adr; /* 0x00 */ u8 res1[3]; u8 fdr; /* 0x04 */ u8 res2[3]; u8 cr; /* 0x08 */ u8 res3[3]; u8 sr; /* 0x0C */ u8 res4[3]; u8 dr; /* 0x10 */ u8 res5[3]; u32 reserved0; /* 0x14 */ u32 reserved1; /* 0x18 */ u32 reserved2; /* 0x1c */ u8 icr; /* 0x20 */ u8 res6[3]; } i2c8220_t; /* * Port Configuration Registers */ typedef struct pcfg { uint pcfg0; /* 0x00 */ uint pcfg1; /* 0x04 */ uint pcfg2; /* 0x08 */ uint pcfg3; /* 0x0c */ } pcfg8220_t; /* ...and the whole thing wrapped up.... */ typedef struct immap { sysconf8220_t im_sysconf; /* System Configuration */ memctl8220_t im_memctl; /* Memory Controller */ xlbarb8220_t im_xlbarb; /* XLB Arbitration */ psc8220_t im_psc; /* PSC controller */ flexbus8220_t im_fb; /* FlexBus Controller */ i2c8220_t im_i2c; /* I2C control/status */ pcfg8220_t im_pcfg; /* Port configuration */ } immap_t; #endif /* __IMMAP_MPC8220__ */