* [PATCH v3 0/3] clk: meson: Fix an issue with inaccurate hifi_pll frequency
@ 2024-09-09 10:08 Chuan Liu via B4 Relay
2024-09-09 10:08 ` [PATCH v3 1/3] clk: meson: Support PLL with fixed fractional denominators Chuan Liu via B4 Relay
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Chuan Liu via B4 Relay @ 2024-09-09 10:08 UTC (permalink / raw)
To: Neil Armstrong, Jerome Brunet, Michael Turquette, Stephen Boyd,
Kevin Hilman, Martin Blumenstingl
Cc: linux-amlogic, linux-clk, linux-arm-kernel, linux-kernel, Chuan Liu
Some PLLS with fractional multipliers have fractional denominators with
fixed values, instead of the previous "(1 << pll-> frc.width)".
The hifi_pll for both C3 and S4 supports a fractional multiplier and has
a fixed fractional denominator of "100000".
Here are the results of the C3-based command tests (already defined
CLOCK_ALLOW_WRITE_DEBUGFS):
* echo 491520000 > /sys/kernel/debug/clk/hifi_pll/clk_rate
* cat /sys/kernel/debug/clk/hifi_pll/clk_rate
491520000
* echo 1 > /sys/kernel/debug/clk/hifi_pll/clk_prepare_enable
* cat /sys/kernel/debug/meson-clk-msr/clks/hifi_pll_clk
491515625 +/-15625Hz
* devmem 0xfe008100 32
0xD00304A3
* devmem 0xfe008104 32
0x00014820
Based on the register information read above, it can be obtained:
m = 0xA3 = 0d163;
n = 0x1 = 0d1
frac = 0x14820 = 0d84000
od = 0x3 = 0d3
hifi_pll calculates the output frequency:
calc_rate = xtal_rate / n * (m + (frac / frac_max)) >> od;
calc_rate = 24000000 / 1 * (163 + (84000 / 100000)) >> 3;
calc_rate = 491520000
clk_rate, msr_rate, and calc_rate all match.
The test and calculation results of S4 are consistent with those of C3,
which will not be repeated here.
Signed-off-by: Chuan Liu <chuan.liu@amlogic.com>
---
Changes in v3:
- Drop the call to unlikely().
- Link to v2: https://lore.kernel.org/r/20240906-fix_clk-v2-0-7a3941eb2cdf@amlogic.com
Changes in v2:
- Added frac_max to the pll parameter instead of flag.
- frac_max is added to hifi_pll for C3 and S4.
- Link to v1: https://lore.kernel.org/r/20240906-fix_clk-v1-0-2977ef0d72e7@amlogic.com
---
Chuan Liu (3):
clk: meson: Support PLL with fixed fractional denominators
clk: meson: c3: pll: fix frac maximum value for hifi_pll
clk: meson: s4: pll: fix frac maximum value for hifi_pll
drivers/clk/meson/c3-pll.c | 1 +
drivers/clk/meson/clk-pll.c | 8 +++++---
drivers/clk/meson/clk-pll.h | 1 +
drivers/clk/meson/s4-pll.c | 1 +
4 files changed, 8 insertions(+), 3 deletions(-)
---
base-commit: 80344f4c1a1edec507a20adca476af84ea58cd4c
change-id: 20240904-fix_clk-668f7a1a2b16
Best regards,
--
Chuan Liu <chuan.liu@amlogic.com>
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 1/3] clk: meson: Support PLL with fixed fractional denominators
2024-09-09 10:08 [PATCH v3 0/3] clk: meson: Fix an issue with inaccurate hifi_pll frequency Chuan Liu via B4 Relay
@ 2024-09-09 10:08 ` Chuan Liu via B4 Relay
2024-09-09 10:08 ` [PATCH v3 2/3] clk: meson: c3: pll: fix frac maximum value for hifi_pll Chuan Liu via B4 Relay
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Chuan Liu via B4 Relay @ 2024-09-09 10:08 UTC (permalink / raw)
To: Neil Armstrong, Jerome Brunet, Michael Turquette, Stephen Boyd,
Kevin Hilman, Martin Blumenstingl
Cc: linux-amlogic, linux-clk, linux-arm-kernel, linux-kernel, Chuan Liu
From: Chuan Liu <chuan.liu@amlogic.com>
Some PLLS with fractional multipliers have fractional denominators with
fixed values, instead of the previous "(1 << pll-> frc.width)".
Signed-off-by: Chuan Liu <chuan.liu@amlogic.com>
---
drivers/clk/meson/clk-pll.c | 8 +++++---
drivers/clk/meson/clk-pll.h | 1 +
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/clk/meson/clk-pll.c b/drivers/clk/meson/clk-pll.c
index bc570a2ff3a3..89f0f04a16ab 100644
--- a/drivers/clk/meson/clk-pll.c
+++ b/drivers/clk/meson/clk-pll.c
@@ -57,12 +57,13 @@ static unsigned long __pll_params_to_rate(unsigned long parent_rate,
struct meson_clk_pll_data *pll)
{
u64 rate = (u64)parent_rate * m;
+ unsigned int frac_max = pll->frac_max ? pll->frac_max :
+ (1 << pll->frac.width);
if (frac && MESON_PARM_APPLICABLE(&pll->frac)) {
u64 frac_rate = (u64)parent_rate * frac;
- rate += DIV_ROUND_UP_ULL(frac_rate,
- (1 << pll->frac.width));
+ rate += DIV_ROUND_UP_ULL(frac_rate, frac_max);
}
return DIV_ROUND_UP_ULL(rate, n);
@@ -100,7 +101,8 @@ static unsigned int __pll_params_with_frac(unsigned long rate,
unsigned int n,
struct meson_clk_pll_data *pll)
{
- unsigned int frac_max = (1 << pll->frac.width);
+ unsigned int frac_max = pll->frac_max ? pll->frac_max :
+ (1 << pll->frac.width);
u64 val = (u64)rate * n;
/* Bail out if we are already over the requested rate */
diff --git a/drivers/clk/meson/clk-pll.h b/drivers/clk/meson/clk-pll.h
index 7b6b87274073..949157fb7bf5 100644
--- a/drivers/clk/meson/clk-pll.h
+++ b/drivers/clk/meson/clk-pll.h
@@ -43,6 +43,7 @@ struct meson_clk_pll_data {
unsigned int init_count;
const struct pll_params_table *table;
const struct pll_mult_range *range;
+ unsigned int frac_max;
u8 flags;
};
--
2.42.0
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 2/3] clk: meson: c3: pll: fix frac maximum value for hifi_pll
2024-09-09 10:08 [PATCH v3 0/3] clk: meson: Fix an issue with inaccurate hifi_pll frequency Chuan Liu via B4 Relay
2024-09-09 10:08 ` [PATCH v3 1/3] clk: meson: Support PLL with fixed fractional denominators Chuan Liu via B4 Relay
@ 2024-09-09 10:08 ` Chuan Liu via B4 Relay
2024-09-09 10:08 ` [PATCH v3 3/3] clk: meson: s4: " Chuan Liu via B4 Relay
2024-09-12 9:11 ` [PATCH v3 0/3] clk: meson: Fix an issue with inaccurate hifi_pll frequency Jerome Brunet
3 siblings, 0 replies; 5+ messages in thread
From: Chuan Liu via B4 Relay @ 2024-09-09 10:08 UTC (permalink / raw)
To: Neil Armstrong, Jerome Brunet, Michael Turquette, Stephen Boyd,
Kevin Hilman, Martin Blumenstingl
Cc: linux-amlogic, linux-clk, linux-arm-kernel, linux-kernel, Chuan Liu
From: Chuan Liu <chuan.liu@amlogic.com>
The fractional denominator of C3's hifi_pll fractional multiplier is
fixed to 100000.
Fixes: 8a9a129dc565 ("clk: meson: c3: add support for the C3 SoC PLL clock")
Signed-off-by: Chuan Liu <chuan.liu@amlogic.com>
---
drivers/clk/meson/c3-pll.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/clk/meson/c3-pll.c b/drivers/clk/meson/c3-pll.c
index 32bd2ed9d304..35fda31a19e2 100644
--- a/drivers/clk/meson/c3-pll.c
+++ b/drivers/clk/meson/c3-pll.c
@@ -361,6 +361,7 @@ static struct clk_regmap hifi_pll_dco = {
.range = &c3_gp0_pll_mult_range,
.init_regs = c3_hifi_init_regs,
.init_count = ARRAY_SIZE(c3_hifi_init_regs),
+ .frac_max = 100000,
},
.hw.init = &(struct clk_init_data) {
.name = "hifi_pll_dco",
--
2.42.0
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 3/3] clk: meson: s4: pll: fix frac maximum value for hifi_pll
2024-09-09 10:08 [PATCH v3 0/3] clk: meson: Fix an issue with inaccurate hifi_pll frequency Chuan Liu via B4 Relay
2024-09-09 10:08 ` [PATCH v3 1/3] clk: meson: Support PLL with fixed fractional denominators Chuan Liu via B4 Relay
2024-09-09 10:08 ` [PATCH v3 2/3] clk: meson: c3: pll: fix frac maximum value for hifi_pll Chuan Liu via B4 Relay
@ 2024-09-09 10:08 ` Chuan Liu via B4 Relay
2024-09-12 9:11 ` [PATCH v3 0/3] clk: meson: Fix an issue with inaccurate hifi_pll frequency Jerome Brunet
3 siblings, 0 replies; 5+ messages in thread
From: Chuan Liu via B4 Relay @ 2024-09-09 10:08 UTC (permalink / raw)
To: Neil Armstrong, Jerome Brunet, Michael Turquette, Stephen Boyd,
Kevin Hilman, Martin Blumenstingl
Cc: linux-amlogic, linux-clk, linux-arm-kernel, linux-kernel, Chuan Liu
From: Chuan Liu <chuan.liu@amlogic.com>
The fractional denominator of S4's hifi_pll fractional multiplier is
fixed to 100000.
Fixes: 80344f4c1a1e ("clk: meson: s4: pll: hifi_pll support fractional multiplier")
Signed-off-by: Chuan Liu <chuan.liu@amlogic.com>
---
drivers/clk/meson/s4-pll.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/clk/meson/s4-pll.c b/drivers/clk/meson/s4-pll.c
index a97e19057b05..9697f6577e06 100644
--- a/drivers/clk/meson/s4-pll.c
+++ b/drivers/clk/meson/s4-pll.c
@@ -371,6 +371,7 @@ static struct clk_regmap s4_hifi_pll_dco = {
.range = &s4_gp0_pll_mult_range,
.init_regs = s4_hifi_init_regs,
.init_count = ARRAY_SIZE(s4_hifi_init_regs),
+ .frac_max = 100000,
.flags = CLK_MESON_PLL_ROUND_CLOSEST,
},
.hw.init = &(struct clk_init_data){
--
2.42.0
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3 0/3] clk: meson: Fix an issue with inaccurate hifi_pll frequency
2024-09-09 10:08 [PATCH v3 0/3] clk: meson: Fix an issue with inaccurate hifi_pll frequency Chuan Liu via B4 Relay
` (2 preceding siblings ...)
2024-09-09 10:08 ` [PATCH v3 3/3] clk: meson: s4: " Chuan Liu via B4 Relay
@ 2024-09-12 9:11 ` Jerome Brunet
3 siblings, 0 replies; 5+ messages in thread
From: Jerome Brunet @ 2024-09-12 9:11 UTC (permalink / raw)
To: Neil Armstrong, Michael Turquette, Stephen Boyd, Kevin Hilman,
Martin Blumenstingl, Chuan Liu
Cc: linux-amlogic, linux-clk, linux-arm-kernel, linux-kernel
Applied to clk-meson (clk-meson-next), thanks!
[1/3] clk: meson: Support PLL with fixed fractional denominators
https://github.com/BayLibre/clk-meson/commit/1287bdc8c6db
[2/3] clk: meson: c3: pll: fix frac maximum value for hifi_pll
https://github.com/BayLibre/clk-meson/commit/d4bc8851da59
[3/3] clk: meson: s4: pll: fix frac maximum value for hifi_pll
https://github.com/BayLibre/clk-meson/commit/0ef513560b53
Best regards,
--
Jerome
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-09-12 9:12 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-09-09 10:08 [PATCH v3 0/3] clk: meson: Fix an issue with inaccurate hifi_pll frequency Chuan Liu via B4 Relay
2024-09-09 10:08 ` [PATCH v3 1/3] clk: meson: Support PLL with fixed fractional denominators Chuan Liu via B4 Relay
2024-09-09 10:08 ` [PATCH v3 2/3] clk: meson: c3: pll: fix frac maximum value for hifi_pll Chuan Liu via B4 Relay
2024-09-09 10:08 ` [PATCH v3 3/3] clk: meson: s4: " Chuan Liu via B4 Relay
2024-09-12 9:11 ` [PATCH v3 0/3] clk: meson: Fix an issue with inaccurate hifi_pll frequency Jerome Brunet
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®