diff options
Diffstat (limited to 'cpu/mcf52x2/cpu.c')
-rw-r--r-- | cpu/mcf52x2/cpu.c | 70 |
1 files changed, 55 insertions, 15 deletions
diff --git a/cpu/mcf52x2/cpu.c b/cpu/mcf52x2/cpu.c index 8795bcc..aa6b2bd 100644 --- a/cpu/mcf52x2/cpu.c +++ b/cpu/mcf52x2/cpu.c @@ -29,6 +29,11 @@ #include <watchdog.h> #include <command.h> +#ifdef CONFIG_M5271 +#include <asm/immap_5271.h> +#include <asm/m5271.h> +#endif + #ifdef CONFIG_M5272 #include <asm/immap_5272.h> #include <asm/m5272.h> @@ -43,6 +48,42 @@ #include <asm/m5249.h> #endif +#ifdef CONFIG_M5271 +int checkcpu (void) +{ + char buf[32]; + + printf ("CPU: Freescale Coldfire MCF5271 at %s MHz\n", strmhz(buf, CFG_CLK)); + return 0; +} + +int do_reset (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]) { + mbar_writeByte(MCF_RCM_RCR, + MCF_RCM_RCR_SOFTRST | MCF_RCM_RCR_FRCRSTOUT); + return 0; +}; + +#if defined(CONFIG_WATCHDOG) +void watchdog_reset (void) +{ + mbar_writeShort(MCF_WTM_WSR, 0x5555); + mbar_writeShort(MCF_WTM_WSR, 0xAAAA); +} + +int watchdog_disable (void) +{ + mbar_writeShort(MCF_WTM_WCR, 0); + return (0); +} + +int watchdog_init (void) +{ + mbar_writeShort(MCF_WTM_WCR, MCF_WTM_WCR_EN); + return (0); +} +#endif /* #ifdef CONFIG_WATCHDOG */ + +#endif #ifdef CONFIG_M5272 int do_reset (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]) { @@ -71,12 +112,12 @@ int checkcpu(void) { case 0x4: suf = "3K75N"; break; default: suf = NULL; - printf ("MOTOROLA MCF5272 (Mask:%01x)\n", msk); + printf ("Freescale MCF5272 (Mask:%01x)\n", msk); break; } if (suf) - printf ("MOTOROLA MCF5272 %s\n", suf); + printf ("Freescale MCF5272 %s\n", suf); return 0; }; @@ -121,20 +162,19 @@ int watchdog_init (void) #ifdef CONFIG_M5282 int checkcpu (void) { - unsigned char resetsource; + unsigned char resetsource = MCFRESET_RSR; - printf ("CPU: MOTOROLA Coldfire MCF5282 (PIN: %2.2x REV: %2.2x)\n", + printf ("CPU: Freescale Coldfire MCF5282 (PIN: %2.2x REV: %2.2x)\n", MCFCCM_CIR>>8,MCFCCM_CIR & MCFCCM_CIR_PRN_MASK); - puts ("Reset: "); - resetsource = MCFRESET_RSR; - if (resetsource & MCFRESET_RSR_LOL) puts("Lose-of-lock "); - if (resetsource & MCFRESET_RSR_LOC) puts("Lose-of-clock "); - if (resetsource & MCFRESET_RSR_EXT) puts("external "); - if (resetsource & MCFRESET_RSR_POR) puts("Power-on "); - if (resetsource & MCFRESET_RSR_WDR) puts("Watchdog "); - if (resetsource & MCFRESET_RSR_SOFT) puts("Software "); - if (resetsource & MCFRESET_RSR_LVD) puts("Low-voltage "); - puts("\n"); + printf ("Reset:%s%s%s%s%s%s%s\n", + (resetsource & MCFRESET_RSR_LOL) ? " Loss of Lock" : "", + (resetsource & MCFRESET_RSR_LOC) ? " Loss of Clock" : "", + (resetsource & MCFRESET_RSR_EXT) ? " External" : "", + (resetsource & MCFRESET_RSR_POR) ? " Power On" : "", + (resetsource & MCFRESET_RSR_WDR) ? " Watchdog" : "", + (resetsource & MCFRESET_RSR_SOFT) ? " Software" : "", + (resetsource & MCFRESET_RSR_LVD) ? " Low Voltage" : "" + ); return 0; } @@ -150,7 +190,7 @@ int checkcpu (void) { char buf[32]; - printf ("CPU: MOTOROLA Coldfire MCF5249 at %s MHz\n", strmhz(buf, CFG_CLK)); + printf ("CPU: Freescale Coldfire MCF5249 at %s MHz\n", strmhz(buf, CFG_CLK)); return 0; } |