From: Ryan Wanner <ryan.wanner@microchip.com>
To: Claudiu Beznea <claudiu.beznea@tuxon.dev>, <ada@thorsis.com>
Cc: Conor Dooley <conor+dt@kernel.org>,
"moderated list:ARM/Microchip (AT91) SoC support"
<linux-arm-kernel@lists.infradead.org>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
<devicetree@vger.kernel.org>,
"open list:COMMON CLK FRAMEWORK" <linux-clk@vger.kernel.org>,
Rob Herring <robh@kernel.org>,
"open list" <linux-kernel@vger.kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Christian Melki <christian.melki@t2data.com>,
"Michael Turquette" <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>,
"Nicolas Ferre" <nicolas.ferre@microchip.com>
Subject: Re: [PATCH v1 09/12] clk: at91: sam9x60: Allow enabling main_rc_osc through DT
Date: Tue, 24 Sep 2024 08:52:22 -0700 [thread overview]
Message-ID: <464f599a-7f0b-4e4e-901a-8f88a25428d6@microchip.com> (raw)
In-Reply-To: <20240919-outsider-extending-e0a926bd23fa@thorsis.com>
Hello Alex,
I think a possible solution is to put the DT binding ID for main rc oc
after PMC_MCK and then add 1 to all the other IDs that are not dependent
on PMC_MAIN, the IDs that are before the branch for the sama7g54.
One issue I see with this solution is with SoCs that do not want the
main rc os exported to the DT the driver array might be allocating too
much memory, this can be solved by removing the +1 that is in the clock
drivers next to the device tree binding macro, since this macro is now
increased by 1 with this change.
Doing a quick test on the sam9x60 and sama7g54 I did not see any glaring
issues with this potential solution.
Best,
Ryan
On 9/19/24 05:39, Alexander Dahl wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
> Hello Claudiu,
>
> after being busy with other things, I'm back looking at this series.
> As Nicolas pointed out [1], we need three clocks for the OTPC to work,
> quote:
>
> "for all the products, the main RC oscillator, the OTPC peripheral
> clock and the MCKx clocks associated to OTP must be enabled."
>
> I have a problem with making the main_rc_osc accessible for both
> SAM9X60 and SAMA7G5 here, see below.
>
> Am Wed, Aug 21, 2024 at 12:59:40PM +0200 schrieb Alexander Dahl:
>> SAM9X60 Datasheet (DS60001579G) Section "23.4 Product Dependencies"
>> says:
>>
>> "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, it was
>> just not possible to hook into DT anymore, after at91 clk devicetree
>> binding rework back in 2018 for kernel v4.19.
>>
>> Signed-off-by: Alexander Dahl <ada@thorsis.com>
>> ---
>> drivers/clk/at91/sam9x60.c | 3 ++-
>> include/dt-bindings/clock/at91.h | 1 +
>> 2 files changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/clk/at91/sam9x60.c b/drivers/clk/at91/sam9x60.c
>> index e309cbf3cb9a..4d5ee20b8fc4 100644
>> --- a/drivers/clk/at91/sam9x60.c
>> +++ b/drivers/clk/at91/sam9x60.c
>> @@ -207,7 +207,7 @@ static void __init sam9x60_pmc_setup(struct device_node *np)
>> if (IS_ERR(regmap))
>> return;
>>
>> - sam9x60_pmc = pmc_data_allocate(PMC_PLLACK + 1,
>> + sam9x60_pmc = pmc_data_allocate(PMC_MAIN_RC + 1,
>> nck(sam9x60_systemck),
>> nck(sam9x60_periphck),
>> nck(sam9x60_gck), 8);
>> @@ -218,6 +218,7 @@ static void __init sam9x60_pmc_setup(struct device_node *np)
>> 50000000);
>> if (IS_ERR(hw))
>> goto err_free;
>> + sam9x60_pmc->chws[PMC_MAIN_RC] = hw;
>>
>> hw = at91_clk_register_main_osc(regmap, "main_osc", mainxtal_name, NULL, 0);
>> if (IS_ERR(hw))
>> diff --git a/include/dt-bindings/clock/at91.h b/include/dt-bindings/clock/at91.h
>> index 3e3972a814c1..f957625cb3ac 100644
>> --- a/include/dt-bindings/clock/at91.h
>> +++ b/include/dt-bindings/clock/at91.h
>> @@ -25,6 +25,7 @@
>> #define PMC_PLLBCK 8
>> #define PMC_AUDIOPLLCK 9
>> #define PMC_AUDIOPINCK 10
>> +#define PMC_MAIN_RC 11
>>
>> /* SAMA7G5 */
>> #define PMC_CPUPLL (PMC_MAIN + 1)
>
> There are IDs defined in the devicetree bindings here, which are used
> both in dts and in driver code as array indexes. In v1 of the patch
> series I just added a new last element in the end of the generic list
> and used that for SAM9X60.
>
> For SAMA7G5 those IDs are branched of from PMC_MAIN in between, making
> SAMA7G5 using a different last element, and different values after
> PMC_MAIN.
>
> Now we need a new ID for main rc osc, but not only for SAM9X60, but
> also for SAMA7G5. I'm not sure what the implications would be, if the
> new ID would be added in between before PMC_MAIN, so all values would
> change? Adding it to the end of the lists would probably be safe, but
> then you would need a diffently named variant for SAMA7G5's different
> IDs. I find the current status somewhat unfortunate for future
> extensions. How should this new ID be added here? What would be the
> way forward?
>
> Greets
> Alex
>
> [1] https://lore.kernel.org/linux-clk/ec34efc2-2051-4b8a-b5d8-6e2fd5e08c28@microchip.com/T/#u
>
>> --
>> 2.39.2
>>
>>
>
next prev parent reply other threads:[~2024-09-24 15:52 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-21 10:59 [PATCH v1 00/12] Microchip OTPC driver on SAM9X60 exposing UIDxR as additional nvmem device Alexander Dahl
2024-08-21 10:59 ` [PATCH v1 01/12] nvmem: microchip-otpc: Avoid writing a write-only register Alexander Dahl
2024-08-24 15:51 ` claudiu beznea
2024-08-21 10:59 ` [PATCH v1 02/12] nvmem: microchip-otpc: Fix swapped 'sleep' and 'timeout' parameters Alexander Dahl
2024-08-24 15:52 ` claudiu beznea
2024-08-21 10:59 ` [PATCH v1 03/12] dt-bindings: nvmem: microchip-otpc: Add compatible for SAM9X60 Alexander Dahl
2024-08-21 12:49 ` Rob Herring (Arm)
2024-08-21 14:55 ` Conor Dooley
2024-08-21 10:59 ` [PATCH v1 04/12] nvmem: microchip-otpc: Add SAM9X60 support Alexander Dahl
2024-08-24 15:53 ` claudiu beznea
2024-08-28 8:09 ` Alexander Dahl
2024-08-31 15:31 ` claudiu beznea
2024-08-21 10:59 ` [PATCH v1 05/12] ARM: dts: microchip: sam9x60: Add OTPC node Alexander Dahl
2024-08-24 15:56 ` claudiu beznea
2024-08-21 10:59 ` [PATCH v1 06/12] ARM: dts: microchip: sam9x60_curiosity: Enable OTP Controller Alexander Dahl
2024-08-21 10:59 ` [PATCH v1 07/12] nvmem: microchip-otpc: Add missing register definitions Alexander Dahl
2024-08-24 15:54 ` claudiu beznea
2024-08-28 8:14 ` Alexander Dahl
2024-08-31 15:33 ` claudiu beznea
2024-09-02 8:08 ` Alexander Dahl
2024-09-07 12:05 ` claudiu beznea
2024-08-21 10:59 ` [PATCH v1 08/12] nvmem: microchip-otpc: Add warnings for bad OTPC conditions on probe Alexander Dahl
2024-08-24 15:51 ` claudiu beznea
2024-08-21 10:59 ` [PATCH v1 09/12] clk: at91: sam9x60: Allow enabling main_rc_osc through DT Alexander Dahl
2024-08-21 15:55 ` Conor Dooley
2024-09-19 12:39 ` Alexander Dahl
2024-09-24 15:52 ` Ryan Wanner [this message]
2024-09-25 15:24 ` Nicolas Ferre
2024-09-26 7:42 ` claudiu beznea
2024-10-01 15:04 ` Ryan Wanner
2025-02-07 12:41 ` Alexander Dahl
2024-08-21 10:59 ` [PATCH v1 10/12] ARM: dts: microchip: sam9x60: Add clock properties to OTPC Alexander Dahl
2024-08-24 15:57 ` claudiu beznea
2024-08-28 8:22 ` Alexander Dahl
2024-08-21 10:59 ` [PATCH v1 11/12] nvmem: microchip-otpc: Enable main RC oscillator clock Alexander Dahl
2024-08-22 15:57 ` kernel test robot
2024-08-24 15:53 ` claudiu beznea
2024-08-21 10:59 ` [PATCH v1 12/12] nvmem: microchip-otpc: Expose UID registers as 2nd nvmem device Alexander Dahl
2024-08-24 15:50 ` claudiu beznea
2024-08-24 16:17 ` [PATCH v1 00/12] Microchip OTPC driver on SAM9X60 exposing UIDxR as additional " claudiu beznea
2024-08-28 7:31 ` Alexander Dahl
2024-08-31 15:38 ` claudiu beznea
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=464f599a-7f0b-4e4e-901a-8f88a25428d6@microchip.com \
--to=ryan.wanner@microchip.com \
--cc=ada@thorsis.com \
--cc=alexandre.belloni@bootlin.com \
--cc=christian.melki@t2data.com \
--cc=claudiu.beznea@tuxon.dev \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=nicolas.ferre@microchip.com \
--cc=robh@kernel.org \
--cc=sboyd@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox