From: Frank Oltmanns <frank@oltmanns.dev>
To: linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-sunxi@lists.linux.dev
Cc: Frank Oltmanns <frank@oltmanns.dev>,
Andre Przywara <andre.przywara@arm.com>,
Chen-Yu Tsai <wens@csie.org>, Icenowy Zheng <icenowy@aosc.io>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Maxime Ripard <mripard@kernel.org>,
Michael Turquette <mturquette@baylibre.com>,
Rob Herring <robh@kernel.org>,
Samuel Holland <samuel@sholland.org>,
Stephen Boyd <sboyd@kernel.org>
Subject: [RFC PATCH 3/3] clk: sunxi-ng: sun50i-a64: Precalculate NKM combinations for pll-mipi
Date: Sat, 27 May 2023 15:27:47 +0200 [thread overview]
Message-ID: <20230527132747.83196-4-frank@oltmanns.dev> (raw)
In-Reply-To: <20230527132747.83196-1-frank@oltmanns.dev>
The NKM driver now support using a table of precalculated NKM
combinations. Use this new method for sun50i-a64 for a faster selection
of clock rates.
Signed-off-by: Frank Oltmanns <frank@oltmanns.dev>
---
drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 281 ++++++++++++++++++++++++++
1 file changed, 281 insertions(+)
diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c
index ff242bccc827..d201f9ec5378 100644
--- a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c
+++ b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c
@@ -165,6 +165,283 @@ static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK(pll_gpu_clk, "pll-gpu",
*/
#define SUN50I_A64_PLL_MIPI_REG 0x040
+static struct clk_nkm_combo pll_mipi_nkm_combos[] = {
+ { .n = 1, .k = 2, .m = 16 /* 0.1250000*/ },
+ { .n = 1, .k = 2, .m = 15 /* 0.1333333*/ },
+ { .n = 1, .k = 2, .m = 14 /* 0.1428571*/ },
+ { .n = 1, .k = 2, .m = 13 /* 0.1538462*/ },
+ { .n = 1, .k = 2, .m = 12 /* 0.1666667*/ },
+ { .n = 1, .k = 2, .m = 11 /* 0.1818182*/ },
+ { .n = 1, .k = 3, .m = 16 /* 0.1875000*/ },
+ { .n = 1, .k = 2, .m = 10 /* 0.2000000*/ },
+ { .n = 1, .k = 3, .m = 14 /* 0.2142857*/ },
+ { .n = 1, .k = 2, .m = 9 /* 0.2222222*/ },
+ { .n = 1, .k = 3, .m = 13 /* 0.2307692*/ },
+ { .n = 1, .k = 2, .m = 8 /* 0.2500000*/ },
+ { .n = 2, .k = 2, .m = 15 /* 0.2666667*/ },
+ { .n = 1, .k = 3, .m = 11 /* 0.2727273*/ },
+ { .n = 1, .k = 2, .m = 7 /* 0.2857143*/ },
+ { .n = 1, .k = 3, .m = 10 /* 0.3000000*/ },
+ { .n = 2, .k = 2, .m = 13 /* 0.3076923*/ },
+ { .n = 1, .k = 2, .m = 6 /* 0.3333333*/ },
+ { .n = 2, .k = 2, .m = 11 /* 0.3636364*/ },
+ { .n = 3, .k = 2, .m = 16 /* 0.3750000*/ },
+ { .n = 1, .k = 2, .m = 5 /* 0.4000000*/ },
+ { .n = 3, .k = 2, .m = 14 /* 0.4285714*/ },
+ { .n = 2, .k = 2, .m = 9 /* 0.4444444*/ },
+ { .n = 3, .k = 2, .m = 13 /* 0.4615385*/ },
+ { .n = 1, .k = 2, .m = 4 /* 0.5000000*/ },
+ { .n = 4, .k = 2, .m = 15 /* 0.5333333*/ },
+ { .n = 3, .k = 2, .m = 11 /* 0.5454545*/ },
+ { .n = 3, .k = 3, .m = 16 /* 0.5625000*/ },
+ { .n = 2, .k = 2, .m = 7 /* 0.5714286*/ },
+ { .n = 3, .k = 2, .m = 10 /* 0.6000000*/ },
+ { .n = 4, .k = 2, .m = 13 /* 0.6153846*/ },
+ { .n = 5, .k = 2, .m = 16 /* 0.6250000*/ },
+ { .n = 3, .k = 3, .m = 14 /* 0.6428571*/ },
+ { .n = 1, .k = 2, .m = 3 /* 0.6666667*/ },
+ { .n = 3, .k = 3, .m = 13 /* 0.6923077*/ },
+ { .n = 5, .k = 2, .m = 14 /* 0.7142857*/ },
+ { .n = 4, .k = 2, .m = 11 /* 0.7272727*/ },
+ { .n = 3, .k = 2, .m = 8 /* 0.7500000*/ },
+ { .n = 5, .k = 2, .m = 13 /* 0.7692308*/ },
+ { .n = 2, .k = 2, .m = 5 /* 0.8000000*/ },
+ { .n = 3, .k = 3, .m = 11 /* 0.8181818*/ },
+ { .n = 5, .k = 2, .m = 12 /* 0.8333333*/ },
+ { .n = 3, .k = 2, .m = 7 /* 0.8571429*/ },
+ { .n = 7, .k = 2, .m = 16 /* 0.8750000*/ },
+ { .n = 4, .k = 2, .m = 9 /* 0.8888889*/ },
+ { .n = 3, .k = 3, .m = 10 /* 0.9000000*/ },
+ { .n = 5, .k = 2, .m = 11 /* 0.9090909*/ },
+ { .n = 6, .k = 2, .m = 13 /* 0.9230769*/ },
+ { .n = 7, .k = 2, .m = 15 /* 0.9333333*/ },
+ { .n = 5, .k = 3, .m = 16 /* 0.9375000*/ },
+ { .n = 1, .k = 2, .m = 2 /* 1.0000000*/ },
+ { .n = 8, .k = 2, .m = 15 /* 1.0666667*/ },
+ { .n = 5, .k = 3, .m = 14 /* 1.0714286*/ },
+ { .n = 7, .k = 2, .m = 13 /* 1.0769231*/ },
+ { .n = 6, .k = 2, .m = 11 /* 1.0909091*/ },
+ { .n = 5, .k = 2, .m = 9 /* 1.1111111*/ },
+ { .n = 9, .k = 2, .m = 16 /* 1.1250000*/ },
+ { .n = 4, .k = 2, .m = 7 /* 1.1428571*/ },
+ { .n = 5, .k = 3, .m = 13 /* 1.1538462*/ },
+ { .n = 7, .k = 2, .m = 12 /* 1.1666667*/ },
+ { .n = 3, .k = 2, .m = 5 /* 1.2000000*/ },
+ { .n = 8, .k = 2, .m = 13 /* 1.2307692*/ },
+ { .n = 5, .k = 2, .m = 8 /* 1.2500000*/ },
+ { .n = 7, .k = 2, .m = 11 /* 1.2727273*/ },
+ { .n = 9, .k = 2, .m = 14 /* 1.2857143*/ },
+ { .n = 7, .k = 3, .m = 16 /* 1.3125000*/ },
+ { .n = 2, .k = 2, .m = 3 /* 1.3333333*/ },
+ { .n = 5, .k = 3, .m = 11 /* 1.3636364*/ },
+ { .n = 11, .k = 2, .m = 16 /* 1.3750000*/ },
+ { .n = 9, .k = 2, .m = 13 /* 1.3846154*/ },
+ { .n = 7, .k = 2, .m = 10 /* 1.4000000*/ },
+ { .n = 5, .k = 2, .m = 7 /* 1.4285714*/ },
+ { .n = 8, .k = 2, .m = 11 /* 1.4545455*/ },
+ { .n = 11, .k = 2, .m = 15 /* 1.4666667*/ },
+ { .n = 3, .k = 2, .m = 4 /* 1.5000000*/ },
+ { .n = 10, .k = 2, .m = 13 /* 1.5384615*/ },
+ { .n = 7, .k = 2, .m = 9 /* 1.5555556*/ },
+ { .n = 11, .k = 2, .m = 14 /* 1.5714286*/ },
+ { .n = 4, .k = 2, .m = 5 /* 1.6000000*/ },
+ { .n = 7, .k = 3, .m = 13 /* 1.6153846*/ },
+ { .n = 13, .k = 2, .m = 16 /* 1.6250000*/ },
+ { .n = 9, .k = 2, .m = 11 /* 1.6363636*/ },
+ { .n = 5, .k = 2, .m = 6 /* 1.6666667*/ },
+ { .n = 9, .k = 3, .m = 16 /* 1.6875000*/ },
+ { .n = 11, .k = 2, .m = 13 /* 1.6923077*/ },
+ { .n = 6, .k = 2, .m = 7 /* 1.7142857*/ },
+ { .n = 13, .k = 2, .m = 15 /* 1.7333333*/ },
+ { .n = 7, .k = 2, .m = 8 /* 1.7500000*/ },
+ { .n = 8, .k = 2, .m = 9 /* 1.7777778*/ },
+ { .n = 9, .k = 2, .m = 10 /* 1.8000000*/ },
+ { .n = 10, .k = 2, .m = 11 /* 1.8181818*/ },
+ { .n = 11, .k = 2, .m = 12 /* 1.8333333*/ },
+ { .n = 12, .k = 2, .m = 13 /* 1.8461538*/ },
+ { .n = 13, .k = 2, .m = 14 /* 1.8571429*/ },
+ { .n = 14, .k = 2, .m = 15 /* 1.8666667*/ },
+ { .n = 15, .k = 2, .m = 16 /* 1.8750000*/ },
+ { .n = 7, .k = 3, .m = 11 /* 1.9090909*/ },
+ { .n = 9, .k = 3, .m = 14 /* 1.9285714*/ },
+ { .n = 1, .k = 2, .m = 1 /* 2.0000000*/ },
+ { .n = 11, .k = 3, .m = 16 /* 2.0625000*/ },
+ { .n = 9, .k = 3, .m = 13 /* 2.0769231*/ },
+ { .n = 7, .k = 3, .m = 10 /* 2.1000000*/ },
+ { .n = 16, .k = 2, .m = 15 /* 2.1333333*/ },
+ { .n = 15, .k = 2, .m = 14 /* 2.1428571*/ },
+ { .n = 14, .k = 2, .m = 13 /* 2.1538462*/ },
+ { .n = 13, .k = 2, .m = 12 /* 2.1666667*/ },
+ { .n = 12, .k = 2, .m = 11 /* 2.1818182*/ },
+ { .n = 11, .k = 2, .m = 10 /* 2.2000000*/ },
+ { .n = 10, .k = 2, .m = 9 /* 2.2222222*/ },
+ { .n = 9, .k = 2, .m = 8 /* 2.2500000*/ },
+ { .n = 8, .k = 2, .m = 7 /* 2.2857143*/ },
+ { .n = 15, .k = 2, .m = 13 /* 2.3076923*/ },
+ { .n = 7, .k = 2, .m = 6 /* 2.3333333*/ },
+ { .n = 11, .k = 3, .m = 14 /* 2.3571429*/ },
+ { .n = 13, .k = 2, .m = 11 /* 2.3636364*/ },
+ { .n = 6, .k = 2, .m = 5 /* 2.4000000*/ },
+ { .n = 13, .k = 3, .m = 16 /* 2.4375000*/ },
+ { .n = 11, .k = 2, .m = 9 /* 2.4444444*/ },
+ { .n = 9, .k = 3, .m = 11 /* 2.4545455*/ },
+ { .n = 16, .k = 2, .m = 13 /* 2.4615385*/ },
+ { .n = 5, .k = 2, .m = 4 /* 2.5000000*/ },
+ { .n = 11, .k = 3, .m = 13 /* 2.5384615*/ },
+ { .n = 14, .k = 2, .m = 11 /* 2.5454545*/ },
+ { .n = 9, .k = 2, .m = 7 /* 2.5714286*/ },
+ { .n = 13, .k = 2, .m = 10 /* 2.6000000*/ },
+ { .n = 7, .k = 3, .m = 8 /* 2.6250000*/ },
+ { .n = 4, .k = 2, .m = 3 /* 2.6666667*/ },
+ { .n = 9, .k = 3, .m = 10 /* 2.7000000*/ },
+ { .n = 15, .k = 2, .m = 11 /* 2.7272727*/ },
+ { .n = 11, .k = 2, .m = 8 /* 2.7500000*/ },
+ { .n = 12, .k = 3, .m = 13 /* 2.7692308*/ },
+ { .n = 13, .k = 3, .m = 14 /* 2.7857143*/ },
+ { .n = 7, .k = 2, .m = 5 /* 2.8000000*/ },
+ { .n = 15, .k = 3, .m = 16 /* 2.8125000*/ },
+ { .n = 10, .k = 2, .m = 7 /* 2.8571429*/ },
+ { .n = 13, .k = 2, .m = 9 /* 2.8888889*/ },
+ { .n = 16, .k = 2, .m = 11 /* 2.9090909*/ },
+ { .n = 11, .k = 4, .m = 15 /* 2.9333333*/ },
+ { .n = 3, .k = 2, .m = 2 /* 3.0000000*/ },
+ { .n = 10, .k = 4, .m = 13 /* 3.0769231*/ },
+ { .n = 14, .k = 2, .m = 9 /* 3.1111111*/ },
+ { .n = 11, .k = 2, .m = 7 /* 3.1428571*/ },
+ { .n = 8, .k = 2, .m = 5 /* 3.2000000*/ },
+ { .n = 15, .k = 3, .m = 14 /* 3.2142857*/ },
+ { .n = 14, .k = 3, .m = 13 /* 3.2307692*/ },
+ { .n = 13, .k = 2, .m = 8 /* 3.2500000*/ },
+ { .n = 12, .k = 3, .m = 11 /* 3.2727273*/ },
+ { .n = 11, .k = 3, .m = 10 /* 3.3000000*/ },
+ { .n = 5, .k = 2, .m = 3 /* 3.3333333*/ },
+ { .n = 9, .k = 3, .m = 8 /* 3.3750000*/ },
+ { .n = 11, .k = 4, .m = 13 /* 3.3846154*/ },
+ { .n = 12, .k = 2, .m = 7 /* 3.4285714*/ },
+ { .n = 15, .k = 3, .m = 13 /* 3.4615385*/ },
+ { .n = 13, .k = 4, .m = 15 /* 3.4666667*/ },
+ { .n = 7, .k = 2, .m = 4 /* 3.5000000*/ },
+ { .n = 13, .k = 3, .m = 11 /* 3.5454545*/ },
+ { .n = 16, .k = 2, .m = 9 /* 3.5555556*/ },
+ { .n = 9, .k = 2, .m = 5 /* 3.6000000*/ },
+ { .n = 10, .k = 4, .m = 11 /* 3.6363636*/ },
+ { .n = 11, .k = 2, .m = 6 /* 3.6666667*/ },
+ { .n = 16, .k = 3, .m = 13 /* 3.6923077*/ },
+ { .n = 13, .k = 2, .m = 7 /* 3.7142857*/ },
+ { .n = 14, .k = 4, .m = 15 /* 3.7333333*/ },
+ { .n = 15, .k = 2, .m = 8 /* 3.7500000*/ },
+ { .n = 14, .k = 3, .m = 11 /* 3.8181818*/ },
+ { .n = 9, .k = 3, .m = 7 /* 3.8571429*/ },
+ { .n = 13, .k = 3, .m = 10 /* 3.9000000*/ },
+ { .n = 2, .k = 2, .m = 1 /* 4.0000000*/ },
+ { .n = 15, .k = 3, .m = 11 /* 4.0909091*/ },
+ { .n = 11, .k = 3, .m = 8 /* 4.1250000*/ },
+ { .n = 7, .k = 3, .m = 5 /* 4.2000000*/ },
+ { .n = 16, .k = 4, .m = 15 /* 4.2666667*/ },
+ { .n = 15, .k = 2, .m = 7 /* 4.2857143*/ },
+ { .n = 14, .k = 4, .m = 13 /* 4.3076923*/ },
+ { .n = 13, .k = 2, .m = 6 /* 4.3333333*/ },
+ { .n = 16, .k = 3, .m = 11 /* 4.3636364*/ },
+ { .n = 11, .k = 2, .m = 5 /* 4.4000000*/ },
+ { .n = 10, .k = 4, .m = 9 /* 4.4444444*/ },
+ { .n = 9, .k = 2, .m = 4 /* 4.5000000*/ },
+ { .n = 16, .k = 2, .m = 7 /* 4.5714286*/ },
+ { .n = 15, .k = 4, .m = 13 /* 4.6153846*/ },
+ { .n = 7, .k = 2, .m = 3 /* 4.6666667*/ },
+ { .n = 11, .k = 3, .m = 7 /* 4.7142857*/ },
+ { .n = 13, .k = 4, .m = 11 /* 4.7272727*/ },
+ { .n = 12, .k = 2, .m = 5 /* 4.8000000*/ },
+ { .n = 13, .k = 3, .m = 8 /* 4.8750000*/ },
+ { .n = 11, .k = 4, .m = 9 /* 4.8888889*/ },
+ { .n = 16, .k = 4, .m = 13 /* 4.9230769*/ },
+ { .n = 5, .k = 2, .m = 2 /* 5.0000000*/ },
+ { .n = 14, .k = 4, .m = 11 /* 5.0909091*/ },
+ { .n = 12, .k = 3, .m = 7 /* 5.1428571*/ },
+ { .n = 13, .k = 2, .m = 5 /* 5.2000000*/ },
+ { .n = 7, .k = 3, .m = 4 /* 5.2500000*/ },
+ { .n = 8, .k = 2, .m = 3 /* 5.3333333*/ },
+ { .n = 9, .k = 3, .m = 5 /* 5.4000000*/ },
+ { .n = 15, .k = 4, .m = 11 /* 5.4545455*/ },
+ { .n = 11, .k = 2, .m = 4 /* 5.5000000*/ },
+ { .n = 13, .k = 3, .m = 7 /* 5.5714286*/ },
+ { .n = 14, .k = 2, .m = 5 /* 5.6000000*/ },
+ { .n = 15, .k = 3, .m = 8 /* 5.6250000*/ },
+ { .n = 10, .k = 4, .m = 7 /* 5.7142857*/ },
+ { .n = 13, .k = 4, .m = 9 /* 5.7777778*/ },
+ { .n = 16, .k = 4, .m = 11 /* 5.8181818*/ },
+ { .n = 3, .k = 2, .m = 1 /* 6.0000000*/ },
+ { .n = 14, .k = 4, .m = 9 /* 6.2222222*/ },
+ { .n = 11, .k = 4, .m = 7 /* 6.2857143*/ },
+ { .n = 16, .k = 2, .m = 5 /* 6.4000000*/ },
+ { .n = 15, .k = 3, .m = 7 /* 6.4285714*/ },
+ { .n = 13, .k = 2, .m = 4 /* 6.5000000*/ },
+ { .n = 11, .k = 3, .m = 5 /* 6.6000000*/ },
+ { .n = 10, .k = 2, .m = 3 /* 6.6666667*/ },
+ { .n = 9, .k = 3, .m = 4 /* 6.7500000*/ },
+ { .n = 16, .k = 3, .m = 7 /* 6.8571429*/ },
+ { .n = 7, .k = 2, .m = 2 /* 7.0000000*/ },
+ { .n = 16, .k = 4, .m = 9 /* 7.1111111*/ },
+ { .n = 12, .k = 3, .m = 5 /* 7.2000000*/ },
+ { .n = 11, .k = 2, .m = 3 /* 7.3333333*/ },
+ { .n = 13, .k = 4, .m = 7 /* 7.4285714*/ },
+ { .n = 15, .k = 2, .m = 4 /* 7.5000000*/ },
+ { .n = 13, .k = 3, .m = 5 /* 7.8000000*/ },
+ { .n = 4, .k = 2, .m = 1 /* 8.0000000*/ },
+ { .n = 11, .k = 3, .m = 4 /* 8.2500000*/ },
+ { .n = 14, .k = 3, .m = 5 /* 8.4000000*/ },
+ { .n = 15, .k = 4, .m = 7 /* 8.5714286*/ },
+ { .n = 13, .k = 2, .m = 3 /* 8.6666667*/ },
+ { .n = 11, .k = 4, .m = 5 /* 8.8000000*/ },
+ { .n = 9, .k = 2, .m = 2 /* 9.0000000*/ },
+ { .n = 16, .k = 4, .m = 7 /* 9.1428571*/ },
+ { .n = 14, .k = 2, .m = 3 /* 9.3333333*/ },
+ { .n = 16, .k = 3, .m = 5 /* 9.6000000*/ },
+ { .n = 13, .k = 3, .m = 4 /* 9.7500000*/ },
+ { .n = 5, .k = 2, .m = 1 /*10.0000000*/ },
+ { .n = 13, .k = 4, .m = 5 /*10.4000000*/ },
+ { .n = 7, .k = 3, .m = 2 /*10.5000000*/ },
+ { .n = 16, .k = 2, .m = 3 /*10.6666667*/ },
+ { .n = 11, .k = 2, .m = 2 /*11.0000000*/ },
+ { .n = 14, .k = 4, .m = 5 /*11.2000000*/ },
+ { .n = 15, .k = 3, .m = 4 /*11.2500000*/ },
+ { .n = 6, .k = 2, .m = 1 /*12.0000000*/ },
+ { .n = 16, .k = 4, .m = 5 /*12.8000000*/ },
+ { .n = 13, .k = 2, .m = 2 /*13.0000000*/ },
+ { .n = 10, .k = 4, .m = 3 /*13.3333333*/ },
+ { .n = 9, .k = 3, .m = 2 /*13.5000000*/ },
+ { .n = 7, .k = 2, .m = 1 /*14.0000000*/ },
+ { .n = 11, .k = 4, .m = 3 /*14.6666667*/ },
+ { .n = 15, .k = 2, .m = 2 /*15.0000000*/ },
+ { .n = 8, .k = 2, .m = 1 /*16.0000000*/ },
+ { .n = 11, .k = 3, .m = 2 /*16.5000000*/ },
+ { .n = 13, .k = 4, .m = 3 /*17.3333333*/ },
+ { .n = 9, .k = 2, .m = 1 /*18.0000000*/ },
+ { .n = 14, .k = 4, .m = 3 /*18.6666667*/ },
+ { .n = 13, .k = 3, .m = 2 /*19.5000000*/ },
+ { .n = 10, .k = 2, .m = 1 /*20.0000000*/ },
+ { .n = 7, .k = 3, .m = 1 /*21.0000000*/ },
+ { .n = 16, .k = 4, .m = 3 /*21.3333333*/ },
+ { .n = 11, .k = 2, .m = 1 /*22.0000000*/ },
+ { .n = 15, .k = 3, .m = 2 /*22.5000000*/ },
+ { .n = 12, .k = 2, .m = 1 /*24.0000000*/ },
+ { .n = 13, .k = 2, .m = 1 /*26.0000000*/ },
+ { .n = 9, .k = 3, .m = 1 /*27.0000000*/ },
+ { .n = 14, .k = 2, .m = 1 /*28.0000000*/ },
+ { .n = 15, .k = 2, .m = 1 /*30.0000000*/ },
+ { .n = 16, .k = 2, .m = 1 /*32.0000000*/ },
+ { .n = 11, .k = 3, .m = 1 /*33.0000000*/ },
+ { .n = 12, .k = 3, .m = 1 /*36.0000000*/ },
+ { .n = 13, .k = 3, .m = 1 /*39.0000000*/ },
+ { .n = 10, .k = 4, .m = 1 /*40.0000000*/ },
+ { .n = 14, .k = 3, .m = 1 /*42.0000000*/ },
+ { .n = 11, .k = 4, .m = 1 /*44.0000000*/ },
+ { .n = 15, .k = 3, .m = 1 /*45.0000000*/ },
+ { .n = 16, .k = 3, .m = 1 /*48.0000000*/ },
+ { .n = 13, .k = 4, .m = 1 /*52.0000000*/ },
+ { .n = 14, .k = 4, .m = 1 /*56.0000000*/ },
+ { .n = 15, .k = 4, .m = 1 /*60.0000000*/ },
+ { .n = 16, .k = 4, .m = 1 /*64.0000000*/ },
+};
static struct ccu_nkm pll_mipi_clk = {
/*
* The bit 23 and 22 are called "LDO{1,2}_EN" on the SoC's
@@ -181,6 +458,10 @@ static struct ccu_nkm pll_mipi_clk = {
.hw.init = CLK_HW_INIT("pll-mipi", "pll-video0",
&ccu_nkm_ops, CLK_SET_RATE_UNGATE),
},
+ .table = {
+ .num = 275,
+ .combos = pll_mipi_nkm_combos,
+ },
};
static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK(pll_hsic_clk, "pll-hsic",
--
2.40.1
WARNING: multiple messages have this Message-ID (diff)
From: Frank Oltmanns <frank@oltmanns.dev>
To: linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-sunxi@lists.linux.dev
Cc: Frank Oltmanns <frank@oltmanns.dev>,
Andre Przywara <andre.przywara@arm.com>,
Chen-Yu Tsai <wens@csie.org>, Icenowy Zheng <icenowy@aosc.io>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Maxime Ripard <mripard@kernel.org>,
Michael Turquette <mturquette@baylibre.com>,
Rob Herring <robh@kernel.org>,
Samuel Holland <samuel@sholland.org>,
Stephen Boyd <sboyd@kernel.org>
Subject: [RFC PATCH 3/3] clk: sunxi-ng: sun50i-a64: Precalculate NKM combinations for pll-mipi
Date: Sat, 27 May 2023 15:27:47 +0200 [thread overview]
Message-ID: <20230527132747.83196-4-frank@oltmanns.dev> (raw)
In-Reply-To: <20230527132747.83196-1-frank@oltmanns.dev>
The NKM driver now support using a table of precalculated NKM
combinations. Use this new method for sun50i-a64 for a faster selection
of clock rates.
Signed-off-by: Frank Oltmanns <frank@oltmanns.dev>
---
drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 281 ++++++++++++++++++++++++++
1 file changed, 281 insertions(+)
diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c
index ff242bccc827..d201f9ec5378 100644
--- a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c
+++ b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c
@@ -165,6 +165,283 @@ static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK(pll_gpu_clk, "pll-gpu",
*/
#define SUN50I_A64_PLL_MIPI_REG 0x040
+static struct clk_nkm_combo pll_mipi_nkm_combos[] = {
+ { .n = 1, .k = 2, .m = 16 /* 0.1250000*/ },
+ { .n = 1, .k = 2, .m = 15 /* 0.1333333*/ },
+ { .n = 1, .k = 2, .m = 14 /* 0.1428571*/ },
+ { .n = 1, .k = 2, .m = 13 /* 0.1538462*/ },
+ { .n = 1, .k = 2, .m = 12 /* 0.1666667*/ },
+ { .n = 1, .k = 2, .m = 11 /* 0.1818182*/ },
+ { .n = 1, .k = 3, .m = 16 /* 0.1875000*/ },
+ { .n = 1, .k = 2, .m = 10 /* 0.2000000*/ },
+ { .n = 1, .k = 3, .m = 14 /* 0.2142857*/ },
+ { .n = 1, .k = 2, .m = 9 /* 0.2222222*/ },
+ { .n = 1, .k = 3, .m = 13 /* 0.2307692*/ },
+ { .n = 1, .k = 2, .m = 8 /* 0.2500000*/ },
+ { .n = 2, .k = 2, .m = 15 /* 0.2666667*/ },
+ { .n = 1, .k = 3, .m = 11 /* 0.2727273*/ },
+ { .n = 1, .k = 2, .m = 7 /* 0.2857143*/ },
+ { .n = 1, .k = 3, .m = 10 /* 0.3000000*/ },
+ { .n = 2, .k = 2, .m = 13 /* 0.3076923*/ },
+ { .n = 1, .k = 2, .m = 6 /* 0.3333333*/ },
+ { .n = 2, .k = 2, .m = 11 /* 0.3636364*/ },
+ { .n = 3, .k = 2, .m = 16 /* 0.3750000*/ },
+ { .n = 1, .k = 2, .m = 5 /* 0.4000000*/ },
+ { .n = 3, .k = 2, .m = 14 /* 0.4285714*/ },
+ { .n = 2, .k = 2, .m = 9 /* 0.4444444*/ },
+ { .n = 3, .k = 2, .m = 13 /* 0.4615385*/ },
+ { .n = 1, .k = 2, .m = 4 /* 0.5000000*/ },
+ { .n = 4, .k = 2, .m = 15 /* 0.5333333*/ },
+ { .n = 3, .k = 2, .m = 11 /* 0.5454545*/ },
+ { .n = 3, .k = 3, .m = 16 /* 0.5625000*/ },
+ { .n = 2, .k = 2, .m = 7 /* 0.5714286*/ },
+ { .n = 3, .k = 2, .m = 10 /* 0.6000000*/ },
+ { .n = 4, .k = 2, .m = 13 /* 0.6153846*/ },
+ { .n = 5, .k = 2, .m = 16 /* 0.6250000*/ },
+ { .n = 3, .k = 3, .m = 14 /* 0.6428571*/ },
+ { .n = 1, .k = 2, .m = 3 /* 0.6666667*/ },
+ { .n = 3, .k = 3, .m = 13 /* 0.6923077*/ },
+ { .n = 5, .k = 2, .m = 14 /* 0.7142857*/ },
+ { .n = 4, .k = 2, .m = 11 /* 0.7272727*/ },
+ { .n = 3, .k = 2, .m = 8 /* 0.7500000*/ },
+ { .n = 5, .k = 2, .m = 13 /* 0.7692308*/ },
+ { .n = 2, .k = 2, .m = 5 /* 0.8000000*/ },
+ { .n = 3, .k = 3, .m = 11 /* 0.8181818*/ },
+ { .n = 5, .k = 2, .m = 12 /* 0.8333333*/ },
+ { .n = 3, .k = 2, .m = 7 /* 0.8571429*/ },
+ { .n = 7, .k = 2, .m = 16 /* 0.8750000*/ },
+ { .n = 4, .k = 2, .m = 9 /* 0.8888889*/ },
+ { .n = 3, .k = 3, .m = 10 /* 0.9000000*/ },
+ { .n = 5, .k = 2, .m = 11 /* 0.9090909*/ },
+ { .n = 6, .k = 2, .m = 13 /* 0.9230769*/ },
+ { .n = 7, .k = 2, .m = 15 /* 0.9333333*/ },
+ { .n = 5, .k = 3, .m = 16 /* 0.9375000*/ },
+ { .n = 1, .k = 2, .m = 2 /* 1.0000000*/ },
+ { .n = 8, .k = 2, .m = 15 /* 1.0666667*/ },
+ { .n = 5, .k = 3, .m = 14 /* 1.0714286*/ },
+ { .n = 7, .k = 2, .m = 13 /* 1.0769231*/ },
+ { .n = 6, .k = 2, .m = 11 /* 1.0909091*/ },
+ { .n = 5, .k = 2, .m = 9 /* 1.1111111*/ },
+ { .n = 9, .k = 2, .m = 16 /* 1.1250000*/ },
+ { .n = 4, .k = 2, .m = 7 /* 1.1428571*/ },
+ { .n = 5, .k = 3, .m = 13 /* 1.1538462*/ },
+ { .n = 7, .k = 2, .m = 12 /* 1.1666667*/ },
+ { .n = 3, .k = 2, .m = 5 /* 1.2000000*/ },
+ { .n = 8, .k = 2, .m = 13 /* 1.2307692*/ },
+ { .n = 5, .k = 2, .m = 8 /* 1.2500000*/ },
+ { .n = 7, .k = 2, .m = 11 /* 1.2727273*/ },
+ { .n = 9, .k = 2, .m = 14 /* 1.2857143*/ },
+ { .n = 7, .k = 3, .m = 16 /* 1.3125000*/ },
+ { .n = 2, .k = 2, .m = 3 /* 1.3333333*/ },
+ { .n = 5, .k = 3, .m = 11 /* 1.3636364*/ },
+ { .n = 11, .k = 2, .m = 16 /* 1.3750000*/ },
+ { .n = 9, .k = 2, .m = 13 /* 1.3846154*/ },
+ { .n = 7, .k = 2, .m = 10 /* 1.4000000*/ },
+ { .n = 5, .k = 2, .m = 7 /* 1.4285714*/ },
+ { .n = 8, .k = 2, .m = 11 /* 1.4545455*/ },
+ { .n = 11, .k = 2, .m = 15 /* 1.4666667*/ },
+ { .n = 3, .k = 2, .m = 4 /* 1.5000000*/ },
+ { .n = 10, .k = 2, .m = 13 /* 1.5384615*/ },
+ { .n = 7, .k = 2, .m = 9 /* 1.5555556*/ },
+ { .n = 11, .k = 2, .m = 14 /* 1.5714286*/ },
+ { .n = 4, .k = 2, .m = 5 /* 1.6000000*/ },
+ { .n = 7, .k = 3, .m = 13 /* 1.6153846*/ },
+ { .n = 13, .k = 2, .m = 16 /* 1.6250000*/ },
+ { .n = 9, .k = 2, .m = 11 /* 1.6363636*/ },
+ { .n = 5, .k = 2, .m = 6 /* 1.6666667*/ },
+ { .n = 9, .k = 3, .m = 16 /* 1.6875000*/ },
+ { .n = 11, .k = 2, .m = 13 /* 1.6923077*/ },
+ { .n = 6, .k = 2, .m = 7 /* 1.7142857*/ },
+ { .n = 13, .k = 2, .m = 15 /* 1.7333333*/ },
+ { .n = 7, .k = 2, .m = 8 /* 1.7500000*/ },
+ { .n = 8, .k = 2, .m = 9 /* 1.7777778*/ },
+ { .n = 9, .k = 2, .m = 10 /* 1.8000000*/ },
+ { .n = 10, .k = 2, .m = 11 /* 1.8181818*/ },
+ { .n = 11, .k = 2, .m = 12 /* 1.8333333*/ },
+ { .n = 12, .k = 2, .m = 13 /* 1.8461538*/ },
+ { .n = 13, .k = 2, .m = 14 /* 1.8571429*/ },
+ { .n = 14, .k = 2, .m = 15 /* 1.8666667*/ },
+ { .n = 15, .k = 2, .m = 16 /* 1.8750000*/ },
+ { .n = 7, .k = 3, .m = 11 /* 1.9090909*/ },
+ { .n = 9, .k = 3, .m = 14 /* 1.9285714*/ },
+ { .n = 1, .k = 2, .m = 1 /* 2.0000000*/ },
+ { .n = 11, .k = 3, .m = 16 /* 2.0625000*/ },
+ { .n = 9, .k = 3, .m = 13 /* 2.0769231*/ },
+ { .n = 7, .k = 3, .m = 10 /* 2.1000000*/ },
+ { .n = 16, .k = 2, .m = 15 /* 2.1333333*/ },
+ { .n = 15, .k = 2, .m = 14 /* 2.1428571*/ },
+ { .n = 14, .k = 2, .m = 13 /* 2.1538462*/ },
+ { .n = 13, .k = 2, .m = 12 /* 2.1666667*/ },
+ { .n = 12, .k = 2, .m = 11 /* 2.1818182*/ },
+ { .n = 11, .k = 2, .m = 10 /* 2.2000000*/ },
+ { .n = 10, .k = 2, .m = 9 /* 2.2222222*/ },
+ { .n = 9, .k = 2, .m = 8 /* 2.2500000*/ },
+ { .n = 8, .k = 2, .m = 7 /* 2.2857143*/ },
+ { .n = 15, .k = 2, .m = 13 /* 2.3076923*/ },
+ { .n = 7, .k = 2, .m = 6 /* 2.3333333*/ },
+ { .n = 11, .k = 3, .m = 14 /* 2.3571429*/ },
+ { .n = 13, .k = 2, .m = 11 /* 2.3636364*/ },
+ { .n = 6, .k = 2, .m = 5 /* 2.4000000*/ },
+ { .n = 13, .k = 3, .m = 16 /* 2.4375000*/ },
+ { .n = 11, .k = 2, .m = 9 /* 2.4444444*/ },
+ { .n = 9, .k = 3, .m = 11 /* 2.4545455*/ },
+ { .n = 16, .k = 2, .m = 13 /* 2.4615385*/ },
+ { .n = 5, .k = 2, .m = 4 /* 2.5000000*/ },
+ { .n = 11, .k = 3, .m = 13 /* 2.5384615*/ },
+ { .n = 14, .k = 2, .m = 11 /* 2.5454545*/ },
+ { .n = 9, .k = 2, .m = 7 /* 2.5714286*/ },
+ { .n = 13, .k = 2, .m = 10 /* 2.6000000*/ },
+ { .n = 7, .k = 3, .m = 8 /* 2.6250000*/ },
+ { .n = 4, .k = 2, .m = 3 /* 2.6666667*/ },
+ { .n = 9, .k = 3, .m = 10 /* 2.7000000*/ },
+ { .n = 15, .k = 2, .m = 11 /* 2.7272727*/ },
+ { .n = 11, .k = 2, .m = 8 /* 2.7500000*/ },
+ { .n = 12, .k = 3, .m = 13 /* 2.7692308*/ },
+ { .n = 13, .k = 3, .m = 14 /* 2.7857143*/ },
+ { .n = 7, .k = 2, .m = 5 /* 2.8000000*/ },
+ { .n = 15, .k = 3, .m = 16 /* 2.8125000*/ },
+ { .n = 10, .k = 2, .m = 7 /* 2.8571429*/ },
+ { .n = 13, .k = 2, .m = 9 /* 2.8888889*/ },
+ { .n = 16, .k = 2, .m = 11 /* 2.9090909*/ },
+ { .n = 11, .k = 4, .m = 15 /* 2.9333333*/ },
+ { .n = 3, .k = 2, .m = 2 /* 3.0000000*/ },
+ { .n = 10, .k = 4, .m = 13 /* 3.0769231*/ },
+ { .n = 14, .k = 2, .m = 9 /* 3.1111111*/ },
+ { .n = 11, .k = 2, .m = 7 /* 3.1428571*/ },
+ { .n = 8, .k = 2, .m = 5 /* 3.2000000*/ },
+ { .n = 15, .k = 3, .m = 14 /* 3.2142857*/ },
+ { .n = 14, .k = 3, .m = 13 /* 3.2307692*/ },
+ { .n = 13, .k = 2, .m = 8 /* 3.2500000*/ },
+ { .n = 12, .k = 3, .m = 11 /* 3.2727273*/ },
+ { .n = 11, .k = 3, .m = 10 /* 3.3000000*/ },
+ { .n = 5, .k = 2, .m = 3 /* 3.3333333*/ },
+ { .n = 9, .k = 3, .m = 8 /* 3.3750000*/ },
+ { .n = 11, .k = 4, .m = 13 /* 3.3846154*/ },
+ { .n = 12, .k = 2, .m = 7 /* 3.4285714*/ },
+ { .n = 15, .k = 3, .m = 13 /* 3.4615385*/ },
+ { .n = 13, .k = 4, .m = 15 /* 3.4666667*/ },
+ { .n = 7, .k = 2, .m = 4 /* 3.5000000*/ },
+ { .n = 13, .k = 3, .m = 11 /* 3.5454545*/ },
+ { .n = 16, .k = 2, .m = 9 /* 3.5555556*/ },
+ { .n = 9, .k = 2, .m = 5 /* 3.6000000*/ },
+ { .n = 10, .k = 4, .m = 11 /* 3.6363636*/ },
+ { .n = 11, .k = 2, .m = 6 /* 3.6666667*/ },
+ { .n = 16, .k = 3, .m = 13 /* 3.6923077*/ },
+ { .n = 13, .k = 2, .m = 7 /* 3.7142857*/ },
+ { .n = 14, .k = 4, .m = 15 /* 3.7333333*/ },
+ { .n = 15, .k = 2, .m = 8 /* 3.7500000*/ },
+ { .n = 14, .k = 3, .m = 11 /* 3.8181818*/ },
+ { .n = 9, .k = 3, .m = 7 /* 3.8571429*/ },
+ { .n = 13, .k = 3, .m = 10 /* 3.9000000*/ },
+ { .n = 2, .k = 2, .m = 1 /* 4.0000000*/ },
+ { .n = 15, .k = 3, .m = 11 /* 4.0909091*/ },
+ { .n = 11, .k = 3, .m = 8 /* 4.1250000*/ },
+ { .n = 7, .k = 3, .m = 5 /* 4.2000000*/ },
+ { .n = 16, .k = 4, .m = 15 /* 4.2666667*/ },
+ { .n = 15, .k = 2, .m = 7 /* 4.2857143*/ },
+ { .n = 14, .k = 4, .m = 13 /* 4.3076923*/ },
+ { .n = 13, .k = 2, .m = 6 /* 4.3333333*/ },
+ { .n = 16, .k = 3, .m = 11 /* 4.3636364*/ },
+ { .n = 11, .k = 2, .m = 5 /* 4.4000000*/ },
+ { .n = 10, .k = 4, .m = 9 /* 4.4444444*/ },
+ { .n = 9, .k = 2, .m = 4 /* 4.5000000*/ },
+ { .n = 16, .k = 2, .m = 7 /* 4.5714286*/ },
+ { .n = 15, .k = 4, .m = 13 /* 4.6153846*/ },
+ { .n = 7, .k = 2, .m = 3 /* 4.6666667*/ },
+ { .n = 11, .k = 3, .m = 7 /* 4.7142857*/ },
+ { .n = 13, .k = 4, .m = 11 /* 4.7272727*/ },
+ { .n = 12, .k = 2, .m = 5 /* 4.8000000*/ },
+ { .n = 13, .k = 3, .m = 8 /* 4.8750000*/ },
+ { .n = 11, .k = 4, .m = 9 /* 4.8888889*/ },
+ { .n = 16, .k = 4, .m = 13 /* 4.9230769*/ },
+ { .n = 5, .k = 2, .m = 2 /* 5.0000000*/ },
+ { .n = 14, .k = 4, .m = 11 /* 5.0909091*/ },
+ { .n = 12, .k = 3, .m = 7 /* 5.1428571*/ },
+ { .n = 13, .k = 2, .m = 5 /* 5.2000000*/ },
+ { .n = 7, .k = 3, .m = 4 /* 5.2500000*/ },
+ { .n = 8, .k = 2, .m = 3 /* 5.3333333*/ },
+ { .n = 9, .k = 3, .m = 5 /* 5.4000000*/ },
+ { .n = 15, .k = 4, .m = 11 /* 5.4545455*/ },
+ { .n = 11, .k = 2, .m = 4 /* 5.5000000*/ },
+ { .n = 13, .k = 3, .m = 7 /* 5.5714286*/ },
+ { .n = 14, .k = 2, .m = 5 /* 5.6000000*/ },
+ { .n = 15, .k = 3, .m = 8 /* 5.6250000*/ },
+ { .n = 10, .k = 4, .m = 7 /* 5.7142857*/ },
+ { .n = 13, .k = 4, .m = 9 /* 5.7777778*/ },
+ { .n = 16, .k = 4, .m = 11 /* 5.8181818*/ },
+ { .n = 3, .k = 2, .m = 1 /* 6.0000000*/ },
+ { .n = 14, .k = 4, .m = 9 /* 6.2222222*/ },
+ { .n = 11, .k = 4, .m = 7 /* 6.2857143*/ },
+ { .n = 16, .k = 2, .m = 5 /* 6.4000000*/ },
+ { .n = 15, .k = 3, .m = 7 /* 6.4285714*/ },
+ { .n = 13, .k = 2, .m = 4 /* 6.5000000*/ },
+ { .n = 11, .k = 3, .m = 5 /* 6.6000000*/ },
+ { .n = 10, .k = 2, .m = 3 /* 6.6666667*/ },
+ { .n = 9, .k = 3, .m = 4 /* 6.7500000*/ },
+ { .n = 16, .k = 3, .m = 7 /* 6.8571429*/ },
+ { .n = 7, .k = 2, .m = 2 /* 7.0000000*/ },
+ { .n = 16, .k = 4, .m = 9 /* 7.1111111*/ },
+ { .n = 12, .k = 3, .m = 5 /* 7.2000000*/ },
+ { .n = 11, .k = 2, .m = 3 /* 7.3333333*/ },
+ { .n = 13, .k = 4, .m = 7 /* 7.4285714*/ },
+ { .n = 15, .k = 2, .m = 4 /* 7.5000000*/ },
+ { .n = 13, .k = 3, .m = 5 /* 7.8000000*/ },
+ { .n = 4, .k = 2, .m = 1 /* 8.0000000*/ },
+ { .n = 11, .k = 3, .m = 4 /* 8.2500000*/ },
+ { .n = 14, .k = 3, .m = 5 /* 8.4000000*/ },
+ { .n = 15, .k = 4, .m = 7 /* 8.5714286*/ },
+ { .n = 13, .k = 2, .m = 3 /* 8.6666667*/ },
+ { .n = 11, .k = 4, .m = 5 /* 8.8000000*/ },
+ { .n = 9, .k = 2, .m = 2 /* 9.0000000*/ },
+ { .n = 16, .k = 4, .m = 7 /* 9.1428571*/ },
+ { .n = 14, .k = 2, .m = 3 /* 9.3333333*/ },
+ { .n = 16, .k = 3, .m = 5 /* 9.6000000*/ },
+ { .n = 13, .k = 3, .m = 4 /* 9.7500000*/ },
+ { .n = 5, .k = 2, .m = 1 /*10.0000000*/ },
+ { .n = 13, .k = 4, .m = 5 /*10.4000000*/ },
+ { .n = 7, .k = 3, .m = 2 /*10.5000000*/ },
+ { .n = 16, .k = 2, .m = 3 /*10.6666667*/ },
+ { .n = 11, .k = 2, .m = 2 /*11.0000000*/ },
+ { .n = 14, .k = 4, .m = 5 /*11.2000000*/ },
+ { .n = 15, .k = 3, .m = 4 /*11.2500000*/ },
+ { .n = 6, .k = 2, .m = 1 /*12.0000000*/ },
+ { .n = 16, .k = 4, .m = 5 /*12.8000000*/ },
+ { .n = 13, .k = 2, .m = 2 /*13.0000000*/ },
+ { .n = 10, .k = 4, .m = 3 /*13.3333333*/ },
+ { .n = 9, .k = 3, .m = 2 /*13.5000000*/ },
+ { .n = 7, .k = 2, .m = 1 /*14.0000000*/ },
+ { .n = 11, .k = 4, .m = 3 /*14.6666667*/ },
+ { .n = 15, .k = 2, .m = 2 /*15.0000000*/ },
+ { .n = 8, .k = 2, .m = 1 /*16.0000000*/ },
+ { .n = 11, .k = 3, .m = 2 /*16.5000000*/ },
+ { .n = 13, .k = 4, .m = 3 /*17.3333333*/ },
+ { .n = 9, .k = 2, .m = 1 /*18.0000000*/ },
+ { .n = 14, .k = 4, .m = 3 /*18.6666667*/ },
+ { .n = 13, .k = 3, .m = 2 /*19.5000000*/ },
+ { .n = 10, .k = 2, .m = 1 /*20.0000000*/ },
+ { .n = 7, .k = 3, .m = 1 /*21.0000000*/ },
+ { .n = 16, .k = 4, .m = 3 /*21.3333333*/ },
+ { .n = 11, .k = 2, .m = 1 /*22.0000000*/ },
+ { .n = 15, .k = 3, .m = 2 /*22.5000000*/ },
+ { .n = 12, .k = 2, .m = 1 /*24.0000000*/ },
+ { .n = 13, .k = 2, .m = 1 /*26.0000000*/ },
+ { .n = 9, .k = 3, .m = 1 /*27.0000000*/ },
+ { .n = 14, .k = 2, .m = 1 /*28.0000000*/ },
+ { .n = 15, .k = 2, .m = 1 /*30.0000000*/ },
+ { .n = 16, .k = 2, .m = 1 /*32.0000000*/ },
+ { .n = 11, .k = 3, .m = 1 /*33.0000000*/ },
+ { .n = 12, .k = 3, .m = 1 /*36.0000000*/ },
+ { .n = 13, .k = 3, .m = 1 /*39.0000000*/ },
+ { .n = 10, .k = 4, .m = 1 /*40.0000000*/ },
+ { .n = 14, .k = 3, .m = 1 /*42.0000000*/ },
+ { .n = 11, .k = 4, .m = 1 /*44.0000000*/ },
+ { .n = 15, .k = 3, .m = 1 /*45.0000000*/ },
+ { .n = 16, .k = 3, .m = 1 /*48.0000000*/ },
+ { .n = 13, .k = 4, .m = 1 /*52.0000000*/ },
+ { .n = 14, .k = 4, .m = 1 /*56.0000000*/ },
+ { .n = 15, .k = 4, .m = 1 /*60.0000000*/ },
+ { .n = 16, .k = 4, .m = 1 /*64.0000000*/ },
+};
static struct ccu_nkm pll_mipi_clk = {
/*
* The bit 23 and 22 are called "LDO{1,2}_EN" on the SoC's
@@ -181,6 +458,10 @@ static struct ccu_nkm pll_mipi_clk = {
.hw.init = CLK_HW_INIT("pll-mipi", "pll-video0",
&ccu_nkm_ops, CLK_SET_RATE_UNGATE),
},
+ .table = {
+ .num = 275,
+ .combos = pll_mipi_nkm_combos,
+ },
};
static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK(pll_hsic_clk, "pll-hsic",
--
2.40.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-05-27 13:28 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-27 13:27 [RFC PATCH 0/3] clk: sunxi-ng: Optimize rate selection for NKM clocks Frank Oltmanns
2023-05-27 13:27 ` Frank Oltmanns
2023-05-27 13:27 ` [RFC PATCH 1/3] clk: sunxi-ng: nkm: Minimize difference when finding rate Frank Oltmanns
2023-05-27 13:27 ` Frank Oltmanns
2023-05-27 13:27 ` [RFC PATCH 2/3] clk: sunxi-ng: Implement precalculated NKM rate selection Frank Oltmanns
2023-05-27 13:27 ` Frank Oltmanns
2023-05-27 20:42 ` kernel test robot
2023-05-27 23:19 ` Julian Calaby
2023-05-27 23:19 ` Julian Calaby
2023-05-28 9:12 ` Frank Oltmanns
2023-05-28 9:12 ` Frank Oltmanns
2023-05-28 15:32 ` Julian Calaby
2023-05-28 15:32 ` Julian Calaby
2023-05-28 17:12 ` Frank Oltmanns
2023-05-28 17:12 ` Frank Oltmanns
2023-05-28 14:11 ` Frank Oltmanns
2023-05-28 14:11 ` Frank Oltmanns
2023-05-27 13:27 ` Frank Oltmanns [this message]
2023-05-27 13:27 ` [RFC PATCH 3/3] clk: sunxi-ng: sun50i-a64: Precalculate NKM combinations for pll-mipi Frank Oltmanns
2023-05-28 10:09 ` [RFC PATCH 0/3] clk: sunxi-ng: Optimize rate selection for NKM clocks Icenowy Zheng
2023-05-31 13:48 ` Maxime Ripard
2023-05-31 13:48 ` Maxime Ripard
2023-06-01 5:16 ` Frank Oltmanns
2023-06-01 5:16 ` Frank Oltmanns
2023-06-01 19:41 ` Jernej Škrabec
2023-06-01 19:41 ` Jernej Škrabec
2023-06-02 7:34 ` Maxime Ripard
2023-06-02 7:34 ` Maxime Ripard
2023-06-05 11:41 ` Frank Oltmanns
2023-06-05 11:41 ` Frank Oltmanns
2023-06-02 7:31 ` Maxime Ripard
2023-06-02 7:31 ` Maxime Ripard
2023-06-05 10:31 ` Frank Oltmanns
2023-06-05 10:31 ` Frank Oltmanns
2023-06-06 14:02 ` Maxime Ripard
2023-06-06 14:02 ` Maxime Ripard
2023-06-06 20:40 ` Frank Oltmanns
2023-06-06 20:40 ` Frank Oltmanns
2023-06-07 11:42 ` Maxime Ripard
2023-06-07 11:42 ` Maxime Ripard
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=20230527132747.83196-4-frank@oltmanns.dev \
--to=frank@oltmanns.dev \
--cc=andre.przywara@arm.com \
--cc=icenowy@aosc.io \
--cc=jernej.skrabec@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sunxi@lists.linux.dev \
--cc=mripard@kernel.org \
--cc=mturquette@baylibre.com \
--cc=robh@kernel.org \
--cc=samuel@sholland.org \
--cc=sboyd@kernel.org \
--cc=wens@csie.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.