mcf548x_hi.c
来自「motorola 针对coldfire 5275 评估板的Dbug bootlo」· C语言 代码 · 共 1,127 行 · 第 1/3 页
C
1,127 行
/*
* File: MCF_hi.c
* Purpose: Register display/modify routines for MCF modules.
*
* Notes:
*
*/
#include "src/include/dbug.h"
#include "src/uif/cpu.h"
/********************************************************************/
/*
* CPU name string and source code version for display at boot-up.
*/
#if (defined(CPU_MCF548X))
const char CPU_STR[] = "ColdFire MCF548X";
#elif (defined(CPU_MCF547X))
const char CPU_STR[] = "ColdFire MCF547X";
#else
#error "Error: Unsuported ColdFire processor"
#endif
const int CPU_VER_MAJOR = 1;
const char CPU_VER_MINOR = 'a';
/********************************************************************/
static const char FORMAT8[] = "%15s : %02X\n";
static const char FORMAT16[] = "%15s : %04X\n";
static const char FORMAT32[] = "%15s : %08X\n";
static const char INVMOD[] = "Error: Invalid Module: %s\n";
#define IRMD(MOD,REG,SIZE) \
if (regread) \
{ \
if ((strcasecmp(#REG,reg) == 0) || display_all) \
{ \
rdata = MCF_ ## MOD ## _ ## REG; \
printf(FORMAT ## SIZE, #REG, rdata); \
\
pause(&displayed); \
\
if (!display_all) return; \
} \
} \
else \
{ \
if (strcasecmp(#REG,reg) == 0) \
{ \
MCF_ ## MOD ## _ ## REG = (uint ## SIZE) value; \
return; \
} \
}
static int display_all;
static int displayed;
static uint32 rdata;
/********************************************************************/
static void
irmd_siu (char *reg, int regread, uint32 value)
{
IRMD(SIU, SBCR, 32);
IRMD(SIU, SECSACR, 32);
IRMD(SIU, RSR, 32);
IRMD(SIU, JTAGID, 32);
}
/********************************************************************/
static void
irmd_gpt (char *reg, int regread, uint32 value)
{
IRMD(GPT, GMS0, 32);
IRMD(GPT, GCIR0, 32);
IRMD(GPT, GPWM0, 32);
IRMD(GPT, GSR0, 32);
IRMD(GPT, GMS1, 32);
IRMD(GPT, GCIR1, 32);
IRMD(GPT, GPWM1, 32);
IRMD(GPT, GSR1, 32);
IRMD(GPT, GMS2, 32);
IRMD(GPT, GCIR2, 32);
IRMD(GPT, GPWM2, 32);
IRMD(GPT, GSR2, 32);
IRMD(GPT, GMS3, 32);
IRMD(GPT, GCIR3, 32);
IRMD(GPT, GPWM3, 32);
IRMD(GPT, GSR3, 32);
}
/********************************************************************/
static void
irmd_slt (char *reg, int regread, uint32 value)
{
IRMD(SLT, SLTCNT0, 32);
IRMD(SLT, SCR0, 32);
IRMD(SLT, SCNT0, 32);
IRMD(SLT, SSR0, 32);
IRMD(SLT, SLTCNT1, 32);
IRMD(SLT, SCR1, 32);
IRMD(SLT, SCNT1, 32);
IRMD(SLT, SSR1, 32);
}
/********************************************************************/
static void
irmd_intc (char *reg, int regread, uint32 value)
{
IRMD(INTC, IPRH, 32);
IRMD(INTC, IPRL, 32);
IRMD(INTC, IMRH, 32);
IRMD(INTC, IMRL, 32);
IRMD(INTC, INTFRCH,32);
IRMD(INTC, INTFRCL,32);
IRMD(INTC, IRLR, 8);
IRMD(INTC, IACKLPR,8);
IRMD(INTC, ICR1, 8);
IRMD(INTC, ICR2, 8);
IRMD(INTC, ICR3, 8);
IRMD(INTC, ICR4, 8);
IRMD(INTC, ICR5, 8);
IRMD(INTC, ICR6, 8);
IRMD(INTC, ICR7, 8);
IRMD(INTC, ICR8, 8);
IRMD(INTC, ICR9, 8);
IRMD(INTC, ICR10, 8);
IRMD(INTC, ICR11, 8);
IRMD(INTC, ICR12, 8);
IRMD(INTC, ICR13, 8);
IRMD(INTC, ICR14, 8);
IRMD(INTC, ICR15, 8);
IRMD(INTC, ICR17, 8);
IRMD(INTC, ICR18, 8);
IRMD(INTC, ICR19, 8);
IRMD(INTC, ICR20, 8);
IRMD(INTC, ICR21, 8);
IRMD(INTC, ICR22, 8);
IRMD(INTC, ICR23, 8);
IRMD(INTC, ICR24, 8);
IRMD(INTC, ICR25, 8);
IRMD(INTC, ICR26, 8);
IRMD(INTC, ICR27, 8);
IRMD(INTC, ICR28, 8);
IRMD(INTC, ICR29, 8);
IRMD(INTC, ICR30, 8);
IRMD(INTC, ICR31, 8);
IRMD(INTC, ICR32, 8);
IRMD(INTC, ICR33, 8);
IRMD(INTC, ICR34, 8);
IRMD(INTC, ICR35, 8);
IRMD(INTC, ICR36, 8);
IRMD(INTC, ICR37, 8);
IRMD(INTC, ICR38, 8);
IRMD(INTC, ICR39, 8);
IRMD(INTC, ICR40, 8);
IRMD(INTC, ICR41, 8);
IRMD(INTC, ICR42, 8);
IRMD(INTC, ICR43, 8);
IRMD(INTC, ICR44, 8);
IRMD(INTC, ICR45, 8);
IRMD(INTC, ICR46, 8);
IRMD(INTC, ICR47, 8);
IRMD(INTC, ICR48, 8);
IRMD(INTC, ICR49, 8);
IRMD(INTC, ICR50, 8);
IRMD(INTC, ICR51, 8);
IRMD(INTC, ICR52, 8);
IRMD(INTC, ICR53, 8);
IRMD(INTC, ICR54, 8);
IRMD(INTC, ICR55, 8);
IRMD(INTC, ICR56, 8);
IRMD(INTC, ICR57, 8);
IRMD(INTC, ICR58, 8);
IRMD(INTC, ICR59, 8);
IRMD(INTC, ICR60, 8);
IRMD(INTC, ICR61, 8);
IRMD(INTC, ICR62, 8);
IRMD(INTC, SWIACK, 8);
IRMD(INTC, L1IACK, 8);
IRMD(INTC, L2IACK, 8);
IRMD(INTC, L3IACK, 8);
IRMD(INTC, L4IACK, 8);
IRMD(INTC, L5IACK, 8);
IRMD(INTC, L6IACK, 8);
IRMD(INTC, L7IACK, 8);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_eport (char *reg, int regread, uint32 value)
{
IRMD(EPORT, EPPAR, 16);
IRMD(EPORT, EPDDR, 8);
IRMD(EPORT, EPIER, 8);
IRMD(EPORT, EPDR, 8);
IRMD(EPORT, EPPDR, 8);
IRMD(EPORT, EPFR, 8);
}
/********************************************************************/
static void
irmd_gpio (char *reg, int regread, uint32 value)
{
IRMD(GPIO, PODR_FBCTL, 8);
IRMD(GPIO, PODR_FBCS, 8);
IRMD(GPIO, PODR_DMA, 8);
IRMD(GPIO, PODR_FEC0H, 8);
IRMD(GPIO, PODR_FEC0L, 8);
IRMD(GPIO, PODR_FEC1H, 8);
IRMD(GPIO, PODR_FEC1L, 8);
IRMD(GPIO, PODR_FECI2C, 8);
IRMD(GPIO, PODR_PCIBG, 8);
IRMD(GPIO, PODR_PCIBR, 8);
IRMD(GPIO, PODR_PSC3PSC2, 8);
IRMD(GPIO, PODR_PSC1PSC0, 8);
IRMD(GPIO, PODR_DSPI, 8);
IRMD(GPIO, PDDR_FBCTL, 8);
IRMD(GPIO, PDDR_FBCS, 8);
IRMD(GPIO, PDDR_DMA, 8);
IRMD(GPIO, PDDR_FEC0H, 8);
IRMD(GPIO, PDDR_FEC0L, 8);
IRMD(GPIO, PDDR_FEC1H, 8);
IRMD(GPIO, PDDR_FEC1L, 8);
IRMD(GPIO, PDDR_FECI2C, 8);
IRMD(GPIO, PDDR_PCIBG, 8);
IRMD(GPIO, PDDR_PCIBR, 8);
IRMD(GPIO, PDDR_PSC3PSC2, 8);
IRMD(GPIO, PDDR_PSC1PSC0, 8);
IRMD(GPIO, PDDR_DSPI, 8);
IRMD(GPIO, PPDSDR_FBCTL, 8);
IRMD(GPIO, PPDSDR_FBCS, 8);
IRMD(GPIO, PPDSDR_DMA, 8);
IRMD(GPIO, PPDSDR_FEC0H, 8);
IRMD(GPIO, PPDSDR_FEC0L, 8);
IRMD(GPIO, PPDSDR_FEC1H, 8);
IRMD(GPIO, PPDSDR_FEC1L, 8);
IRMD(GPIO, PPDSDR_FECI2C, 8);
IRMD(GPIO, PPDSDR_PCIBG, 8);
IRMD(GPIO, PPDSDR_PCIBR, 8);
IRMD(GPIO, PPDSDR_PSC3PSC2, 8);
IRMD(GPIO, PPDSDR_PSC1PSC0, 8);
IRMD(GPIO, PPDSDR_DSPI, 8);
IRMD(GPIO, PCLRR_FBCTL, 8);
IRMD(GPIO, PCLRR_FBCS, 8);
IRMD(GPIO, PCLRR_DMA, 8);
IRMD(GPIO, PCLRR_FEC0H, 8);
IRMD(GPIO, PCLRR_FEC0L, 8);
IRMD(GPIO, PCLRR_FEC1H, 8);
IRMD(GPIO, PCLRR_FEC1L, 8);
IRMD(GPIO, PCLRR_FECI2C, 8);
IRMD(GPIO, PCLRR_PCIBG, 8);
IRMD(GPIO, PCLRR_PCIBR, 8);
IRMD(GPIO, PCLRR_PSC3PSC2, 8);
IRMD(GPIO, PCLRR_PSC1PSC0, 8);
IRMD(GPIO, PCLRR_DSPI, 8);
IRMD(GPIO, PAR_FBCTL, 16);
IRMD(GPIO, PAR_FBCS, 8);
IRMD(GPIO, PAR_DMA, 8);
IRMD(GPIO, PAR_FECI2CIRQ, 16);
IRMD(GPIO, PAR_PCIBG, 16);
IRMD(GPIO, PAR_PCIBR, 16);
IRMD(GPIO, PAR_PSC3, 8);
IRMD(GPIO, PAR_PSC2, 8);
IRMD(GPIO, PAR_PSC1, 8);
IRMD(GPIO, PAR_PSC0, 8);
IRMD(GPIO, PAR_DSPI, 8);
IRMD(GPIO, PAR_TIMER, 8);
}
/********************************************************************/
static void
irmd_sram (char *reg, int regread, uint32 value)
{
IRMD(SRAM, SSCR, 32);
IRMD(SRAM, TCCR, 32);
IRMD(SRAM, TCCRDR, 32);
IRMD(SRAM, TCCRDW, 32);
IRMD(SRAM, TCCRSEC, 32);
}
/********************************************************************/
static void
irmd_fbcs (char *reg, int regread, uint32 value)
{
IRMD(FBCS, CSAR0, 32);
IRMD(FBCS, CSMR0, 32);
IRMD(FBCS, CSCR0, 32);
IRMD(FBCS, CSAR1, 32);
IRMD(FBCS, CSMR1, 32);
IRMD(FBCS, CSCR1, 32);
IRMD(FBCS, CSAR2, 32);
IRMD(FBCS, CSMR2, 32);
IRMD(FBCS, CSCR2, 32);
IRMD(FBCS, CSAR3, 32);
IRMD(FBCS, CSMR3, 32);
IRMD(FBCS, CSCR3, 32);
IRMD(FBCS, CSAR4, 32);
IRMD(FBCS, CSMR4, 32);
IRMD(FBCS, CSCR4, 32);
IRMD(FBCS, CSAR5, 32);
IRMD(FBCS, CSMR5, 32);
IRMD(FBCS, CSCR5, 32);
}
/********************************************************************/
static void
irmd_sdramc (char *reg, int regread, uint32 value)
{
IRMD(SDRAMC, SDRAMDS, 32);
IRMD(SDRAMC, CS0CFG, 32);
IRMD(SDRAMC, CS1CFG, 32);
IRMD(SDRAMC, CS2CFG, 32);
IRMD(SDRAMC, CS3CFG, 32);
IRMD(SDRAMC, SDMR, 32);
IRMD(SDRAMC, SDCR, 32);
IRMD(SDRAMC, SDCFG1, 32);
IRMD(SDRAMC, SDCFG2, 32);
}
/********************************************************************/
static void
irmd_pci (char *reg, int regread, uint32 value)
{
IRMD(PCI, PCIIDR, 32);
IRMD(PCI, PCISCR, 32);
IRMD(PCI, PCICCRIR, 32);
IRMD(PCI, PCICR1, 32);
IRMD(PCI, PCIBAR0, 32);
IRMD(PCI, PCIBAR1, 32);
IRMD(PCI, PCICR2, 32);
IRMD(PCI, PCIGSCR, 32);
IRMD(PCI, PCITBATR0, 32);
IRMD(PCI, PCITBATR1, 32);
IRMD(PCI, PCITCR, 32);
IRMD(PCI, PCIIW0BTAR, 32);
IRMD(PCI, PCIIW1BTAR, 32);
IRMD(PCI, PCIIW2BTAR, 32);
IRMD(PCI, PCIIWCR, 32);
IRMD(PCI, PCIICR, 32);
IRMD(PCI, PCIISR, 32);
IRMD(PCI, PCICAR, 32);
IRMD(PCI, PCITPSR, 32);
IRMD(PCI, PCITSAR, 32);
IRMD(PCI, PCITTCR, 32);
IRMD(PCI, PCITER, 32);
IRMD(PCI, PCITNAR, 32);
IRMD(PCI, PCITLWR, 32);
IRMD(PCI, PCITDCR, 32);
IRMD(PCI, PCITSR, 32);
IRMD(PCI, PCITFDR, 32);
IRMD(PCI, PCITFSR, 32);
IRMD(PCI, PCITFCR, 32);
IRMD(PCI, PCITFAR, 32);
IRMD(PCI, PCITFRPR, 32);
IRMD(PCI, PCITFWPR, 32);
IRMD(PCI, PCIRPSR, 32);
IRMD(PCI, PCIRSAR, 32);
IRMD(PCI, PCIRTCR, 32);
IRMD(PCI, PCIRER, 32);
IRMD(PCI, PCIRNAR, 32);
IRMD(PCI, PCIRDCR, 32);
IRMD(PCI, PCIRSR, 32);
IRMD(PCI, PCIRFDR, 32);
IRMD(PCI, PCIRFSR, 32);
IRMD(PCI, PCIRFCR, 32);
IRMD(PCI, PCIRFAR, 32);
IRMD(PCI, PCIRFRPR, 32);
IRMD(PCI, PCIRFWPR, 32);
}
/********************************************************************/
static void
irmd_pciarb (char *reg, int regread, uint32 value)
{
IRMD(PCIARB, PACR, 32);
IRMD(PCIARB, PASR, 32);
}
/********************************************************************/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?