247 lines
6.7 KiB
C
247 lines
6.7 KiB
C
|
/*
|
||
|
* 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__ */
|