📄 mcf532x_hi.c
字号:
{
IRMD(LCDC, LSSAR, 32);
IRMD(LCDC, LSR, 32);
IRMD(LCDC, LVPWR, 32);
IRMD(LCDC, LCPR, 32);
IRMD(LCDC, LCWHBR, 32);
IRMD(LCDC, LCCMR, 32);
IRMD(LCDC, LPCR, 32);
IRMD(LCDC, LHCR, 32);
IRMD(LCDC, LVCR, 32);
IRMD(LCDC, LPOR, 32);
IRMD(LCDC, LSCR, 32);
IRMD(LCDC, LPCCR, 32);
IRMD(LCDC, LDCR, 32);
IRMD(LCDC, LRMCR, 32);
IRMD(LCDC, LICR, 32);
IRMD(LCDC, LIER, 32);
IRMD(LCDC, LISR, 32);
IRMD(LCDC, LGWSAR, 32);
IRMD(LCDC, LGWSR, 32);
IRMD(LCDC, LGWVPWR, 32);
IRMD(LCDC, LGWPOR , 32);
IRMD(LCDC, LGWPR , 32);
IRMD(LCDC, LGWCR , 32);
IRMD(LCDC, LGWDCR , 32);
IRMD(LCDC, BPLUT_BASE, 32);
IRMD(LCDC, GWLUT_BASE, 32);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_can (char *reg, int regread, uint32 value)
{
IRMD(CAN, CANMCR, 32);
IRMD(CAN, CANCTRL, 32);
IRMD(CAN, TIMER, 32);
IRMD(CAN, RXGMASK, 32);
IRMD(CAN, RX14MASK, 32);
IRMD(CAN, RX15MASK, 32);
IRMD(CAN, ERRCNT, 32);
IRMD(CAN, ERRSTAT, 32);
IRMD(CAN, IMASK, 16);
IRMD(CAN, IFLAG, 16);
}
/********************************************************************/
static void
irmd_ssi (char *reg, int regread, uint32 value)
{
IRMD(SSI, TX0, 32);
IRMD(SSI, TX1, 32);
IRMD(SSI, RX0, 32);
IRMD(SSI, RX1, 32);
IRMD(SSI, CR, 32);
IRMD(SSI, ISR, 32);
IRMD(SSI, IER, 32);
IRMD(SSI, TCR, 32);
IRMD(SSI, RCR, 32);
IRMD(SSI, CCR, 32);
IRMD(SSI, FCSR, 32);
IRMD(SSI, ACR, 32);
IRMD(SSI, ACADD, 32);
IRMD(SSI, ACDAT, 32);
IRMD(SSI, ATAG, 32);
IRMD(SSI, TMASK, 32);
IRMD(SSI, RMASK, 32);
}
/********************************************************************/
static void
irmd_rtc (char *reg, int regread, uint32 value)
{
IRMD(RTC, HOURMIN, 32);
IRMD(RTC, SECONDS, 32);
IRMD(RTC, ALRM_HM, 32);
IRMD(RTC, ALRM_SEC, 32);
IRMD(RTC, CR, 32);
IRMD(RTC, ISR, 32);
IRMD(RTC, IER, 32);
IRMD(RTC, STPWCH, 32);
IRMD(RTC, DAYS, 32);
IRMD(RTC, ALRM_DAY, 32);
}
/********************************************************************/
static void
irmd_pwm (char *reg, int regread, uint32 value)
{
IRMD(PWM, PWME, 8);
IRMD(PWM, PWMPOL, 8);
IRMD(PWM, PWMCLK, 8);
IRMD(PWM, PWMPRCLK, 8);
IRMD(PWM, PWMCAE, 8);
IRMD(PWM, PWMCTL, 8);
IRMD(PWM, PWMSCLA, 8);
IRMD(PWM, PWMSCLB, 8);
IRMD(PWM, PWMCNT0, 8);
IRMD(PWM, PWMCNT1, 8);
IRMD(PWM, PWMCNT2, 8);
IRMD(PWM, PWMCNT3, 8);
IRMD(PWM, PWMCNT4, 8);
IRMD(PWM, PWMCNT5, 8);
IRMD(PWM, PWMCNT6, 8);
IRMD(PWM, PWMCNT7, 8);
IRMD(PWM, PWMPER0, 8);
IRMD(PWM, PWMPER1, 8);
IRMD(PWM, PWMPER2, 8);
IRMD(PWM, PWMPER3, 8);
IRMD(PWM, PWMPER4, 8);
IRMD(PWM, PWMPER5, 8);
IRMD(PWM, PWMPER6, 8);
IRMD(PWM, PWMPER7, 8);
IRMD(PWM, PWMDTY0, 8);
IRMD(PWM, PWMDTY1, 8);
IRMD(PWM, PWMDTY2, 8);
IRMD(PWM, PWMDTY3, 8);
IRMD(PWM, PWMDTY4, 8);
IRMD(PWM, PWMDTY5, 8);
IRMD(PWM, PWMDTY6, 8);
IRMD(PWM, PWMDTY7, 8);
IRMD(PWM, PWMSDN, 8);
}
/********************************************************************/
static void
irmd_mdha (char *reg, int regread, uint32 value)
{
IRMD(MDHA, MDMR, 32);
IRMD(MDHA, MDCR, 32);
IRMD(MDHA, MDCMR, 32);
IRMD(MDHA, MDSR, 32);
IRMD(MDHA, MDISR, 32);
IRMD(MDHA, MDIMR, 32);
IRMD(MDHA, MDDSR, 32);
IRMD(MDHA, MDIN, 32);
IRMD(MDHA, MDA0, 32);
IRMD(MDHA, MDB0, 32);
IRMD(MDHA, MDC0, 32);
IRMD(MDHA, MDD0, 32);
IRMD(MDHA, MDE0, 32);
IRMD(MDHA, MDMDS, 32);
IRMD(MDHA, MDA1, 32);
IRMD(MDHA, MDB1, 32);
IRMD(MDHA, MDC1, 32);
IRMD(MDHA, MDD1, 32);
IRMD(MDHA, MDE1, 32);
}
/********************************************************************/
static void
irmd_rng (char *reg, int regread, uint32 value)
{
IRMD(RNG, RNGCR, 32);
IRMD(RNG, RNGSR, 32);
IRMD(RNG, RNGER, 32);
IRMD(RNG, RNGOUT, 32);
}
/********************************************************************/
static void
irmd_skha (char *reg, int regread, uint32 value)
{
IRMD(SKHA, SKMR, 32);
IRMD(SKHA, SKCR, 32);
IRMD(SKHA, SKCMR, 32);
IRMD(SKHA, SKSR, 32);
IRMD(SKHA, SKISR, 32);
IRMD(SKHA, SKIMR, 32);
IRMD(SKHA, SKKSR, 32);
IRMD(SKHA, SKDSR, 32);
IRMD(SKHA, SKIN, 32);
IRMD(SKHA, SKOUT, 32);
IRMD(SKHA, SKK0, 32);
IRMD(SKHA, SKK1, 32);
IRMD(SKHA, SKK2, 32);
IRMD(SKHA, SKK3, 32);
IRMD(SKHA, SKK4, 32);
IRMD(SKHA, SKK5, 32);
IRMD(SKHA, SKC0, 32);
IRMD(SKHA, SKC1, 32);
IRMD(SKHA, SKC2, 32);
IRMD(SKHA, SKC3, 32);
IRMD(SKHA, SKC4, 32);
IRMD(SKHA, SKC5, 32);
IRMD(SKHA, SKC6, 32);
IRMD(SKHA, SKC7, 32);
IRMD(SKHA, SKC8, 32);
IRMD(SKHA, SKC9, 32);
IRMD(SKHA, SKC10, 32);
}
/********************************************************************/
static const struct module_t
{
char *module;
void (*func)(char *, int, uint32);
} MODULE[] =
{
{"SCM", irmd_scm},
{"XBS", irmd_xbs},
{"FBCS", irmd_fbcs},
{"FEC", irmd_fec},
{"PMM", irmd_pmm},
{"EDMA", irmd_edma},
{"EDMA_TCD0",irmd_edma_tcd0},
{"EDMA_TCD1",irmd_edma_tcd1},
{"EDMA_TCD2",irmd_edma_tcd2},
{"EDMA_TCD3",irmd_edma_tcd3},
{"EDMA_TCD4",irmd_edma_tcd4},
{"EDMA_TCD5",irmd_edma_tcd5},
{"EDMA_TCD6",irmd_edma_tcd6},
{"EDMA_TCD7",irmd_edma_tcd7},
{"EDMA_TCD8",irmd_edma_tcd8},
{"EDMA_TCD9",irmd_edma_tcd9},
{"EDMA_TCD10",irmd_edma_tcd10},
{"EDMA_TCD11",irmd_edma_tcd11},
{"EDMA_TCD12",irmd_edma_tcd12},
{"EDMA_TCD13",irmd_edma_tcd13},
{"EDMA_TCD14",irmd_edma_tcd14},
{"EDMA_TCD15",irmd_edma_tcd15},
{"INTC0", irmd_intc0},
{"INTC1", irmd_intc1},
{"INTC_IACK", irmd_intc_iack},
{"I2C", irmd_i2c},
{"QSPI", irmd_qspi},
{"UART0", irmd_uart0},
{"UART1", irmd_uart1},
{"UART2", irmd_uart2},
{"TIMER0", irmd_dma_timer0},
{"TIMER1", irmd_dma_timer1},
{"TIMER2", irmd_dma_timer2},
{"TIMER3", irmd_dma_timer3},
{"PIT0", irmd_pit0},
{"PIT1", irmd_pit1},
{"PIT2", irmd_pit2},
{"PIT3", irmd_pit3},
{"EPORT", irmd_eport},
{"WTM", irmd_wtm},
{"RCM", irmd_rcm},
{"CCM", irmd_ccm},
{"PLL", irmd_pll},
{"GPIO", irmd_gpio},
{"SDRAMC", irmd_sdramc},
{"USB_OTG", irmd_usb_otg},
{"USB_HOST", irmd_usb_host},
{"LCDC", irmd_lcdc},
{"CAN", irmd_can},
{"SSI", irmd_ssi},
{"RTC", irmd_rtc},
{"PWM", irmd_pwm},
{"MDHA", irmd_mdha},
{"SKHA", irmd_skha},
{"RNG", irmd_rng}
};
#define MODULE_SIZE (int)(sizeof(MODULE)/sizeof(struct module_t))
/********************************************************************/
void
mcf532x_irmd (int argc, char **argv)
{
uint32 value;
char *rstr;
char mstr[20];
int mi, success;
display_all = FALSE;
displayed = 0;
if (argc == 1)
{
for (mi = 0; mi < MODULE_SIZE; ++mi)
{
if (!(mi % 6))
printf("\n");
printf("%-11s ",MODULE[mi].module);
}
printf("\n\n");
return;
}
/*
* Pick out module name and Point to register name
*/
mi = 0;
rstr = argv[1];
while (*rstr != '.')
{
mstr[mi++] = *rstr;
if (*++rstr == '\0')
{
rstr = NULL;
break;
}
}
mstr[mi] = '\0';
if (rstr != NULL)
{
if (*rstr == '.')
++rstr;
}
/*
* Get the new value
*/
if (argc == 3)
{
if (rstr == NULL)
{
printf("Error: Invalid Register: %s\n",argv[1]);
return;
}
value = get_value(argv[2],&success,16);
if (success == 0)
{
printf(INVALUE,argv[2]);
return;
}
}
else
value = 0;
/*
* Determine which module
*/
for (mi = 0; mi < MODULE_SIZE; ++mi)
{
if (strcasecmp(MODULE[mi].module,mstr) == 0)
{
if (argc == 3) /* modify operation */
{
MODULE[mi].func(rstr, REGWRITE, value);
}
else
{
/* display operation */
if (rstr == NULL)
{
display_all = TRUE;
printf("Module: %s\n",MODULE[mi].module);
}
MODULE[mi].func(rstr, REGREAD, 0);
}
return;
}
}
printf(INVMOD,argv[1]);
}
/********************************************************************/
void
cpu_handle_interrupt (int vector)
{
if (vector < 64 || vector > 128)
return;
switch (vector)
{
case 65: /* Eport Interrupt 1 */
MCF_EPORT_EPFR = MCF_EPORT_EPFR_EPF1;
printf("\nEdge Port Interrupt #1\n");
break;
case 66: /* Eport Interrupt 4 */
MCF_EPORT_EPFR = MCF_EPORT_EPFR_EPF4;
printf("\nEdge Port Interrupt #4\n");
break;
case 67: /* Eport Interrupt 7 */
MCF_EPORT_EPFR = MCF_EPORT_EPFR_EPF7;
printf("\nEdge Port Interrupt #7\n");
break;
default:
printf("\nUser Defined Vector #%d\n",vector);
break;
}
}
/********************************************************************/
/*
* Pause for the specified number of micro-seconds.
* Uses DTIM3 as a timer
*/
void
cpu_pause_usec(int usecs)
{
/* Enable the DMA Timer 3 */
MCF_TIMER3_DTRR = (usecs - 1);
MCF_TIMER3_DTER = MCF_TIMER_DTER_REF;
MCF_TIMER3_DTMR = 0
| MCF_TIMER_DTMR_PS(SYSTEM_CLOCK)
| MCF_TIMER_DTMR_ORRI
| MCF_TIMER_DTMR_FRR
| MCF_TIMER_DTMR_CLK_DIV1
| MCF_TIMER_DTMR_RST;
while ((MCF_TIMER3_DTER & MCF_TIMER_DTER_REF) == 0)
{};
/* Disable the timer */
MCF_TIMER3_DTMR = 0;
}
/********************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -