📄 mcf5275_hi.c
字号:
/*
* File: mcf5275_hi.c
* Purpose: Register display/modify routines for MCF5275 modules.
*
* Notes:
*
*/
#include "src/include/dbug.h"
#include "src/uif/cpu.h"
/********************************************************************/
/*
* CPU name string and source code version for display at boot-up.
*/
const char CPU_STR[] = "ColdFire MCF5275";
const int CPU_VER_MAJOR = 1;
const char CPU_VER_MINOR = 'a';
/********************************************************************/
static const char FORMAT8[] = "%6s (%-6s): %02X\n";
static const char FORMAT16[] = "%6s (%-6s): %04X\n";
static const char FORMAT32[] = "%6s (%-6s): %08X\n";
static const char XFORMAT[] = "%6s (%-6s): %6s\n";
static const char INVMOD[] = "Error: Invalid Module: %s\n";
static const char NOREG[] = "XXXXXX";
#define IRMD(MOD,RDREG,WRREG,SIZE) \
if (regread) \
{ \
if ((strcasecmp(#RDREG,reg) == 0) || display_all) \
{ \
rdata = MCF_ ## MOD ## _ ## RDREG; \
printf(FORMAT ## SIZE, #RDREG, #WRREG, rdata); \
\
pause(&displayed); \
\
if (!display_all) return; \
} \
} \
else \
{ \
if (strcasecmp(#WRREG,reg) == 0) \
{ \
MCF_ ## MOD ## _ ## WRREG = (uint ## SIZE) value; \
return; \
} \
}
#define IRMD_SIZE(MOD,RDREG,WRREG,SIZE) \
if (regread) \
{ \
if ((strcasecmp(#RDREG,reg) == 0) || display_all) \
{ \
rdata = MCF_ ## MOD ## _ ## RDREG(SIZE); \
printf(FORMAT ## SIZE, #RDREG, #WRREG, rdata); \
\
pause(&displayed); \
\
if (!display_all) return; \
} \
} \
else \
{ \
if (strcasecmp(#WRREG,reg) == 0) \
{ \
MCF_ ## MOD ## _ ## WRREG(SIZE) = (uint ## SIZE) value; \
return; \
} \
}
#define IRMD_NOWR(MOD,RDREG,SIZE) \
if (regread) \
{ \
if ((strcasecmp(#RDREG,reg) == 0) || display_all) \
{ \
rdata = MCF_ ## MOD ## _ ## RDREG; \
printf(FORMAT ## SIZE, #RDREG, NOREG, rdata); \
\
pause(&displayed); \
\
if (!display_all) return; \
} \
}
#define IRMD_(MOD,WRREG,SIZE) \
if (regread && display_all) \
{ \
printf(XFORMAT, NOREG, #WRREG, NOREG); \
} \
else \
{ \
if (strcasecmp(#WRREG,reg) == 0) \
{ \
MCF_ ## MOD ## _ ## WRREG = (uint ## SIZE) value; \
return; \
} \
}
static int display_all;
static int displayed;
static uint32 rdata;
/********************************************************************/
static void
irmd_scm (char *reg, int regread, uint32 value)
{
IRMD(SCM, IPSBAR, IPSBAR, 32);
IRMD(SCM, RAMBAR, RAMBAR, 32);
IRMD(SCM, CRSR, CRSR, 8);
IRMD(SCM, CWCR, CWCR, 8);
IRMD(SCM, LPICR, LPICR, 8);
IRMD(SCM, CWSR, CWSR, 8);
IRMD(SCM, DMAREQC,DMAREQC,32);
IRMD(SCM, MPARK, MPARK, 32);
IRMD(SCM, MPR, MPR, 8);
IRMD(SCM, PACR0, PACR0, 8);
IRMD(SCM, PACR1, PACR1, 8);
IRMD(SCM, PACR2, PACR2, 8);
IRMD(SCM, PACR3, PACR3, 8);
IRMD(SCM, PACR4, PACR4, 8);
IRMD(SCM, PACR5, PACR5, 8);
IRMD(SCM, PACR6, PACR6, 8);
IRMD(SCM, PACR7, PACR7, 8);
IRMD(SCM, PACR8, PACR8, 8);
IRMD(SCM, GPACR0, GPACR0, 8);
IRMD(SCM, GPACR1, GPACR1, 8);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_cs0 (char *reg, int regread, uint32 value)
{
IRMD(CS, CSAR0, CSAR0, 16);
IRMD(CS, CSMR0, CSMR0, 32);
IRMD(CS, CSCR0, CSCR0, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_cs1 (char *reg, int regread, uint32 value)
{
IRMD(CS, CSAR1, CSAR1, 16);
IRMD(CS, CSMR1, CSMR1, 32);
IRMD(CS, CSCR1, CSCR1, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_cs2 (char *reg, int regread, uint32 value)
{
IRMD(CS, CSAR2, CSAR2, 16);
IRMD(CS, CSMR2, CSMR2, 32);
IRMD(CS, CSCR2, CSCR2, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_cs3 (char *reg, int regread, uint32 value)
{
IRMD(CS, CSAR3, CSAR3, 16);
IRMD(CS, CSMR3, CSMR3, 32);
IRMD(CS, CSCR3, CSCR3, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_cs4 (char *reg, int regread, uint32 value)
{
IRMD(CS, CSAR4, CSAR4, 16);
IRMD(CS, CSMR4, CSMR4, 32);
IRMD(CS, CSCR4, CSCR4, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_cs5 (char *reg, int regread, uint32 value)
{
IRMD(CS, CSAR5, CSAR5, 16);
IRMD(CS, CSMR5, CSMR5, 32);
IRMD(CS, CSCR5, CSCR5, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_cs6 (char *reg, int regread, uint32 value)
{
IRMD(CS, CSAR6, CSAR6, 16);
IRMD(CS, CSMR6, CSMR6, 32);
IRMD(CS, CSCR6, CSCR6, 16);
if (!display_all)
printf(INVREG,reg);
}
static void
irmd_cs7 (char *reg, int regread, uint32 value)
{
IRMD(CS, CSAR7, CSAR7, 16);
IRMD(CS, CSMR7, CSMR7, 32);
IRMD(CS, CSCR7, CSCR7, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_gpio (char *reg, int regread, uint32 value)
{
IRMD(GPIO, PODR_BUSCTL,PODR_BUSCTL, 8);
IRMD(GPIO, PODR_ADDR, PODR_ADDR, 8);
IRMD(GPIO, PODR_CS, PODR_CS, 8);
IRMD(GPIO, PODR_FEC0H, PODR_FEC0H, 8);
IRMD(GPIO, PODR_FEC0L, PODR_FEC0L, 8);
IRMD(GPIO, PODR_FECI2C,PODR_FECI2C, 8);
IRMD(GPIO, PODR_QSPI, PODR_QSPI, 8);
IRMD(GPIO, PODR_SDRAM, PODR_SDRAM, 8);
IRMD(GPIO, PODR_TIMERH,PODR_TIMERH, 8);
IRMD(GPIO, PODR_TIMERL,PODR_TIMERL, 8);
IRMD(GPIO, PODR_UARTL, PODR_UARTL, 8);
IRMD(GPIO, PODR_FEC1H, PODR_FEC1H, 8);
IRMD(GPIO, PODR_FEC1L, PODR_FEC1L, 8);
IRMD(GPIO, PODR_BS, PODR_BS, 8);
IRMD(GPIO, PODR_IRQ, PODR_IRQ, 8);
IRMD(GPIO, PODR_USBH, PODR_USBH, 8);
IRMD(GPIO, PODR_USBL, PODR_USBL, 8);
IRMD(GPIO, PODR_UARTH, PODR_UARTH, 8);
IRMD(GPIO, PDDR_BUSCTL,PDDR_BUSCTL, 8);
IRMD(GPIO, PDDR_ADDR, PDDR_ADDR, 8);
IRMD(GPIO, PDDR_CS, PDDR_CS, 8);
IRMD(GPIO, PDDR_FEC0H, PDDR_FEC0H, 8);
IRMD(GPIO, PDDR_FEC0L, PDDR_FEC0L, 8);
IRMD(GPIO, PDDR_FECI2C,PDDR_FECI2C, 8);
IRMD(GPIO, PDDR_QSPI, PDDR_QSPI, 8);
IRMD(GPIO, PDDR_SDRAM, PDDR_SDRAM, 8);
IRMD(GPIO, PDDR_TIMERH,PDDR_TIMERH, 8);
IRMD(GPIO, PDDR_TIMERL,PDDR_TIMERL, 8);
IRMD(GPIO, PDDR_UARTL, PDDR_UARTL, 8);
IRMD(GPIO, PDDR_FEC1H, PDDR_FEC1H, 8);
IRMD(GPIO, PDDR_FEC1L, PDDR_FEC1L, 8);
IRMD(GPIO, PDDR_BS, PDDR_BS, 8);
IRMD(GPIO, PDDR_IRQ, PDDR_IRQ, 8);
IRMD(GPIO, PDDR_USBH, PDDR_USBH, 8);
IRMD(GPIO, PDDR_USBL, PDDR_USBL, 8);
IRMD(GPIO, PDDR_UARTH, PDDR_UARTH, 8);
IRMD(GPIO, PPDSDR_BUSCTL, PPDSDR_BUSCTL, 8);
IRMD(GPIO, PPDSDR_ADDR, PPDSDR_ADDR, 8);
IRMD(GPIO, PPDSDR_CS, PPDSDR_CS, 8);
IRMD(GPIO, PPDSDR_FEC0H, PPDSDR_FEC0H, 8);
IRMD(GPIO, PPDSDR_FEC0L, PPDSDR_FEC0L, 8);
IRMD(GPIO, PPDSDR_FECI2C, PPDSDR_FECI2C, 8);
IRMD(GPIO, PPDSDR_QSPI, PPDSDR_QSPI, 8);
IRMD(GPIO, PPDSDR_SDRAM, PPDSDR_SDRAM, 8);
IRMD(GPIO, PPDSDR_TIMERH, PPDSDR_TIMERH, 8);
IRMD(GPIO, PPDSDR_TIMERL, PPDSDR_TIMERL, 8);
IRMD(GPIO, PPDSDR_UARTL, PPDSDR_UARTL, 8);
IRMD(GPIO, PPDSDR_FEC1H, PPDSDR_FEC1H, 8);
IRMD(GPIO, PPDSDR_FEC1L, PPDSDR_FEC1L, 8);
IRMD(GPIO, PPDSDR_BS, PPDSDR_BS, 8);
IRMD(GPIO, PPDSDR_IRQ, PPDSDR_IRQ, 8);
IRMD(GPIO, PPDSDR_USBH, PPDSDR_USBH, 8);
IRMD(GPIO, PPDSDR_USBL, PPDSDR_USBL, 8);
IRMD(GPIO, PPDSDR_UARTH, PPDSDR_UARTH, 8);
IRMD(GPIO, PCLRR_BUSCTL,PCLRR_BUSCTL, 8);
IRMD(GPIO, PCLRR_ADDR, PCLRR_ADDR, 8);
IRMD(GPIO, PCLRR_CS, PCLRR_CS, 8);
IRMD(GPIO, PCLRR_FEC0H, PCLRR_FEC0H, 8);
IRMD(GPIO, PCLRR_FEC0L, PCLRR_FEC0L, 8);
IRMD(GPIO, PCLRR_FECI2C,PCLRR_FECI2C, 8);
IRMD(GPIO, PCLRR_QSPI, PCLRR_QSPI, 8);
IRMD(GPIO, PCLRR_SDRAM, PCLRR_SDRAM, 8);
IRMD(GPIO, PCLRR_TIMERH,PCLRR_TIMERH, 8);
IRMD(GPIO, PCLRR_TIMERL,PCLRR_TIMERL, 8);
IRMD(GPIO, PCLRR_UARTL, PCLRR_UARTL, 8);
IRMD(GPIO, PCLRR_FEC1H, PCLRR_FEC1H, 8);
IRMD(GPIO, PCLRR_FEC1L, PCLRR_FEC1L, 8);
IRMD(GPIO, PCLRR_BS, PCLRR_BS, 8);
IRMD(GPIO, PCLRR_IRQ , PCLRR_IRQ, 8);
IRMD(GPIO, PCLRR_USBH, PCLRR_USBH, 8);
IRMD(GPIO, PCLRR_USBL, PCLRR_USBL, 8);
IRMD(GPIO, PCLRR_UARTH, PCLRR_UARTH, 8);
IRMD(GPIO, PAR_ADDR, PAR_ADDR, 8);
IRMD(GPIO, PAR_CS, PAR_CS, 8);
IRMD(GPIO, PAR_BUSCTL, PAR_BUSCTL, 16);
IRMD(GPIO, PAR_IRQ, PAR_IRQ, 16);
IRMD(GPIO, PAR_USB, PAR_USB, 16);
IRMD(GPIO, PAR_FEC0HL, PAR_FEC0HL, 8);
IRMD(GPIO, PAR_FEC1HL, PAR_FEC1HL, 8);
IRMD(GPIO, PAR_TIMER, PAR_TIMER, 16);
IRMD(GPIO, PAR_UART, PAR_UART, 16);
IRMD(GPIO, PAR_QSPI, PAR_QSPI, 16);
IRMD(GPIO, PAR_SDRAM, PAR_SDRAM, 16);
IRMD(GPIO, PAR_FECI2C, PAR_FECI2C, 16);
IRMD(GPIO, PAR_BS, PAR_BS, 8);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_qspi (char *reg, int regread, uint32 value)
{
IRMD(QSPI, QMR, QMR, 16);
IRMD(QSPI, QDLYR, QDLYR, 16);
IRMD(QSPI, QWR, QWR, 16);
IRMD(QSPI, QIR, QIR, 16);
IRMD(QSPI, QAR, QAR, 16);
IRMD(QSPI, QDR, QDR, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_dma0 (char *reg, int regread, uint32 value)
{
IRMD(DMA, SAR0, SAR0, 32);
IRMD(DMA, DAR0, DAR0, 32);
IRMD(DMA, DSR0, DSR0, 8);
IRMD(DMA, BCR0, BCR0, 32);
IRMD(DMA, DCR0, DCR0, 32);
IRMD(DMA, DMAREQC0, DMAREQC0, 32);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_dma1 (char *reg, int regread, uint32 value)
{
IRMD(DMA, SAR1, SAR1, 32);
IRMD(DMA, DAR1, DAR1, 32);
IRMD(DMA, DSR1, DSR1, 8);
IRMD(DMA, BCR1, BCR1, 32);
IRMD(DMA, DCR1, DCR1, 32);
IRMD(DMA, DMAREQC1, DMAREQC1, 32);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_dma2 (char *reg, int regread, uint32 value)
{
IRMD(DMA, SAR2, SAR2, 32);
IRMD(DMA, DAR2, DAR2, 32);
IRMD(DMA, DSR2, DSR2, 8);
IRMD(DMA, BCR2, BCR2, 32);
IRMD(DMA, DCR2, DCR2, 32);
IRMD(DMA, DMAREQC2, DMAREQC2, 32);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_dma3 (char *reg, int regread, uint32 value)
{
IRMD(DMA, SAR3, SAR3, 32);
IRMD(DMA, DAR3, DAR3, 32);
IRMD(DMA, DSR3, DSR3, 8);
IRMD(DMA, BCR3, BCR3, 32);
IRMD(DMA, DCR3, DCR3, 32);
IRMD(DMA, DMAREQC3, DMAREQC3, 32);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_uart0 (char *reg, int regread, uint32 value)
{
IRMD(UART, UMR0, UMR0, 8);
IRMD(UART, USR0, USR0, 8);
IRMD(UART, UCSR0, UCSR0, 8);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -