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 + -
显示快捷键?