Re: [PATCH V4 1/2] rtc-pm8xxx: clear the triggered alarm interrupt during driver probe
From: Bjorn Andersson
Date: Thu Apr 04 2024 - 22:46:23 EST
On Mon, Apr 01, 2024 at 09:56:29AM +0800, jianbin zhang wrote:
Sorry, I think the patch looks good now, but the subject prefix
(rtc-pm8xxx) does not match other changes to this file.
> If the alarm is triggered before the driver gets probed, the alarm interrupt
> will be missed and it won't be detected, and the stale alarm settings will
> be still retained because of not being cleared.
>
> Issue reproduce step:
> (1) set the alarm and poweroff the device
> (2) alarm happens and the device boots
> (3) poweroff the device again
> (4) alarm irq not be cleard, device boots again
>
> the fixing here is clear the interrupt during the step(3) unconditionally.
>
> Signed-off-by: jianbin zhang <quic_jianbinz@xxxxxxxxxxx>
> ---
> Changes in v4:
> - add the cover letter
> - modify the patch to conform to the specification
>
> Changes in v3:
> - clear the interrupt in driver probe unconditionally
> - link: https://lore.kernel.org/linux-rtc/20240319191037.GA3796206@xxxxxxxxxxxxxxxxxxxxxxxxxxx/T/#t
These are expected to be links to the previous revisions of your patch,
not people's answers.
Please consult go/upstream and switch to b4 for the future, which does
this automatically for you. Please also use the internal review list!
Regards,
Bjorn
>
> Changes in v2:
> - Adapt the V1 patch according to the newest rtc-pm8xxx
> - link: https://lore.kernel.org/linux-rtc/20240124024023df15ef6e@mail.local/
>
> Changes in v1:
> - fixing is as below logic, During driver probe: read ALARM_EN, read ALARM_DATA, read RTC_RDATA,
> if (ALARM_DATA < RTC_DATA), Trigger the alarm event and clear the alarm settins
> - link: https://lore.kernel.org/linux-rtc/20220321090514.4523-1-quic_jianbinz@xxxxxxxxxxx/
>
> Changes in original:
> - link to original: https://lore.kernel.org/linux-rtc/YTusgJlMUdXOKQaL@xxxxxxxxx/
> ---
> drivers/rtc/rtc-pm8xxx.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/rtc/rtc-pm8xxx.c b/drivers/rtc/rtc-pm8xxx.c
> index f6b779c12ca7..e4e2307445cf 100644
> --- a/drivers/rtc/rtc-pm8xxx.c
> +++ b/drivers/rtc/rtc-pm8xxx.c
> @@ -527,6 +527,11 @@ static int pm8xxx_rtc_probe(struct platform_device *pdev)
> if (rc)
> return rc;
>
> + rc = regmap_update_bits(rtc_dd->regmap, rtc_dd->regs->alarm_ctrl2,
> + PM8xxx_RTC_ALARM_CLEAR, 1);
> + if (rc)
> + return rc;
> +
> return 0;
> }
>
>
> --
> 2.43.2
>