From: Alexandre Belloni <alexandre.belloni@bootlin.com>
To: ot_shunxi.zhang@mediatek.com
Cc: Eddie Huang <eddie.huang@mediatek.com>,
Sean Wang <sean.wang@mediatek.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
Lee Jones <lee@kernel.org>,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org, linux-rtc@vger.kernel.org,
linux-kernel@vger.kernel.org, sirius.wang@mediatek.com,
vince-wl.liu@mediatek.com, jh.hsu@mediatek.com
Subject: Re: [PATCH v1 2/2] rtc: mt6397: Add BBPU alarm status reset and shutdown handling
Date: Mon, 11 Aug 2025 15:09:07 +0200 [thread overview]
Message-ID: <2025081113090716407d59@mail.local> (raw)
In-Reply-To: <20250811081543.4377-3-ot_shunxi.zhang@mediatek.com>
On 11/08/2025 16:15:34+0800, ot_shunxi.zhang@mediatek.com wrote:
> From: Shunxi Zhang <ot_shunxi.zhang@mediatek.com>
>
> This patch introduces a new function, mtk_rtc_reset_bbpu_alarm_status,
> to reset the BBPU alarm status in the MT6397 RTC driver. This function
> writes the necessary bits to the RTC_BBPU register to clear the alarm
> status and ensure proper operation.
>
> Additionally, the mtk_rtc_shutdown function is added to handle RTC
> shutdown events. It resets the BBPU alarm status and updates the
> RTC_IRQ_EN register to disable the one-shot alarm interrupt,
> ensuring a clean shutdown process.
>
> Signed-off-by: Shunxi Zhang <ot_shunxi.zhang@mediatek.com>
> ---
> drivers/rtc/rtc-mt6397.c | 36 +++++++++++++++++++++++++++++++++++-
> 1 file changed, 35 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/rtc/rtc-mt6397.c b/drivers/rtc/rtc-mt6397.c
> index 692c00ff544b..063bd399de8c 100644
> --- a/drivers/rtc/rtc-mt6397.c
> +++ b/drivers/rtc/rtc-mt6397.c
> @@ -37,6 +37,21 @@ static int mtk_rtc_write_trigger(struct mt6397_rtc *rtc)
> return ret;
> }
>
> +static void mtk_rtc_reset_bbpu_alarm_status(struct mt6397_rtc *rtc)
> +{
> + u32 bbpu = RTC_BBPU_KEY | RTC_BBPU_PWREN | RTC_BBPU_RESET_AL;
> + int ret;
> +
> + ret = regmap_write(rtc->regmap, rtc->addr_base + RTC_BBPU, bbpu);
> + if (ret < 0) {
> + dev_err(rtc->rtc_dev->dev.parent, "%s: write rtc bbpu error\n",
> + __func__);
> + return;
> + }
> +
> + mtk_rtc_write_trigger(rtc);
> +}
> +
> static irqreturn_t mtk_rtc_irq_handler_thread(int irq, void *data)
> {
> struct mt6397_rtc *rtc = data;
> @@ -51,6 +66,8 @@ static irqreturn_t mtk_rtc_irq_handler_thread(int irq, void *data)
> if (regmap_write(rtc->regmap, rtc->addr_base + RTC_IRQ_EN,
> irqen) == 0)
> mtk_rtc_write_trigger(rtc);
> +
> + mtk_rtc_reset_bbpu_alarm_status(rtc);
> mutex_unlock(&rtc->lock);
>
> return IRQ_HANDLED;
> @@ -297,6 +314,22 @@ static int mtk_rtc_probe(struct platform_device *pdev)
> return devm_rtc_register_device(rtc->rtc_dev);
> }
>
> +static void mtk_rtc_shutdown(struct platform_device *pdev)
> +{
> + struct mt6397_rtc *rtc = platform_get_drvdata(pdev);
> + int ret = 0;
> +
> + mtk_rtc_reset_bbpu_alarm_status(rtc);
> +
> + ret = regmap_update_bits(rtc->regmap,
> + rtc->addr_base + RTC_IRQ_EN,
> + RTC_IRQ_EN_ONESHOT_AL, 0);
> + if (ret < 0)
> + return;
> +
> + mtk_rtc_write_trigger(rtc);
The whole goal of the RTC is to wakeup the system, why would you disable
the alarm on shutdown?
> +}
> +
> #ifdef CONFIG_PM_SLEEP
> static int mt6397_rtc_suspend(struct device *dev)
> {
> @@ -345,7 +378,8 @@ static struct platform_driver mtk_rtc_driver = {
> .of_match_table = mt6397_rtc_of_match,
> .pm = &mt6397_pm_ops,
> },
> - .probe = mtk_rtc_probe,
> + .probe = mtk_rtc_probe,
> + .shutdown = mtk_rtc_shutdown,
> };
>
> module_platform_driver(mtk_rtc_driver);
> --
> 2.46.0
>
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2025-08-11 13:20 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-11 8:15 [PATCH v1 0/2] rtc: Enhance RTC driver with BBPU bit definitions and shutdown handling ot_shunxi.zhang
2025-08-11 8:15 ` [PATCH v1 1/2] mfd: mt6397: Add new bit definitions for RTC_BBPU register ot_shunxi.zhang
2025-08-11 11:02 ` Krzysztof Kozlowski
2025-08-11 11:21 ` Giorgi Tchankvetadze
2025-08-19 7:53 ` Shunxi Zhang (章顺喜)
2025-08-19 7:54 ` Shunxi Zhang (章顺喜)
2025-08-19 8:16 ` Krzysztof Kozlowski
2025-08-19 8:32 ` Shunxi Zhang (章顺喜)
2025-08-11 8:15 ` [PATCH v1 2/2] rtc: mt6397: Add BBPU alarm status reset and shutdown handling ot_shunxi.zhang
2025-08-11 13:09 ` Alexandre Belloni [this message]
2025-08-19 7:48 ` Shunxi Zhang (章顺喜)
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=2025081113090716407d59@mail.local \
--to=alexandre.belloni@bootlin.com \
--cc=eddie.huang@mediatek.com \
--cc=jh.hsu@mediatek.com \
--cc=lee@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-rtc@vger.kernel.org \
--cc=matthias.bgg@gmail.com \
--cc=ot_shunxi.zhang@mediatek.com \
--cc=sean.wang@mediatek.com \
--cc=sirius.wang@mediatek.com \
--cc=vince-wl.liu@mediatek.com \
/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.