Skip to contentSkip to conversation

clk: renesas: cpg-mssr: Add support for R-Car M3-W

PATCH Superseded Geert Uytterhoeven 6 participants 27 messages May 4, 2016 – Sep 23, 2016

Subsystems (5)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore

Geert Uytterhoeven

author maintainer
#0 lore raw

cover clk: renesas: cpg-mssr: Add support for R-Car M3-W

Hi Mike, Stephen,

This patch series adds initial support for the Clock Pulse Generator and Module Standby and Software Reset modules on the Renesas R-Car M3-W SoC:
- Basic core clocks,
- SCIF2 (console) module clock,
- INTC-AP (GIC) module clock (disabled pending CLK_ENABLE_HAND_OFF).

Support for more core and module clocks will be added incrementally.

/sys/kernel/debug/clk/clk_summary output:

       clock            enable_cnt  prepare_cnt        rate   accuracy   phase
    ---------------------------------------------------------------------------
     scif                        1            1    14745600          0 0
     extalr                      0            0           0          0 0
     extal                       1            1    16666666          0 0
	cp                       0            0     8333333          0 0
	.main                    1            1    16666666          0 0
	   .pll4                 0            0  2399999904          0 0
	   .pll3                 0            0  3199999872          0 0
	   .pll2                 0            0  2399999904          0 0
	   .pll1                 1            1  3199999872          0 0
	      .pll1_div2         1            1  1599999936          0 0
		 cl              0            0    33333332          0 0
		 zx              0            0   799999968          0 0
		 zt              0            0   399999984          0 0
		 ztrd2           0            0   133333328          0 0
		 ztr             0            0   266666656          0 0
		 .s3             2            2   266666656          0 0
		    s3d4         1            1    66666664          0 0
		       scif2     2            2    66666664          0 0
		    s3d2         0            0   133333328          0 0
		    s3d1         2            2   266666656          0 0
		       intc-ap   1            1   266666656          0 0
		 .s2             0            0   399999984          0 0
		    s2d4         0            0    99999996          0 0
		    s2d2         0            0   199999992          0 0
		    s2d1         0            0   399999984          0 0
		 .s1             0            0   533333312          0 0
		    s1d4         0            0   133333328          0 0
		    s1d2         0            0   266666656          0 0
		    s1d1         0            0   533333312          0 0
		 .s0             0            0   799999968          0 0
		    s0d12        0            0    66666664          0 0
		    s0d8         0            0    99999996          0 0
		    s0d6         0            0   133333328          0 0
		    s0d4         0            0   199999992          0 0
		    s0d3         0            0   266666656          0 0
		    s0d2         0            0   399999984          0 0
		    s0d1         0            0   799999968          0 0
		 .pll1_div4      0            0   799999968          0 0
	   .pll0                 0            0  2999999880          0 0

For your convenience, I've pushed this series to the topic/r8a7796-clk-v1 branch of
https://git.kernel.org/cgit/linux/kernel/git/geert/renesas-drivers.git.

Integration with renesas-drivers-2016-04-26-v4.6-rc5, and minimal board integration for testing is available in the topic/gen3-latest branch.

This has received minimal testing on r8a7796/salvator-x, and regression testing on r8a7795/salvator-x (ES1.0 and ES1.1).

Thanks for your comments!

Geert Uytterhoeven (4):
clk: renesas: cpg-mssr: Document r8a7796 support
clk: renesas: Add r8a7796 CPG Core Clock Definitions
clk: renesas: cpg-mssr: Extract common R-Car Gen3 support code
clk: renesas: cpg-mssr: Add support for R-Car M3-W

 .../devicetree/bindings/clock/renesas,cpg-mssr.txt |   7 +-
 drivers/clk/renesas/Kconfig                        |   1 +
 drivers/clk/renesas/Makefile                       |   3 +-
 drivers/clk/renesas/r8a7795-cpg-mssr.c             | 360 +--------------------
 drivers/clk/renesas/r8a7796-cpg-mssr.c             | 192 +++++++++++
 drivers/clk/renesas/rcar-gen3-cpg.c                | 359 ++++++++++++++++++++
 drivers/clk/renesas/rcar-gen3-cpg.h                |  43 +++
 drivers/clk/renesas/renesas-cpg-mssr.c             |   6 +
 drivers/clk/renesas/renesas-cpg-mssr.h             |   1 +
 include/dt-bindings/clock/r8a7796-cpg-mssr.h       |  69 ++++
 10 files changed, 682 insertions(+), 359 deletions(-)
 create mode 100644 drivers/clk/renesas/r8a7796-cpg-mssr.c
 create mode 100644 drivers/clk/renesas/rcar-gen3-cpg.c
 create mode 100644 drivers/clk/renesas/rcar-gen3-cpg.h
 create mode 100644 include/dt-bindings/clock/r8a7796-cpg-mssr.h
Signature · 12 lines
1.9.1

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds
author maintainer
#1 lore raw

PATCH 1/4 clk: renesas: cpg-mssr: Document r8a7796 support

---
 Documentation/devicetree/bindings/clock/renesas,cpg-mssr.txt | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
Documentation/devicetree/bindings/clock/renesas,cpg-mssr.txt +4 -3
index fefb8023020f1a54..394d725ac7e0baa3 100644
@@ -13,7 +13,8 @@ They provide the following functionalities:
 
 Required Properties:
   - compatible: Must be one of:
-      - "renesas,r8a7795-cpg-mssr" for the r8a7795 SoC
+      - "renesas,r8a7795-cpg-mssr" for the r8a7795 SoC (R-Car H3)
+      - "renesas,r8a7796-cpg-mssr" for the r8a7796 SoC (R-Car M3-W)
 
   - reg: Base address and length of the memory resource used by the CPG/MSSR
     block
@@ -21,8 +22,8 @@ Required Properties:
   - clocks: References to external parent clocks, one entry for each entry in
     clock-names
   - clock-names: List of external parent clock names. Valid names are:
-      - "extal" (r8a7795)
-      - "extalr" (r8a7795)
+      - "extal" (r8a7795, r8a7796)
+      - "extalr" (r8a7795, r8a7796)
 
   - #clock-cells: Must be 2
       - For CPG core clocks, the two clock specifier cells must be "CPG_CORE"
Signature · 1 line
1.9.1
author maintainer
#3 lore raw

PATCH 2/4 clk: renesas: Add r8a7796 CPG Core Clock Definitions

In reply to Geert Uytterhoeven

Add all R-Car M3-W Clock Pulse Generator Core Clock Outputs, as listed in Table 8.2b ("List of Clocks [R-Car M3-W]") of the R-Car Gen3 datasheet (rev. 0.51 + Errata for Rev051 Mar 31 2016).

Note that internal CPG clocks (S0, S1, S2, S3, SDSRC, and SSPSRC) are not included, as they are used as internal clock sources only, and never referenced from DT.

---
 include/dt-bindings/clock/r8a7796-cpg-mssr.h | 69 ++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)
 create mode 100644 include/dt-bindings/clock/r8a7796-cpg-mssr.h
include/dt-bindings/clock/r8a7796-cpg-mssr.h new file +69 -0
new file mode 100644
index 0000000000000000..1e5942695f0dd057
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2016 Renesas Electronics Corp.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+#ifndef __DT_BINDINGS_CLOCK_R8A7796_CPG_MSSR_H__
+#define __DT_BINDINGS_CLOCK_R8A7796_CPG_MSSR_H__
+
+#include <dt-bindings/clock/renesas-cpg-mssr.h>
+
+/* r8a7796 CPG Core Clocks */
+#define R8A7796_CLK_Z			0
+#define R8A7796_CLK_Z2			1
+#define R8A7796_CLK_ZR			2
+#define R8A7796_CLK_ZG			3
+#define R8A7796_CLK_ZTR			4
+#define R8A7796_CLK_ZTRD2		5
+#define R8A7796_CLK_ZT			6
+#define R8A7796_CLK_ZX			7
+#define R8A7796_CLK_S0D1		8
+#define R8A7796_CLK_S0D2		9
+#define R8A7796_CLK_S0D3		10
+#define R8A7796_CLK_S0D4		11
+#define R8A7796_CLK_S0D6		12
+#define R8A7796_CLK_S0D8		13
+#define R8A7796_CLK_S0D12		14
+#define R8A7796_CLK_S1D1		15
+#define R8A7796_CLK_S1D2		16
+#define R8A7796_CLK_S1D4		17
+#define R8A7796_CLK_S2D1		18
+#define R8A7796_CLK_S2D2		19
+#define R8A7796_CLK_S2D4		20
+#define R8A7796_CLK_S3D1		21
+#define R8A7796_CLK_S3D2		22
+#define R8A7796_CLK_S3D4		23
+#define R8A7796_CLK_LB			24
+#define R8A7796_CLK_CL			25
+#define R8A7796_CLK_ZB3			26
+#define R8A7796_CLK_ZB3D2		27
+#define R8A7796_CLK_ZB3D4		28
+#define R8A7796_CLK_CR			29
+#define R8A7796_CLK_CRD2		30
+#define R8A7796_CLK_SD0H		31
+#define R8A7796_CLK_SD0			32
+#define R8A7796_CLK_SD1H		33
+#define R8A7796_CLK_SD1			34
+#define R8A7796_CLK_SD2H		35
+#define R8A7796_CLK_SD2			36
+#define R8A7796_CLK_SD3H		37
+#define R8A7796_CLK_SD3			38
+#define R8A7796_CLK_SSP2		39
+#define R8A7796_CLK_SSP1		40
+#define R8A7796_CLK_SSPRS		41
+#define R8A7796_CLK_RPC			42
+#define R8A7796_CLK_RPCD2		43
+#define R8A7796_CLK_MSO			44
+#define R8A7796_CLK_CANFD		45
+#define R8A7796_CLK_HDMI		46
+#define R8A7796_CLK_CSI0		47
+#define R8A7796_CLK_CSIREF		48
+#define R8A7796_CLK_CP			49
+#define R8A7796_CLK_CPEX		50
+#define R8A7796_CLK_R			51
+#define R8A7796_CLK_OSC			52
+
+#endif /* __DT_BINDINGS_CLOCK_R8A7796_CPG_MSSR_H__ */
Signature · 1 line
1.9.1
author maintainer
#4 lore raw

PATCH 3/4 clk: renesas: cpg-mssr: Extract common R-Car Gen3 support code

In reply to Geert Uytterhoeven

Extract the code to support parts common to all members of the R-Car Gen3 SoC family into a separate file, to ease sharing among SoC-specific drivers.

Note that while the cpg_pll_configs[] arrays and the selection of the config based on the MODE bits are identical on R-Car H3 and R-Car M3-W, they are not common, and may be different on other R-Car Gen3 SoCs.

---
 drivers/clk/renesas/Makefile           |   2 +-
 drivers/clk/renesas/r8a7795-cpg-mssr.c | 360 +--------------------------------
 drivers/clk/renesas/rcar-gen3-cpg.c    | 359 ++++++++++++++++++++++++++++++++
 drivers/clk/renesas/rcar-gen3-cpg.h    |  43 ++++
 4 files changed, 408 insertions(+), 356 deletions(-)
 create mode 100644 drivers/clk/renesas/rcar-gen3-cpg.c
 create mode 100644 drivers/clk/renesas/rcar-gen3-cpg.h
drivers/clk/renesas/Makefile +1 -1
index ead8bb8435249493..88924c95808c3b2e 100644
@@ -8,7 +8,7 @@ obj-$(CONFIG_ARCH_R8A7790)		+= clk-rcar-gen2.o clk-div6.o
 obj-$(CONFIG_ARCH_R8A7791)		+= clk-rcar-gen2.o clk-div6.o
 obj-$(CONFIG_ARCH_R8A7793)		+= clk-rcar-gen2.o clk-div6.o
 obj-$(CONFIG_ARCH_R8A7794)		+= clk-rcar-gen2.o clk-div6.o
-obj-$(CONFIG_ARCH_R8A7795)		+= r8a7795-cpg-mssr.o
+obj-$(CONFIG_ARCH_R8A7795)		+= r8a7795-cpg-mssr.o rcar-gen3-cpg.o
 obj-$(CONFIG_ARCH_SH73A0)		+= clk-sh73a0.o clk-div6.o
 
 obj-$(CONFIG_CLK_RENESAS_CPG_MSSR)	+= renesas-cpg-mssr.o clk-div6.o
drivers/clk/renesas/r8a7795-cpg-mssr.c +5 -355

409 lines not on this page · raw message

drivers/clk/renesas/rcar-gen3-cpg.c new file +359 -0

359 lines not on this page · raw message

drivers/clk/renesas/rcar-gen3-cpg.h new file +43 -0

43 lines not on this page · raw message

Signature · 1 line
1.9.1
author maintainer
#5 lore raw

PATCH 4/4 clk: renesas: cpg-mssr: Add support for R-Car M3-W

In reply to Geert Uytterhoeven

Initial support for R-Car M3-W (r8a7796), including basic core clocks, and SCIF2 (console) and INTC-AP (GIC) module clocks.

---
 drivers/clk/renesas/Kconfig            |   1 +
 drivers/clk/renesas/Makefile           |   1 +
 drivers/clk/renesas/r8a7796-cpg-mssr.c | 192 +++++++++++++++++++++++++++++++++
 drivers/clk/renesas/renesas-cpg-mssr.c |   6 ++
 drivers/clk/renesas/renesas-cpg-mssr.h |   1 +
 5 files changed, 201 insertions(+)
 create mode 100644 drivers/clk/renesas/r8a7796-cpg-mssr.c
drivers/clk/renesas/Kconfig +1 -0
index 2115ce410cfb4bc9..fcad9ff090f5fd2b 100644
@@ -1,6 +1,7 @@
 config CLK_RENESAS_CPG_MSSR
 	bool
 	default y if ARCH_R8A7795
+	default y if ARCH_R8A7796
 
 config CLK_RENESAS_CPG_MSTP
 	bool
drivers/clk/renesas/Makefile +1 -0
index 88924c95808c3b2e..0b8d31b4909c9690 100644
@@ -9,6 +9,7 @@ obj-$(CONFIG_ARCH_R8A7791)		+= clk-rcar-gen2.o clk-div6.o
 obj-$(CONFIG_ARCH_R8A7793)		+= clk-rcar-gen2.o clk-div6.o
 obj-$(CONFIG_ARCH_R8A7794)		+= clk-rcar-gen2.o clk-div6.o
 obj-$(CONFIG_ARCH_R8A7795)		+= r8a7795-cpg-mssr.o rcar-gen3-cpg.o
+obj-$(CONFIG_ARCH_R8A7796)		+= r8a7796-cpg-mssr.o rcar-gen3-cpg.o
 obj-$(CONFIG_ARCH_SH73A0)		+= clk-sh73a0.o clk-div6.o
 
 obj-$(CONFIG_CLK_RENESAS_CPG_MSSR)	+= renesas-cpg-mssr.o clk-div6.o
drivers/clk/renesas/r8a7796-cpg-mssr.c new file +192 -0

192 lines not on this page · raw message

drivers/clk/renesas/renesas-cpg-mssr.c +6 -0
index 210cd744a7a97bbd..e1365e7491ae02a0 100644
@@ -509,6 +509,12 @@ static const struct of_device_id cpg_mssr_match[] = {
 		.data = &r8a7795_cpg_mssr_info,
 	},
 #endif
+#ifdef CONFIG_ARCH_R8A7796
+	{
+		.compatible = "renesas,r8a7796-cpg-mssr",
+		.data = &r8a7796_cpg_mssr_info,
+	},
+#endif
 	{ /* sentinel */ }
 };
 
drivers/clk/renesas/renesas-cpg-mssr.h +1 -0
index 0d1e3e811e79bf43..ee7edfaf14089cef 100644
@@ -131,4 +131,5 @@ struct cpg_mssr_info {
 };
 
 extern const struct cpg_mssr_info r8a7795_cpg_mssr_info;
+extern const struct cpg_mssr_info r8a7796_cpg_mssr_info;
 #endif
Signature · 1 line
1.9.1
#6 lore raw

cover Add Z clock support

In reply to Geert Uytterhoeven

Hi Geert,

This series adds Z clock support for R-Car Gen3.
It was written on top of "[PATCH 0/4] clk: renesas: cpg-mssr: Add support for R-Car M3-W" series.

Dien Pham (1):
arm64: dts: r8a7795: Add Z clock scaling support

Khiem Nguyen (3):
clk: renesas: rcar-gen3-cpg: Add Z clock
clk: renesas: r8a7795: Add Z clock
clk: renesas: r8a7796: Add Z clock

 arch/arm64/boot/dts/renesas/r8a7795.dtsi |  26 ++++++
 drivers/clk/renesas/r8a7795-cpg-mssr.c   |   1 +
 drivers/clk/renesas/r8a7796-cpg-mssr.c   |   2 +
 drivers/clk/renesas/rcar-gen3-cpg.c      | 143 
+++++++++++++++++++++++++++++++
 drivers/clk/renesas/rcar-gen3-cpg.h      |   1 +
 5 files changed, 173 insertions(+)
Signature · 1 line
1.9.1
#7 lore raw

cover cpufreq: rcar: Enable CPUFreq support

This series enables CPUFreq support in available R-Car Gen3 SoC.

It depends on 2 series below:
[PATCH 0/4] clk: renesas: cpg-mssr: Add support for R-Car M3-W [RFC 0/4] Add Z clock support

All comments are appreciated.

Khiem Nguyen (2):
cpufreq: rcar: Add support for R8A7795 SoC
cpufreq: rcar: Add support for R8A7796 SoC

 drivers/cpufreq/cpufreq-dt-platdev.c | 2 ++
 1 file changed, 2 insertions(+)
Signature · 1 line
1.9.1
#8 lore raw

PATCH 1/2 cpufreq: rcar: Add support for R8A7795 SoC

After the commit "a399dc9fc50 cpufreq: shmobile: Use generic platdev driver", will use cpufreq-dt-platdev driver to enable cpufreq-dt support. Hence, follow the implementation to support new R8A7795 SoC.

---
 drivers/cpufreq/cpufreq-dt-platdev.c | 1 +
 1 file changed, 1 insertion(+)
drivers/cpufreq/cpufreq-dt-platdev.c +1 -0
index ac4a0ba..32f6dda 100644
@@ -53,6 +53,7 @@ static const struct of_device_id machines[] __initconst = {
 	{ .compatible = "renesas,r8a7791", },
 	{ .compatible = "renesas,r8a7793", },
 	{ .compatible = "renesas,r8a7794", },
+	{ .compatible = "renesas,r8a7795", },
 	{ .compatible = "renesas,sh73a0", },
 
 	{ .compatible = "rockchip,rk2928", },
Signature · 1 line
1.9.1
#9 lore raw

PATCH 2/2 cpufreq: rcar: Add support for R8A7796 SoC

---
 drivers/cpufreq/cpufreq-dt-platdev.c | 1 +
 1 file changed, 1 insertion(+)
drivers/cpufreq/cpufreq-dt-platdev.c +1 -0
index 32f6dda..7d038fd 100644
@@ -54,6 +54,7 @@ static const struct of_device_id machines[] __initconst = {
 	{ .compatible = "renesas,r8a7793", },
 	{ .compatible = "renesas,r8a7794", },
 	{ .compatible = "renesas,r8a7795", },
+	{ .compatible = "renesas,r8a7796", },
 	{ .compatible = "renesas,sh73a0", },
 
 	{ .compatible = "rockchip,rk2928", },
Signature · 1 line
1.9.1
maintainer Acked-by on v1 2/2
#10 lore raw

Re: [PATCH 2/2] cpufreq: rcar: Add support for R8A7796 SoC

Quoted 18 lines · Khiem Nguyen
---
 drivers/cpufreq/cpufreq-dt-platdev.c | 1 +
 1 file changed, 1 insertion(+)
drivers/cpufreq/cpufreq-dt-platdev.c +1 -0
index 32f6dda..7d038fd 100644
@@ -54,6 +54,7 @@ static const struct of_device_id machines[] __initconst =
 {
 	{ .compatible = "renesas,r8a7793", },
 	{ .compatible = "renesas,r8a7794", },
 	{ .compatible = "renesas,r8a7795", },
+	{ .compatible = "renesas,r8a7796", },
 	{ .compatible = "renesas,sh73a0", },
 
Quoted 1 line

{ .compatible = "rockchip,rk2928", },

Well, you could have done that in the same patch. But I don't mind two patches now.

Signature · 1 line
viresh
maintainer Acked-by on v1 1/2
#11 lore raw

Re: [PATCH 1/2] cpufreq: rcar: Add support for R8A7795 SoC

In reply to Khiem Nguyen
Quoted 8 lines · Khiem Nguyen

After the commit "a399dc9fc50 cpufreq: shmobile: Use generic platdev driver", will use cpufreq-dt-platdev driver to enable cpufreq-dt support. Hence, follow the implementation to support new R8A7795 SoC.

---
 drivers/cpufreq/cpufreq-dt-platdev.c | 1 +
 1 file changed, 1 insertion(+)
Signature · 1 line
viresh
#12 lore raw

Re: [PATCH 1/2] cpufreq: rcar: Add support for R8A7795 SoC

Hi Viresh,

Quoted 11 lines · Viresh Kumar
Quoted 8 lines · Khiem Nguyen

After the commit "a399dc9fc50 cpufreq: shmobile: Use generic platdev driver", will use cpufreq-dt-platdev driver to enable cpufreq-dt support. Hence, follow the implementation to support new R8A7795 SoC.

---
 drivers/cpufreq/cpufreq-dt-platdev.c | 1 +
 1 file changed, 1 insertion(+)

Quoting Viresh when this file was introduced:
| This is going to be done once per boot and this shouldn't hurt. And for new | platforms we may do things differently as they are going to use opp-v2 bindings.

As r8a7795/r8a7796 are not arm32 "shmobile", but arm64, perhaps we should use this new "opp-v2" binding instead? Has it been finalized?

Thanks!

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

maintainer
#13 lore raw

Re: [PATCH 1/2] cpufreq: rcar: Add support for R8A7795 SoC

Quoted 15 lines · Geert Uytterhoeven

Hi Viresh,

Quoted 11 lines · Viresh Kumar
Quoted 8 lines · Khiem Nguyen

After the commit "a399dc9fc50 cpufreq: shmobile: Use generic platdev driver", will use cpufreq-dt-platdev driver to enable cpufreq-dt support. Hence, follow the implementation to support new R8A7795 SoC.

---
 drivers/cpufreq/cpufreq-dt-platdev.c | 1 +
 1 file changed, 1 insertion(+)
Quoted 7 lines

Quoting Viresh when this file was introduced:
| This is going to be done once per boot and this shouldn't hurt. And for new | platforms we may do things differently as they are going to use opp-v2 bindings.

As r8a7795/r8a7796 are not arm32 "shmobile", but arm64, perhaps we should use this new "opp-v2" binding instead? Has it been finalized?

Yeah, that would be preferred.

Signature · 1 line
viresh
#14 lore raw

Re: [RFC 0/4] Add Z clock support

In reply to Khiem Nguyen

Hi Khiem,

Quoted 3 lines · Khiem Nguyen

This series adds Z clock support for R-Car Gen3.
It was written on top of "[PATCH 0/4] clk: renesas: cpg-mssr: Add support for R-Car M3-W" series.

Thanks for your patch series!

Unfortunately it seems to be whitespace-damaged, and can't be applied without manual tweaking.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#15 lore raw

RFC 1/4 clk: renesas: rcar-gen3-cpg: Add Z clock

In reply to Geert Uytterhoeven

Base on Dien Pham work.

---
 drivers/clk/renesas/rcar-gen3-cpg.c | 143 
++++++++++++++++++++++++++++++++++++
 drivers/clk/renesas/rcar-gen3-cpg.h |   1 +
 2 files changed, 144 insertions(+)
drivers/clk/renesas/rcar-gen3-cpg.c +143 -0
index bb4f2f9..45209ac 100644
@@ -28,6 +28,146 @@
 #define CPG_PLL2CR		0x002c
 #define CPG_PLL4CR		0x01f4
 
+/** Modify for Z-clock
+ * -----------------------------------------------------------------------------
+ * Z Clock
+ *
+ * Traits of this clock:
+ * prepare - clk_prepare only ensures that parents are prepared
+ * enable - clk_enable only ensures that parents are enabled
+ * rate - rate is adjustable.  clk->rate = parent->rate * mult / 32
+ * parent - fixed parent.  No clk_set_parent support
+ */
+#define CPG_FRQCRB			0x00000004
+#define CPG_FRQCRB_KICK			BIT(31)
+#define CPG_FRQCRC			0x000000e0
+#define CPG_FRQCRC_ZFC_MASK		(0x1f << 8)
+#define CPG_FRQCRC_ZFC_SHIFT		8
+
+
+struct cpg_z_clk {
+	struct clk_hw hw;
+	void __iomem *reg;
+	void __iomem *kick_reg;
+};
+
+#define to_z_clk(_hw)	container_of(_hw, struct cpg_z_clk, hw)
+
+static unsigned long cpg_z_clk_recalc_rate(struct clk_hw *hw,
+					   unsigned long parent_rate)
+{
+	struct cpg_z_clk *zclk = to_z_clk(hw);
+	unsigned int mult;
+	unsigned int val;
+	unsigned long rate;
+
+	val = (clk_readl(zclk->reg) & CPG_FRQCRC_ZFC_MASK)
+	    >> CPG_FRQCRC_ZFC_SHIFT;
+	mult = 32 - val;
+
+	rate = div_u64((u64)parent_rate * mult + 16, 32);
+	/* Round to closest value at 100MHz unit */
+	rate = 100000000*DIV_ROUND_CLOSEST(rate, 100000000);
+	return rate;
+}
+
+static long cpg_z_clk_round_rate(struct clk_hw *hw, unsigned long rate,
+				 unsigned long *parent_rate)
+{
+	unsigned long prate  = *parent_rate;
+	unsigned int mult;
+
+	if (!prate)
+		prate = 1;
+
+	mult = div_u64((u64)rate * 32 + prate/2, prate);
+	mult = clamp(mult, 1U, 32U);
+
+	return *parent_rate / 32 * mult;
+}
+
+static int cpg_z_clk_set_rate(struct clk_hw *hw, unsigned long rate,
+			      unsigned long parent_rate)
+{
+	struct cpg_z_clk *zclk = to_z_clk(hw);
+	unsigned int mult;
+	u32 val, kick;
+	unsigned int i;
+
+	mult = div_u64((u64)rate * 32 + parent_rate/2, parent_rate);
+	mult = clamp(mult, 1U, 32U);
+
+	if (clk_readl(zclk->kick_reg) & CPG_FRQCRB_KICK)
+		return -EBUSY;
+
+	val = clk_readl(zclk->reg);
+	val &= ~CPG_FRQCRC_ZFC_MASK;
+	val |= (32 - mult) << CPG_FRQCRC_ZFC_SHIFT;
+	clk_writel(val, zclk->reg);
+
+	/*
+	 * Set KICK bit in FRQCRB to update hardware setting and wait for
+	 * clock change completion.
+	 */
+	kick = clk_readl(zclk->kick_reg);
+	kick |= CPG_FRQCRB_KICK;
+	clk_writel(kick, zclk->kick_reg);
+
+	/*
+	 * Note: There is no HW information about the worst case latency.
+	 *
+	 * Using experimental measurements, it seems that no more than
+	 * ~10 iterations are needed, independently of the CPU rate.
+	 * Since this value might be dependent of external xtal rate, pll1
+	 * rate or even the other emulation clocks rate, use 1000 as a
+	 * "super" safe value.
+	 */
+	for (i = 1000; i; i--) {
+		if (!(clk_readl(zclk->kick_reg) & CPG_FRQCRB_KICK))
+			return 0;
+
+		cpu_relax();
+	}
+
+	return -ETIMEDOUT;
+}
+
+static const struct clk_ops cpg_z_clk_ops = {
+	.recalc_rate = cpg_z_clk_recalc_rate,
+	.round_rate = cpg_z_clk_round_rate,
+	.set_rate = cpg_z_clk_set_rate,
+};
+
+static struct clk * __init cpg_z_clk_register(const struct cpg_core_clk *core,
+					      void __iomem *base,
+					      const char *parent_name)
+{
+	struct clk_init_data init;
+	struct cpg_z_clk *zclk;
+	struct clk *clk;
+
+	zclk = kzalloc(sizeof(*zclk), GFP_KERNEL);
+	if (!zclk)
+		return ERR_PTR(-ENOMEM);
+
+	init.name = core->name;
+	init.ops = &cpg_z_clk_ops;
+	init.flags = CLK_SET_RATE_GATE;
+	init.parent_names = &parent_name;
+	init.num_parents = 1;
+
+	zclk->reg = base + CPG_FRQCRC;
+	zclk->kick_reg = base + CPG_FRQCRB;
+	zclk->hw.init = &init;
+
+	clk = clk_register(NULL, &zclk->hw);
+	if (IS_ERR(clk))
+		kfree(zclk);
+
+	return clk;
+}
+
+/** End of modifying for Z-clock */
 
 /*
  * SDn Clock
@@ -325,6 +465,9 @@ struct clk * __init rcar_gen3_cpg_clk_register(struct device *dev,
 		writel(value, base + CPG_RCKCR);
 		break;
 
+	case CLK_TYPE_GEN3_Z:
+		return cpg_z_clk_register(core, base, __clk_get_name(parent));
+
 	default:
 		return ERR_PTR(-EINVAL);
 	}
drivers/clk/renesas/rcar-gen3-cpg.h +1 -0
index f699085..03c26e1 100644
@@ -20,6 +20,7 @@ enum rcar_gen3_clk_types {
 	CLK_TYPE_GEN3_PLL4,
 	CLK_TYPE_GEN3_SD,
 	CLK_TYPE_GEN3_R,
+	CLK_TYPE_GEN3_Z,
 };
 
 #define DEF_GEN3_SD(_name, _id, _parent, _offset)	\
Signature · 1 line
1.9.1
#16 lore raw

Re: [RFC 1/4] clk: renesas: rcar-gen3-cpg: Add Z clock

Hi Khiem,

Quoted 3 lines · Khiem Nguyen

Base on Dien Pham work.

Thanks for your patch!

Quoted 12 lines
---
 drivers/clk/renesas/rcar-gen3-cpg.c | 143
++++++++++++++++++++++++++++++++++++
 drivers/clk/renesas/rcar-gen3-cpg.h |   1 +
 2 files changed, 144 insertions(+)
drivers/clk/renesas/rcar-gen3-cpg.c +0 -0
index bb4f2f9..45209ac 100644

drivers/clk/renesas/rcar-gen3-cpg.c line 31

Quoted 4 lines
drivers/clk/renesas/rcar-gen3-cpg.c +1 -0
@@ -28,6 +28,146 @@
 #define CPG_PLL2CR             0x002c
 #define CPG_PLL4CR             0x01f4
 
+/** Modify for Z-clock

Please drop this comment

Quoted 11 lines
drivers/clk/renesas/rcar-gen3-cpg.c +10 -1
+ *
-----------------------------------------------------------------------------
+ * Z Clock
+ *
+ * Traits of this clock:
+ * prepare - clk_prepare only ensures that parents are prepared
+ * enable - clk_enable only ensures that parents are enabled
+ * rate - rate is adjustable.  clk->rate = parent->rate * mult / 32
+ * parent - fixed parent.  No clk_set_parent support
+ */
+#define CPG_FRQCRB                     0x00000004

drivers/clk/renesas/rcar-gen3-cpg.c line 51

Quoted 10 lines
drivers/clk/renesas/rcar-gen3-cpg.c +10 -0
+#define CPG_FRQCRB_KICK                        BIT(31)
+#define CPG_FRQCRC                     0x000000e0
+#define CPG_FRQCRC_ZFC_MASK            (0x1f << 8)
+#define CPG_FRQCRC_ZFC_SHIFT           8
+
+
+struct cpg_z_clk {
+       struct clk_hw hw;
+       void __iomem *reg;
+       void __iomem *kick_reg;

I would just store the base address, and always use "zclk->base + CPG_FRQCRB" or "zclk->base + CPG_FRQCRC".

Quoted 7 lines
drivers/clk/renesas/rcar-gen3-cpg.c +7 -0
+};
+
+#define to_z_clk(_hw)  container_of(_hw, struct cpg_z_clk, hw)
+
+static unsigned long cpg_z_clk_recalc_rate(struct clk_hw *hw,
+                                          unsigned long parent_rate)
+{

drivers/clk/renesas/rcar-gen3-cpg.c line 68

Quoted 10 lines
drivers/clk/renesas/rcar-gen3-cpg.c +10 -0
+       struct cpg_z_clk *zclk = to_z_clk(hw);
+       unsigned int mult;
+       unsigned int val;
+       unsigned long rate;
+
+       val = (clk_readl(zclk->reg) & CPG_FRQCRC_ZFC_MASK)
+           >> CPG_FRQCRC_ZFC_SHIFT;
+       mult = 32 - val;
+
+       rate = div_u64((u64)parent_rate * mult + 16, 32);

The above also does rounding.

drivers/clk/renesas/rcar-gen3-cpg.c line 70

Quoted 2 lines
drivers/clk/renesas/rcar-gen3-cpg.c +2 -0
+       /* Round to closest value at 100MHz unit */
+       rate = 100000000*DIV_ROUND_CLOSEST(rate, 100000000);

Why rounding to the closest 100MHz unit?

drivers/clk/renesas/rcar-gen3-cpg.c line 83

Quoted 13 lines
drivers/clk/renesas/rcar-gen3-cpg.c +13 -0
+       return rate;
+}
+
+static long cpg_z_clk_round_rate(struct clk_hw *hw, unsigned long rate,
+                                unsigned long *parent_rate)
+{
+       unsigned long prate  = *parent_rate;
+       unsigned int mult;
+
+       if (!prate)
+               prate = 1;
+
+       mult = div_u64((u64)rate * 32 + prate/2, prate);

DIV_ROUND_CLOSEST_ULL()

drivers/clk/renesas/rcar-gen3-cpg.c line 86

Quoted 3 lines
drivers/clk/renesas/rcar-gen3-cpg.c +3 -0
+       mult = clamp(mult, 1U, 32U);
+
+       return *parent_rate / 32 * mult;

Doing the division first reduces accuracy.
Please do the multiplication first (in 64-bit arithmetic).

drivers/clk/renesas/rcar-gen3-cpg.c line 97

Quoted 11 lines
drivers/clk/renesas/rcar-gen3-cpg.c +11 -0
+}
+
+static int cpg_z_clk_set_rate(struct clk_hw *hw, unsigned long rate,
+                             unsigned long parent_rate)
+{
+       struct cpg_z_clk *zclk = to_z_clk(hw);
+       unsigned int mult;
+       u32 val, kick;
+       unsigned int i;
+
+       mult = div_u64((u64)rate * 32 + parent_rate/2, parent_rate);

DIV_ROUND_CLOSEST_ULL()

Quoted 14 lines
drivers/clk/renesas/rcar-gen3-cpg.c +13 -0
+}
+
+static const struct clk_ops cpg_z_clk_ops = {
+       .recalc_rate = cpg_z_clk_recalc_rate,
+       .round_rate = cpg_z_clk_round_rate,
+       .set_rate = cpg_z_clk_set_rate,
+};
+
+static struct clk * __init cpg_z_clk_register(const struct cpg_core_clk
 *core,
+                                             void __iomem *base,
+                                             const char *parent_name)
+{
+       struct clk_init_data init;

drivers/clk/renesas/rcar-gen3-cpg.c line 155

Quoted 10 lines
drivers/clk/renesas/rcar-gen3-cpg.c +10 -0
+       struct cpg_z_clk *zclk;
+       struct clk *clk;
+
+       zclk = kzalloc(sizeof(*zclk), GFP_KERNEL);
+       if (!zclk)
+               return ERR_PTR(-ENOMEM);
+
+       init.name = core->name;
+       init.ops = &cpg_z_clk_ops;
+       init.flags = CLK_SET_RATE_GATE;

#define CLK_SET_RATE_GATE BIT(0) /* must be gated across rate change */

Given you don't implement clk_ops.disable() and clk_ops.unprepare(), CLK_SET_RATE_GATE doesn't sound like the right flag to use.

Quoted 5 lines
drivers/clk/renesas/rcar-gen3-cpg.c +5 -0
+       init.parent_names = &parent_name;
+       init.num_parents = 1;
+
+       zclk->reg = base + CPG_FRQCRC;
+       zclk->kick_reg = base + CPG_FRQCRB;

drivers/clk/renesas/rcar-gen3-cpg.c line 170

Quoted 10 lines
drivers/clk/renesas/rcar-gen3-cpg.c +10 -0
+       zclk->hw.init = &init;
+
+       clk = clk_register(NULL, &zclk->hw);
+       if (IS_ERR(clk))
+               kfree(zclk);
+
+       return clk;
+}
+
+/** End of modifying for Z-clock */

Please drop this comment

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#17 lore raw

Re: [RFC 1/4] clk: renesas: rcar-gen3-cpg: Add Z clock

In reply to Khiem Nguyen

Hi Khiem,

drivers/clk/renesas/rcar-gen3-cpg.c line 29

Quoted 5 lines · Khiem Nguyen
drivers/clk/renesas/rcar-gen3-cpg.c +1 -0
@@ -28,6 +28,146 @@
 
+       val = (clk_readl(zclk->reg) & CPG_FRQCRC_ZFC_MASK)

Please use readl()/writel() instead of clk_readl/()/clk_writel().

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#18 lore raw

RFC 2/4 clk: renesas: r8a7795: Add Z clock

In reply to Geert Uytterhoeven
---
 drivers/clk/renesas/r8a7795-cpg-mssr.c | 1 +
 1 file changed, 1 insertion(+)
drivers/clk/renesas/r8a7795-cpg-mssr.c +1 -0
index e53aff5..4120506 100644
@@ -104,6 +104,7 @@ static const struct cpg_core_clk r8a7795_core_clks[] __initconst = {
 	DEF_DIV6_RO("r_int",    CLK_RINT,          CLK_EXTAL, CPG_RCKCR, 32),
 
 	DEF_BASE("r",           R8A7795_CLK_R, CLK_TYPE_GEN3_R, CLK_RINT),
+	DEF_BASE("z",           R8A7795_CLK_Z,   CLK_TYPE_GEN3_Z,   CLK_PLL0),
 };
 
 static const struct mssr_mod_clk r8a7795_mod_clks[] __initconst = {
Signature · 1 line
1.9.1
#19 lore raw

RFC 3/4 clk: renesas: r8a7796: Add Z clock

---
 drivers/clk/renesas/r8a7796-cpg-mssr.c | 2 ++
 1 file changed, 2 insertions(+)
drivers/clk/renesas/r8a7796-cpg-mssr.c +2 -0
index c84b549..7368805 100644
@@ -94,6 +94,8 @@ static const struct cpg_core_clk r8a7796_core_clks[] __initconst = {
 
 	DEF_FIXED("cl",         R8A7796_CLK_CL,    CLK_PLL1_DIV2, 48, 1),
 	DEF_FIXED("cp",         R8A7796_CLK_CP,    CLK_EXTAL,      2, 1),
+
+	DEF_BASE("z",           R8A7795_CLK_Z,   CLK_TYPE_GEN3_Z,   CLK_PLL0),
 };
 
 static const struct mssr_mod_clk r8a7796_mod_clks[] __initconst = {
Signature · 1 line
1.9.1
#20 lore raw

Re: [RFC 3/4] clk: renesas: r8a7796: Add Z clock

Hi Khiem,

drivers/clk/renesas/r8a7796-cpg-mssr.c static const struct cpg_core_clk r8a7796_core_clks[] · line 99

Quoted 10 lines · Khiem Nguyen

index c84b549..7368805 100644

drivers/clk/renesas/r8a7796-cpg-mssr.c +2 -0
@@ -94,6 +94,8 @@ static const struct cpg_core_clk r8a7796_core_clks[]
 __initconst = {
 
        DEF_FIXED("cl",         R8A7796_CLK_CL,    CLK_PLL1_DIV2, 48, 1),
        DEF_FIXED("cp",         R8A7796_CLK_CP,    CLK_EXTAL,      2, 1),
+
+       DEF_BASE("z",           R8A7795_CLK_Z,   CLK_TYPE_GEN3_Z,   CLK_PLL0),

R8A7796_CLK_Z?

How could that work?

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#21 lore raw

RFC 4/4 arm64: dts: r8a7795: Add Z clock scaling support

In reply to Khiem Nguyen

This patch adds Z clock scaling support for CA57 in R8A7795 SoC. An OPP table is created with the supported frequency scaling.

---
 arch/arm64/boot/dts/renesas/r8a7795.dtsi | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
arch/arm64/boot/dts/renesas/r8a7795.dtsi +26 -0
index 7181db0..041d0f2 100644
@@ -43,6 +43,8 @@
 			power-domains = <&sysc R8A7795_PD_CA57_CPU0>;
 			next-level-cache = <&L2_CA57>;
 			enable-method = "psci";
+			clocks =<&cpg CPG_CORE R8A7795_CLK_Z>;
+			operating-points-v2 = <&cluster0_opp_tb0>;
 		};
 
 		a57_1: cpu@1 {
@@ -52,6 +54,7 @@
 			power-domains = <&sysc R8A7795_PD_CA57_CPU1>;
 			next-level-cache = <&L2_CA57>;
 			enable-method = "psci";
+			operating-points-v2 = <&cluster0_opp_tb0>;
 		};
 		a57_2: cpu@2 {
 			compatible = "arm,cortex-a57","arm,armv8";
@@ -60,6 +63,7 @@
 			power-domains = <&sysc R8A7795_PD_CA57_CPU2>;
 			next-level-cache = <&L2_CA57>;
 			enable-method = "psci";
+			operating-points-v2 = <&cluster0_opp_tb0>;
 		};
 		a57_3: cpu@3 {
 			compatible = "arm,cortex-a57","arm,armv8";
@@ -68,6 +72,28 @@
 			power-domains = <&sysc R8A7795_PD_CA57_CPU3>;
 			next-level-cache = <&L2_CA57>;
 			enable-method = "psci";
+			operating-points-v2 = <&cluster0_opp_tb0>;
+		};
+	};
+
+	cluster0_opp_tb0: opp_table0 {
+		compatible = "operating-points-v2";
+		opp-shared;
+
+		opp@500000000 {
+			opp-hz = /bits/ 64 <500000000>;
+			opp-microvolt = <820000>;
+			clock-latency-ns = <300000>;
+		};
+		opp@1000000000 {
+			opp-hz = /bits/ 64 <1000000000>;
+			opp-microvolt = <820000>;
+			clock-latency-ns = <300000>;
+		};
+		opp@1500000000 {
+			opp-hz = /bits/ 64 <1500000000>;
+			opp-microvolt = <820000>;
+			clock-latency-ns = <300000>;
 		};
 	};
 
Signature · 1 line
1.9.1
#22 lore raw

Re: [RFC 4/4] arm64: dts: r8a7795: Add Z clock scaling support

Quoted 56 lines · Khiem Nguyen

This patch adds Z clock scaling support for CA57 in R8A7795 SoC. An OPP table is created with the supported frequency scaling.

---
 arch/arm64/boot/dts/renesas/r8a7795.dtsi | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
arch/arm64/boot/dts/renesas/r8a7795.dtsi +16 -0
index 7181db0..041d0f2 100644
@@ -43,6 +43,8 @@
                        power-domains = <&sysc R8A7795_PD_CA57_CPU0>;
                        next-level-cache = <&L2_CA57>;
                        enable-method = "psci";
+                       clocks =<&cpg CPG_CORE R8A7795_CLK_Z>;
+                       operating-points-v2 = <&cluster0_opp_tb0>;
                };
 
                a57_1: cpu@1 {
@@ -52,6 +54,7 @@
                        power-domains = <&sysc R8A7795_PD_CA57_CPU1>;
                        next-level-cache = <&L2_CA57>;
                        enable-method = "psci";
+                       operating-points-v2 = <&cluster0_opp_tb0>;
                };
                a57_2: cpu@2 {
                        compatible = "arm,cortex-a57","arm,armv8";
@@ -60,6 +63,7 @@
                        power-domains = <&sysc R8A7795_PD_CA57_CPU2>;
                        next-level-cache = <&L2_CA57>;
                        enable-method = "psci";
+                       operating-points-v2 = <&cluster0_opp_tb0>;
                };
                a57_3: cpu@3 {
                        compatible = "arm,cortex-a57","arm,armv8";
@@ -68,6 +72,28 @@
                        power-domains = <&sysc R8A7795_PD_CA57_CPU3>;
                        next-level-cache = <&L2_CA57>;
                        enable-method = "psci";
+                       operating-points-v2 = <&cluster0_opp_tb0>;
+               };
+       };
+
+       cluster0_opp_tb0: opp_table0 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp@500000000 {
+                       opp-hz = /bits/ 64 <500000000>;
+                       opp-microvolt = <820000>;
+                       clock-latency-ns = <300000>;

arch/arm64/boot/dts/renesas/r8a7795.dtsi line 96

Quoted 10 lines
arch/arm64/boot/dts/renesas/r8a7795.dtsi +10 -0
+               };
+               opp@1000000000 {
+                       opp-hz = /bits/ 64 <1000000000>;
+                       opp-microvolt = <820000>;
+                       clock-latency-ns = <300000>;
+               };
+               opp@1500000000 {
+                       opp-hz = /bits/ 64 <1500000000>;
+                       opp-microvolt = <820000>;
+                       clock-latency-ns = <300000>;

With W=1:

Warning (unit_address_vs_reg): Node /opp_table0/opp@500000000 has a unit name, but no reg property
Warning (unit_address_vs_reg): Node /opp_table0/opp@1000000000 has a unit name, but no reg property
Warning (unit_address_vs_reg): Node /opp_table0/opp@1500000000 has a unit name, but no reg property

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

Reviewed-by on v1 2/4
#23 lore raw

Re: [RFC 2/4] clk: renesas: r8a7795: Add Z clock

In reply to Khiem Nguyen
Quoted 1 line · Khiem Nguyen

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#24 lore raw
In reply to Geert Uytterhoeven

Hi Geert,

Quoted 10 lines · Geert Uytterhoeven

Hi Mike, Stephen,

This patch series adds initial support for the Clock Pulse Generator and Module Standby and Software Reset modules on the Renesas R-Car M3-W SoC:
- Basic core clocks,
- SCIF2 (console) module clock,
- INTC-AP (GIC) module clock (disabled pending CLK_ENABLE_HAND_OFF).

Support for more core and module clocks will be added incrementally.

I am wondering about the status of this patchset vis a vis mainline.

I would like to queue up "[PATCH v3 0/3] arm64: Add Renesas R8A7796 SoC support" for v4.8 but I'd prefer to do so only if there is a good chance that this patch-set, which is provides run-time dependency, will also be in v4.8.

Thanks!

#25 lore raw

Hi Simon,

Quoted 8 lines · Simon Horman
Quoted 7 lines · Geert Uytterhoeven

This patch series adds initial support for the Clock Pulse Generator and Module Standby and Software Reset modules on the Renesas R-Car M3-W SoC:
- Basic core clocks,
- SCIF2 (console) module clock,
- INTC-AP (GIC) module clock (disabled pending CLK_ENABLE_HAND_OFF).

Quoted 8 lines
Quoted 1 line

Support for more core and module clocks will be added incrementally.

I am wondering about the status of this patchset vis a vis mainline.

I would like to queue up "[PATCH v3 0/3] arm64: Add Renesas R8A7796 SoC support" for v4.8 but I'd prefer to do so only if there is a good chance that this patch-set, which is provides run-time dependency, will also be in v4.8.

I plan to queue it in clk-renesas-for-v4.8 after the closing of the v4.7 merge window.

BTW, as there were no comments on the code, but people are obviously using it, and building on top of it, it would be good to receive some {Acked,Tested,Reviewed}-by tags.

Thanks!

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

Tested-by
#26 lore raw
Quoted 20 lines · Geert Uytterhoeven

Hi Simon,

Quoted 8 lines · Simon Horman
Quoted 7 lines · Geert Uytterhoeven

This patch series adds initial support for the Clock Pulse Generator and Module Standby and Software Reset modules on the Renesas R-Car M3-W SoC:
- Basic core clocks,
- SCIF2 (console) module clock,
- INTC-AP (GIC) module clock (disabled pending CLK_ENABLE_HAND_OFF).

Quoted 8 lines
Quoted 1 line

Support for more core and module clocks will be added incrementally.

I am wondering about the status of this patchset vis a vis mainline.

I would like to queue up "[PATCH v3 0/3] arm64: Add Renesas R8A7796 SoC support" for v4.8 but I'd prefer to do so only if there is a good chance that this patch-set, which is provides run-time dependency, will also be in v4.8.

Quoted 6 lines

I plan to queue it in clk-renesas-for-v4.8 after the closing of the v4.7 merge window.

BTW, as there were no comments on the code, but people are obviously using it, and building on top of it, it would be good to receive some {Acked,Tested,Reviewed}-by tags.

Sorry, I meant to do that a long time ago.