All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hugo Villeneuve <hugo@hugovil.com>
To: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: Alessandro Zummo <a.zummo@towertech.it>,
	linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 11/29] rtc: pcf2127: set RTC_FEATURE_ALARM_RES_2S
Date: Thu, 17 Mar 2022 11:28:20 -0400	[thread overview]
Message-ID: <20220317112820.7617d0d68f50f24ad0c3739e@hugovil.com> (raw)
In-Reply-To: <Yiplnqlz2DSXCvi8@piout.net>

On Thu, 10 Mar 2022 21:58:49 +0100
Alexandre Belloni <alexandre.belloni@bootlin.com> wrote:

> On 10/03/2022 11:09:18-0500, Hugo Villeneuve wrote:
> > On Wed,  9 Mar 2022 17:22:42 +0100
> > Alexandre Belloni <alexandre.belloni@bootlin.com> wrote:
> > 
> > > The PCF2127 doesn't support UIE because setting an alarm to fire every
> > > second confuses the chip and the fastest we can go is an alarm every 2
> > > seconds.
> > 
> > Hi Alexandre,
> > can you describe what "confuses the chip" means?
> > 
> > In my experimental PCF2131 driver, I activated UIE and it seems to be working fine at 1s intervals, but since it is similar to PCF2127, maybe there is still a problem and I just didn't see it.
> > 
> 
> Did you remove uie_unsupported? Else, you may have been using uie
> emulation. In my tests last year, the pcf2127 was failing to reassert
> the interrupt if an alarm was set every second. The same happens on
> other NXP based RTCs (i.e. including microcrystal ones).
> 
> I'm going to test again soon (and also reply to your series).

Hi,
I have now access to a board with a PCF2129T.

I have been able to test with it by sending ioctl RTC_UIE_ON and confirm that it exhibits the problem you reported. Basically, the first alarm triggers the IRQ after 1s, as expected, but the next configured alarm 1s into the future never triggers the IRQ again. But the time/date registers seem to be updating (incrementin) correctly after that.

Here is a log of my tests, adding dump of registers and a lot of debug traces:

[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_time
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [02] 00000000: 00                                               .
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [03] 00000000: 04 00 15 17 04 03 22                             ......"
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_time: 15:00:04 (month=17)
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_time
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [02] 00000000: 00                                               .
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [03] 00000000: 04 00 15 17 04 03 22                             ......"
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_time: 15:00:04 (month=17)
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_time
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [02] 00000000: 00                                               .
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [03] 00000000: 04 00 15 17 04 03 22                             ......"
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_time: 15:00:04 (month=17)
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_set_alarm
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [01] 00000000: 04                                               .
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: I2C gwrite: [0A] 00000000: 05 00 15 17 80                                   .....
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_alarm
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [01] 00000000: 04                                               .
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [0A] 00000000: 05 00 15 17 80                                   .....
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_alarm: 15:00:05 (month=17)
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_time
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [02] 00000000: 00                                               .
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [03] 00000000: 04 00 15 17 04 03 22                             ......"
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_time: 15:00:04 (month=17)
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_alarm_irq_enable: enable = 1
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [01] 00000000: 04                                               .
[Thu Mar 17 11:02:43 2022] rtc-pcf2127-i2c 4-0051: I2C write:  [01] 00000000: 06                                               .
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_irq: irq = 211
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [00] 00000000: 00 16 00 05 00 15 17 04 03 22 05 00 15 17 80 20  ........."..... 
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [00] 00000010: 82 00 80 00 00 00 00 00 00 08                    ..........
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [01] 00000000: 16                                               .
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [00] 00000000: 00                                               .
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C write:  [01] 00000000: 06                                               .
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_time
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [02] 00000000: 00                                               .
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [03] 00000000: 05 00 15 17 04 03 22                             ......"
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_time: 15:00:05 (month=17)
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_time
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [02] 00000000: 00                                               .
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [03] 00000000: 05 00 15 17 04 03 22                             ......"
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_time: 15:00:05 (month=17)
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_set_alarm
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [01] 00000000: 06                                               .
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C gwrite: [0A] 00000000: 06 00 15 17 80                                   .....
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_alarm
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [01] 00000000: 06                                               .
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [0A] 00000000: 06 00 15 17 80                                   .....
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_alarm: 15:00:06 (month=17)
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_time
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [02] 00000000: 00                                               .
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [03] 00000000: 05 00 15 17 04 03 22                             ......"
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_read_time: 15:00:05 (month=17)
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: pcf2127_rtc_alarm_irq_enable: enable = 1
[Thu Mar 17 11:02:44 2022] rtc-pcf2127-i2c 4-0051: I2C read:   [01] 00000000: 06   

Note: doing the same tests without dump and debug traces doesn't improve things.

I even did some tests where, in pcf2127_rtc_set_alarm(), I disabled all the alarm registers (set to 0x80), except for the SECONDS alarm register. In this case, I observed that the IRQ is triggered after 61s. This seems to indicate that the alarm detection circuitry is still somewhat operating (AF flag / INT pin), but there is probably a bug in the IC when the configured alarm is close to current time after AF is set once...

I also have done other tests by disabling then re-enabling AIE, stopping and restarting the oscillator (STOP bit), etc, but to no avail.

However, in pcf2127_rtc_set_alarm(), if I set the alarm 2s past the current time, instead of 1s, then the IRQ is always triggered after 2s.

I have opened a support case with NXP to investigate this strange behavior.

Hugo.


> > > Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
> > > ---
> > >  drivers/rtc/rtc-pcf2127.c | 1 +
> > >  1 file changed, 1 insertion(+)
> > > 
> > > diff --git a/drivers/rtc/rtc-pcf2127.c b/drivers/rtc/rtc-pcf2127.c
> > > index f8469b134411..63b275b014bd 100644
> > > --- a/drivers/rtc/rtc-pcf2127.c
> > > +++ b/drivers/rtc/rtc-pcf2127.c
> > > @@ -656,6 +656,7 @@ static int pcf2127_probe(struct device *dev, struct regmap *regmap,
> > >  	pcf2127->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
> > >  	pcf2127->rtc->range_max = RTC_TIMESTAMP_END_2099;
> > >  	pcf2127->rtc->set_start_time = true; /* Sets actual start to 1970 */
> > > +	set_bit(RTC_FEATURE_ALARM_RES_2S, pcf2127->rtc->features);
> > >  	clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, pcf2127->rtc->features);
> > >  	clear_bit(RTC_FEATURE_ALARM, pcf2127->rtc->features);
> > >  
> > > -- 
> > > 2.35.1
> > > 
> > 
> > 
> > -- 
> > Hugo Villeneuve <hugo@hugovil.com>
> 
> -- 
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
> 


-- 
Hugo Villeneuve <hugo@hugovil.com>

  parent reply	other threads:[~2022-03-17 15:28 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-09 16:22 [PATCH 01/29] rtc: ds1685: switch to RTC_FEATURE_UPDATE_INTERRUPT Alexandre Belloni
2022-03-09 16:22 ` [PATCH 02/29] rtc: ds1685: drop no_irq Alexandre Belloni
2022-03-09 16:22 ` [PATCH 03/29] rtc: ds1307: switch to RTC_FEATURE_UPDATE_INTERRUPT Alexandre Belloni
2022-03-09 16:22 ` [PATCH 04/29] rtc: mpc5121: let the core handle the alarm resolution Alexandre Belloni
2022-03-09 16:22 ` [PATCH 05/29] rtc: mpc5121: switch to RTC_FEATURE_UPDATE_INTERRUPT Alexandre Belloni
2022-03-09 16:22 ` [PATCH 06/29] rtc: m41t80: " Alexandre Belloni
2022-03-09 16:22 ` [PATCH 07/29] rtc: opal: " Alexandre Belloni
2022-03-09 16:22 ` [PATCH 08/29] rtc: pcf2123: " Alexandre Belloni
2022-03-09 16:22 ` [PATCH 09/29] rtc: pcf2123: set RTC_FEATURE_ALARM_RES_MINUTE Alexandre Belloni
2022-03-09 16:22 ` [PATCH 10/29] rtc: pcf2127: switch to RTC_FEATURE_UPDATE_INTERRUPT Alexandre Belloni
2022-03-09 16:22 ` [PATCH 11/29] rtc: pcf2127: set RTC_FEATURE_ALARM_RES_2S Alexandre Belloni
2022-03-10 16:09   ` Hugo Villeneuve
2022-03-10 20:58     ` Alexandre Belloni
2022-03-10 21:12       ` Hugo Villeneuve
2022-03-17 15:28       ` Hugo Villeneuve [this message]
2022-03-17 17:16         ` Alexandre Belloni
2022-05-24 15:10           ` Hugo Villeneuve
2022-12-15 15:12       ` Hugo Villeneuve
2022-03-09 16:22 ` [PATCH 12/29] rtc: pcf85063: switch to RTC_FEATURE_UPDATE_INTERRUPT Alexandre Belloni
2022-03-09 16:22 ` [PATCH 13/29] rtc: pcf85063: set RTC_FEATURE_ALARM_RES_2S Alexandre Belloni
2022-03-09 16:22 ` [PATCH 14/29] rtc: pcf8523: switch to RTC_FEATURE_UPDATE_INTERRUPT Alexandre Belloni
2022-03-09 16:22 ` [PATCH 15/29] rtc: pcf8523: let the core handle the alarm resolution Alexandre Belloni
2022-03-09 16:22 ` [PATCH 16/29] rtc: pcf8563: " Alexandre Belloni
2022-03-09 16:22 ` [PATCH 17/29] rtc: pcf8563: switch to RTC_FEATURE_UPDATE_INTERRUPT Alexandre Belloni
2022-03-09 16:22 ` [PATCH 18/29] rtc: spear: switch to devm_rtc_allocate_device Alexandre Belloni
2022-03-10  3:29   ` Viresh Kumar
2022-03-09 16:22 ` [PATCH 19/29] rtc: spear: set range Alexandre Belloni
2022-03-10  3:28   ` Viresh Kumar
2022-03-09 16:22 ` [PATCH 20/29] rtc: spear: drop uie_unsupported Alexandre Belloni
2022-03-10  3:29   ` Viresh Kumar
2022-03-09 16:22 ` [PATCH 21/29] rtc: spear: fix spear_rtc_read_time Alexandre Belloni
2022-03-10  3:28   ` Viresh Kumar
2022-03-09 16:22 ` [PATCH 22/29] rtc: add new RTC_FEATURE_ALARM_WAKEUP_ONLY feature Alexandre Belloni
2022-03-09 16:22 ` [PATCH 23/29] rtc: efi: switch to devm_rtc_allocate_device Alexandre Belloni
2022-03-09 16:22 ` [PATCH 24/29] rtc: efi: switch to RTC_FEATURE_UPDATE_INTERRUPT Alexandre Belloni
2022-03-09 16:22 ` [PATCH 25/29] rtc: hym8563: switch to devm_rtc_allocate_device Alexandre Belloni
2022-03-09 16:22 ` [PATCH 26/29] rtc: hym8563: let the core handle the alarm resolution Alexandre Belloni
2022-03-09 16:22 ` [PATCH 27/29] rtc: hym8563: switch to RTC_FEATURE_UPDATE_INTERRUPT Alexandre Belloni
2022-03-09 16:22 ` [PATCH 28/29] rtc: xgene: stop using uie_unsupported Alexandre Belloni
2022-03-09 16:23 ` [PATCH 29/29] rtc: remove uie_unsupported Alexandre Belloni

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=20220317112820.7617d0d68f50f24ad0c3739e@hugovil.com \
    --to=hugo@hugovil.com \
    --cc=a.zummo@towertech.it \
    --cc=alexandre.belloni@bootlin.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rtc@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.