[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250903192046.GA4126@l14.localdomain>
Date: Wed, 3 Sep 2025 21:20:46 +0200
From: Henrik Grimler <henrik@...mler.se>
To: Devang Tailor <dev.tailor@...sung.com>
Cc: robh@...nel.org, krzk+dt@...nel.org, conor+dt@...nel.org,
alim.akhtar@...sung.com, alexandre.belloni@...tlin.com,
devicetree@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-samsung-soc@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-rtc@...r.kernel.org, faraz.ata@...sung.com
Subject: Re: [PATCH v2 2/3] rtc: s3c: support for exynosautov9 on-chip RTC
Hi Devang,
On Thu, Jul 10, 2025 at 02:04:33PM +0530, Devang Tailor wrote:
> The on-chip RTC of this SoC is almost similar to the previous
> versions of SoC. Hence re-use the existing driver with platform specific
> change to enable RTC.
Could you please describe what the differences are to previous SoCs?
You write almost similar, please elaborate in what way in commit
message.
> This has been tested with 'hwclock' & 'date' utilities
>
> Signed-off-by: Devang Tailor <dev.tailor@...sung.com>
> ---
>
> drivers/rtc/rtc-s3c.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c
> index 5dd575865adf..8db24b6360b8 100644
> --- a/drivers/rtc/rtc-s3c.c
> +++ b/drivers/rtc/rtc-s3c.c
> @@ -384,6 +384,15 @@ static void s3c6410_rtc_disable(struct s3c_rtc *info)
> writew(con, info->base + S3C2410_RTCCON);
> }
>
> +static void exynosautov9_rtc_disable(struct s3c_rtc *info)
> +{
> + unsigned int con;
> +
> + con = readb(info->base + S3C2410_RTCCON);
> + con &= ~S3C2410_RTCCON_RTCEN;
> + writeb(con, info->base + S3C2410_RTCCON);
> +}
Rather than adding a new rtc_disable variant I think this could be
handled in existing s3c24xx_rtc_disable (and I think that is what
Krzysztof meant). How about adding a new bool to rtc_data that
describes if S3C2410_TICNT reg is supported or not, and checking it in
s3c24xx_rtc_disable?
Best regards,
Henrik Grimler
> static void s3c_rtc_remove(struct platform_device *pdev)
> {
> struct s3c_rtc *info = platform_get_drvdata(pdev);
> @@ -574,6 +583,12 @@ static struct s3c_rtc_data const s3c6410_rtc_data = {
> .disable = s3c6410_rtc_disable,
> };
>
> +static const struct s3c_rtc_data exynosautov9_rtc_data = {
> + .irq_handler = s3c6410_rtc_irq,
> + .enable = s3c24xx_rtc_enable,
> + .disable = exynosautov9_rtc_disable,
> +};
> +
> static const __maybe_unused struct of_device_id s3c_rtc_dt_match[] = {
> {
> .compatible = "samsung,s3c2410-rtc",
> @@ -590,6 +605,9 @@ static const __maybe_unused struct of_device_id s3c_rtc_dt_match[] = {
> }, {
> .compatible = "samsung,exynos3250-rtc",
> .data = &s3c6410_rtc_data,
> + }, {
> + .compatible = "samsung,exynosautov9-rtc",
> + .data = &exynosautov9_rtc_data,
> },
> { /* sentinel */ },
> };
> --
> 2.34.1
>
>
Powered by blists - more mailing lists