mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2024-11-19 06:54:58 +01:00
30 lines
832 B
Diff
30 lines
832 B
Diff
|
--- a/drivers/watchdog/ar7_wdt.c 2009-01-25 01:17:01.000000000 +1300
|
||
|
+++ b/drivers/watchdog/ar7_wdt.c 2009-01-25 01:19:15.000000000 +1300
|
||
|
@@ -293,12 +293,26 @@
|
||
|
.fops = &ar7_wdt_fops,
|
||
|
};
|
||
|
|
||
|
+#define AR7_WDT_HARDWARE_ENABLE 0x10
|
||
|
+
|
||
|
static int __init ar7_wdt_init(void)
|
||
|
{
|
||
|
int rc;
|
||
|
+ u32 *bootcr;
|
||
|
+ u32 bootcr_value;
|
||
|
|
||
|
ar7_wdt_get_regs();
|
||
|
|
||
|
+ /* arch/mips/ar7/clocks.c is the only other thing that reads this */
|
||
|
+ bootcr = (u32 *)ioremap_nocache(AR7_REGS_DCL, 4);
|
||
|
+ bootcr_value = *bootcr;
|
||
|
+ iounmap(bootcr);
|
||
|
+
|
||
|
+ if (!(bootcr_value & AR7_WDT_HARDWARE_ENABLE)) {
|
||
|
+ printk(KERN_INFO DRVNAME ": watchdog disabled in hardware (bootcr=%#x)\n", bootcr_value);
|
||
|
+ return -ENODEV;
|
||
|
+ }
|
||
|
+
|
||
|
if (!request_mem_region(ar7_regs_wdt, sizeof(struct ar7_wdt),
|
||
|
LONGNAME)) {
|
||
|
printk(KERN_WARNING DRVNAME ": watchdog I/O region busy\n");
|