powerpc: mpc8xx: cleaning up watchdog

In preparation of migration to DM watchdog, clean up a bit.

The 8xx watchdog really is a HW watchdog, so declare it as is
then it goes through Kconfig

And the watchdog reset doesn't mind getting interrupted, so
no need to disable interrupts

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
master
Christophe Leroy 6 years ago committed by Tom Rini
parent ab0d819258
commit 5c5da4318b
  1. 1
      arch/powerpc/Kconfig
  2. 19
      arch/powerpc/cpu/mpc8xx/cpu.c
  3. 9
      arch/powerpc/cpu/mpc8xx/cpu_init.c
  4. 2
      include/configs/MCR3000.h
  5. 5
      include/watchdog.h

@ -34,6 +34,7 @@ config MPC8xx
bool "MPC8xx" bool "MPC8xx"
select BOARD_EARLY_INIT_F select BOARD_EARLY_INIT_F
imply CMD_REGINFO imply CMD_REGINFO
imply HW_WATCHDOG
endchoice endchoice

@ -272,24 +272,11 @@ unsigned long get_tbclk(void)
/* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */
#if defined(CONFIG_WATCHDOG) #if defined(CONFIG_HW_WATCHDOG)
void watchdog_reset(void) void hw_watchdog_reset(void)
{ {
int re_enable = disable_interrupts(); immap_t __iomem *immr = (immap_t __iomem *)CONFIG_SYS_IMMR;
reset_8xx_watchdog((immap_t __iomem *)CONFIG_SYS_IMMR);
if (re_enable)
enable_interrupts();
}
#endif /* CONFIG_WATCHDOG */
#if defined(CONFIG_WATCHDOG)
void reset_8xx_watchdog(immap_t __iomem *immr)
{
/*
* All other boards use the MPC8xx Internal Watchdog
*/
out_be16(&immr->im_siu_conf.sc_swsr, 0x556c); /* write magic1 */ out_be16(&immr->im_siu_conf.sc_swsr, 0x556c); /* write magic1 */
out_be16(&immr->im_siu_conf.sc_swsr, 0xaa39); /* write magic2 */ out_be16(&immr->im_siu_conf.sc_swsr, 0xaa39); /* write magic2 */
} }

@ -26,11 +26,12 @@ void cpu_init_f(immap_t __iomem *immr)
/* SYPCR - contains watchdog control (11-9) */ /* SYPCR - contains watchdog control (11-9) */
out_be32(&immr->im_siu_conf.sc_sypcr, CONFIG_SYS_SYPCR); #ifndef CONFIG_HW_WATCHDOG
/* deactivate watchdog if not enabled in config */
out_be32(&immr->im_siu_conf.sc_sypcr, CONFIG_SYS_SYPCR & ~SYPCR_SWE);
#endif
#if defined(CONFIG_WATCHDOG) WATCHDOG_RESET();
reset_8xx_watchdog(immr);
#endif /* CONFIG_WATCHDOG */
/* SIUMCR - contains debug pin configuration (11-6) */ /* SIUMCR - contains debug pin configuration (11-6) */
setbits_be32(&immr->im_siu_conf.sc_siumcr, CONFIG_SYS_SIUMCR); setbits_be32(&immr->im_siu_conf.sc_siumcr, CONFIG_SYS_SIUMCR);

@ -60,8 +60,6 @@
#define CONFIG_LOADS_ECHO 1 /* echo on for serial download */ #define CONFIG_LOADS_ECHO 1 /* echo on for serial download */
#define CONFIG_WATCHDOG 1 /* watchdog enabled */
/* Miscellaneous configurable options */ /* Miscellaneous configurable options */
#define CONFIG_SYS_MEMTEST_START 0x00002000 #define CONFIG_SYS_MEMTEST_START 0x00002000

@ -72,11 +72,6 @@ int init_func_watchdog_reset(void);
* Prototypes from $(CPU)/cpu.c. * Prototypes from $(CPU)/cpu.c.
*/ */
/* MPC 8xx */
#if defined(CONFIG_MPC8xx) && !defined(__ASSEMBLY__)
void reset_8xx_watchdog(immap_t __iomem *immr);
#endif
#if defined(CONFIG_HW_WATCHDOG) && !defined(__ASSEMBLY__) #if defined(CONFIG_HW_WATCHDOG) && !defined(__ASSEMBLY__)
void hw_watchdog_init(void); void hw_watchdog_init(void);
#endif #endif

Loading…
Cancel
Save