mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-08 19:11:53 +00:00
mips: mt76xx: Enable watchdog support
This patch enables and starts the watchdog on the MT7620 platform. Currently the WD timeout is configured to 60 seconds. Signed-off-by: Stefan Roese <sr@denx.de> Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> [fixed build error due to missing function prototype arch_misc_init] Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
This commit is contained in:
parent
b4a6a1bb3f
commit
4ff942b059
3 changed files with 43 additions and 0 deletions
|
@ -79,6 +79,7 @@ config ARCH_MT7620
|
||||||
select DM_SERIAL
|
select DM_SERIAL
|
||||||
imply DM_SPI
|
imply DM_SPI
|
||||||
imply DM_SPI_FLASH
|
imply DM_SPI_FLASH
|
||||||
|
select ARCH_MISC_INIT if WATCHDOG
|
||||||
select MIPS_TUNE_24KC
|
select MIPS_TUNE_24KC
|
||||||
select OF_CONTROL
|
select OF_CONTROL
|
||||||
select ROM_EXCEPTION_VECTORS
|
select ROM_EXCEPTION_VECTORS
|
||||||
|
|
|
@ -7,4 +7,6 @@ void exc_handler(void);
|
||||||
void except_vec3_generic(void);
|
void except_vec3_generic(void);
|
||||||
void except_vec_ejtag_debug(void);
|
void except_vec_ejtag_debug(void);
|
||||||
|
|
||||||
|
int arch_misc_init(void);
|
||||||
|
|
||||||
#endif /* _U_BOOT_MIPS_H_ */
|
#endif /* _U_BOOT_MIPS_H_ */
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <dm.h>
|
#include <dm.h>
|
||||||
#include <ram.h>
|
#include <ram.h>
|
||||||
|
#include <wdt.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include <linux/sizes.h>
|
#include <linux/sizes.h>
|
||||||
|
@ -67,3 +68,42 @@ int print_cpuinfo(void)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_WATCHDOG
|
||||||
|
static struct udevice *watchdog_dev;
|
||||||
|
|
||||||
|
/* Called by macro WATCHDOG_RESET */
|
||||||
|
void watchdog_reset(void)
|
||||||
|
{
|
||||||
|
static ulong next_reset;
|
||||||
|
ulong now;
|
||||||
|
|
||||||
|
if (!watchdog_dev)
|
||||||
|
return;
|
||||||
|
|
||||||
|
now = get_timer(0);
|
||||||
|
|
||||||
|
/* Do not reset the watchdog too often */
|
||||||
|
if (now > next_reset) {
|
||||||
|
next_reset = now + 1000; /* reset every 1000ms */
|
||||||
|
wdt_reset(watchdog_dev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int arch_misc_init(void)
|
||||||
|
{
|
||||||
|
/* Init watchdog */
|
||||||
|
if (uclass_get_device_by_seq(UCLASS_WDT, 0, &watchdog_dev)) {
|
||||||
|
debug("Watchdog: Not found by seq!\n");
|
||||||
|
if (uclass_get_device(UCLASS_WDT, 0, &watchdog_dev)) {
|
||||||
|
puts("Watchdog: Not found!\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wdt_start(watchdog_dev, 60000, 0); /* 60 seconds */
|
||||||
|
printf("Watchdog: Started\n");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue