From: Guenter Roeck <linux@roeck-us.net>
To: Chris Brandt <Chris.Brandt@renesas.com>
Cc: Wim Van Sebroeck <wim@iguana.be>,
Sebastian Reichel <sre@kernel.org>,
Rob Herring <robh+dt@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Simon Horman <horms@verge.net.au>,
Geert Uytterhoeven <geert@linux-m68k.org>,
"linux-renesas-soc@vger.kernel.org"
<linux-renesas-soc@vger.kernel.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-watchdog@vger.kernel.org" <linux-watchdog@vger.kernel.org>
Subject: Re: [PATCH v4 1/3] watchdog: add rza_wdt driver
Date: Thu, 2 Mar 2017 09:11:48 -0800 [thread overview]
Message-ID: <20170302171148.GA28554@roeck-us.net> (raw)
In-Reply-To: <SG2PR06MB11656FE3E3CF8BAA1B8A86688A280@SG2PR06MB1165.apcprd06.prod.outlook.com>
On Thu, Mar 02, 2017 at 03:38:07PM +0000, Chris Brandt wrote:
> Hello Guenter,
>
> Thank you for your review!
>
>
> On Thursday, March 02, 2017, Guenter Roeck wrote:
> > > +/*
> > > + * Renesas RZ/A Series WDT Driver
> > > + *
> > > + * Copyright (C) 2017 Renesas Electronics America, Inc.
> > > + * Copyright (C) 2017 Chris Brandt
> > > + *
> > > + * This file is subject to the terms and conditions of the GNU
> > > +General Public
> > > + * License. See the file "COPYING" in the main directory of this
> > > +archive
> > > + * for more details.
> > > + *
> > > + *
> >
> > The above two lines are unnecessary.
>
> OK.
>
> #I'll assume you mean take out just the last sentence (2 lines), not both
> sentences (all 3 lines).
>
The two empty lines.
>
> > > +/* Watchdog Timer Registers */
> > > +#define WTCSR 0
> > > +#define WTCSR_MAGIC 0xA500
> > > +#define WTSCR_WT (1<<6)
> > > +#define WTSCR_TME (1<<5)
> >
> > BIT()
>
> OK.
>
> > > +#define WTSCR_CKS(i) i
> >
> > (i)
>
> OK.
>
>
> > > +#define WRCSR_CLEAR_WOVF 0xA500 /* special value */
> >
> > Please use
> > #define SOMETHING<tab>value
> > throughout and make sure value is aligned.
>
> OK.
>
> > > + rate = clk_get_rate(priv->clk);
> > > + if (!rate)
> > > + return -ENOENT;
> > > +
> > > + /* Assume slowest clock rate possible (CKS=7) */
> > > + rate /= 16384;
> > > +
> >
> > The rate check should probably be here to avoid situations where rate <
> > 16384.
>
> Do I need that if it's technically not possible to have a 'rate' less than 25MHz?
>
> These watchdogs HW are always feed directly from the peripheral clock and there
> is no such thing as a 16kHz peripheral block an any Renesas SoC.
>
Following that line of argument, can clk_get_rate() ever return 0 ?
>
> > > + priv->wdev.info = &rza_wdt_ident,
> > > + priv->wdev.ops = &rza_wdt_ops,
> > > + priv->wdev.parent = &pdev->dev;
> > > +
> > > + /*
> > > + * Since the max possible timeout of our 8-bit count register is
> > less
> > > + * than a second, we must use max_hw_heartbeat_ms.
> > > + */
> > > + priv->wdev.max_hw_heartbeat_ms = (1000 * U8_MAX)/rate;
> >
> > space before and after /
>
> OK.
> #Funny because checkpatch.pl said it didn't like a space on one side but
> not the other, so I choose no spaces and it was happy. I'm way below 80
> characters for that line so it doesn't matter to me.
>
That would be a bug in checkpatch. coding style, chapter 3.1, still applies.
Or at least I hope so.
>
> > > + dev_info(&pdev->dev, "max hw timeout of %dms\n",
> > > + priv->wdev.max_hw_heartbeat_ms);
> >
> > dev_dbg ?
>
> OK.
> #I guess we don't need to see that info on every boot.
>
>
> > > +
> > > + priv->wdev.min_timeout = 1;
> > > + priv->wdev.timeout = DEFAULT_TIMEOUT;
> > > +
> >
> > Add watchdog_init_timeout(&priv->wdev, 0, &pdev->dev); to optionally get
> > the timeout from dt ?
>
> OK. Good idea.
>
> > > + platform_set_drvdata(pdev, priv);
> > > + watchdog_set_drvdata(&priv->wdev, priv);
> > > +
> > > + ret = watchdog_register_device(&priv->wdev);
> >
> > devm_watchdog_register_device()
>
> OK.
>
>
> > > + if (ret < 0)
> > > + return ret;
> > > +
> > > + return 0;
Also just
return ret;
> > > +}
> > > +
> > > +static int rza_wdt_remove(struct platform_device *pdev) {
> > > + struct rza_wdt *priv = platform_get_drvdata(pdev);
> > > +
> > > + watchdog_unregister_device(&priv->wdev);
> > > + iounmap(priv->base);
> >
> > iounmap is unnecessary (and wrong).
>
> Anything mapped with devm_ioremap_resource() automatically gets unmapped
> when the drive gets unloaded?
That is the point of devm_ functions. It also means that you won't need
a remove function if you also use devm_watchdog_register_device().
Guenter
next prev parent reply other threads:[~2017-03-02 17:11 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-02 13:57 [PATCH v4 0/3] watchdog: add wdt and reset for renesas r7s72100 Chris Brandt
[not found] ` <20170302135746.30550-1-chris.brandt-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2017-03-02 13:57 ` [PATCH v4 1/3] watchdog: add rza_wdt driver Chris Brandt
[not found] ` <20170302135746.30550-2-chris.brandt-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2017-03-02 14:56 ` Guenter Roeck
[not found] ` <bf76e106-9272-622c-8d4e-c270a6b51d16-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2017-03-02 15:38 ` Chris Brandt
2017-03-02 17:11 ` Guenter Roeck [this message]
[not found] ` <20170302171148.GA28554-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2017-03-02 17:31 ` Chris Brandt
[not found] ` <SG2PR06MB11656393CB487F8413DAD58C8A280-ESzmfEwOt/xoAsOJh7vwSm0DtJ1/0DrXvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-03-02 17:48 ` Guenter Roeck
[not found] ` <20170302174855.GD28554-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2017-03-02 18:22 ` Chris Brandt
[not found] ` <SG2PR06MB1165F37B234CE0353B4E86B98A280-ESzmfEwOt/xoAsOJh7vwSm0DtJ1/0DrXvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-03-02 18:39 ` Guenter Roeck
[not found] ` <SG2PR06MB11656FE3E3CF8BAA1B8A86688A280-ESzmfEwOt/xoAsOJh7vwSm0DtJ1/0DrXvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-03-03 10:16 ` Geert Uytterhoeven
2017-03-02 13:57 ` [PATCH v4 2/3] watchdog: renesas-wdt: add support for rza Chris Brandt
2017-03-02 13:57 ` [PATCH v4 3/3] ARM: dts: r7s72100: Add watchdog timer Chris Brandt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170302171148.GA28554@roeck-us.net \
--to=linux@roeck-us.net \
--cc=Chris.Brandt@renesas.com \
--cc=devicetree@vger.kernel.org \
--cc=geert@linux-m68k.org \
--cc=horms@verge.net.au \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=robh+dt@kernel.org \
--cc=sre@kernel.org \
--cc=wim@iguana.be \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).