[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20201123213105.GC456020@latitude>
Date: Mon, 23 Nov 2020 22:31:05 +0100
From: Jonathan Neuschäfer <j.neuschaefer@....net>
To: Alexandre Belloni <alexandre.belloni@...tlin.com>
Cc: Jonathan Neuschäfer <j.neuschaefer@....net>,
linux-kernel@...r.kernel.org, Lee Jones <lee.jones@...aro.org>,
Rob Herring <robh+dt@...nel.org>,
Thierry Reding <thierry.reding@...il.com>,
Uwe Kleine-König
<u.kleine-koenig@...gutronix.de>,
Alessandro Zummo <a.zummo@...ertech.it>,
Shawn Guo <shawnguo@...nel.org>,
Sascha Hauer <s.hauer@...gutronix.de>,
Pengutronix Kernel Team <kernel@...gutronix.de>,
Fabio Estevam <festevam@...il.com>,
NXP Linux Team <linux-imx@....com>,
Sam Ravnborg <sam@...nborg.org>,
Linus Walleij <linus.walleij@...aro.org>,
Heiko Stuebner <heiko.stuebner@...obroma-systems.com>,
Stephan Gerhold <stephan@...hold.net>,
Lubomir Rintel <lkundrak@...sk>,
Mark Brown <broonie@...nel.org>, allen <allen.chen@....com.tw>,
Mauro Carvalho Chehab <mchehab+huawei@...nel.org>,
"David S. Miller" <davem@...emloft.net>,
devicetree@...r.kernel.org, linux-pwm@...r.kernel.org,
linux-rtc@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
Heiko Stuebner <heiko@...ech.de>,
Josua Mayer <josua.mayer@....eu>,
Andreas Kemnade <andreas@...nade.info>,
Arnd Bergmann <arnd@...db.de>, Daniel Palmer <daniel@...f.com>,
Andy Shevchenko <andy.shevchenko@...il.com>
Subject: Re: [PATCH v4 5/7] rtc: New driver for RTC in Netronix embedded
controller
On Mon, Nov 23, 2020 at 12:10:54AM +0100, Alexandre Belloni wrote:
> Hi,
>
> On 22/11/2020 23:27:37+0100, Jonathan Neuschäfer wrote:
> > With this driver, mainline Linux can keep its time and date in sync with
> > the vendor kernel.
> >
> > Advanced functionality like alarm and automatic power-on is not yet
> > supported.
> >
> > Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@....net>
> Acked-by: Alexandre Belloni <alexandre.belloni@...tlin.com>
>
> However, two comments below:
>
> > +static int ntxec_set_time(struct device *dev, struct rtc_time *tm)
> > +{
> > + struct ntxec_rtc *rtc = dev_get_drvdata(dev);
> > + int res = 0;
> > +
> > + /*
> > + * To avoid time overflows while we're writing the full date/time,
> > + * set the seconds field to zero before doing anything else. For the
> > + * next 59 seconds (plus however long it takes until the RTC's next
> > + * update of the second field), the seconds field will not overflow
> > + * into the other fields.
> > + */
> > + res = regmap_write(rtc->ec->regmap, NTXEC_REG_WRITE_SECOND, ntxec_reg8(0));
> > + if (res)
> > + return res;
> > +
> > + res = regmap_write(rtc->ec->regmap, NTXEC_REG_WRITE_YEAR, ntxec_reg8(tm->tm_year - 100));
> > + if (res)
> > + return res;
> > +
> > + res = regmap_write(rtc->ec->regmap, NTXEC_REG_WRITE_MONTH, ntxec_reg8(tm->tm_mon + 1));
> > + if (res)
> > + return res;
> > +
> > + res = regmap_write(rtc->ec->regmap, NTXEC_REG_WRITE_DAY, ntxec_reg8(tm->tm_mday));
> > + if (res)
> > + return res;
> > +
> > + res = regmap_write(rtc->ec->regmap, NTXEC_REG_WRITE_HOUR, ntxec_reg8(tm->tm_hour));
> > + if (res)
> > + return res;
> > +
> > + res = regmap_write(rtc->ec->regmap, NTXEC_REG_WRITE_MINUTE, ntxec_reg8(tm->tm_min));
> > + if (res)
> > + return res;
> > +
> > + return regmap_write(rtc->ec->regmap, NTXEC_REG_WRITE_SECOND, ntxec_reg8(tm->tm_sec));
>
> Couldn't you do a regmap_block_write or a regmap_multi_reg_write which
> would be more efficient as they would be locking the regmap only once.
I can't find regmap_block_write anywhere, but regmap_multi_reg_write
looks like a good approach to simplify the code here.
[...]
> Note that this won't compile after
> https://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git/commit/?id=fdcfd854333be5b30377dc5daa9cd0fa1643a979
>
> We can solve that with immutable branches though.
Thanks for the heads-up. Please let me know if/when there is any action
that I need to take here.
Jonathan
Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)
Powered by blists - more mailing lists