📄 mpc5xxx.h
字号:
#define PSC_IPCR_DCD 0x02/* PSC mode fields */#define PSC_MODE_5_BITS 0x00#define PSC_MODE_6_BITS 0x01#define PSC_MODE_7_BITS 0x02#define PSC_MODE_8_BITS 0x03#define PSC_MODE_PAREVEN 0x00#define PSC_MODE_PARODD 0x04#define PSC_MODE_PARFORCE 0x08#define PSC_MODE_PARNONE 0x10#define PSC_MODE_ERR 0x20#define PSC_MODE_FFULL 0x40#define PSC_MODE_RXRTS 0x80#define PSC_MODE_ONE_STOP_5_BITS 0x00#define PSC_MODE_ONE_STOP 0x07#define PSC_MODE_TWO_STOP 0x0f/* ATA config fields */#define MPC5xxx_ATA_HOSTCONF_SMR 0x80000000UL /* State machine reset */#define MPC5xxx_ATA_HOSTCONF_FR 0x40000000UL /* FIFO Reset */#define MPC5xxx_ATA_HOSTCONF_IE 0x02000000UL /* Enable interrupt in PIO */#define MPC5xxx_ATA_HOSTCONF_IORDY 0x01000000UL /* Drive supports IORDY protocol */#ifndef __ASSEMBLY__struct mpc5xxx_psc { volatile u8 mode; /* PSC + 0x00 */ volatile u8 reserved0[3]; union { /* PSC + 0x04 */ volatile u16 status; volatile u16 clock_select; } sr_csr;#define psc_status sr_csr.status#define psc_clock_select sr_csr.clock_select volatile u16 reserved1; volatile u8 command; /* PSC + 0x08 */ volatile u8 reserved2[3]; union { /* PSC + 0x0c */ volatile u8 buffer_8; volatile u16 buffer_16; volatile u32 buffer_32; } buffer;#define psc_buffer_8 buffer.buffer_8#define psc_buffer_16 buffer.buffer_16#define psc_buffer_32 buffer.buffer_32 union { /* PSC + 0x10 */ volatile u8 ipcr; volatile u8 acr; } ipcr_acr;#define psc_ipcr ipcr_acr.ipcr#define psc_acr ipcr_acr.acr volatile u8 reserved3[3]; union { /* PSC + 0x14 */ volatile u16 isr; volatile u16 imr; } isr_imr;#define psc_isr isr_imr.isr#define psc_imr isr_imr.imr volatile u16 reserved4; volatile u8 ctur; /* PSC + 0x18 */ volatile u8 reserved5[3]; volatile u8 ctlr; /* PSC + 0x1c */ volatile u8 reserved6[3]; volatile u16 ccr; /* PSC + 0x20 */ volatile u8 reserved7[14]; volatile u8 ivr; /* PSC + 0x30 */ volatile u8 reserved8[3]; volatile u8 ip; /* PSC + 0x34 */ volatile u8 reserved9[3]; volatile u8 op1; /* PSC + 0x38 */ volatile u8 reserved10[3]; volatile u8 op0; /* PSC + 0x3c */ volatile u8 reserved11[3]; volatile u32 sicr; /* PSC + 0x40 */ volatile u8 ircr1; /* PSC + 0x44 */ volatile u8 reserved12[3]; volatile u8 ircr2; /* PSC + 0x44 */ volatile u8 reserved13[3]; volatile u8 irsdr; /* PSC + 0x4c */ volatile u8 reserved14[3]; volatile u8 irmdr; /* PSC + 0x50 */ volatile u8 reserved15[3]; volatile u8 irfdr; /* PSC + 0x54 */ volatile u8 reserved16[3]; volatile u16 rfnum; /* PSC + 0x58 */ volatile u16 reserved17; volatile u16 tfnum; /* PSC + 0x5c */ volatile u16 reserved18; volatile u32 rfdata; /* PSC + 0x60 */ volatile u16 rfstat; /* PSC + 0x64 */ volatile u16 reserved20; volatile u8 rfcntl; /* PSC + 0x68 */ volatile u8 reserved21[5]; volatile u16 rfalarm; /* PSC + 0x6e */ volatile u16 reserved22; volatile u16 rfrptr; /* PSC + 0x72 */ volatile u16 reserved23; volatile u16 rfwptr; /* PSC + 0x76 */ volatile u16 reserved24; volatile u16 rflrfptr; /* PSC + 0x7a */ volatile u16 reserved25; volatile u16 rflwfptr; /* PSC + 0x7e */ volatile u32 tfdata; /* PSC + 0x80 */ volatile u16 tfstat; /* PSC + 0x84 */ volatile u16 reserved26; volatile u8 tfcntl; /* PSC + 0x88 */ volatile u8 reserved27[5]; volatile u16 tfalarm; /* PSC + 0x8e */ volatile u16 reserved28; volatile u16 tfrptr; /* PSC + 0x92 */ volatile u16 reserved29; volatile u16 tfwptr; /* PSC + 0x96 */ volatile u16 reserved30; volatile u16 tflrfptr; /* PSC + 0x9a */ volatile u16 reserved31; volatile u16 tflwfptr; /* PSC + 0x9e */};struct mpc5xxx_intr { volatile u32 per_mask; /* INTR + 0x00 */ volatile u32 per_pri1; /* INTR + 0x04 */ volatile u32 per_pri2; /* INTR + 0x08 */ volatile u32 per_pri3; /* INTR + 0x0c */ volatile u32 ctrl; /* INTR + 0x10 */ volatile u32 main_mask; /* INTR + 0x14 */ volatile u32 main_pri1; /* INTR + 0x18 */ volatile u32 main_pri2; /* INTR + 0x1c */ volatile u32 reserved1; /* INTR + 0x20 */ volatile u32 enc_status; /* INTR + 0x24 */ volatile u32 crit_status; /* INTR + 0x28 */ volatile u32 main_status; /* INTR + 0x2c */ volatile u32 per_status; /* INTR + 0x30 */ volatile u32 reserved2; /* INTR + 0x34 */ volatile u32 per_error; /* INTR + 0x38 */};struct mpc5xxx_gpio { volatile u32 port_config; /* GPIO + 0x00 */ volatile u32 simple_gpioe; /* GPIO + 0x04 */ volatile u32 simple_ode; /* GPIO + 0x08 */ volatile u32 simple_ddr; /* GPIO + 0x0c */ volatile u32 simple_dvo; /* GPIO + 0x10 */ volatile u32 simple_ival; /* GPIO + 0x14 */ volatile u8 outo_gpioe; /* GPIO + 0x18 */ volatile u8 reserved1[3]; /* GPIO + 0x19 */ volatile u8 outo_dvo; /* GPIO + 0x1c */ volatile u8 reserved2[3]; /* GPIO + 0x1d */ volatile u8 sint_gpioe; /* GPIO + 0x20 */ volatile u8 reserved3[3]; /* GPIO + 0x21 */ volatile u8 sint_ode; /* GPIO + 0x24 */ volatile u8 reserved4[3]; /* GPIO + 0x25 */ volatile u8 sint_ddr; /* GPIO + 0x28 */ volatile u8 reserved5[3]; /* GPIO + 0x29 */ volatile u8 sint_dvo; /* GPIO + 0x2c */ volatile u8 reserved6[3]; /* GPIO + 0x2d */ volatile u8 sint_inten; /* GPIO + 0x30 */ volatile u8 reserved7[3]; /* GPIO + 0x31 */ volatile u16 sint_itype; /* GPIO + 0x34 */ volatile u16 reserved8; /* GPIO + 0x36 */ volatile u8 gpio_control; /* GPIO + 0x38 */ volatile u8 reserved9[3]; /* GPIO + 0x39 */ volatile u8 sint_istat; /* GPIO + 0x3c */ volatile u8 sint_ival; /* GPIO + 0x3d */ volatile u8 bus_errs; /* GPIO + 0x3e */ volatile u8 reserved10; /* GPIO + 0x3f */};struct mpc5xxx_sdma { volatile u32 taskBar; /* SDMA + 0x00 */ volatile u32 currentPointer; /* SDMA + 0x04 */ volatile u32 endPointer; /* SDMA + 0x08 */ volatile u32 variablePointer; /* SDMA + 0x0c */ volatile u8 IntVect1; /* SDMA + 0x10 */ volatile u8 IntVect2; /* SDMA + 0x11 */ volatile u16 PtdCntrl; /* SDMA + 0x12 */ volatile u32 IntPend; /* SDMA + 0x14 */ volatile u32 IntMask; /* SDMA + 0x18 */ volatile u16 tcr_0; /* SDMA + 0x1c */ volatile u16 tcr_1; /* SDMA + 0x1e */ volatile u16 tcr_2; /* SDMA + 0x20 */ volatile u16 tcr_3; /* SDMA + 0x22 */ volatile u16 tcr_4; /* SDMA + 0x24 */ volatile u16 tcr_5; /* SDMA + 0x26 */ volatile u16 tcr_6; /* SDMA + 0x28 */ volatile u16 tcr_7; /* SDMA + 0x2a */ volatile u16 tcr_8; /* SDMA + 0x2c */ volatile u16 tcr_9; /* SDMA + 0x2e */ volatile u16 tcr_a; /* SDMA + 0x30 */ volatile u16 tcr_b; /* SDMA + 0x32 */ volatile u16 tcr_c; /* SDMA + 0x34 */ volatile u16 tcr_d; /* SDMA + 0x36 */ volatile u16 tcr_e; /* SDMA + 0x38 */ volatile u16 tcr_f; /* SDMA + 0x3a */ volatile u8 IPR0; /* SDMA + 0x3c */ volatile u8 IPR1; /* SDMA + 0x3d */ volatile u8 IPR2; /* SDMA + 0x3e */ volatile u8 IPR3; /* SDMA + 0x3f */ volatile u8 IPR4; /* SDMA + 0x40 */ volatile u8 IPR5; /* SDMA + 0x41 */ volatile u8 IPR6; /* SDMA + 0x42 */ volatile u8 IPR7; /* SDMA + 0x43 */ volatile u8 IPR8; /* SDMA + 0x44 */ volatile u8 IPR9; /* SDMA + 0x45 */ volatile u8 IPR10; /* SDMA + 0x46 */ volatile u8 IPR11; /* SDMA + 0x47 */ volatile u8 IPR12; /* SDMA + 0x48 */ volatile u8 IPR13; /* SDMA + 0x49 */ volatile u8 IPR14; /* SDMA + 0x4a */ volatile u8 IPR15; /* SDMA + 0x4b */ volatile u8 IPR16; /* SDMA + 0x4c */ volatile u8 IPR17; /* SDMA + 0x4d */ volatile u8 IPR18; /* SDMA + 0x4e */ volatile u8 IPR19; /* SDMA + 0x4f */ volatile u8 IPR20; /* SDMA + 0x50 */ volatile u8 IPR21; /* SDMA + 0x51 */ volatile u8 IPR22; /* SDMA + 0x52 */ volatile u8 IPR23; /* SDMA + 0x53 */ volatile u8 IPR24; /* SDMA + 0x54 */ volatile u8 IPR25; /* SDMA + 0x55 */ volatile u8 IPR26; /* SDMA + 0x56 */ volatile u8 IPR27; /* SDMA + 0x57 */ volatile u8 IPR28; /* SDMA + 0x58 */ volatile u8 IPR29; /* SDMA + 0x59 */ volatile u8 IPR30; /* SDMA + 0x5a */ volatile u8 IPR31; /* SDMA + 0x5b */ volatile u32 res1; /* SDMA + 0x5c */ volatile u32 res2; /* SDMA + 0x60 */ volatile u32 res3; /* SDMA + 0x64 */ volatile u32 MDEDebug; /* SDMA + 0x68 */ volatile u32 ADSDebug; /* SDMA + 0x6c */ volatile u32 Value1; /* SDMA + 0x70 */ volatile u32 Value2; /* SDMA + 0x74 */ volatile u32 Control; /* SDMA + 0x78 */ volatile u32 Status; /* SDMA + 0x7c */ volatile u32 EU00; /* SDMA + 0x80 */ volatile u32 EU01; /* SDMA + 0x84 */ volatile u32 EU02; /* SDMA + 0x88 */ volatile u32 EU03; /* SDMA + 0x8c */ volatile u32 EU04; /* SDMA + 0x90 */ volatile u32 EU05; /* SDMA + 0x94 */ volatile u32 EU06; /* SDMA + 0x98 */ volatile u32 EU07; /* SDMA + 0x9c */ volatile u32 EU10; /* SDMA + 0xa0 */ volatile u32 EU11; /* SDMA + 0xa4 */ volatile u32 EU12; /* SDMA + 0xa8 */ volatile u32 EU13; /* SDMA + 0xac */ volatile u32 EU14; /* SDMA + 0xb0 */ volatile u32 EU15; /* SDMA + 0xb4 */ volatile u32 EU16; /* SDMA + 0xb8 */ volatile u32 EU17; /* SDMA + 0xbc */ volatile u32 EU20; /* SDMA + 0xc0 */ volatile u32 EU21; /* SDMA + 0xc4 */ volatile u32 EU22; /* SDMA + 0xc8 */ volatile u32 EU23; /* SDMA + 0xcc */ volatile u32 EU24; /* SDMA + 0xd0 */ volatile u32 EU25; /* SDMA + 0xd4 */ volatile u32 EU26; /* SDMA + 0xd8 */ volatile u32 EU27; /* SDMA + 0xdc */ volatile u32 EU30; /* SDMA + 0xe0 */ volatile u32 EU31; /* SDMA + 0xe4 */ volatile u32 EU32; /* SDMA + 0xe8 */ volatile u32 EU33; /* SDMA + 0xec */ volatile u32 EU34; /* SDMA + 0xf0 */ volatile u32 EU35; /* SDMA + 0xf4 */ volatile u32 EU36; /* SDMA + 0xf8 */ volatile u32 EU37; /* SDMA + 0xfc */};struct mpc5xxx_i2c { volatile u32 madr; /* I2Cn + 0x00 */ volatile u32 mfdr; /* I2Cn + 0x04 */ volatile u32 mcr; /* I2Cn + 0x08 */ volatile u32 msr; /* I2Cn + 0x0C */ volatile u32 mdr; /* I2Cn + 0x10 */};struct mpc5xxx_spi { volatile u8 cr1; /* SPI + 0x0F00 */ volatile u8 cr2; /* SPI + 0x0F01 */ volatile u8 reserved1[2]; volatile u8 brr; /* SPI + 0x0F04 */ volatile u8 sr; /* SPI + 0x0F05 */ volatile u8 reserved2[3]; volatile u8 dr; /* SPI + 0x0F09 */ volatile u8 reserved3[3]; volatile u8 pdr; /* SPI + 0x0F0D */ volatile u8 reserved4[2]; volatile u8 ddr; /* SPI + 0x0F10 */};struct mpc5xxx_gpt { volatile u32 emsr; /* GPT + Timer# * 0x10 + 0x00 */ volatile u32 cir; /* GPT + Timer# * 0x10 + 0x04 */ volatile u32 pwmcr; /* GPT + Timer# * 0x10 + 0x08 */ volatile u32 sr; /* GPT + Timer# * 0x10 + 0x0c */};struct mpc5xxx_gpt_0_7 { struct mpc5xxx_gpt gpt0; struct mpc5xxx_gpt gpt1; struct mpc5xxx_gpt gpt2; struct mpc5xxx_gpt gpt3; struct mpc5xxx_gpt gpt4; struct mpc5xxx_gpt gpt5; struct mpc5xxx_gpt gpt6; struct mpc5xxx_gpt gpt7;};struct mscan_buffer { volatile u8 idr[0x8]; /* 0x00 */ volatile u8 dsr[0x10]; /* 0x08 */ volatile u8 dlr; /* 0x18 */ volatile u8 tbpr; /* 0x19 */ /* This register is not applicable for receive buffers */ volatile u16 rsrv1; /* 0x1A */ volatile u8 tsrh; /* 0x1C */ volatile u8 tsrl; /* 0x1D */ volatile u16 rsrv2; /* 0x1E */};struct mpc5xxx_mscan { volatile u8 canctl0; /* MSCAN + 0x00 */ volatile u8 canctl1; /* MSCAN + 0x01 */ volatile u16 rsrv1; /* MSCAN + 0x02 */ volatile u8 canbtr0; /* MSCAN + 0x04 */ volatile u8 canbtr1; /* MSCAN + 0x05 */ volatile u16 rsrv2; /* MSCAN + 0x06 */ volatile u8 canrflg; /* MSCAN + 0x08 */ volatile u8 canrier; /* MSCAN + 0x09 */ volatile u16 rsrv3; /* MSCAN + 0x0A */ volatile u8 cantflg; /* MSCAN + 0x0C */ volatile u8 cantier; /* MSCAN + 0x0D */ volatile u16 rsrv4; /* MSCAN + 0x0E */ volatile u8 cantarq; /* MSCAN + 0x10 */ volatile u8 cantaak; /* MSCAN + 0x11 */ volatile u16 rsrv5; /* MSCAN + 0x12 */ volatile u8 cantbsel; /* MSCAN + 0x14 */ volatile u8 canidac; /* MSCAN + 0x15 */ volatile u16 rsrv6[3]; /* MSCAN + 0x16 */ volatile u8 canrxerr; /* MSCAN + 0x1C */ volatile u8 cantxerr; /* MSCAN + 0x1D */ volatile u16 rsrv7; /* MSCAN + 0x1E */ volatile u8 canidar0; /* MSCAN + 0x20 */ volatile u8 canidar1; /* MSCAN + 0x21 */ volatile u16 rsrv8; /* MSCAN + 0x22 */ volatile u8 canidar2; /* MSCAN + 0x24 */ volatile u8 canidar3; /* MSCAN + 0x25 */ volatile u16 rsrv9; /* MSCAN + 0x26 */ volatile u8 canidmr0; /* MSCAN + 0x28 */ volatile u8 canidmr1; /* MSCAN + 0x29 */ volatile u16 rsrv10; /* MSCAN + 0x2A */ volatile u8 canidmr2; /* MSCAN + 0x2C */ volatile u8 canidmr3; /* MSCAN + 0x2D */ volatile u16 rsrv11; /* MSCAN + 0x2E */ volatile u8 canidar4; /* MSCAN + 0x30 */ volatile u8 canidar5; /* MSCAN + 0x31 */ volatile u16 rsrv12; /* MSCAN + 0x32 */ volatile u8 canidar6; /* MSCAN + 0x34 */ volatile u8 canidar7; /* MSCAN + 0x35 */ volatile u16 rsrv13; /* MSCAN + 0x36 */ volatile u8 canidmr4; /* MSCAN + 0x38 */ volatile u8 canidmr5; /* MSCAN + 0x39 */ volatile u16 rsrv14; /* MSCAN + 0x3A */ volatile u8 canidmr6; /* MSCAN + 0x3C */ volatile u8 canidmr7; /* MSCAN + 0x3D */ volatile u16 rsrv15; /* MSCAN + 0x3E */ struct mscan_buffer canrxfg; /* MSCAN + 0x40 */ /* Foreground receive buffer */ struct mscan_buffer cantxfg; /* MSCAN + 0x60 */ /* Foreground transmit buffer */ };/* function prototypes */void loadtask(int basetask, int tasks);#endif /* __ASSEMBLY__ */#endif /* __ASMPPC_MPC5XXX_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -