[PATCH V2 5/6] mpcore_wdt: Add cpufreq notifier to reload counter

Sergei Shtylyov sshtylyov at mvista.com
Wed Jul 6 08:09:05 EDT 2011


Hello.

On 05-07-2011 23:00, Vitaly Kuzmichev wrote:

> In the case if CPU frequency is changed when watchdog is working it begins to
> acount faster or slower. To avoid watchdog triggering before the margin time
> the watchdog counter needs to be reloaded.

> Signed-off-by: Vitaly Kuzmichev<vkuzmichev at mvista.com>
> ---
>   drivers/watchdog/mpcore_wdt.c |   31 ++++++++++++++++++++++++++++++-
>   1 files changed, 30 insertions(+), 1 deletions(-)

> diff --git a/drivers/watchdog/mpcore_wdt.c b/drivers/watchdog/mpcore_wdt.c
> index 11c70df..38b9119 100644
> --- a/drivers/watchdog/mpcore_wdt.c
> +++ b/drivers/watchdog/mpcore_wdt.c
[...]
> @@ -426,6 +427,25 @@ static int __devexit mpcore_wdt_remove(struct platform_device *dev)
>   	return 0;
>   }
>
> +static int mpcore_wdt_notify(struct notifier_block *nb,
> +				unsigned long state, void *data)
> +{
> +	struct mpcore_wdt *wdt = platform_get_drvdata(mpcore_wdt_dev);

    Need empty line here...

> +	/*
> +	 * The mpcore_wdt counter register must be reloaded to account
> +	 * properly with the new frequency.
> +	 */
> +	if (mpcore_wdt_dev&&  wdt&&  (state == CPUFREQ_POSTCHANGE ||
> +					state == CPUFREQ_RESUMECHANGE))
> +		mpcore_wdt_keepalive(wdt);
> +
> +	return NOTIFY_OK;
> +}
> +
> +static struct notifier_block mpcore_wdt_nb = {
> +	.notifier_call = mpcore_wdt_notify,
> +};
> +
>   /* work with hotplug and coldplug */
>   MODULE_ALIAS("platform:mpcore_wdt");
>
> @@ -444,6 +464,7 @@ static char banner[] __initdata = KERN_INFO "MPcore Watchdog Timer: 0.1. "
>
>   static int __init mpcore_wdt_init(void)
>   {
> +	int ret = 0;

    ... and here.

>   	/*
>   	 * Check that the margin value is within it's range;
>   	 * if not reset to the default

WBR, Sergei



More information about the linux-arm-kernel mailing list