[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <6d68a46b-f43b-4248-8031-58192da26c2b@tuxon.dev>
Date: Sat, 31 Jan 2026 17:45:37 +0200
From: Claudiu Beznea <claudiu.beznea@...on.dev>
To: Alexander Dahl <ada@...rsis.com>
Cc: Nicolas Ferre <nicolas.ferre@...rochip.com>,
Alexandre Belloni <alexandre.belloni@...tlin.com>,
Ryan Wanner <ryan.wanner@...rochip.com>,
linux-arm-kernel@...ts.infradead.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-clk@...r.kernel.org,
Michael Turquette <mturquette@...libre.com>, Stephen Boyd
<sboyd@...nel.org>, Cristian Birsan <cristian.birsan@...rochip.com>,
Varshini Rajendran <varshini.rajendran@...rochip.com>,
Balamanikandan Gunasundar <balamanikandan.gunasundar@...rochip.com>
Subject: Re: [PATCH v3 06/19] clk: at91: Allow enabling main_rc_osc through DT
On 1/20/26 16:37, Alexander Dahl wrote:
> SAM9X60 Datasheet (DS60001579G) Section "23.4 Product Dependencies"
> says:
s/says/states
>
> "The OTPC is clocked through the Power Management Controller (PMC).
> The user must power on the main RC oscillator and enable the
> peripheral clock of the OTPC prior to reading or writing the OTP
> memory."
>
> The code for enabling/disabling that clock is already present
s/that clock/the main RC oscillator clock
> it was
> just not possible to hook into DT anymore, after at91 clk devicetree
> binding rework back in 2018 for kernel v4.19.
I would re-write this as:
however, after the at91 clock device tree binding rework in 2018
(kernel v4.19), it was no longer possible to hook it up via DT.
>
> Do it for all controllers with an OTPC controller, where the main rc
> oscillator is required for proper operation.
I would re-write it as:
Export the main RC oscillator for all SoCs featuring an OTPC controller where
the main RC oscillator is required for proper operation.
>
> Signed-off-by: Alexander Dahl <ada@...rsis.com>
The code LGTM.
> ---
>
> Notes:
> v3:
> - no changes
>
> v2:
> - split out dt-bindings changes into separate patch
> - extend to drivers for other SoCs providing the OTPC
>
> drivers/clk/at91/sam9x60.c | 1 +
> drivers/clk/at91/sam9x7.c | 1 +
> drivers/clk/at91/sama7d65.c | 1 +
> drivers/clk/at91/sama7g5.c | 1 +
> 4 files changed, 4 insertions(+)
>
> diff --git a/drivers/clk/at91/sam9x60.c b/drivers/clk/at91/sam9x60.c
> index dbcdb1d2161a9..a9f293a8e3b26 100644
> --- a/drivers/clk/at91/sam9x60.c
> +++ b/drivers/clk/at91/sam9x60.c
> @@ -227,6 +227,7 @@ static void __init sam9x60_pmc_setup(struct device_node *np)
> 50000000);
> if (IS_ERR(hw))
> goto err_free;
> + sam9x60_pmc->chws[SAM9X60_PMC_MAIN_RC] = hw;
>
> hw = at91_clk_register_main_osc(regmap, "main_osc", mainxtal_name, NULL, 0);
> if (IS_ERR(hw))
> diff --git a/drivers/clk/at91/sam9x7.c b/drivers/clk/at91/sam9x7.c
> index 07eadb712a1e4..9a5afd258cb86 100644
> --- a/drivers/clk/at91/sam9x7.c
> +++ b/drivers/clk/at91/sam9x7.c
> @@ -764,6 +764,7 @@ static void __init sam9x7_pmc_setup(struct device_node *np)
> 50000000);
> if (IS_ERR(hw))
> goto err_free;
> + sam9x7_pmc->chws[SAM9X7_PMC_MAIN_RC] = hw;
>
> hw = at91_clk_register_main_osc(regmap, "main_osc", mainxtal_name, NULL, 0);
> if (IS_ERR(hw))
> diff --git a/drivers/clk/at91/sama7d65.c b/drivers/clk/at91/sama7d65.c
> index 4ccffa8db43a5..5d8973aa50a53 100644
> --- a/drivers/clk/at91/sama7d65.c
> +++ b/drivers/clk/at91/sama7d65.c
> @@ -1135,6 +1135,7 @@ static void __init sama7d65_pmc_setup(struct device_node *np)
> 50000000);
> if (IS_ERR(main_rc_hw))
> goto err_free;
> + sama7d65_pmc->chws[SAMA7D65_PMC_MAIN_RC] = hw;
>
> bypass = of_property_read_bool(np, "atmel,osc-bypass");
>
> diff --git a/drivers/clk/at91/sama7g5.c b/drivers/clk/at91/sama7g5.c
> index 99b4c1d9bdcca..9a6f0f30b2b7e 100644
> --- a/drivers/clk/at91/sama7g5.c
> +++ b/drivers/clk/at91/sama7g5.c
> @@ -1014,6 +1014,7 @@ static void __init sama7g5_pmc_setup(struct device_node *np)
> 50000000);
> if (IS_ERR(main_rc_hw))
> goto err_free;
> + sama7g5_pmc->chws[SAMA7G5_PMC_MAIN_RC] = hw;
>
> bypass = of_property_read_bool(np, "atmel,osc-bypass");
>
Powered by blists - more mailing lists