linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/5] Add SFC support for RK3128
@ 2024-06-06 14:33 Alex Bee
  2024-06-06 14:33 ` [PATCH v3 1/5] clk: rockchip: rk3128: Drop CLK_NR_CLKS usage Alex Bee
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: Alex Bee @ 2024-06-06 14:33 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
  Cc: Michael Turquette, Stephen Boyd, devicetree, linux-arm-kernel,
	linux-rockchip, linux-kernel, linux-clk, Alex Bee

This series adds support for the Serial Flash Controller (SFC) found in
RK3128 SoCs. The existing driver can be used as-is.

As without using some "id holes" we would run out clock ids when adding the
additional SFC AHB clock in the binding and would have to touch the ABI, I
added patches which remove the CLK_NR_CLKS macro and use the recently
introduced rockchip_clk_find_max_clk_id helper instead to find the highest
clock id.

changes since v1:
 - added patches to remove CLK_NR_CLKS (Conor)

Link to v1:
https://lore.kernel.org/all/20240605172154.193047-1-knaerzche@gmail.com/

changes since v2:
 - collect acks for the dt-bindings patches
 - fixed pinmux settings for chipselect pincontrols

Link to (the messed version of) v2:
https://lore.kernel.org/all/20240605205209.232005-1-knaerzche@gmail.com/

Alex Bee (5):
  clk: rockchip: rk3128: Drop CLK_NR_CLKS usage
  dt-bindings: clock: rk3128: Drop CLK_NR_CLKS
  dt-bindings: clock: rk3128: Add HCLK_SFC
  clk: rockchip: Add HCLK_SFC for RK3128
  ARM: dts: rockchip: Add SFC for RK3128

 arch/arm/boot/dts/rockchip/rk3128.dtsi | 35 ++++++++++++++++++++++++++
 drivers/clk/rockchip/clk-rk3128.c      | 21 +++++++++++++---
 include/dt-bindings/clock/rk3128-cru.h |  3 +--
 3 files changed, 53 insertions(+), 6 deletions(-)


base-commit: 234cb065ad82915ff8d06ce01e01c3e640b674d2
-- 
2.45.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v3 1/5] clk: rockchip: rk3128: Drop CLK_NR_CLKS usage
  2024-06-06 14:33 [PATCH v3 0/5] Add SFC support for RK3128 Alex Bee
@ 2024-06-06 14:33 ` Alex Bee
  2024-06-06 14:33 ` [PATCH v3 2/5] dt-bindings: clock: rk3128: Drop CLK_NR_CLKS Alex Bee
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Alex Bee @ 2024-06-06 14:33 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
  Cc: Michael Turquette, Stephen Boyd, devicetree, linux-arm-kernel,
	linux-rockchip, linux-kernel, linux-clk, Alex Bee

In order to get rid of CLK_NR_CLKS and be able to drop it from the
bindings, use rockchip_clk_find_max_clk_id helper to find the highest
clock id.

Signed-off-by: Alex Bee <knaerzche@gmail.com>
---
changes since v1:
 - new patch

 drivers/clk/rockchip/clk-rk3128.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/drivers/clk/rockchip/clk-rk3128.c b/drivers/clk/rockchip/clk-rk3128.c
index d076b7971f33..40e0e4556d59 100644
--- a/drivers/clk/rockchip/clk-rk3128.c
+++ b/drivers/clk/rockchip/clk-rk3128.c
@@ -569,18 +569,22 @@ static const char *const rk3128_critical_clocks[] __initconst = {
 	"sclk_timer5",
 };
 
-static struct rockchip_clk_provider *__init rk3128_common_clk_init(struct device_node *np)
+static struct rockchip_clk_provider *__init rk3128_common_clk_init(struct device_node *np,
+								   unsigned long soc_nr_clks)
 {
 	struct rockchip_clk_provider *ctx;
+	unsigned long common_nr_clks;
 	void __iomem *reg_base;
 
+	common_nr_clks = rockchip_clk_find_max_clk_id(common_clk_branches,
+						      ARRAY_SIZE(common_clk_branches)) + 1;
 	reg_base = of_iomap(np, 0);
 	if (!reg_base) {
 		pr_err("%s: could not map cru region\n", __func__);
 		return ERR_PTR(-ENOMEM);
 	}
 
-	ctx = rockchip_clk_init(np, reg_base, CLK_NR_CLKS);
+	ctx = rockchip_clk_init(np, reg_base, max(common_nr_clks, soc_nr_clks));
 	if (IS_ERR(ctx)) {
 		pr_err("%s: rockchip clk init failed\n", __func__);
 		iounmap(reg_base);
@@ -609,8 +613,12 @@ static struct rockchip_clk_provider *__init rk3128_common_clk_init(struct device
 static void __init rk3126_clk_init(struct device_node *np)
 {
 	struct rockchip_clk_provider *ctx;
+	unsigned long soc_nr_clks;
 
-	ctx = rk3128_common_clk_init(np);
+	soc_nr_clks = rockchip_clk_find_max_clk_id(rk3126_clk_branches,
+						   ARRAY_SIZE(rk3126_clk_branches)) + 1;
+
+	ctx = rk3128_common_clk_init(np, soc_nr_clks);
 	if (IS_ERR(ctx))
 		return;
 
@@ -627,8 +635,12 @@ CLK_OF_DECLARE(rk3126_cru, "rockchip,rk3126-cru", rk3126_clk_init);
 static void __init rk3128_clk_init(struct device_node *np)
 {
 	struct rockchip_clk_provider *ctx;
+	unsigned long soc_nr_clks;
+
+	soc_nr_clks = rockchip_clk_find_max_clk_id(rk3128_clk_branches,
+						   ARRAY_SIZE(rk3128_clk_branches)) + 1;
 
-	ctx = rk3128_common_clk_init(np);
+	ctx = rk3128_common_clk_init(np, soc_nr_clks);
 	if (IS_ERR(ctx))
 		return;
 
-- 
2.45.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v3 2/5] dt-bindings: clock: rk3128: Drop CLK_NR_CLKS
  2024-06-06 14:33 [PATCH v3 0/5] Add SFC support for RK3128 Alex Bee
  2024-06-06 14:33 ` [PATCH v3 1/5] clk: rockchip: rk3128: Drop CLK_NR_CLKS usage Alex Bee
@ 2024-06-06 14:33 ` Alex Bee
  2024-06-07 22:28   ` Heiko Stübner
  2024-06-06 14:34 ` [PATCH v3 3/5] dt-bindings: clock: rk3128: Add HCLK_SFC Alex Bee
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 8+ messages in thread
From: Alex Bee @ 2024-06-06 14:33 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
  Cc: Michael Turquette, Stephen Boyd, devicetree, linux-arm-kernel,
	linux-rockchip, linux-kernel, linux-clk, Alex Bee,
	Krzysztof Kozlowski

CLK_NR_CLKS should not be part of the binding. Let's drop it, since
the kernel code no longer uses it either.

Signed-off-by: Alex Bee <knaerzche@gmail.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
changes since v1:
 - new patch

 include/dt-bindings/clock/rk3128-cru.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/include/dt-bindings/clock/rk3128-cru.h b/include/dt-bindings/clock/rk3128-cru.h
index 1be455ba4985..2616a8791c14 100644
--- a/include/dt-bindings/clock/rk3128-cru.h
+++ b/include/dt-bindings/clock/rk3128-cru.h
@@ -145,8 +145,6 @@
 #define HCLK_CRYPTO		476
 #define HCLK_PERI		478
 
-#define CLK_NR_CLKS		(HCLK_PERI + 1)
-
 /* soft-reset indices */
 #define SRST_CORE0_PO		0
 #define SRST_CORE1_PO		1
-- 
2.45.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v3 3/5] dt-bindings: clock: rk3128: Add HCLK_SFC
  2024-06-06 14:33 [PATCH v3 0/5] Add SFC support for RK3128 Alex Bee
  2024-06-06 14:33 ` [PATCH v3 1/5] clk: rockchip: rk3128: Drop CLK_NR_CLKS usage Alex Bee
  2024-06-06 14:33 ` [PATCH v3 2/5] dt-bindings: clock: rk3128: Drop CLK_NR_CLKS Alex Bee
@ 2024-06-06 14:34 ` Alex Bee
  2024-06-06 14:34 ` [PATCH v3 4/5] clk: rockchip: Add HCLK_SFC for RK3128 Alex Bee
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Alex Bee @ 2024-06-06 14:34 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
  Cc: Michael Turquette, Stephen Boyd, devicetree, linux-arm-kernel,
	linux-rockchip, linux-kernel, linux-clk, Alex Bee,
	Krzysztof Kozlowski

Add a clock id for SFC's AHB clock.

Signed-off-by: Alex Bee <knaerzche@gmail.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
changes since v1:
 - add new clock id at the end

 include/dt-bindings/clock/rk3128-cru.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/dt-bindings/clock/rk3128-cru.h b/include/dt-bindings/clock/rk3128-cru.h
index 2616a8791c14..b609fcf96508 100644
--- a/include/dt-bindings/clock/rk3128-cru.h
+++ b/include/dt-bindings/clock/rk3128-cru.h
@@ -144,6 +144,7 @@
 #define HCLK_TSP		475
 #define HCLK_CRYPTO		476
 #define HCLK_PERI		478
+#define HCLK_SFC		479
 
 /* soft-reset indices */
 #define SRST_CORE0_PO		0
-- 
2.45.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v3 4/5] clk: rockchip: Add HCLK_SFC for RK3128
  2024-06-06 14:33 [PATCH v3 0/5] Add SFC support for RK3128 Alex Bee
                   ` (2 preceding siblings ...)
  2024-06-06 14:34 ` [PATCH v3 3/5] dt-bindings: clock: rk3128: Add HCLK_SFC Alex Bee
@ 2024-06-06 14:34 ` Alex Bee
  2024-06-06 14:34 ` [PATCH v3 5/5] ARM: dts: rockchip: Add SFC " Alex Bee
  2024-06-08 15:17 ` [PATCH v3 0/5] Add SFC support " Heiko Stuebner
  5 siblings, 0 replies; 8+ messages in thread
From: Alex Bee @ 2024-06-06 14:34 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
  Cc: Michael Turquette, Stephen Boyd, devicetree, linux-arm-kernel,
	linux-rockchip, linux-kernel, linux-clk, Alex Bee

The SFC IP exists only in RK3128 version of the SoC, thus the clock gets
added to rk3128_clk_branches.

Signed-off-by: Alex Bee <knaerzche@gmail.com>
---
changes since v1:
 - none

 drivers/clk/rockchip/clk-rk3128.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/clk/rockchip/clk-rk3128.c b/drivers/clk/rockchip/clk-rk3128.c
index 40e0e4556d59..7c3d92af12df 100644
--- a/drivers/clk/rockchip/clk-rk3128.c
+++ b/drivers/clk/rockchip/clk-rk3128.c
@@ -553,6 +553,7 @@ static struct rockchip_clk_branch rk3128_clk_branches[] __initdata = {
 			RK2928_CLKSEL_CON(11), 14, 2, MFLAGS, 8, 5, DFLAGS,
 			RK2928_CLKGATE_CON(3), 15, GFLAGS),
 
+	GATE(HCLK_SFC, "hclk_sfc", "hclk_peri", 0, RK2928_CLKGATE_CON(7), 1, GFLAGS),
 	GATE(HCLK_GPS, "hclk_gps", "aclk_peri", 0, RK2928_CLKGATE_CON(3), 14, GFLAGS),
 	GATE(PCLK_HDMI, "pclk_hdmi", "pclk_cpu", 0, RK2928_CLKGATE_CON(3), 8, GFLAGS),
 };
-- 
2.45.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v3 5/5] ARM: dts: rockchip: Add SFC for RK3128
  2024-06-06 14:33 [PATCH v3 0/5] Add SFC support for RK3128 Alex Bee
                   ` (3 preceding siblings ...)
  2024-06-06 14:34 ` [PATCH v3 4/5] clk: rockchip: Add HCLK_SFC for RK3128 Alex Bee
@ 2024-06-06 14:34 ` Alex Bee
  2024-06-08 15:17 ` [PATCH v3 0/5] Add SFC support " Heiko Stuebner
  5 siblings, 0 replies; 8+ messages in thread
From: Alex Bee @ 2024-06-06 14:34 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
  Cc: Michael Turquette, Stephen Boyd, devicetree, linux-arm-kernel,
	linux-rockchip, linux-kernel, linux-clk, Alex Bee

Add the Serial Flash Controller and it's pincontrols.

Signed-off-by: Alex Bee <knaerzche@gmail.com>
---
changes since v2:
Fixed pinux settings for the chipselect pincontrols which originated from
contradictory documentation: Datasheet [0] (page 29/31) says it is func4
(when start counting with func1), while TRM [1] (page 185) says func3
(register value 0x2). It turned out TRM is correct as with setting cs
pincontrols to func4 the spi chip is not detected, while func3 is fine.

[0] https://www.armdesigner.com/download/Rockchip_RK3128_datasheet_V1.2.pdf, 
[1] https://www.t-firefly.com/download/fireprime/docs/rk3128_trm/chapter-5-general-register-file(grf).pdf


 arch/arm/boot/dts/rockchip/rk3128.dtsi | 35 ++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/arch/arm/boot/dts/rockchip/rk3128.dtsi b/arch/arm/boot/dts/rockchip/rk3128.dtsi
index a7ab0904564f..c37aed28bd10 100644
--- a/arch/arm/boot/dts/rockchip/rk3128.dtsi
+++ b/arch/arm/boot/dts/rockchip/rk3128.dtsi
@@ -399,6 +399,15 @@ usb_host_ohci: usb@101e0000 {
 		status = "disabled";
 	};
 
+	sfc: spi@1020c000 {
+		compatible = "rockchip,sfc";
+		reg = <0x1020c000 0x8000>;
+		interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&cru SCLK_SFC>, <&cru HCLK_SFC>;
+		clock-names = "clk_sfc", "hclk_sfc";
+		status = "disabled";
+	};
+
 	sdmmc: mmc@10214000 {
 		compatible = "rockchip,rk3128-dw-mshc", "rockchip,rk3288-dw-mshc";
 		reg = <0x10214000 0x4000>;
@@ -1155,6 +1164,32 @@ sdmmc_bus4: sdmmc-bus4 {
 			};
 		};
 
+		sfc {
+			sfc_bus2: sfc-bus2 {
+				rockchip,pins = <1 RK_PD0 3 &pcfg_pull_default>,
+						<1 RK_PD1 3 &pcfg_pull_default>;
+			};
+
+			sfc_bus4: sfc-bus4 {
+				rockchip,pins = <1 RK_PD0 3 &pcfg_pull_default>,
+						<1 RK_PD1 3 &pcfg_pull_default>,
+						<1 RK_PD2 3 &pcfg_pull_default>,
+						<1 RK_PD3 3 &pcfg_pull_default>;
+			};
+
+			sfc_clk: sfc-clk {
+				rockchip,pins = <2 RK_PA4 3 &pcfg_pull_none>;
+			};
+
+			sfc_cs0: sfc-cs0 {
+				rockchip,pins = <2 RK_PA2 2 &pcfg_pull_default>;
+			};
+
+			sfc_cs1: sfc-cs1 {
+				rockchip,pins = <2 RK_PA3 2 &pcfg_pull_default>;
+			};
+		};
+
 		spdif {
 			spdif_tx: spdif-tx {
 				rockchip,pins = <3 RK_PD3 1 &pcfg_pull_none>;
-- 
2.45.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 2/5] dt-bindings: clock: rk3128: Drop CLK_NR_CLKS
  2024-06-06 14:33 ` [PATCH v3 2/5] dt-bindings: clock: rk3128: Drop CLK_NR_CLKS Alex Bee
@ 2024-06-07 22:28   ` Heiko Stübner
  0 siblings, 0 replies; 8+ messages in thread
From: Heiko Stübner @ 2024-06-07 22:28 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Alex Bee
  Cc: Michael Turquette, Stephen Boyd, devicetree, linux-arm-kernel,
	linux-rockchip, linux-kernel, linux-clk, Alex Bee,
	Krzysztof Kozlowski

Am Donnerstag, 6. Juni 2024, 16:33:59 CEST schrieb Alex Bee:
> CLK_NR_CLKS should not be part of the binding. Let's drop it, since
> the kernel code no longer uses it either.
> 
> Signed-off-by: Alex Bee <knaerzche@gmail.com>
> Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Just carrying over an Ack, in v2 [0] Connor provided an

Acked-by: Conor Dooley <conor.dooley@microchip.com>


[0] https://lore.kernel.org/all/20240607-dealer-vertebrae-9b22db3dc43b@spud/




_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 0/5] Add SFC support for RK3128
  2024-06-06 14:33 [PATCH v3 0/5] Add SFC support for RK3128 Alex Bee
                   ` (4 preceding siblings ...)
  2024-06-06 14:34 ` [PATCH v3 5/5] ARM: dts: rockchip: Add SFC " Alex Bee
@ 2024-06-08 15:17 ` Heiko Stuebner
  5 siblings, 0 replies; 8+ messages in thread
From: Heiko Stuebner @ 2024-06-08 15:17 UTC (permalink / raw)
  To: Rob Herring, Conor Dooley, Alex Bee, Krzysztof Kozlowski
  Cc: Heiko Stuebner, devicetree, linux-rockchip, Stephen Boyd,
	linux-arm-kernel, linux-kernel, Michael Turquette, linux-clk

On Thu, 6 Jun 2024 16:33:57 +0200, Alex Bee wrote:
> This series adds support for the Serial Flash Controller (SFC) found in
> RK3128 SoCs. The existing driver can be used as-is.
> 
> As without using some "id holes" we would run out clock ids when adding the
> additional SFC AHB clock in the binding and would have to touch the ABI, I
> added patches which remove the CLK_NR_CLKS macro and use the recently
> introduced rockchip_clk_find_max_clk_id helper instead to find the highest
> clock id.
> 
> [...]

Applied, thanks!

[1/5] clk: rockchip: rk3128: Drop CLK_NR_CLKS usage
      commit: 3d0316c949e26392a5098e23c139c932991e50ce
[2/5] dt-bindings: clock: rk3128: Drop CLK_NR_CLKS
      commit: 9f22b4fbd4c6d27ca4e5f8fa6632e6d7a846af28
[3/5] dt-bindings: clock: rk3128: Add HCLK_SFC
      commit: 469d6e0e70eefe1a31a89a7abd379f169b33b1f4
[4/5] clk: rockchip: Add HCLK_SFC for RK3128
      commit: f1fc95b41a3b1b2e613acb04c4f8aee7b87394cc
[5/5] ARM: dts: rockchip: Add SFC for RK3128
      commit: 01689df79018c4d68f84a2ac0cf65c35c852b979

Best regards,
-- 
Heiko Stuebner <heiko@sntech.de>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2024-06-08 15:17 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-06 14:33 [PATCH v3 0/5] Add SFC support for RK3128 Alex Bee
2024-06-06 14:33 ` [PATCH v3 1/5] clk: rockchip: rk3128: Drop CLK_NR_CLKS usage Alex Bee
2024-06-06 14:33 ` [PATCH v3 2/5] dt-bindings: clock: rk3128: Drop CLK_NR_CLKS Alex Bee
2024-06-07 22:28   ` Heiko Stübner
2024-06-06 14:34 ` [PATCH v3 3/5] dt-bindings: clock: rk3128: Add HCLK_SFC Alex Bee
2024-06-06 14:34 ` [PATCH v3 4/5] clk: rockchip: Add HCLK_SFC for RK3128 Alex Bee
2024-06-06 14:34 ` [PATCH v3 5/5] ARM: dts: rockchip: Add SFC " Alex Bee
2024-06-08 15:17 ` [PATCH v3 0/5] Add SFC support " Heiko Stuebner

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).