Re: [PATCH 5/5] rtc: pcf2127: report battery switch over
From: Alexandre Belloni
Date: Tue May 05 2020 - 18:09:16 EST
On 05/05/2020 23:30:18+0200, Rasmus Villemoes wrote:
> On 05/05/2020 22.13, Alexandre Belloni wrote:
> > Add support for the RTC_VL_BACKUP_SWITCH flag to report battery switch over
> > events.
> >
> > Signed-off-by: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx>
> > ---
> > drivers/rtc/rtc-pcf2127.c | 16 ++++++++++++----
> > 1 file changed, 12 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/rtc/rtc-pcf2127.c b/drivers/rtc/rtc-pcf2127.c
> > index 039078029bd4..967de68e1b03 100644
> > --- a/drivers/rtc/rtc-pcf2127.c
> > +++ b/drivers/rtc/rtc-pcf2127.c
> > @@ -188,18 +188,27 @@ static int pcf2127_rtc_ioctl(struct device *dev,
> > unsigned int cmd, unsigned long arg)
> > {
> > struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
> > - int touser;
> > + int val, touser = 0;
> > int ret;
> >
> > switch (cmd) {
> > case RTC_VL_READ:
> > - ret = regmap_read(pcf2127->regmap, PCF2127_REG_CTRL3, &touser);
> > + ret = regmap_read(pcf2127->regmap, PCF2127_REG_CTRL3, &val);
> > if (ret)
> > return ret;
> >
> > - touser = touser & PCF2127_BIT_CTRL3_BLF ? RTC_VL_BACKUP_LOW : 0;
> > + if (val & PCF2127_BIT_CTRL3_BLF)
> > + touser = RTC_VL_BACKUP_LOW;
> > +
> > + if (val & PCF2127_BIT_CTRL3_BF)
> > + touser |= RTC_VL_BACKUP_SWITCH;
>
> I think it's a bit easier to read if you use |= in both cases.
>
> Re patch 3, one saves a little .text by eliding the ioctl function when,
> as you say, it cannot be called anyway. No strong opinion either way, I
> don't think anybody actually builds without CONFIG_RTC_INTF_DEV, but
> those that do are probably the ones that care about having a tiny vmlinux.
>
Honestly, I don't think it is worth doing that. On armv7, this only
removes 248 bytes. Also, compiling without CONFIG_RTC_INTF_DEV simply
makes the RTC unusable. There are no tools actually using the sysfs
interface instead of the char device interface. I prefer keeping
CONFIG_RTC_INTF_DEV private to the core.
--
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com