From: claudiu beznea <claudiu.beznea@tuxon.dev>
To: Varshini Rajendran <varshini.rajendran@microchip.com>,
mturquette@baylibre.com, sboyd@kernel.org,
nicolas.ferre@microchip.com, alexandre.belloni@bootlin.com,
linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 09/27] clk: at91: clk-sam9x60-pll: re-factor to support individual core freq outputs
Date: Sun, 14 Jul 2024 16:38:37 +0300 [thread overview]
Message-ID: <dda95f03-5e41-4eec-8035-9d2a16dd679f@tuxon.dev> (raw)
In-Reply-To: <20240703102729.195762-1-varshini.rajendran@microchip.com>
On 03.07.2024 13:27, Varshini Rajendran wrote:
> SAM9X7 SoC family supports different core output frequencies for
> different PLL IDs. To handle the same in the PLL driver, a separate
> parameter core_output is added. The sam9x60 and sama7g5 SoC PMC drivers
> are aligned to the PLL driver by adding the core output freq range in
> the PLL characteristics configurations.
>
> Signed-off-by: Varshini Rajendran <varshini.rajendran@microchip.com>
Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
> ---
> drivers/clk/at91/clk-sam9x60-pll.c | 12 ++++++------
> drivers/clk/at91/pmc.h | 1 +
> drivers/clk/at91/sam9x60.c | 7 +++++++
> drivers/clk/at91/sama7g5.c | 7 +++++++
> 4 files changed, 21 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/clk/at91/clk-sam9x60-pll.c b/drivers/clk/at91/clk-sam9x60-pll.c
> index ff65f7b916f0..b0314dfd7393 100644
> --- a/drivers/clk/at91/clk-sam9x60-pll.c
> +++ b/drivers/clk/at91/clk-sam9x60-pll.c
> @@ -23,9 +23,6 @@
> #define UPLL_DIV 2
> #define PLL_MUL_MAX (FIELD_GET(PMC_PLL_CTRL1_MUL_MSK, UINT_MAX) + 1)
>
> -#define FCORE_MIN (600000000)
> -#define FCORE_MAX (1200000000)
> -
> #define PLL_MAX_ID 7
>
> struct sam9x60_pll_core {
> @@ -194,7 +191,8 @@ static long sam9x60_frac_pll_compute_mul_frac(struct sam9x60_pll_core *core,
> unsigned long nmul = 0;
> unsigned long nfrac = 0;
>
> - if (rate < FCORE_MIN || rate > FCORE_MAX)
> + if (rate < core->characteristics->core_output[0].min ||
> + rate > core->characteristics->core_output[0].max)
> return -ERANGE;
>
> /*
> @@ -214,7 +212,8 @@ static long sam9x60_frac_pll_compute_mul_frac(struct sam9x60_pll_core *core,
> }
>
> /* Check if resulted rate is a valid. */
> - if (tmprate < FCORE_MIN || tmprate > FCORE_MAX)
> + if (tmprate < core->characteristics->core_output[0].min ||
> + tmprate > core->characteristics->core_output[0].max)
> return -ERANGE;
>
> if (update) {
> @@ -669,7 +668,8 @@ sam9x60_clk_register_frac_pll(struct regmap *regmap, spinlock_t *lock,
> goto free;
> }
>
> - ret = sam9x60_frac_pll_compute_mul_frac(&frac->core, FCORE_MIN,
> + ret = sam9x60_frac_pll_compute_mul_frac(&frac->core,
> + characteristics->core_output[0].min,
> parent_rate, true);
> if (ret < 0) {
> hw = ERR_PTR(ret);
> diff --git a/drivers/clk/at91/pmc.h b/drivers/clk/at91/pmc.h
> index 0f52e80bcd49..bb9da35198d9 100644
> --- a/drivers/clk/at91/pmc.h
> +++ b/drivers/clk/at91/pmc.h
> @@ -75,6 +75,7 @@ struct clk_pll_characteristics {
> struct clk_range input;
> int num_output;
> const struct clk_range *output;
> + const struct clk_range *core_output;
> u16 *icpll;
> u8 *out;
> u8 upll : 1;
> diff --git a/drivers/clk/at91/sam9x60.c b/drivers/clk/at91/sam9x60.c
> index e309cbf3cb9a..db6db9e2073e 100644
> --- a/drivers/clk/at91/sam9x60.c
> +++ b/drivers/clk/at91/sam9x60.c
> @@ -26,10 +26,16 @@ static const struct clk_range plla_outputs[] = {
> { .min = 2343750, .max = 1200000000 },
> };
>
> +/* Fractional PLL core output range. */
> +static const struct clk_range core_outputs[] = {
> + { .min = 600000000, .max = 1200000000 },
> +};
> +
> static const struct clk_pll_characteristics plla_characteristics = {
> .input = { .min = 12000000, .max = 48000000 },
> .num_output = ARRAY_SIZE(plla_outputs),
> .output = plla_outputs,
> + .core_output = core_outputs,
> };
>
> static const struct clk_range upll_outputs[] = {
> @@ -40,6 +46,7 @@ static const struct clk_pll_characteristics upll_characteristics = {
> .input = { .min = 12000000, .max = 48000000 },
> .num_output = ARRAY_SIZE(upll_outputs),
> .output = upll_outputs,
> + .core_output = core_outputs,
> .upll = true,
> };
>
> diff --git a/drivers/clk/at91/sama7g5.c b/drivers/clk/at91/sama7g5.c
> index 91b5c6f14819..e6eb5afba93d 100644
> --- a/drivers/clk/at91/sama7g5.c
> +++ b/drivers/clk/at91/sama7g5.c
> @@ -116,11 +116,17 @@ static const struct clk_range pll_outputs[] = {
> { .min = 2343750, .max = 1200000000 },
> };
>
> +/* Fractional PLL core output range. */
> +static const struct clk_range core_outputs[] = {
> + { .min = 600000000, .max = 1200000000 },
> +};
> +
> /* CPU PLL characteristics. */
> static const struct clk_pll_characteristics cpu_pll_characteristics = {
> .input = { .min = 12000000, .max = 50000000 },
> .num_output = ARRAY_SIZE(cpu_pll_outputs),
> .output = cpu_pll_outputs,
> + .core_output = core_outputs,
> };
>
> /* PLL characteristics. */
> @@ -128,6 +134,7 @@ static const struct clk_pll_characteristics pll_characteristics = {
> .input = { .min = 12000000, .max = 50000000 },
> .num_output = ARRAY_SIZE(pll_outputs),
> .output = pll_outputs,
> + .core_output = core_outputs,
> };
>
> /*
next prev parent reply other threads:[~2024-07-14 13:39 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-03 10:20 [PATCH v5 00/27] Add support for sam9x7 SoC family Varshini Rajendran
2024-07-03 10:26 ` [PATCH v5 01/27] dt-bindings: atmel-sysreg: add sam9x7 Varshini Rajendran
2024-07-03 10:26 ` [PATCH v5 02/27] dt-bindings: atmel-ssc: add microchip,sam9x7-ssc Varshini Rajendran
2024-07-03 10:26 ` [PATCH v5 03/27] dt-bindings: serial: atmel,at91-usart: add compatible for sam9x7 Varshini Rajendran
2024-07-03 15:44 ` Conor Dooley
2024-07-03 10:26 ` [PATCH v5 04/27] ARM: at91: pm: add support for sam9x7 SoC family Varshini Rajendran
2024-07-14 13:43 ` claudiu beznea
2024-07-03 10:27 ` [PATCH v5 05/27] ARM: at91: pm: add sam9x7 SoC init config Varshini Rajendran
2024-07-03 10:55 ` Alexandre Belloni
2024-07-04 8:35 ` Varshini.Rajendran
2024-07-14 13:38 ` claudiu beznea
2024-07-03 10:27 ` [PATCH v5 06/27] ARM: at91: add support in SoC driver for new sam9x7 Varshini Rajendran
2024-07-03 10:27 ` [PATCH v5 07/27] dt-bindings: clocks: atmel,at91sam9x5-sckc Varshini Rajendran
2024-07-14 13:40 ` claudiu beznea
2024-07-03 10:27 ` [PATCH v5 08/27] dt-bindings: clocks: atmel,at91rm9200-pmc Varshini Rajendran
2024-07-14 13:39 ` claudiu beznea
2024-07-03 10:27 ` [PATCH v5 09/27] clk: at91: clk-sam9x60-pll: re-factor to support individual core freq outputs Varshini Rajendran
2024-07-14 13:38 ` claudiu beznea [this message]
2024-07-03 10:27 ` [PATCH v5 10/27] clk: at91: sam9x7: add support for HW PLL freq dividers Varshini Rajendran
2024-07-15 8:06 ` claudiu beznea
2024-07-03 10:27 ` [PATCH v5 11/27] clk: at91: sama7g5: move mux table macros to header file Varshini Rajendran
2024-07-14 13:39 ` claudiu beznea
2024-07-03 10:27 ` [PATCH v5 12/27] dt-bindings: clock: at91: Allow PLLs to be exported and referenced in DT Varshini Rajendran
2024-07-14 13:38 ` claudiu beznea
2024-07-03 10:28 ` [PATCH v5 13/27] clk: at91: sam9x7: add sam9x7 pmc driver Varshini Rajendran
2024-07-14 13:55 ` claudiu beznea
2024-07-15 6:46 ` Varshini.Rajendran
2024-07-15 8:44 ` claudiu beznea
2024-07-03 10:28 ` [PATCH v5 14/27] dt-bindings: interrupt-controller: Add support for sam9x7 aic Varshini Rajendran
2024-07-03 15:39 ` Conor Dooley
2024-07-03 10:28 ` [PATCH v5 15/27] dt-bindings: interrupt-controller: Document the property microchip,nr-irqs Varshini Rajendran
2024-07-03 15:41 ` Conor Dooley
2024-07-09 6:13 ` Varshini.Rajendran
2024-07-09 14:06 ` Nicolas.Ferre
2024-07-09 14:13 ` Nicolas.Ferre
2024-07-10 9:01 ` Marc Zyngier
2024-07-11 12:42 ` Nicolas Ferre
2024-07-11 15:40 ` Conor Dooley
2024-07-08 15:58 ` Rob Herring
2024-07-03 10:28 ` [PATCH v5 16/27] irqchip/atmel-aic5: Add support to get nr_irqs from DT for sam9x60 & sam9x7 Varshini Rajendran
2024-07-03 10:28 ` [PATCH v5 18/27] power: reset: at91-poweroff: lookup for proper pmc dt node for sam9x7 Varshini Rajendran
2024-07-14 13:41 ` claudiu beznea
2024-07-03 10:28 ` [PATCH v5 21/27] dt-bindings: reset: atmel,at91sam9260-reset: add sam9x7 Varshini Rajendran
2024-07-03 10:29 ` [PATCH v5 22/27] dt-bindings: power: reset: atmel,sama5d2-shdwc: " Varshini Rajendran
2024-07-03 10:29 ` [PATCH v5 23/27] ARM: at91: Kconfig: add config flag for SAM9X7 SoC Varshini Rajendran
2024-07-03 10:29 ` [PATCH v5 24/27] ARM: configs: at91: enable config flags for sam9x7 SoC family Varshini Rajendran
2024-07-14 13:40 ` claudiu beznea
2024-07-03 10:29 ` [PATCH v5 26/27] dt-bindings: arm: add sam9x75 curiosity board Varshini Rajendran
2024-07-14 13:41 ` claudiu beznea
2024-07-03 10:29 ` [PATCH v5 27/27] ARM: dts: microchip: sam9x75_curiosity: " Varshini Rajendran
2024-07-14 13:46 ` claudiu beznea
2024-07-15 10:58 ` Varshini.Rajendran
2024-07-03 14:27 ` [PATCH v5 00/27] Add support for sam9x7 SoC family Rob Herring (Arm)
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=dda95f03-5e41-4eec-8035-9d2a16dd679f@tuxon.dev \
--to=claudiu.beznea@tuxon.dev \
--cc=alexandre.belloni@bootlin.com \
--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=sboyd@kernel.org \
--cc=varshini.rajendran@microchip.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).