From mboxrd@z Thu Jan 1 00:00:00 1970 From: Guenter Roeck Subject: Re: [PATCH v4 07/18] watchdog: orion: Handle IRQ Date: Sat, 25 Jan 2014 10:15:57 -0800 Message-ID: <52E3FF5D.4060505@roeck-us.net> References: <1390431915-5115-1-git-send-email-ezequiel.garcia@free-electrons.com> <1390431915-5115-8-git-send-email-ezequiel.garcia@free-electrons.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1390431915-5115-8-git-send-email-ezequiel.garcia-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> Sender: devicetree-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Ezequiel Garcia , linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-watchdog-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: Wim Van Sebroeck , Jason Gunthorpe , Sebastian Hesselbarth , Arnd Bergmann , Daniel Lezcano , Fabio Estevam , Andrew Lunn , Thomas Petazzoni , Gregory Clement , Tawfik Bayouk , Lior Amsalem , Jason Cooper List-Id: devicetree@vger.kernel.org On 01/22/2014 03:05 PM, Ezequiel Garcia wrote: > DT-enabled where an irqchip driver for the brigde interrupt controller is > available can handle the watchdog IRQ properly. Therefore, we request > the interruption and add a dummy handler that merely calls panic(). > > This is done in order to have an initial 'ack' of the interruption, > which clears the watchdog state. > > Furthermore, since some platforms don't have such IRQ, this commit > makes the interruption specification optional. > > Signed-off-by: Ezequiel Garcia > --- > .../devicetree/bindings/watchdog/marvel.txt | 2 ++ > drivers/watchdog/orion_wdt.c | 24 +++++++++++++++++++++- > 2 files changed, 25 insertions(+), 1 deletion(-) > > diff --git a/Documentation/devicetree/bindings/watchdog/marvel.txt b/Documentation/devicetree/bindings/watchdog/marvel.txt > index 5dc8d30..0731fbd 100644 > --- a/Documentation/devicetree/bindings/watchdog/marvel.txt > +++ b/Documentation/devicetree/bindings/watchdog/marvel.txt > @@ -7,6 +7,7 @@ Required Properties: > > Optional properties: > > +- interrupts : Contains the IRQ for watchdog expiration > - timeout-sec : Contains the watchdog timeout in seconds > > Example: > @@ -14,6 +15,7 @@ Example: > wdt@20300 { > compatible = "marvell,orion-wdt"; > reg = <0x20300 0x28>; > + interrupts = <3>; > timeout-sec = <10>; > status = "okay"; > }; > diff --git a/drivers/watchdog/orion_wdt.c b/drivers/watchdog/orion_wdt.c > index 2dbeee9..f5e7b17 100644 > --- a/drivers/watchdog/orion_wdt.c > +++ b/drivers/watchdog/orion_wdt.c > @@ -19,6 +19,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -109,10 +110,16 @@ static struct watchdog_device orion_wdt = { > .min_timeout = 1, > }; > > +static irqreturn_t orion_wdt_irq(int irq, void *devid) > +{ > + panic("Watchdog Timeout"); > + return IRQ_HANDLED; > +} > + > static int orion_wdt_probe(struct platform_device *pdev) > { > struct resource *res; > - int ret; > + int ret, irq; > > clk = devm_clk_get(&pdev->dev, NULL); > if (IS_ERR(clk)) { > @@ -145,6 +152,21 @@ static int orion_wdt_probe(struct platform_device *pdev) > /* Let's make sure the watchdog is fully stopped */ > orion_wdt_stop(&orion_wdt); > > + /* It's important to request the IRQ once the watchdog is disabled */ s/once/only after/ > + irq = platform_get_irq(pdev, 0); > + if (irq >= 0) { > + /* > + * Not all supported platforms specify an interruption for the s/interruption/interrupt pin/ (or interrupt) Nitpicks, so Reviewed-by: Guenter Roeck -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html