diff mbox series

[1/1] rtc: bbnsm: Enable RTC by default to fix time read failure

Message ID 20241115194858.3837298-1-Frank.Li@nxp.com (mailing list archive)
State New
Headers show
Series [1/1] rtc: bbnsm: Enable RTC by default to fix time read failure | expand

Commit Message

Frank Li Nov. 15, 2024, 7:48 p.m. UTC
From: Jacky Bai <ping.bai@nxp.com>

Enable the RTC by default even when no valid time is set to ensure the
RTC's time read and alarm functions work properly. Without this, running
hwclock results in the following error:

hwclock: ioctl(RTC_RD_TIME) to /dev/rtc0 to read the time failed: Invalid argument

Fixes: eb7b85853c38 ("rtc: bbnsm: Add the bbnsm rtc support")
Signed-off-by: Jacky Bai <ping.bai@nxp.com>
Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/rtc/rtc-nxp-bbnsm.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Alexandre Belloni Nov. 16, 2024, 7:36 p.m. UTC | #1
On 15/11/2024 14:48:58-0500, Frank Li wrote:
> From: Jacky Bai <ping.bai@nxp.com>
> 
> Enable the RTC by default even when no valid time is set to ensure the
> RTC's time read and alarm functions work properly. Without this, running
> hwclock results in the following error:
> 
> hwclock: ioctl(RTC_RD_TIME) to /dev/rtc0 to read the time failed: Invalid argument
> 


What is providing your hwclock and which version does it have?


> Fixes: eb7b85853c38 ("rtc: bbnsm: Add the bbnsm rtc support")
> Signed-off-by: Jacky Bai <ping.bai@nxp.com>
> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
>  drivers/rtc/rtc-nxp-bbnsm.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/rtc/rtc-nxp-bbnsm.c b/drivers/rtc/rtc-nxp-bbnsm.c
> index fa3b0328c7a25..6610db2f75125 100644
> --- a/drivers/rtc/rtc-nxp-bbnsm.c
> +++ b/drivers/rtc/rtc-nxp-bbnsm.c
> @@ -189,6 +189,9 @@ static int bbnsm_rtc_probe(struct platform_device *pdev)
>  	/* clear all the pending events */
>  	regmap_write(bbnsm->regmap, BBNSM_EVENTS, 0x7A);
>  
> +	/* Enable the Real-Time counter */
> +	regmap_update_bits(bbnsm->regmap, BBNSM_CTRL, RTC_EN_MSK, RTC_EN);
> +
>  	device_init_wakeup(&pdev->dev, true);
>  	dev_pm_set_wake_irq(&pdev->dev, bbnsm->irq);
>  
> -- 
> 2.34.1
>
Alexandre Belloni Nov. 17, 2024, 10:08 p.m. UTC | #2
On 16/11/2024 20:36:54+0100, Alexandre Belloni wrote:
> On 15/11/2024 14:48:58-0500, Frank Li wrote:
> > From: Jacky Bai <ping.bai@nxp.com>
> > 
> > Enable the RTC by default even when no valid time is set to ensure the
> > RTC's time read and alarm functions work properly. Without this, running
> > hwclock results in the following error:
> > 
> > hwclock: ioctl(RTC_RD_TIME) to /dev/rtc0 to read the time failed: Invalid argument
> > 
> 
> 
> What is providing your hwclock and which version does it have?


This is a bug in util-linux that needs to be fixed.
> 
> 
> > Fixes: eb7b85853c38 ("rtc: bbnsm: Add the bbnsm rtc support")
> > Signed-off-by: Jacky Bai <ping.bai@nxp.com>
> > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
> > Signed-off-by: Frank Li <Frank.Li@nxp.com>
> > ---
> >  drivers/rtc/rtc-nxp-bbnsm.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/drivers/rtc/rtc-nxp-bbnsm.c b/drivers/rtc/rtc-nxp-bbnsm.c
> > index fa3b0328c7a25..6610db2f75125 100644
> > --- a/drivers/rtc/rtc-nxp-bbnsm.c
> > +++ b/drivers/rtc/rtc-nxp-bbnsm.c
> > @@ -189,6 +189,9 @@ static int bbnsm_rtc_probe(struct platform_device *pdev)
> >  	/* clear all the pending events */
> >  	regmap_write(bbnsm->regmap, BBNSM_EVENTS, 0x7A);
> >  
> > +	/* Enable the Real-Time counter */
> > +	regmap_update_bits(bbnsm->regmap, BBNSM_CTRL, RTC_EN_MSK, RTC_EN);
> > +
> >  	device_init_wakeup(&pdev->dev, true);
> >  	dev_pm_set_wake_irq(&pdev->dev, bbnsm->irq);
> >  
> > -- 
> > 2.34.1
> > 
> 
> -- 
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
Frank Li Nov. 18, 2024, 7:25 p.m. UTC | #3
On Sun, Nov 17, 2024 at 11:08:43PM +0100, Alexandre Belloni wrote:
> On 16/11/2024 20:36:54+0100, Alexandre Belloni wrote:
> > On 15/11/2024 14:48:58-0500, Frank Li wrote:
> > > From: Jacky Bai <ping.bai@nxp.com>
> > >
> > > Enable the RTC by default even when no valid time is set to ensure the
> > > RTC's time read and alarm functions work properly. Without this, running
> > > hwclock results in the following error:
> > >
> > > hwclock: ioctl(RTC_RD_TIME) to /dev/rtc0 to read the time failed: Invalid argument
> > >
> >
> >
> > What is providing your hwclock and which version does it have?
>
>
> This is a bug in util-linux that needs to be fixed.

What's suposed/expected beheavor? I think rtc should be enable by default.

Frank

> >
> >
> > > Fixes: eb7b85853c38 ("rtc: bbnsm: Add the bbnsm rtc support")
> > > Signed-off-by: Jacky Bai <ping.bai@nxp.com>
> > > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
> > > Signed-off-by: Frank Li <Frank.Li@nxp.com>
> > > ---
> > >  drivers/rtc/rtc-nxp-bbnsm.c | 3 +++
> > >  1 file changed, 3 insertions(+)
> > >
> > > diff --git a/drivers/rtc/rtc-nxp-bbnsm.c b/drivers/rtc/rtc-nxp-bbnsm.c
> > > index fa3b0328c7a25..6610db2f75125 100644
> > > --- a/drivers/rtc/rtc-nxp-bbnsm.c
> > > +++ b/drivers/rtc/rtc-nxp-bbnsm.c
> > > @@ -189,6 +189,9 @@ static int bbnsm_rtc_probe(struct platform_device *pdev)
> > >  	/* clear all the pending events */
> > >  	regmap_write(bbnsm->regmap, BBNSM_EVENTS, 0x7A);
> > >
> > > +	/* Enable the Real-Time counter */
> > > +	regmap_update_bits(bbnsm->regmap, BBNSM_CTRL, RTC_EN_MSK, RTC_EN);
> > > +
> > >  	device_init_wakeup(&pdev->dev, true);
> > >  	dev_pm_set_wake_irq(&pdev->dev, bbnsm->irq);
> > >
> > > --
> > > 2.34.1
> > >
> >
> > --
> > Alexandre Belloni, co-owner and COO, Bootlin
> > Embedded Linux and Kernel engineering
> > https://bootlin.com
>
> --
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
diff mbox series

Patch

diff --git a/drivers/rtc/rtc-nxp-bbnsm.c b/drivers/rtc/rtc-nxp-bbnsm.c
index fa3b0328c7a25..6610db2f75125 100644
--- a/drivers/rtc/rtc-nxp-bbnsm.c
+++ b/drivers/rtc/rtc-nxp-bbnsm.c
@@ -189,6 +189,9 @@  static int bbnsm_rtc_probe(struct platform_device *pdev)
 	/* clear all the pending events */
 	regmap_write(bbnsm->regmap, BBNSM_EVENTS, 0x7A);
 
+	/* Enable the Real-Time counter */
+	regmap_update_bits(bbnsm->regmap, BBNSM_CTRL, RTC_EN_MSK, RTC_EN);
+
 	device_init_wakeup(&pdev->dev, true);
 	dev_pm_set_wake_irq(&pdev->dev, bbnsm->irq);