Florian Fainelli <florian@openwrt.org> wrote:
>
> This patch checks if the watchdog enable bit is set in the DCL
> register meaning that the hardware watchdog actually works and
> if so, register the ar7_wdt platform_device.
>
> Signed-off-by: Florian Fainelli <florian@openwrt.org>
> ---
> diff --git a/arch/mips/ar7/platform.c b/arch/mips/ar7/platform.c
> index e2278c0..835f3f0 100644
> --- a/arch/mips/ar7/platform.c
> +++ b/arch/mips/ar7/platform.c
> @@ -503,6 +503,7 @@ static int __init ar7_register_devices(void)
> {
> u16 chip_id;
> int res;
> + u32 *bootcr, val;
> #ifdef CONFIG_SERIAL_8250
> static struct uart_port uart_port[2];
>
> @@ -595,7 +596,13 @@ static int __init ar7_register_devices(void)
>
> ar7_wdt_res.end = ar7_wdt_res.start + 0x20;
>
> - res = platform_device_register(&ar7_wdt);
> + bootcr = (u32 *)ioremap_nocache(AR7_REGS_DCL, 4);
> + val = *bootcr;
> + iounmap(bootcr);
> +
> + /* Register watchdog only if enabled in hardware */
> + if (val & AR7_WDT_HW_ENA)
> + res = platform_device_register(&ar7_wdt);
>
> return res;
> }
>
'res' can now return NULL[1]. Solved if you do:
----
int res = -ENODEV;
----
I'm guessing this is the most apprioate?
Cheers
[1] I cannot see the full file annoyingly, it's not in my linux-mips
git tree.
--
Alexander Clouter
.sigmonster says: It doesn't matter whether you win or lose -- until you lose.
|