* [PATCH 00/16] treewide: Initial support for R-Car S4-8
@ 2021-11-16 7:41 Yoshihiro Shimoda
2021-11-16 7:41 ` [PATCH 01/16] dt-bindings: arm: renesas: Document R-Car S4-8 SoC DT bindings Yoshihiro Shimoda
` (15 more replies)
0 siblings, 16 replies; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
This patch series adds initial support for the Renesas R-Car S4-8
(r8a779f0) SoC.
Yoshihiro Shimoda (16):
dt-bindings: arm: renesas: Document R-Car S4-8 SoC DT bindings
dt-bindings: arm: renesas: Document Renesas Spider boards
dt-bindings: reset: renesas,rst: Document r8a779f0 reset module
dt-bindings: power: renesas,rcar-sysc: Document r8a779f0 SYSC bindings
dt-bindings: power: Add r8a779f0 SYSC power domain definitions
dt-bindings: clock: renesas,cpg-mssr: Document r8a779f0
dt-bindings: clock: Add r8a779f0 CPG Core Clock Definitions
dt-bindings: serial: renesas,scif: Document r8a779f0 bindings
soc: renesas: Identify R-Car S4-8
soc: renesas: r8a779f0-sysc: Add r8a779f0 support
soc: renesas: rcar-rst: Add support for R-Car S4-8
clk: renesas: cpg-mssr: Add support for R-Car S4-8
tty: serial: sh-sci: Add support for R-Car Gen4
arm64: dts: renesas: Add Renesas R8A779F0 SoC support
arm64: dts: renesas: Add Renesas Spider boards support
arm64: defconfig: Enable R-Car S4-8
.../devicetree/bindings/arm/renesas.yaml | 12 +
.../bindings/clock/renesas,cpg-mssr.yaml | 1 +
.../bindings/power/renesas,rcar-sysc.yaml | 1 +
.../bindings/reset/renesas,rst.yaml | 1 +
.../bindings/serial/renesas,scif.yaml | 6 +
arch/arm64/boot/dts/renesas/Makefile | 2 +
.../boot/dts/renesas/r8a779f0-spider-cpu.dtsi | 36 ++
.../boot/dts/renesas/r8a779f0-spider.dts | 22 +
arch/arm64/boot/dts/renesas/r8a779f0.dtsi | 121 ++++++
arch/arm64/configs/defconfig | 1 +
drivers/clk/renesas/Kconfig | 10 +
drivers/clk/renesas/Makefile | 2 +
drivers/clk/renesas/r8a779a0-cpg-mssr.c | 2 +-
drivers/clk/renesas/r8a779f0-cpg-mssr.c | 188 +++++++++
drivers/clk/renesas/rcar-gen4-cpg.c | 141 +++++++
drivers/clk/renesas/rcar-gen4-cpg.h | 76 ++++
drivers/clk/renesas/renesas-cpg-mssr.c | 42 +-
drivers/clk/renesas/renesas-cpg-mssr.h | 3 +-
drivers/soc/renesas/Kconfig | 10 +
drivers/soc/renesas/Makefile | 3 +-
drivers/soc/renesas/r8a779a0-sysc.c | 380 +-----------------
drivers/soc/renesas/r8a779f0-sysc.c | 47 +++
drivers/soc/renesas/rcar-gen4-sysc.c | 376 +++++++++++++++++
drivers/soc/renesas/rcar-gen4-sysc.h | 43 ++
drivers/soc/renesas/rcar-rst.c | 14 +-
drivers/soc/renesas/renesas-soc.c | 13 +
drivers/tty/serial/sh-sci.c | 3 +
include/dt-bindings/clock/r8a779f0-cpg-mssr.h | 65 +++
include/dt-bindings/power/r8a779f0-sysc.h | 30 ++
29 files changed, 1251 insertions(+), 400 deletions(-)
create mode 100644 arch/arm64/boot/dts/renesas/r8a779f0-spider-cpu.dtsi
create mode 100644 arch/arm64/boot/dts/renesas/r8a779f0-spider.dts
create mode 100644 arch/arm64/boot/dts/renesas/r8a779f0.dtsi
create mode 100644 drivers/clk/renesas/r8a779f0-cpg-mssr.c
create mode 100644 drivers/clk/renesas/rcar-gen4-cpg.c
create mode 100644 drivers/clk/renesas/rcar-gen4-cpg.h
create mode 100644 drivers/soc/renesas/r8a779f0-sysc.c
create mode 100644 drivers/soc/renesas/rcar-gen4-sysc.c
create mode 100644 drivers/soc/renesas/rcar-gen4-sysc.h
create mode 100644 include/dt-bindings/clock/r8a779f0-cpg-mssr.h
create mode 100644 include/dt-bindings/power/r8a779f0-sysc.h
--
2.25.1
^ permalink raw reply [flat|nested] 47+ messages in thread
* [PATCH 01/16] dt-bindings: arm: renesas: Document R-Car S4-8 SoC DT bindings
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-18 17:50 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 02/16] dt-bindings: arm: renesas: Document Renesas Spider boards Yoshihiro Shimoda
` (14 subsequent siblings)
15 siblings, 1 reply; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
Add device tree bindings documentation for Renesas R-Car S4-8
(r8a779f0).
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
Documentation/devicetree/bindings/arm/renesas.yaml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/renesas.yaml b/Documentation/devicetree/bindings/arm/renesas.yaml
index 517206507801..36197f53b310 100644
--- a/Documentation/devicetree/bindings/arm/renesas.yaml
+++ b/Documentation/devicetree/bindings/arm/renesas.yaml
@@ -315,6 +315,10 @@ properties:
- const: renesas,falcon-cpu
- const: renesas,r8a779a0
+ - description: R-Car S4-8 (R8A779F0)
+ items:
+ - const: renesas,r8a779f0
+
- description: R-Car H3e (R8A779M0)
items:
- enum:
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 02/16] dt-bindings: arm: renesas: Document Renesas Spider boards
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
2021-11-16 7:41 ` [PATCH 01/16] dt-bindings: arm: renesas: Document R-Car S4-8 SoC DT bindings Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-16 14:02 ` Rob Herring
2021-11-18 17:53 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 03/16] dt-bindings: reset: renesas,rst: Document r8a779f0 reset module Yoshihiro Shimoda
` (13 subsequent siblings)
15 siblings, 2 replies; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
Add device tree bindings documentation for Renesas R-Car S4-8
Spider CPU and BreakOut boards.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
Documentation/devicetree/bindings/arm/renesas.yaml | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/renesas.yaml b/Documentation/devicetree/bindings/arm/renesas.yaml
index 36197f53b310..41f3de8ddc76 100644
--- a/Documentation/devicetree/bindings/arm/renesas.yaml
+++ b/Documentation/devicetree/bindings/arm/renesas.yaml
@@ -317,6 +317,14 @@ properties:
- description: R-Car S4-8 (R8A779F0)
items:
+ - enum:
+ - renesas,spider-cpu # Spider CPU board (RTP8A779FASKB0SC2S)
+ - const: renesas,r8a779f0
+
+ items:
+ - enum:
+ - renesas,spider-breakout # Spider BreakOut board (RTP8A779F0ASKB0SB0S)
+ - const: renesas,spider-cpu
- const: renesas,r8a779f0
- description: R-Car H3e (R8A779M0)
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 03/16] dt-bindings: reset: renesas,rst: Document r8a779f0 reset module
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
2021-11-16 7:41 ` [PATCH 01/16] dt-bindings: arm: renesas: Document R-Car S4-8 SoC DT bindings Yoshihiro Shimoda
2021-11-16 7:41 ` [PATCH 02/16] dt-bindings: arm: renesas: Document Renesas Spider boards Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-18 18:19 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 04/16] dt-bindings: power: renesas,rcar-sysc: Document r8a779f0 SYSC bindings Yoshihiro Shimoda
` (12 subsequent siblings)
15 siblings, 1 reply; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
Document bindings for the R-Car S4-8 (R8A779F0) reset module.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
Documentation/devicetree/bindings/reset/renesas,rst.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/reset/renesas,rst.yaml b/Documentation/devicetree/bindings/reset/renesas,rst.yaml
index 620cd0538bbe..bbe313bf1796 100644
--- a/Documentation/devicetree/bindings/reset/renesas,rst.yaml
+++ b/Documentation/devicetree/bindings/reset/renesas,rst.yaml
@@ -48,6 +48,7 @@ properties:
- renesas,r8a77990-rst # R-Car E3
- renesas,r8a77995-rst # R-Car D3
- renesas,r8a779a0-rst # R-Car V3U
+ - renesas,r8a779f0-rst # R-Car S4-8
reg:
maxItems: 1
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 04/16] dt-bindings: power: renesas,rcar-sysc: Document r8a779f0 SYSC bindings
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
` (2 preceding siblings ...)
2021-11-16 7:41 ` [PATCH 03/16] dt-bindings: reset: renesas,rst: Document r8a779f0 reset module Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-18 18:38 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 05/16] dt-bindings: power: Add r8a779f0 SYSC power domain definitions Yoshihiro Shimoda
` (11 subsequent siblings)
15 siblings, 1 reply; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
Document bindings for the R-Car S4-8 (aka R8A779F0) SYSC block.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
Documentation/devicetree/bindings/power/renesas,rcar-sysc.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/power/renesas,rcar-sysc.yaml b/Documentation/devicetree/bindings/power/renesas,rcar-sysc.yaml
index 99e8042ac111..62a49ca319ec 100644
--- a/Documentation/devicetree/bindings/power/renesas,rcar-sysc.yaml
+++ b/Documentation/devicetree/bindings/power/renesas,rcar-sysc.yaml
@@ -41,6 +41,7 @@ properties:
- renesas,r8a77990-sysc # R-Car E3
- renesas,r8a77995-sysc # R-Car D3
- renesas,r8a779a0-sysc # R-Car V3U
+ - renesas,r8a779f0-sysc # R-Car S4-8
reg:
maxItems: 1
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 05/16] dt-bindings: power: Add r8a779f0 SYSC power domain definitions
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
` (3 preceding siblings ...)
2021-11-16 7:41 ` [PATCH 04/16] dt-bindings: power: renesas,rcar-sysc: Document r8a779f0 SYSC bindings Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-18 18:42 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 06/16] dt-bindings: clock: renesas,cpg-mssr: Document r8a779f0 Yoshihiro Shimoda
` (10 subsequent siblings)
15 siblings, 1 reply; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
Add power domain indices for R-Car S4-8 (r8a779f0).
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
include/dt-bindings/power/r8a779f0-sysc.h | 30 +++++++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 include/dt-bindings/power/r8a779f0-sysc.h
diff --git a/include/dt-bindings/power/r8a779f0-sysc.h b/include/dt-bindings/power/r8a779f0-sysc.h
new file mode 100644
index 000000000000..97e6ed5c16d5
--- /dev/null
+++ b/include/dt-bindings/power/r8a779f0-sysc.h
@@ -0,0 +1,30 @@
+/* SPDX-License-Identifier: (GPL-2.0 or MIT) */
+/*
+ * Copyright (C) 2021 Renesas Electronics Corp.
+ */
+#ifndef __DT_BINDINGS_POWER_R8A779F0_SYSC_H__
+#define __DT_BINDINGS_POWER_R8A779F0_SYSC_H__
+
+/*
+ * These power domain indices match the Power Domain Register Numbers (PDR)
+ */
+
+#define R8A779F0_PD_A1E0D0C0 0
+#define R8A779F0_PD_A1E0D0C1 1
+#define R8A779F0_PD_A1E0D1C0 2
+#define R8A779F0_PD_A1E0D1C1 3
+#define R8A779F0_PD_A1E1D0C0 4
+#define R8A779F0_PD_A1E1D0C1 5
+#define R8A779F0_PD_A1E1D1C0 6
+#define R8A779F0_PD_A1E1D1C1 7
+#define R8A779F0_PD_A2E0D0 16
+#define R8A779F0_PD_A2E0D1 17
+#define R8A779F0_PD_A2E1D0 18
+#define R8A779F0_PD_A2E1D1 19
+#define R8A779F0_PD_A3E0 20
+#define R8A779F0_PD_A3E1 21
+
+/* Always-on power area */
+#define R8A779F0_PD_ALWAYS_ON 22
+
+#endif /* __DT_BINDINGS_POWER_R8A779A0_SYSC_H__*/
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 06/16] dt-bindings: clock: renesas,cpg-mssr: Document r8a779f0
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
` (4 preceding siblings ...)
2021-11-16 7:41 ` [PATCH 05/16] dt-bindings: power: Add r8a779f0 SYSC power domain definitions Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-18 18:43 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 07/16] dt-bindings: clock: Add r8a779f0 CPG Core Clock Definitions Yoshihiro Shimoda
` (9 subsequent siblings)
15 siblings, 1 reply; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
Add binding documentation for the R-Car S4-8 (R8A779F0) Clock Pulse
Generator.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
Documentation/devicetree/bindings/clock/renesas,cpg-mssr.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/clock/renesas,cpg-mssr.yaml b/Documentation/devicetree/bindings/clock/renesas,cpg-mssr.yaml
index 9b414fbde6d7..e0b86214f0f5 100644
--- a/Documentation/devicetree/bindings/clock/renesas,cpg-mssr.yaml
+++ b/Documentation/devicetree/bindings/clock/renesas,cpg-mssr.yaml
@@ -48,6 +48,7 @@ properties:
- renesas,r8a77990-cpg-mssr # R-Car E3
- renesas,r8a77995-cpg-mssr # R-Car D3
- renesas,r8a779a0-cpg-mssr # R-Car V3U
+ - renesas,r8a779f0-cpg-mssr # R-Car S4-8
reg:
maxItems: 1
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 07/16] dt-bindings: clock: Add r8a779f0 CPG Core Clock Definitions
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
` (5 preceding siblings ...)
2021-11-16 7:41 ` [PATCH 06/16] dt-bindings: clock: renesas,cpg-mssr: Document r8a779f0 Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-18 18:53 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 08/16] dt-bindings: serial: renesas,scif: Document r8a779f0 bindings Yoshihiro Shimoda
` (8 subsequent siblings)
15 siblings, 1 reply; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
Add all Clock Pulse Generator Core Clock Outputs for the Renesas
R-Car S4-8 (R8A779F0) SoC.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
include/dt-bindings/clock/r8a779f0-cpg-mssr.h | 65 +++++++++++++++++++
1 file changed, 65 insertions(+)
create mode 100644 include/dt-bindings/clock/r8a779f0-cpg-mssr.h
diff --git a/include/dt-bindings/clock/r8a779f0-cpg-mssr.h b/include/dt-bindings/clock/r8a779f0-cpg-mssr.h
new file mode 100644
index 000000000000..cb0d4593a7bd
--- /dev/null
+++ b/include/dt-bindings/clock/r8a779f0-cpg-mssr.h
@@ -0,0 +1,65 @@
+/* SPDX-License-Identifier: (GPL-2.0 or MIT) */
+/*
+ * Copyright (C) 2021 Renesas Electronics Corp.
+ */
+#ifndef __DT_BINDINGS_CLOCK_R8A779F0_CPG_MSSR_H__
+#define __DT_BINDINGS_CLOCK_R8A779F0_CPG_MSSR_H__
+
+#include <dt-bindings/clock/renesas-cpg-mssr.h>
+
+/* r8a779f0 CPG Core Clocks */
+
+#define R8A779F0_CLK_ZX 0
+#define R8A779F0_CLK_ZS 1
+#define R8A779F0_CLK_ZT 2
+#define R8A779F0_CLK_ZTR 3
+#define R8A779F0_CLK_S0D2 4
+#define R8A779F0_CLK_S0D3 5
+#define R8A779F0_CLK_S0D4 6
+#define R8A779F0_CLK_S0D2_MM 7
+#define R8A779F0_CLK_S0D3_MM 8
+#define R8A779F0_CLK_S0D4_MM 9
+#define R8A779F0_CLK_S0D2_RT 10
+#define R8A779F0_CLK_S0D3_RT 11
+#define R8A779F0_CLK_S0D4_RT 12
+#define R8A779F0_CLK_S0D6_RT 13
+#define R8A779F0_CLK_S0D3_PER 14
+#define R8A779F0_CLK_S0D6_PER 15
+#define R8A779F0_CLK_S0D12_PER 16
+#define R8A779F0_CLK_S0D24_PER 17
+#define R8A779F0_CLK_S0D2_HSC 18
+#define R8A779F0_CLK_S0D3_HSC 19
+#define R8A779F0_CLK_S0D4_HSC 20
+#define R8A779F0_CLK_S0D6_HSC 21
+#define R8A779F0_CLK_S0D12_HSC 22
+#define R8A779F0_CLK_S0D2_CC 23
+#define R8A779F0_CLK_CL 24
+#define R8A779F0_CLK_CL16M 25
+#define R8A779F0_CLK_CL16M_MM 26
+#define R8A779F0_CLK_CL16M_RT 27
+#define R8A779F0_CLK_CL16M_PER 28
+#define R8A779F0_CLK_CL16M_HSC 29
+#define R8A779F0_CLK_Z0 30
+#define R8A779F0_CLK_Z1 31
+#define R8A779F0_CLK_ZB3 32
+#define R8A779F0_CLK_ZB3D2 33
+#define R8A779F0_CLK_ZB3D4 34
+#define R8A779F0_CLK_SDSRC 35
+#define R8A779F0_CLK_SD0H 36
+#define R8A779F0_CLK_SD0 37
+#define R8A779F0_CLK_RPC 38
+#define R8A779F0_CLK_RPCD2 39
+#define R8A779F0_CLK_MSO 40
+#define R8A779F0_CLK_SASYNCRT 41
+#define R8A779F0_CLK_SASYNCPERD1 42
+#define R8A779F0_CLK_SASYNCPERD2 43
+#define R8A779F0_CLK_SASYNCPERD4 44
+#define R8A779F0_CLK_DBGSOC_HSC 45
+#define R8A779F0_CLK_RSW2 46
+#define R8A779F0_CLK_OSC 47
+#define R8A779F0_CLK_ZR 48
+#define R8A779F0_CLK_CPEX 49
+#define R8A779F0_CLK_CBFUSA 50
+#define R8A779F0_CLK_R 51
+
+#endif /* __DT_BINDINGS_CLOCK_R8A779F0_CPG_MSSR_H__ */
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 08/16] dt-bindings: serial: renesas,scif: Document r8a779f0 bindings
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
` (6 preceding siblings ...)
2021-11-16 7:41 ` [PATCH 07/16] dt-bindings: clock: Add r8a779f0 CPG Core Clock Definitions Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-18 18:56 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 09/16] soc: renesas: Identify R-Car S4-8 Yoshihiro Shimoda
` (7 subsequent siblings)
15 siblings, 1 reply; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
R-Car S4-8 (R8A779F0) SoC has the R-Car Gen4 compatible SCIF ports,
so document the SoC specific bindings.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
Documentation/devicetree/bindings/serial/renesas,scif.yaml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/serial/renesas,scif.yaml b/Documentation/devicetree/bindings/serial/renesas,scif.yaml
index 6b8731f7f2fb..14602b720cc0 100644
--- a/Documentation/devicetree/bindings/serial/renesas,scif.yaml
+++ b/Documentation/devicetree/bindings/serial/renesas,scif.yaml
@@ -64,6 +64,12 @@ properties:
- const: renesas,rcar-gen3-scif # R-Car Gen3 and RZ/G2
- const: renesas,scif # generic SCIF compatible UART
+ - items:
+ - enum:
+ - renesas,scif-r8a779f0 # R-Car S4-8
+ - const: renesas,rcar-gen4-scif # R-Car Gen4
+ - const: renesas,scif # generic SCIF compatible UART
+
- items:
- enum:
- renesas,scif-r9a07g044 # RZ/G2{L,LC}
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 09/16] soc: renesas: Identify R-Car S4-8
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
` (7 preceding siblings ...)
2021-11-16 7:41 ` [PATCH 08/16] dt-bindings: serial: renesas,scif: Document r8a779f0 bindings Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-18 19:03 ` Geert Uytterhoeven
2021-11-18 19:04 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 10/16] soc: renesas: r8a779f0-sysc: Add r8a779f0 support Yoshihiro Shimoda
` (6 subsequent siblings)
15 siblings, 2 replies; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
Add support for identifying the R-Car S4-8 (R8A779F0) SoC.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/soc/renesas/Kconfig | 7 +++++++
drivers/soc/renesas/renesas-soc.c | 13 +++++++++++++
2 files changed, 20 insertions(+)
diff --git a/drivers/soc/renesas/Kconfig b/drivers/soc/renesas/Kconfig
index ce16ef5c939c..9915b953e9a0 100644
--- a/drivers/soc/renesas/Kconfig
+++ b/drivers/soc/renesas/Kconfig
@@ -256,6 +256,13 @@ config ARCH_R8A779A0
help
This enables support for the Renesas R-Car V3U SoC.
+config ARCH_R8A779F0
+ bool "ARM64 Platform support for R-Car S4-8"
+ select ARCH_RCAR_GEN3
+ select SYSC_R8A779F0
+ help
+ This enables support for the Renesas R-Car S4-8 SoC.
+
config ARCH_R8A774C0
bool "ARM64 Platform support for RZ/G2E"
select ARCH_RCAR_GEN3
diff --git a/drivers/soc/renesas/renesas-soc.c b/drivers/soc/renesas/renesas-soc.c
index 7961b0be1850..857a42a82747 100644
--- a/drivers/soc/renesas/renesas-soc.c
+++ b/drivers/soc/renesas/renesas-soc.c
@@ -33,6 +33,11 @@ static const struct renesas_family fam_rcar_gen3 __initconst __maybe_unused = {
.reg = 0xfff00044, /* PRR (Product Register) */
};
+static const struct renesas_family fam_rcar_gen4 __initconst __maybe_unused = {
+ .name = "R-Car Gen4",
+ .reg = 0xfff00044, /* PRR (Product Register) */
+};
+
static const struct renesas_family fam_rmobile __initconst __maybe_unused = {
.name = "R-Mobile",
.reg = 0xe600101c, /* CCCR (Common Chip Code Register) */
@@ -214,6 +219,11 @@ static const struct renesas_soc soc_rcar_v3u __initconst __maybe_unused = {
.id = 0x59,
};
+static const struct renesas_soc soc_rcar_s4 __initconst __maybe_unused = {
+ .family = &fam_rcar_gen4,
+ .id = 0x5a,
+};
+
static const struct renesas_soc soc_shmobile_ag5 __initconst __maybe_unused = {
.family = &fam_shmobile,
.id = 0x37,
@@ -319,6 +329,9 @@ static const struct of_device_id renesas_socs[] __initconst = {
#ifdef CONFIG_ARCH_R8A779A0
{ .compatible = "renesas,r8a779a0", .data = &soc_rcar_v3u },
#endif
+#ifdef CONFIG_ARCH_R8A779F0
+ { .compatible = "renesas,r8a779f0", .data = &soc_rcar_s4 },
+#endif
#if defined(CONFIG_ARCH_R9A07G044)
{ .compatible = "renesas,r9a07g044", .data = &soc_rz_g2l },
#endif
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 10/16] soc: renesas: r8a779f0-sysc: Add r8a779f0 support
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
` (8 preceding siblings ...)
2021-11-16 7:41 ` [PATCH 09/16] soc: renesas: Identify R-Car S4-8 Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-23 16:18 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 11/16] soc: renesas: rcar-rst: Add support for R-Car S4-8 Yoshihiro Shimoda
` (5 subsequent siblings)
15 siblings, 1 reply; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
Add support for R-Car S4-8 (R8A779F0) SoC power areas and register
access. This register specification is similar with R-Car V3U.
So, introduces rcar-gen4-sysc.c for both V3U and S4-8.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/soc/renesas/Kconfig | 3 +
drivers/soc/renesas/Makefile | 3 +-
drivers/soc/renesas/r8a779a0-sysc.c | 380 +--------------------------
drivers/soc/renesas/r8a779f0-sysc.c | 47 ++++
drivers/soc/renesas/rcar-gen4-sysc.c | 376 ++++++++++++++++++++++++++
drivers/soc/renesas/rcar-gen4-sysc.h | 43 +++
6 files changed, 474 insertions(+), 378 deletions(-)
create mode 100644 drivers/soc/renesas/r8a779f0-sysc.c
create mode 100644 drivers/soc/renesas/rcar-gen4-sysc.c
create mode 100644 drivers/soc/renesas/rcar-gen4-sysc.h
diff --git a/drivers/soc/renesas/Kconfig b/drivers/soc/renesas/Kconfig
index 9915b953e9a0..b5919ea08a84 100644
--- a/drivers/soc/renesas/Kconfig
+++ b/drivers/soc/renesas/Kconfig
@@ -359,6 +359,9 @@ config SYSC_R8A77970
config SYSC_R8A779A0
bool "System Controller support for R-Car V3U" if COMPILE_TEST
+config SYSC_R8A779F0
+ bool "System Controller support for R-Car S4-8" if COMPILE_TEST
+
config SYSC_RMOBILE
bool "System Controller support for R-Mobile" if COMPILE_TEST
diff --git a/drivers/soc/renesas/Makefile b/drivers/soc/renesas/Makefile
index 9b29bed2a597..f6c5f8c3818c 100644
--- a/drivers/soc/renesas/Makefile
+++ b/drivers/soc/renesas/Makefile
@@ -25,11 +25,12 @@ obj-$(CONFIG_SYSC_R8A77980) += r8a77980-sysc.o
obj-$(CONFIG_SYSC_R8A77990) += r8a77990-sysc.o
obj-$(CONFIG_SYSC_R8A77995) += r8a77995-sysc.o
obj-$(CONFIG_SYSC_R8A779A0) += r8a779a0-sysc.o
+obj-$(CONFIG_SYSC_R8A779F0) += r8a779f0-sysc.o
ifdef CONFIG_SMP
obj-$(CONFIG_ARCH_R9A06G032) += r9a06g032-smp.o
endif
# Family
obj-$(CONFIG_RST_RCAR) += rcar-rst.o
-obj-$(CONFIG_SYSC_RCAR) += rcar-sysc.o
+obj-$(CONFIG_SYSC_RCAR) += rcar-sysc.o rcar-gen4-sysc.o
obj-$(CONFIG_SYSC_RMOBILE) += rmobile-sysc.o
diff --git a/drivers/soc/renesas/r8a779a0-sysc.c b/drivers/soc/renesas/r8a779a0-sysc.c
index 7410b9fa9846..fdfc857df334 100644
--- a/drivers/soc/renesas/r8a779a0-sysc.c
+++ b/drivers/soc/renesas/r8a779a0-sysc.c
@@ -21,35 +21,9 @@
#include <dt-bindings/power/r8a779a0-sysc.h>
-/*
- * Power Domain flags
- */
-#define PD_CPU BIT(0) /* Area contains main CPU core */
-#define PD_SCU BIT(1) /* Area contains SCU and L2 cache */
-#define PD_NO_CR BIT(2) /* Area lacks PWR{ON,OFF}CR registers */
-
-#define PD_CPU_NOCR PD_CPU | PD_NO_CR /* CPU area lacks CR */
-#define PD_ALWAYS_ON PD_NO_CR /* Always-on area */
-
-/*
- * Description of a Power Area
- */
-struct r8a779a0_sysc_area {
- const char *name;
- u8 pdr; /* PDRn */
- int parent; /* -1 if none */
- unsigned int flags; /* See PD_* */
-};
-
-/*
- * SoC-specific Power Area Description
- */
-struct r8a779a0_sysc_info {
- const struct r8a779a0_sysc_area *areas;
- unsigned int num_areas;
-};
+#include "rcar-gen4-sysc.h"
-static struct r8a779a0_sysc_area r8a779a0_areas[] __initdata = {
+static struct rcar_gen4_sysc_area r8a779a0_areas[] __initdata = {
{ "always-on", R8A779A0_PD_ALWAYS_ON, -1, PD_ALWAYS_ON },
{ "a3e0", R8A779A0_PD_A3E0, R8A779A0_PD_ALWAYS_ON, PD_SCU },
{ "a3e1", R8A779A0_PD_A3E1, R8A779A0_PD_ALWAYS_ON, PD_SCU },
@@ -96,355 +70,7 @@ static struct r8a779a0_sysc_area r8a779a0_areas[] __initdata = {
{ "a1dsp1", R8A779A0_PD_A1DSP1, R8A779A0_PD_A2CN1 },
};
-static const struct r8a779a0_sysc_info r8a779a0_sysc_info __initconst = {
+const struct rcar_gen4_sysc_info r8a779a0_sysc_info __initconst = {
.areas = r8a779a0_areas,
.num_areas = ARRAY_SIZE(r8a779a0_areas),
};
-
-/* SYSC Common */
-#define SYSCSR 0x000 /* SYSC Status Register */
-#define SYSCPONSR(x) (0x800 + ((x) * 0x4)) /* Power-ON Status Register 0 */
-#define SYSCPOFFSR(x) (0x808 + ((x) * 0x4)) /* Power-OFF Status Register */
-#define SYSCISCR(x) (0x810 + ((x) * 0x4)) /* Interrupt Status/Clear Register */
-#define SYSCIER(x) (0x820 + ((x) * 0x4)) /* Interrupt Enable Register */
-#define SYSCIMR(x) (0x830 + ((x) * 0x4)) /* Interrupt Mask Register */
-
-/* Power Domain Registers */
-#define PDRSR(n) (0x1000 + ((n) * 0x40))
-#define PDRONCR(n) (0x1004 + ((n) * 0x40))
-#define PDROFFCR(n) (0x1008 + ((n) * 0x40))
-#define PDRESR(n) (0x100C + ((n) * 0x40))
-
-/* PWRON/PWROFF */
-#define PWRON_PWROFF BIT(0) /* Power-ON/OFF request */
-
-/* PDRESR */
-#define PDRESR_ERR BIT(0)
-
-/* PDRSR */
-#define PDRSR_OFF BIT(0) /* Power-OFF state */
-#define PDRSR_ON BIT(4) /* Power-ON state */
-#define PDRSR_OFF_STATE BIT(8) /* Processing Power-OFF sequence */
-#define PDRSR_ON_STATE BIT(12) /* Processing Power-ON sequence */
-
-#define SYSCSR_BUSY GENMASK(1, 0) /* All bit sets is not busy */
-
-#define SYSCSR_TIMEOUT 10000
-#define SYSCSR_DELAY_US 10
-
-#define PDRESR_RETRIES 1000
-#define PDRESR_DELAY_US 10
-
-#define SYSCISR_TIMEOUT 10000
-#define SYSCISR_DELAY_US 10
-
-#define NUM_DOMAINS_EACH_REG BITS_PER_TYPE(u32)
-
-static void __iomem *r8a779a0_sysc_base;
-static DEFINE_SPINLOCK(r8a779a0_sysc_lock); /* SMP CPUs + I/O devices */
-
-static int r8a779a0_sysc_pwr_on_off(u8 pdr, bool on)
-{
- unsigned int reg_offs;
- u32 val;
- int ret;
-
- if (on)
- reg_offs = PDRONCR(pdr);
- else
- reg_offs = PDROFFCR(pdr);
-
- /* Wait until SYSC is ready to accept a power request */
- ret = readl_poll_timeout_atomic(r8a779a0_sysc_base + SYSCSR, val,
- (val & SYSCSR_BUSY) == SYSCSR_BUSY,
- SYSCSR_DELAY_US, SYSCSR_TIMEOUT);
- if (ret < 0)
- return -EAGAIN;
-
- /* Submit power shutoff or power resume request */
- iowrite32(PWRON_PWROFF, r8a779a0_sysc_base + reg_offs);
-
- return 0;
-}
-
-static int clear_irq_flags(unsigned int reg_idx, unsigned int isr_mask)
-{
- u32 val;
- int ret;
-
- iowrite32(isr_mask, r8a779a0_sysc_base + SYSCISCR(reg_idx));
-
- ret = readl_poll_timeout_atomic(r8a779a0_sysc_base + SYSCISCR(reg_idx),
- val, !(val & isr_mask),
- SYSCISR_DELAY_US, SYSCISR_TIMEOUT);
- if (ret < 0) {
- pr_err("\n %s : Can not clear IRQ flags in SYSCISCR", __func__);
- return -EIO;
- }
-
- return 0;
-}
-
-static int r8a779a0_sysc_power(u8 pdr, bool on)
-{
- unsigned int isr_mask;
- unsigned int reg_idx, bit_idx;
- unsigned int status;
- unsigned long flags;
- int ret = 0;
- u32 val;
- int k;
-
- spin_lock_irqsave(&r8a779a0_sysc_lock, flags);
-
- reg_idx = pdr / NUM_DOMAINS_EACH_REG;
- bit_idx = pdr % NUM_DOMAINS_EACH_REG;
-
- isr_mask = BIT(bit_idx);
-
- /*
- * The interrupt source needs to be enabled, but masked, to prevent the
- * CPU from receiving it.
- */
- iowrite32(ioread32(r8a779a0_sysc_base + SYSCIER(reg_idx)) | isr_mask,
- r8a779a0_sysc_base + SYSCIER(reg_idx));
- iowrite32(ioread32(r8a779a0_sysc_base + SYSCIMR(reg_idx)) | isr_mask,
- r8a779a0_sysc_base + SYSCIMR(reg_idx));
-
- ret = clear_irq_flags(reg_idx, isr_mask);
- if (ret)
- goto out;
-
- /* Submit power shutoff or resume request until it was accepted */
- for (k = 0; k < PDRESR_RETRIES; k++) {
- ret = r8a779a0_sysc_pwr_on_off(pdr, on);
- if (ret)
- goto out;
-
- status = ioread32(r8a779a0_sysc_base + PDRESR(pdr));
- if (!(status & PDRESR_ERR))
- break;
-
- udelay(PDRESR_DELAY_US);
- }
-
- if (k == PDRESR_RETRIES) {
- ret = -EIO;
- goto out;
- }
-
- /* Wait until the power shutoff or resume request has completed * */
- ret = readl_poll_timeout_atomic(r8a779a0_sysc_base + SYSCISCR(reg_idx),
- val, (val & isr_mask),
- SYSCISR_DELAY_US, SYSCISR_TIMEOUT);
- if (ret < 0) {
- ret = -EIO;
- goto out;
- }
-
- /* Clear interrupt flags */
- ret = clear_irq_flags(reg_idx, isr_mask);
- if (ret)
- goto out;
-
- out:
- spin_unlock_irqrestore(&r8a779a0_sysc_lock, flags);
-
- pr_debug("sysc power %s domain %d: %08x -> %d\n", on ? "on" : "off",
- pdr, ioread32(r8a779a0_sysc_base + SYSCISCR(reg_idx)), ret);
- return ret;
-}
-
-static bool r8a779a0_sysc_power_is_off(u8 pdr)
-{
- unsigned int st;
-
- st = ioread32(r8a779a0_sysc_base + PDRSR(pdr));
-
- if (st & PDRSR_OFF)
- return true;
-
- return false;
-}
-
-struct r8a779a0_sysc_pd {
- struct generic_pm_domain genpd;
- u8 pdr;
- unsigned int flags;
- char name[];
-};
-
-static inline struct r8a779a0_sysc_pd *to_r8a779a0_pd(struct generic_pm_domain *d)
-{
- return container_of(d, struct r8a779a0_sysc_pd, genpd);
-}
-
-static int r8a779a0_sysc_pd_power_off(struct generic_pm_domain *genpd)
-{
- struct r8a779a0_sysc_pd *pd = to_r8a779a0_pd(genpd);
-
- pr_debug("%s: %s\n", __func__, genpd->name);
- return r8a779a0_sysc_power(pd->pdr, false);
-}
-
-static int r8a779a0_sysc_pd_power_on(struct generic_pm_domain *genpd)
-{
- struct r8a779a0_sysc_pd *pd = to_r8a779a0_pd(genpd);
-
- pr_debug("%s: %s\n", __func__, genpd->name);
- return r8a779a0_sysc_power(pd->pdr, true);
-}
-
-static int __init r8a779a0_sysc_pd_setup(struct r8a779a0_sysc_pd *pd)
-{
- struct generic_pm_domain *genpd = &pd->genpd;
- const char *name = pd->genpd.name;
- int error;
-
- if (pd->flags & PD_CPU) {
- /*
- * This domain contains a CPU core and therefore it should
- * only be turned off if the CPU is not in use.
- */
- pr_debug("PM domain %s contains %s\n", name, "CPU");
- genpd->flags |= GENPD_FLAG_ALWAYS_ON;
- } else if (pd->flags & PD_SCU) {
- /*
- * This domain contains an SCU and cache-controller, and
- * therefore it should only be turned off if the CPU cores are
- * not in use.
- */
- pr_debug("PM domain %s contains %s\n", name, "SCU");
- genpd->flags |= GENPD_FLAG_ALWAYS_ON;
- } else if (pd->flags & PD_NO_CR) {
- /*
- * This domain cannot be turned off.
- */
- genpd->flags |= GENPD_FLAG_ALWAYS_ON;
- }
-
- if (!(pd->flags & (PD_CPU | PD_SCU))) {
- /* Enable Clock Domain for I/O devices */
- genpd->flags |= GENPD_FLAG_PM_CLK | GENPD_FLAG_ACTIVE_WAKEUP;
- genpd->attach_dev = cpg_mssr_attach_dev;
- genpd->detach_dev = cpg_mssr_detach_dev;
- }
-
- genpd->power_off = r8a779a0_sysc_pd_power_off;
- genpd->power_on = r8a779a0_sysc_pd_power_on;
-
- if (pd->flags & (PD_CPU | PD_NO_CR)) {
- /* Skip CPUs (handled by SMP code) and areas without control */
- pr_debug("%s: Not touching %s\n", __func__, genpd->name);
- goto finalize;
- }
-
- if (!r8a779a0_sysc_power_is_off(pd->pdr)) {
- pr_debug("%s: %s is already powered\n", __func__, genpd->name);
- goto finalize;
- }
-
- r8a779a0_sysc_power(pd->pdr, true);
-
-finalize:
- error = pm_genpd_init(genpd, &simple_qos_governor, false);
- if (error)
- pr_err("Failed to init PM domain %s: %d\n", name, error);
-
- return error;
-}
-
-static const struct of_device_id r8a779a0_sysc_matches[] __initconst = {
- { .compatible = "renesas,r8a779a0-sysc", .data = &r8a779a0_sysc_info },
- { /* sentinel */ }
-};
-
-struct r8a779a0_pm_domains {
- struct genpd_onecell_data onecell_data;
- struct generic_pm_domain *domains[R8A779A0_PD_ALWAYS_ON + 1];
-};
-
-static struct genpd_onecell_data *r8a779a0_sysc_onecell_data;
-
-static int __init r8a779a0_sysc_pd_init(void)
-{
- const struct r8a779a0_sysc_info *info;
- const struct of_device_id *match;
- struct r8a779a0_pm_domains *domains;
- struct device_node *np;
- void __iomem *base;
- unsigned int i;
- int error;
-
- np = of_find_matching_node_and_match(NULL, r8a779a0_sysc_matches, &match);
- if (!np)
- return -ENODEV;
-
- info = match->data;
-
- base = of_iomap(np, 0);
- if (!base) {
- pr_warn("%pOF: Cannot map regs\n", np);
- error = -ENOMEM;
- goto out_put;
- }
-
- r8a779a0_sysc_base = base;
-
- domains = kzalloc(sizeof(*domains), GFP_KERNEL);
- if (!domains) {
- error = -ENOMEM;
- goto out_put;
- }
-
- domains->onecell_data.domains = domains->domains;
- domains->onecell_data.num_domains = ARRAY_SIZE(domains->domains);
- r8a779a0_sysc_onecell_data = &domains->onecell_data;
-
- for (i = 0; i < info->num_areas; i++) {
- const struct r8a779a0_sysc_area *area = &info->areas[i];
- struct r8a779a0_sysc_pd *pd;
- size_t n;
-
- if (!area->name) {
- /* Skip NULLified area */
- continue;
- }
-
- n = strlen(area->name) + 1;
- pd = kzalloc(sizeof(*pd) + n, GFP_KERNEL);
- if (!pd) {
- error = -ENOMEM;
- goto out_put;
- }
-
- memcpy(pd->name, area->name, n);
- pd->genpd.name = pd->name;
- pd->pdr = area->pdr;
- pd->flags = area->flags;
-
- error = r8a779a0_sysc_pd_setup(pd);
- if (error)
- goto out_put;
-
- domains->domains[area->pdr] = &pd->genpd;
-
- if (area->parent < 0)
- continue;
-
- error = pm_genpd_add_subdomain(domains->domains[area->parent],
- &pd->genpd);
- if (error) {
- pr_warn("Failed to add PM subdomain %s to parent %u\n",
- area->name, area->parent);
- goto out_put;
- }
- }
-
- error = of_genpd_add_provider_onecell(np, &domains->onecell_data);
-
-out_put:
- of_node_put(np);
- return error;
-}
-early_initcall(r8a779a0_sysc_pd_init);
diff --git a/drivers/soc/renesas/r8a779f0-sysc.c b/drivers/soc/renesas/r8a779f0-sysc.c
new file mode 100644
index 000000000000..5602aa6bd7ed
--- /dev/null
+++ b/drivers/soc/renesas/r8a779f0-sysc.c
@@ -0,0 +1,47 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Renesas R-Car S4-8 System Controller
+ *
+ * Copyright (C) 2021 Renesas Electronics Corp.
+ */
+
+#include <linux/bits.h>
+#include <linux/clk/renesas.h>
+#include <linux/delay.h>
+#include <linux/err.h>
+#include <linux/io.h>
+#include <linux/iopoll.h>
+#include <linux/kernel.h>
+#include <linux/mm.h>
+#include <linux/of_address.h>
+#include <linux/pm_domain.h>
+#include <linux/slab.h>
+#include <linux/spinlock.h>
+#include <linux/types.h>
+
+#include <dt-bindings/power/r8a779f0-sysc.h>
+
+#include "rcar-gen4-sysc.h"
+
+static struct rcar_gen4_sysc_area r8a779f0_areas[] __initdata = {
+ { "always-on", R8A779F0_PD_ALWAYS_ON, -1, PD_ALWAYS_ON },
+ { "a3e0", R8A779F0_PD_A3E0, R8A779F0_PD_ALWAYS_ON, PD_SCU },
+ { "a3e1", R8A779F0_PD_A3E1, R8A779F0_PD_ALWAYS_ON, PD_SCU },
+ { "a2e0d0", R8A779F0_PD_A2E0D0, R8A779F0_PD_A3E0, PD_SCU },
+ { "a2e0d1", R8A779F0_PD_A2E0D1, R8A779F0_PD_A3E0, PD_SCU },
+ { "a2e1d0", R8A779F0_PD_A2E1D0, R8A779F0_PD_A3E1, PD_SCU },
+ { "a2e1d1", R8A779F0_PD_A2E1D1, R8A779F0_PD_A3E1, PD_SCU },
+ { "a1e0d0c0", R8A779F0_PD_A1E0D0C0, R8A779F0_PD_A2E0D0, PD_CPU_NOCR },
+ { "a1e0d0c1", R8A779F0_PD_A1E0D0C1, R8A779F0_PD_A2E0D0, PD_CPU_NOCR },
+ { "a1e0d1c0", R8A779F0_PD_A1E0D1C0, R8A779F0_PD_A2E0D1, PD_CPU_NOCR },
+ { "a1e0d1c1", R8A779F0_PD_A1E0D1C1, R8A779F0_PD_A2E0D1, PD_CPU_NOCR },
+ { "a1e1d0c0", R8A779F0_PD_A1E1D0C0, R8A779F0_PD_A2E1D0, PD_CPU_NOCR },
+ { "a1e1d0c1", R8A779F0_PD_A1E1D0C1, R8A779F0_PD_A2E1D0, PD_CPU_NOCR },
+ { "a1e1d1c0", R8A779F0_PD_A1E1D1C0, R8A779F0_PD_A2E1D1, PD_CPU_NOCR },
+ { "a1e1d1c1", R8A779F0_PD_A1E1D1C1, R8A779F0_PD_A2E1D1, PD_CPU_NOCR },
+};
+
+const struct rcar_gen4_sysc_info r8a779f0_sysc_info __initconst = {
+ .areas = r8a779f0_areas,
+ .num_areas = ARRAY_SIZE(r8a779f0_areas),
+};
diff --git a/drivers/soc/renesas/rcar-gen4-sysc.c b/drivers/soc/renesas/rcar-gen4-sysc.c
new file mode 100644
index 000000000000..831162a57f9a
--- /dev/null
+++ b/drivers/soc/renesas/rcar-gen4-sysc.c
@@ -0,0 +1,376 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * R-Car Gen4 SYSC Power management support
+ *
+ * Copyright (C) 2021 Renesas Electronics Corp.
+ */
+
+#include <linux/bits.h>
+#include <linux/clk/renesas.h>
+#include <linux/delay.h>
+#include <linux/err.h>
+#include <linux/io.h>
+#include <linux/iopoll.h>
+#include <linux/kernel.h>
+#include <linux/mm.h>
+#include <linux/of_address.h>
+#include <linux/pm_domain.h>
+#include <linux/slab.h>
+#include <linux/spinlock.h>
+#include <linux/types.h>
+
+#include "rcar-gen4-sysc.h"
+
+/* SYSC Common */
+#define SYSCSR 0x000 /* SYSC Status Register */
+#define SYSCPONSR(x) (0x800 + ((x) * 0x4)) /* Power-ON Status Register 0 */
+#define SYSCPOFFSR(x) (0x808 + ((x) * 0x4)) /* Power-OFF Status Register */
+#define SYSCISCR(x) (0x810 + ((x) * 0x4)) /* Interrupt Status/Clear Register */
+#define SYSCIER(x) (0x820 + ((x) * 0x4)) /* Interrupt Enable Register */
+#define SYSCIMR(x) (0x830 + ((x) * 0x4)) /* Interrupt Mask Register */
+
+/* Power Domain Registers */
+#define PDRSR(n) (0x1000 + ((n) * 0x40))
+#define PDRONCR(n) (0x1004 + ((n) * 0x40))
+#define PDROFFCR(n) (0x1008 + ((n) * 0x40))
+#define PDRESR(n) (0x100C + ((n) * 0x40))
+
+/* PWRON/PWROFF */
+#define PWRON_PWROFF BIT(0) /* Power-ON/OFF request */
+
+/* PDRESR */
+#define PDRESR_ERR BIT(0)
+
+/* PDRSR */
+#define PDRSR_OFF BIT(0) /* Power-OFF state */
+#define PDRSR_ON BIT(4) /* Power-ON state */
+#define PDRSR_OFF_STATE BIT(8) /* Processing Power-OFF sequence */
+#define PDRSR_ON_STATE BIT(12) /* Processing Power-ON sequence */
+
+#define SYSCSR_BUSY GENMASK(1, 0) /* All bit sets is not busy */
+
+#define SYSCSR_TIMEOUT 10000
+#define SYSCSR_DELAY_US 10
+
+#define PDRESR_RETRIES 1000
+#define PDRESR_DELAY_US 10
+
+#define SYSCISR_TIMEOUT 10000
+#define SYSCISR_DELAY_US 10
+
+#define RCAR_GEN4_PD_ALWAYS_ON 64
+#define NUM_DOMAINS_EACH_REG BITS_PER_TYPE(u32)
+
+static void __iomem *rcar_gen4_sysc_base;
+static DEFINE_SPINLOCK(rcar_gen4_sysc_lock); /* SMP CPUs + I/O devices */
+
+static int rcar_gen4_sysc_pwr_on_off(u8 pdr, bool on)
+{
+ unsigned int reg_offs;
+ u32 val;
+ int ret;
+
+ if (on)
+ reg_offs = PDRONCR(pdr);
+ else
+ reg_offs = PDROFFCR(pdr);
+
+ /* Wait until SYSC is ready to accept a power request */
+ ret = readl_poll_timeout_atomic(rcar_gen4_sysc_base + SYSCSR, val,
+ (val & SYSCSR_BUSY) == SYSCSR_BUSY,
+ SYSCSR_DELAY_US, SYSCSR_TIMEOUT);
+ if (ret < 0)
+ return -EAGAIN;
+
+ /* Submit power shutoff or power resume request */
+ iowrite32(PWRON_PWROFF, rcar_gen4_sysc_base + reg_offs);
+
+ return 0;
+}
+
+static int clear_irq_flags(unsigned int reg_idx, unsigned int isr_mask)
+{
+ u32 val;
+ int ret;
+
+ iowrite32(isr_mask, rcar_gen4_sysc_base + SYSCISCR(reg_idx));
+
+ ret = readl_poll_timeout_atomic(rcar_gen4_sysc_base + SYSCISCR(reg_idx),
+ val, !(val & isr_mask),
+ SYSCISR_DELAY_US, SYSCISR_TIMEOUT);
+ if (ret < 0) {
+ pr_err("\n %s : Can not clear IRQ flags in SYSCISCR", __func__);
+ return -EIO;
+ }
+
+ return 0;
+}
+
+static int rcar_gen4_sysc_power(u8 pdr, bool on)
+{
+ unsigned int isr_mask;
+ unsigned int reg_idx, bit_idx;
+ unsigned int status;
+ unsigned long flags;
+ int ret = 0;
+ u32 val;
+ int k;
+
+ spin_lock_irqsave(&rcar_gen4_sysc_lock, flags);
+
+ reg_idx = pdr / NUM_DOMAINS_EACH_REG;
+ bit_idx = pdr % NUM_DOMAINS_EACH_REG;
+
+ isr_mask = BIT(bit_idx);
+
+ /*
+ * The interrupt source needs to be enabled, but masked, to prevent the
+ * CPU from receiving it.
+ */
+ iowrite32(ioread32(rcar_gen4_sysc_base + SYSCIER(reg_idx)) | isr_mask,
+ rcar_gen4_sysc_base + SYSCIER(reg_idx));
+ iowrite32(ioread32(rcar_gen4_sysc_base + SYSCIMR(reg_idx)) | isr_mask,
+ rcar_gen4_sysc_base + SYSCIMR(reg_idx));
+
+ ret = clear_irq_flags(reg_idx, isr_mask);
+ if (ret)
+ goto out;
+
+ /* Submit power shutoff or resume request until it was accepted */
+ for (k = 0; k < PDRESR_RETRIES; k++) {
+ ret = rcar_gen4_sysc_pwr_on_off(pdr, on);
+ if (ret)
+ goto out;
+
+ status = ioread32(rcar_gen4_sysc_base + PDRESR(pdr));
+ if (!(status & PDRESR_ERR))
+ break;
+
+ udelay(PDRESR_DELAY_US);
+ }
+
+ if (k == PDRESR_RETRIES) {
+ ret = -EIO;
+ goto out;
+ }
+
+ /* Wait until the power shutoff or resume request has completed * */
+ ret = readl_poll_timeout_atomic(rcar_gen4_sysc_base + SYSCISCR(reg_idx),
+ val, (val & isr_mask),
+ SYSCISR_DELAY_US, SYSCISR_TIMEOUT);
+ if (ret < 0) {
+ ret = -EIO;
+ goto out;
+ }
+
+ /* Clear interrupt flags */
+ ret = clear_irq_flags(reg_idx, isr_mask);
+ if (ret)
+ goto out;
+
+ out:
+ spin_unlock_irqrestore(&rcar_gen4_sysc_lock, flags);
+
+ pr_debug("sysc power %s domain %d: %08x -> %d\n", on ? "on" : "off",
+ pdr, ioread32(rcar_gen4_sysc_base + SYSCISCR(reg_idx)), ret);
+ return ret;
+}
+
+static bool rcar_gen4_sysc_power_is_off(u8 pdr)
+{
+ unsigned int st;
+
+ st = ioread32(rcar_gen4_sysc_base + PDRSR(pdr));
+
+ if (st & PDRSR_OFF)
+ return true;
+
+ return false;
+}
+
+struct rcar_gen4_sysc_pd {
+ struct generic_pm_domain genpd;
+ u8 pdr;
+ unsigned int flags;
+ char name[];
+};
+
+static inline struct rcar_gen4_sysc_pd *to_rcar_gen4_pd(struct generic_pm_domain *d)
+{
+ return container_of(d, struct rcar_gen4_sysc_pd, genpd);
+}
+
+static int rcar_gen4_sysc_pd_power_off(struct generic_pm_domain *genpd)
+{
+ struct rcar_gen4_sysc_pd *pd = to_rcar_gen4_pd(genpd);
+
+ pr_debug("%s: %s\n", __func__, genpd->name);
+ return rcar_gen4_sysc_power(pd->pdr, false);
+}
+
+static int rcar_gen4_sysc_pd_power_on(struct generic_pm_domain *genpd)
+{
+ struct rcar_gen4_sysc_pd *pd = to_rcar_gen4_pd(genpd);
+
+ pr_debug("%s: %s\n", __func__, genpd->name);
+ return rcar_gen4_sysc_power(pd->pdr, true);
+}
+
+static int __init rcar_gen4_sysc_pd_setup(struct rcar_gen4_sysc_pd *pd)
+{
+ struct generic_pm_domain *genpd = &pd->genpd;
+ const char *name = pd->genpd.name;
+ int error;
+
+ if (pd->flags & PD_CPU) {
+ /*
+ * This domain contains a CPU core and therefore it should
+ * only be turned off if the CPU is not in use.
+ */
+ pr_debug("PM domain %s contains %s\n", name, "CPU");
+ genpd->flags |= GENPD_FLAG_ALWAYS_ON;
+ } else if (pd->flags & PD_SCU) {
+ /*
+ * This domain contains an SCU and cache-controller, and
+ * therefore it should only be turned off if the CPU cores are
+ * not in use.
+ */
+ pr_debug("PM domain %s contains %s\n", name, "SCU");
+ genpd->flags |= GENPD_FLAG_ALWAYS_ON;
+ } else if (pd->flags & PD_NO_CR) {
+ /*
+ * This domain cannot be turned off.
+ */
+ genpd->flags |= GENPD_FLAG_ALWAYS_ON;
+ }
+
+ if (!(pd->flags & (PD_CPU | PD_SCU))) {
+ /* Enable Clock Domain for I/O devices */
+ genpd->flags |= GENPD_FLAG_PM_CLK | GENPD_FLAG_ACTIVE_WAKEUP;
+ genpd->attach_dev = cpg_mssr_attach_dev;
+ genpd->detach_dev = cpg_mssr_detach_dev;
+ }
+
+ genpd->power_off = rcar_gen4_sysc_pd_power_off;
+ genpd->power_on = rcar_gen4_sysc_pd_power_on;
+
+ if (pd->flags & (PD_CPU | PD_NO_CR)) {
+ /* Skip CPUs (handled by SMP code) and areas without control */
+ pr_debug("%s: Not touching %s\n", __func__, genpd->name);
+ goto finalize;
+ }
+
+ if (!rcar_gen4_sysc_power_is_off(pd->pdr)) {
+ pr_debug("%s: %s is already powered\n", __func__, genpd->name);
+ goto finalize;
+ }
+
+ rcar_gen4_sysc_power(pd->pdr, true);
+
+finalize:
+ error = pm_genpd_init(genpd, &simple_qos_governor, false);
+ if (error)
+ pr_err("Failed to init PM domain %s: %d\n", name, error);
+
+ return error;
+}
+
+static const struct of_device_id rcar_gen4_sysc_matches[] __initconst = {
+#ifdef CONFIG_SYSC_R8A779A0
+ { .compatible = "renesas,r8a779a0-sysc", .data = &r8a779a0_sysc_info },
+#endif
+#ifdef CONFIG_SYSC_R8A779F0
+ { .compatible = "renesas,r8a779f0-sysc", .data = &r8a779f0_sysc_info },
+#endif
+ { /* sentinel */ }
+};
+
+struct rcar_gen4_pm_domains {
+ struct genpd_onecell_data onecell_data;
+ struct generic_pm_domain *domains[RCAR_GEN4_PD_ALWAYS_ON + 1];
+};
+
+static struct genpd_onecell_data *rcar_gen4_sysc_onecell_data;
+
+static int __init rcar_gen4_sysc_pd_init(void)
+{
+ const struct rcar_gen4_sysc_info *info;
+ const struct of_device_id *match;
+ struct rcar_gen4_pm_domains *domains;
+ struct device_node *np;
+ void __iomem *base;
+ unsigned int i;
+ int error;
+
+ np = of_find_matching_node_and_match(NULL, rcar_gen4_sysc_matches, &match);
+ if (!np)
+ return -ENODEV;
+
+ info = match->data;
+
+ base = of_iomap(np, 0);
+ if (!base) {
+ pr_warn("%pOF: Cannot map regs\n", np);
+ error = -ENOMEM;
+ goto out_put;
+ }
+
+ rcar_gen4_sysc_base = base;
+
+ domains = kzalloc(sizeof(*domains), GFP_KERNEL);
+ if (!domains) {
+ error = -ENOMEM;
+ goto out_put;
+ }
+
+ domains->onecell_data.domains = domains->domains;
+ domains->onecell_data.num_domains = ARRAY_SIZE(domains->domains);
+ rcar_gen4_sysc_onecell_data = &domains->onecell_data;
+
+ for (i = 0; i < info->num_areas; i++) {
+ const struct rcar_gen4_sysc_area *area = &info->areas[i];
+ struct rcar_gen4_sysc_pd *pd;
+ size_t n;
+
+ if (!area->name) {
+ /* Skip NULLified area */
+ continue;
+ }
+
+ n = strlen(area->name) + 1;
+ pd = kzalloc(sizeof(*pd) + n, GFP_KERNEL);
+ if (!pd) {
+ error = -ENOMEM;
+ goto out_put;
+ }
+
+ memcpy(pd->name, area->name, n);
+ pd->genpd.name = pd->name;
+ pd->pdr = area->pdr;
+ pd->flags = area->flags;
+
+ error = rcar_gen4_sysc_pd_setup(pd);
+ if (error)
+ goto out_put;
+
+ domains->domains[area->pdr] = &pd->genpd;
+
+ if (area->parent < 0)
+ continue;
+
+ error = pm_genpd_add_subdomain(domains->domains[area->parent],
+ &pd->genpd);
+ if (error) {
+ pr_warn("Failed to add PM subdomain %s to parent %u\n",
+ area->name, area->parent);
+ goto out_put;
+ }
+ }
+
+ error = of_genpd_add_provider_onecell(np, &domains->onecell_data);
+
+out_put:
+ of_node_put(np);
+ return error;
+}
+early_initcall(rcar_gen4_sysc_pd_init);
diff --git a/drivers/soc/renesas/rcar-gen4-sysc.h b/drivers/soc/renesas/rcar-gen4-sysc.h
new file mode 100644
index 000000000000..0e0bd102b1f9
--- /dev/null
+++ b/drivers/soc/renesas/rcar-gen4-sysc.h
@@ -0,0 +1,43 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * R-Car Gen4 System Controller
+ *
+ * Copyright (C) 2021 Renesas Electronics Corp.
+ */
+#ifndef __SOC_RENESAS_RCAR_GEN4_SYSC_H__
+#define __SOC_RENESAS_RCAR_GEN4_SYSC_H__
+
+#include <linux/types.h>
+
+/*
+ * Power Domain flags
+ */
+#define PD_CPU BIT(0) /* Area contains main CPU core */
+#define PD_SCU BIT(1) /* Area contains SCU and L2 cache */
+#define PD_NO_CR BIT(2) /* Area lacks PWR{ON,OFF}CR registers */
+
+#define PD_CPU_NOCR (PD_CPU | PD_NO_CR) /* CPU area lacks CR */
+#define PD_ALWAYS_ON PD_NO_CR /* Always-on area */
+
+/*
+ * Description of a Power Area
+ */
+struct rcar_gen4_sysc_area {
+ const char *name;
+ u8 pdr; /* PDRn */
+ int parent; /* -1 if none */
+ unsigned int flags; /* See PD_* */
+};
+
+/*
+ * SoC-specific Power Area Description
+ */
+struct rcar_gen4_sysc_info {
+ const struct rcar_gen4_sysc_area *areas;
+ unsigned int num_areas;
+};
+
+extern const struct rcar_gen4_sysc_info r8a779a0_sysc_info;
+extern const struct rcar_gen4_sysc_info r8a779f0_sysc_info;
+
+#endif /* __SOC_RENESAS_RCAR_GEN4_SYSC_H__ */
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 11/16] soc: renesas: rcar-rst: Add support for R-Car S4-8
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
` (9 preceding siblings ...)
2021-11-16 7:41 ` [PATCH 10/16] soc: renesas: r8a779f0-sysc: Add r8a779f0 support Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-18 19:10 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 12/16] clk: renesas: cpg-mssr: " Yoshihiro Shimoda
` (4 subsequent siblings)
15 siblings, 1 reply; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
Add support for R-Car S4-8 (R8A779F0) to the R-Car RST driver.
The register map of R-Car S4-8 is the same as R-Car V3U so that
renames "V3U" and "r8a779a0" with "Gen4".
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/soc/renesas/rcar-rst.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/soc/renesas/rcar-rst.c b/drivers/soc/renesas/rcar-rst.c
index 24c7466de9f2..c9f2232a1b42 100644
--- a/drivers/soc/renesas/rcar-rst.c
+++ b/drivers/soc/renesas/rcar-rst.c
@@ -12,7 +12,7 @@
#define WDTRSTCR_RESET 0xA55A0002
#define WDTRSTCR 0x0054
-#define V3U_WDTRSTCR 0x0010
+#define GEN4_WDTRSTCR 0x0010
#define CR7BAR 0x0070
#define CR7BAREN BIT(4)
@@ -28,9 +28,9 @@ static int rcar_rst_enable_wdt_reset(void __iomem *base)
return 0;
}
-static int v3u_rst_enable_wdt_reset(void __iomem *base)
+static int rcar_rst_gen4_enable_wdt_reset(void __iomem *base)
{
- iowrite32(WDTRSTCR_RESET, base + V3U_WDTRSTCR);
+ iowrite32(WDTRSTCR_RESET, base + GEN4_WDTRSTCR);
return 0;
}
@@ -73,9 +73,9 @@ static const struct rst_config rcar_rst_gen3 __initconst = {
.set_rproc_boot_addr = rcar_rst_set_gen3_rproc_boot_addr,
};
-static const struct rst_config rcar_rst_r8a779a0 __initconst = {
+static const struct rst_config rcar_rst_gen4 __initconst = {
.modemr = 0x00, /* MODEMR0 and it has CPG related bits */
- .configure = v3u_rst_enable_wdt_reset,
+ .configure = rcar_rst_gen4_enable_wdt_reset,
};
static const struct of_device_id rcar_rst_matches[] __initconst = {
@@ -109,7 +109,9 @@ static const struct of_device_id rcar_rst_matches[] __initconst = {
{ .compatible = "renesas,r8a77990-rst", .data = &rcar_rst_gen3 },
{ .compatible = "renesas,r8a77995-rst", .data = &rcar_rst_gen3 },
/* R-Car V3U */
- { .compatible = "renesas,r8a779a0-rst", .data = &rcar_rst_r8a779a0 },
+ { .compatible = "renesas,r8a779a0-rst", .data = &rcar_rst_gen4 },
+ /* R-Car Gen4 */
+ { .compatible = "renesas,r8a779f0-rst", .data = &rcar_rst_gen4 },
{ /* sentinel */ }
};
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 12/16] clk: renesas: cpg-mssr: Add support for R-Car S4-8
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
` (10 preceding siblings ...)
2021-11-16 7:41 ` [PATCH 11/16] soc: renesas: rcar-rst: Add support for R-Car S4-8 Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-24 13:48 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 13/16] tty: serial: sh-sci: Add support for R-Car Gen4 Yoshihiro Shimoda
` (3 subsequent siblings)
15 siblings, 1 reply; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
Initial support for R-Car S4-8 (r8a779f0), including core, module
clocks, resets, and register access, because register specification
differs from R-Car Gen2/3. The register layout of V3U is a similar
with R-Car S4-8 so that renames CLK_REG_LAYOUT_RCAR_V3U as
CLK_REG_LAYOUT_RCAR_GEN4. However, PLL names differ between V3U
and S4-8.
Inspired by patches in the BSP by LUU HOAI.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/clk/renesas/Kconfig | 10 ++
drivers/clk/renesas/Makefile | 2 +
drivers/clk/renesas/r8a779a0-cpg-mssr.c | 2 +-
drivers/clk/renesas/r8a779f0-cpg-mssr.c | 188 ++++++++++++++++++++++++
drivers/clk/renesas/rcar-gen4-cpg.c | 141 ++++++++++++++++++
drivers/clk/renesas/rcar-gen4-cpg.h | 76 ++++++++++
drivers/clk/renesas/renesas-cpg-mssr.c | 42 ++++--
drivers/clk/renesas/renesas-cpg-mssr.h | 3 +-
8 files changed, 448 insertions(+), 16 deletions(-)
create mode 100644 drivers/clk/renesas/r8a779f0-cpg-mssr.c
create mode 100644 drivers/clk/renesas/rcar-gen4-cpg.c
create mode 100644 drivers/clk/renesas/rcar-gen4-cpg.h
diff --git a/drivers/clk/renesas/Kconfig b/drivers/clk/renesas/Kconfig
index 6d0280751bb1..0927fa963ca6 100644
--- a/drivers/clk/renesas/Kconfig
+++ b/drivers/clk/renesas/Kconfig
@@ -31,6 +31,7 @@ config CLK_RENESAS
select CLK_R8A77990 if ARCH_R8A77990
select CLK_R8A77995 if ARCH_R8A77995
select CLK_R8A779A0 if ARCH_R8A779A0
+ select CLK_R8A779F0 if ARCH_R8A779F0
select CLK_R9A06G032 if ARCH_R9A06G032
select CLK_R9A07G044 if ARCH_R9A07G044
select CLK_SH73A0 if ARCH_SH73A0
@@ -152,6 +153,10 @@ config CLK_R8A779A0
select CLK_RCAR_CPG_LIB
select CLK_RENESAS_CPG_MSSR
+config CLK_R8A779F0
+ bool "R-Car S4-8 clock support" if COMPILE_TEST
+ select CLK_RCAR_GEN4_CPG
+
config CLK_R9A06G032
bool "RZ/N1D clock support" if COMPILE_TEST
@@ -178,6 +183,11 @@ config CLK_RCAR_GEN3_CPG
select CLK_RCAR_CPG_LIB
select CLK_RENESAS_CPG_MSSR
+config CLK_RCAR_GEN4_CPG
+ bool "R-Car Gen4 clock support" if COMPILE_TEST
+ select CLK_RCAR_CPG_LIB
+ select CLK_RENESAS_CPG_MSSR
+
config CLK_RCAR_USB2_CLOCK_SEL
bool "Renesas R-Car USB2 clock selector support"
depends on ARCH_RENESAS || COMPILE_TEST
diff --git a/drivers/clk/renesas/Makefile b/drivers/clk/renesas/Makefile
index 7d018700d08b..1cd461b8fa7b 100644
--- a/drivers/clk/renesas/Makefile
+++ b/drivers/clk/renesas/Makefile
@@ -28,6 +28,7 @@ obj-$(CONFIG_CLK_R8A77980) += r8a77980-cpg-mssr.o
obj-$(CONFIG_CLK_R8A77990) += r8a77990-cpg-mssr.o
obj-$(CONFIG_CLK_R8A77995) += r8a77995-cpg-mssr.o
obj-$(CONFIG_CLK_R8A779A0) += r8a779a0-cpg-mssr.o
+obj-$(CONFIG_CLK_R8A779F0) += r8a779f0-cpg-mssr.o
obj-$(CONFIG_CLK_R9A06G032) += r9a06g032-clocks.o
obj-$(CONFIG_CLK_R9A07G044) += r9a07g044-cpg.o
obj-$(CONFIG_CLK_SH73A0) += clk-sh73a0.o
@@ -36,6 +37,7 @@ obj-$(CONFIG_CLK_SH73A0) += clk-sh73a0.o
obj-$(CONFIG_CLK_RCAR_CPG_LIB) += rcar-cpg-lib.o
obj-$(CONFIG_CLK_RCAR_GEN2_CPG) += rcar-gen2-cpg.o
obj-$(CONFIG_CLK_RCAR_GEN3_CPG) += rcar-gen3-cpg.o
+obj-$(CONFIG_CLK_RCAR_GEN4_CPG) += rcar-gen4-cpg.o
obj-$(CONFIG_CLK_RCAR_USB2_CLOCK_SEL) += rcar-usb2-clock-sel.o
obj-$(CONFIG_CLK_RZG2L) += rzg2l-cpg.o
diff --git a/drivers/clk/renesas/r8a779a0-cpg-mssr.c b/drivers/clk/renesas/r8a779a0-cpg-mssr.c
index fbd7454f2beb..8aab3957c23d 100644
--- a/drivers/clk/renesas/r8a779a0-cpg-mssr.c
+++ b/drivers/clk/renesas/r8a779a0-cpg-mssr.c
@@ -583,5 +583,5 @@ const struct cpg_mssr_info r8a779a0_cpg_mssr_info __initconst = {
.init = r8a779a0_cpg_mssr_init,
.cpg_clk_register = rcar_r8a779a0_cpg_clk_register,
- .reg_layout = CLK_REG_LAYOUT_RCAR_V3U,
+ .reg_layout = CLK_REG_LAYOUT_RCAR_GEN4,
};
diff --git a/drivers/clk/renesas/r8a779f0-cpg-mssr.c b/drivers/clk/renesas/r8a779f0-cpg-mssr.c
new file mode 100644
index 000000000000..ebec32008bc6
--- /dev/null
+++ b/drivers/clk/renesas/r8a779f0-cpg-mssr.c
@@ -0,0 +1,188 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * r8a779f0 Clock Pulse Generator / Module Standby and Software Reset
+ *
+ * Copyright (C) 2021 Renesas Electronics Corp.
+ *
+ * Based on r8a779a0-cpg-mssr.c
+ */
+
+#include <linux/bug.h>
+#include <linux/bitfield.h>
+#include <linux/clk.h>
+#include <linux/clk-provider.h>
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/init.h>
+#include <linux/io.h>
+#include <linux/kernel.h>
+#include <linux/pm.h>
+#include <linux/slab.h>
+#include <linux/soc/renesas/rcar-rst.h>
+
+#include <dt-bindings/clock/r8a779f0-cpg-mssr.h>
+
+#include "renesas-cpg-mssr.h"
+#include "rcar-gen4-cpg.h"
+
+enum clk_ids {
+ /* Core Clock Outputs exported to DT */
+ LAST_DT_CORE_CLK = R8A779F0_CLK_R,
+
+ /* External Input Clocks */
+ CLK_EXTAL,
+ CLK_EXTALR,
+
+ /* Internal Core Clocks */
+ CLK_MAIN,
+ CLK_PLL1,
+ CLK_PLL2,
+ CLK_PLL3,
+ CLK_PLL5,
+ CLK_PLL6,
+ CLK_PLL1_DIV2,
+ CLK_PLL2_DIV2,
+ CLK_PLL3_DIV2,
+ CLK_PLL5_DIV2,
+ CLK_PLL5_DIV4,
+ CLK_PLL6_DIV2,
+ CLK_S0,
+ CLK_SDSRC,
+ CLK_RPCSRC,
+ CLK_OCO,
+
+ /* Module Clocks */
+ MOD_CLK_BASE
+};
+
+static const struct cpg_core_clk r8a779f0_core_clks[] __initconst = {
+ /* External Clock Inputs */
+ DEF_INPUT("extal", CLK_EXTAL),
+ DEF_INPUT("extalr", CLK_EXTALR),
+
+ /* Internal Core Clocks */
+ DEF_BASE(".main", CLK_MAIN, CLK_TYPE_GEN4_MAIN, CLK_EXTAL),
+ DEF_BASE(".pll1", CLK_PLL1, CLK_TYPE_GEN4_PLL1, CLK_MAIN),
+ DEF_BASE(".pll3", CLK_PLL3, CLK_TYPE_GEN4_PLL3, CLK_MAIN),
+ DEF_BASE(".pll2", CLK_PLL2, CLK_TYPE_GEN4_PLL2, CLK_MAIN),
+ DEF_BASE(".pll6", CLK_PLL6, CLK_TYPE_GEN4_PLL6, CLK_MAIN),
+ DEF_BASE(".pll5", CLK_PLL5, CLK_TYPE_GEN4_PLL5, CLK_MAIN),
+
+ DEF_FIXED(".pll1_div2", CLK_PLL1_DIV2, CLK_PLL1, 2, 1),
+ DEF_FIXED(".pll2_div2", CLK_PLL2_DIV2, CLK_PLL2, 2, 1),
+ DEF_FIXED(".pll3_div2", CLK_PLL3_DIV2, CLK_PLL3, 2, 1),
+ DEF_FIXED(".pll5_div2", CLK_PLL5_DIV2, CLK_PLL5, 2, 1),
+ DEF_FIXED(".pll5_div4", CLK_PLL5_DIV4, CLK_PLL5_DIV2, 2, 1),
+ DEF_FIXED(".pll6_div2", CLK_PLL6_DIV2, CLK_PLL6, 2, 1),
+ DEF_FIXED(".s0", CLK_S0, CLK_PLL1_DIV2, 2, 1),
+ DEF_FIXED(".sdsrc", CLK_SDSRC, CLK_PLL5_DIV2, 2, 1),
+ DEF_RATE(".oco", CLK_OCO, 32768),
+
+ DEF_BASE(".rpcsrc", CLK_RPCSRC, CLK_TYPE_GEN4_RPCSRC, CLK_PLL5),
+ DEF_BASE(".rpc", R8A779F0_CLK_RPC, CLK_TYPE_GEN4_RPC, CLK_RPCSRC),
+ DEF_BASE("rpcd2", R8A779F0_CLK_RPCD2, CLK_TYPE_GEN4_RPCD2, R8A779F0_CLK_RPC),
+
+ /* Core Clock Outputs */
+ DEF_FIXED("s0d2", R8A779F0_CLK_S0D2, CLK_S0, 2, 1),
+ DEF_FIXED("s0d3", R8A779F0_CLK_S0D3, CLK_S0, 3, 1),
+ DEF_FIXED("s0d4", R8A779F0_CLK_S0D4, CLK_S0, 4, 1),
+ DEF_FIXED("cl16m", R8A779F0_CLK_CL16M, CLK_S0, 48, 1),
+ DEF_FIXED("s0d2_mm", R8A779F0_CLK_S0D2_MM, CLK_S0, 2, 1),
+ DEF_FIXED("s0d3_mm", R8A779F0_CLK_S0D3_MM, CLK_S0, 3, 1),
+ DEF_FIXED("s0d4_mm", R8A779F0_CLK_S0D4_MM, CLK_S0, 4, 1),
+ DEF_FIXED("cl16m_mm", R8A779F0_CLK_CL16M_MM, CLK_S0, 48, 1),
+ DEF_FIXED("s0d2_rt", R8A779F0_CLK_S0D2_RT, CLK_S0, 2, 1),
+ DEF_FIXED("s0d3_rt", R8A779F0_CLK_S0D3_RT, CLK_S0, 3, 1),
+ DEF_FIXED("s0d4_rt", R8A779F0_CLK_S0D4_RT, CLK_S0, 4, 1),
+ DEF_FIXED("s0d6_rt", R8A779F0_CLK_S0D6_RT, CLK_S0, 6, 1),
+ DEF_FIXED("cl16m_rt", R8A779F0_CLK_CL16M_RT, CLK_S0, 48, 1),
+ DEF_FIXED("s0d3_per", R8A779F0_CLK_S0D3_PER, CLK_S0, 3, 1),
+ DEF_FIXED("s0d6_per", R8A779F0_CLK_S0D6_PER, CLK_S0, 6, 1),
+ DEF_FIXED("s0d12_per", R8A779F0_CLK_S0D12_PER, CLK_S0, 12, 1),
+ DEF_FIXED("s0d24_per", R8A779F0_CLK_S0D24_PER, CLK_S0, 24, 1),
+ DEF_FIXED("cl16m_per", R8A779F0_CLK_CL16M_PER, CLK_S0, 48, 1),
+ DEF_FIXED("s0d2_hsc", R8A779F0_CLK_S0D2_HSC, CLK_S0, 2, 1),
+ DEF_FIXED("s0d3_hsc", R8A779F0_CLK_S0D3_HSC, CLK_S0, 3, 1),
+ DEF_FIXED("s0d4_hsc", R8A779F0_CLK_S0D4_HSC, CLK_S0, 4, 1),
+ DEF_FIXED("s0d6_hsc", R8A779F0_CLK_S0D6_HSC, CLK_S0, 6, 1),
+ DEF_FIXED("s0d12_hsc", R8A779F0_CLK_S0D12_HSC, CLK_S0, 12, 1),
+ DEF_FIXED("cl16m_hsc", R8A779F0_CLK_CL16M_HSC, CLK_S0, 48, 1),
+ DEF_FIXED("s0d2_cc", R8A779F0_CLK_S0D2_CC, CLK_S0, 2, 1),
+ DEF_FIXED("rsw", R8A779F0_CLK_RSW2, CLK_PLL5, 2, 1),
+ DEF_FIXED("cbfusa", R8A779F0_CLK_CBFUSA, CLK_EXTAL, 2, 1),
+ DEF_FIXED("cpex", R8A779F0_CLK_CPEX, CLK_EXTAL, 2, 1),
+
+ DEF_GEN4_SD("sd0", R8A779F0_CLK_SD0, CLK_SDSRC, 0x870),
+ DEF_DIV6P1("mso", R8A779F0_CLK_MSO, CLK_PLL5_DIV4, 0x087C),
+
+ DEF_GEN4_OSC("osc", R8A779F0_CLK_OSC, CLK_EXTAL, 8),
+ DEF_GEN4_MDSEL("r", R8A779F0_CLK_R, 29, CLK_EXTALR, 1, CLK_OCO, 1),
+};
+
+static const struct mssr_mod_clk r8a779f0_mod_clks[] __initconst = {
+ DEF_MOD("scif0", 702, R8A779F0_CLK_S0D12_PER),
+ DEF_MOD("scif1", 703, R8A779F0_CLK_S0D12_PER),
+ DEF_MOD("scif3", 704, R8A779F0_CLK_S0D12_PER),
+ DEF_MOD("scif4", 705, R8A779F0_CLK_S0D12_PER),
+};
+
+/*
+ * CPG Clock Data
+ */
+/*
+ * MD EXTAL PLL1 PLL2 PLL3 PLL5 PLL6 OSC
+ * 14 13 (MHz)
+ * ----------------------------------------------------------------
+ * 0 0 16.66 / 1 x200 x150 x200 x200 x134 /15
+ * 0 1 20 / 1 x160 x120 x160 x160 x106 /19
+ * 1 0 Prohibited setting
+ * 1 1 40 / 2 x160 x120 x160 x160 x106 /38
+ */
+#define CPG_PLL_CONFIG_INDEX(md) ((((md) & BIT(14)) >> 13) | \
+ (((md) & BIT(13)) >> 13))
+
+static const struct rcar_gen4_cpg_pll_config cpg_pll_configs[4] = {
+ /* EXTAL div PLL1 mult/div PLL2 mult/div PLL3 mult/div PLL5 mult/div PLL6 mult/div OSC prediv */
+ { 1, 200, 1, 150, 1, 200, 1, 200, 1, 134, 1, 16, },
+ { 1, 160, 1, 120, 1, 160, 1, 160, 1, 106, 1, 19, },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ { 2, 160, 1, 120, 1, 160, 1, 160, 1, 106, 1, 38, },
+};
+
+static int __init r8a779f0_cpg_mssr_init(struct device *dev)
+{
+ const struct rcar_gen4_cpg_pll_config *cpg_pll_config;
+ u32 cpg_mode;
+ int error;
+
+ error = rcar_rst_read_mode_pins(&cpg_mode);
+ if (error)
+ return error;
+
+ cpg_pll_config = &cpg_pll_configs[CPG_PLL_CONFIG_INDEX(cpg_mode)];
+ if (!cpg_pll_config->extal_div) {
+ dev_err(dev, "Prohibited setting (cpg_mode=0x%x)\n", cpg_mode);
+ return -EINVAL;
+ }
+
+ return rcar_gen4_cpg_init(cpg_pll_config, CLK_EXTALR, cpg_mode);
+}
+
+const struct cpg_mssr_info r8a779f0_cpg_mssr_info __initconst = {
+ /* Core Clocks */
+ .core_clks = r8a779f0_core_clks,
+ .num_core_clks = ARRAY_SIZE(r8a779f0_core_clks),
+ .last_dt_core_clk = LAST_DT_CORE_CLK,
+ .num_total_core_clks = MOD_CLK_BASE,
+
+ /* Module Clocks */
+ .mod_clks = r8a779f0_mod_clks,
+ .num_mod_clks = ARRAY_SIZE(r8a779f0_mod_clks),
+ .num_hw_mod_clks = 28 * 32,
+
+ /* Callbacks */
+ .init = r8a779f0_cpg_mssr_init,
+ .cpg_clk_register = rcar_gen4_cpg_clk_register,
+
+ .reg_layout = CLK_REG_LAYOUT_RCAR_GEN4,
+};
diff --git a/drivers/clk/renesas/rcar-gen4-cpg.c b/drivers/clk/renesas/rcar-gen4-cpg.c
new file mode 100644
index 000000000000..930ac767c1d5
--- /dev/null
+++ b/drivers/clk/renesas/rcar-gen4-cpg.c
@@ -0,0 +1,141 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * R-Car Gen4 Clock Pulse Generator
+ *
+ * Copyright (C) 2021 Renesas Electronics Corp.
+ *
+ * Based on rcar-gen3-cpg.c
+ *
+ * Copyright (C) 2015-2018 Glider bvba
+ * Copyright (C) 2019 Renesas Electronics Corp.
+ */
+
+#include <linux/bug.h>
+#include <linux/bitfield.h>
+#include <linux/clk.h>
+#include <linux/clk-provider.h>
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/init.h>
+#include <linux/io.h>
+#include <linux/pm.h>
+#include <linux/slab.h>
+#include <linux/sys_soc.h>
+
+#include "renesas-cpg-mssr.h"
+#include "rcar-gen4-cpg.h"
+#include "rcar-cpg-lib.h"
+
+static const struct clk_div_table cpg_rpcsrc_div_table[] = {
+ { 2, 5 }, { 3, 6 }, { 0, 0 },
+};
+
+static const struct rcar_gen4_cpg_pll_config *cpg_pll_config __initconst;
+static unsigned int cpg_clk_extalr __initdata;
+static u32 cpg_mode __initdata;
+
+struct clk * __init rcar_gen4_cpg_clk_register(struct device *dev,
+ const struct cpg_core_clk *core, const struct cpg_mssr_info *info,
+ struct clk **clks, void __iomem *base,
+ struct raw_notifier_head *notifiers)
+{
+ const struct clk *parent;
+ unsigned int mult = 1;
+ unsigned int div = 1;
+
+ parent = clks[core->parent & 0xffff]; /* some types use high bits */
+ if (IS_ERR(parent))
+ return ERR_CAST(parent);
+
+ switch (core->type) {
+ case CLK_TYPE_GEN4_MAIN:
+ div = cpg_pll_config->extal_div;
+ break;
+
+ case CLK_TYPE_GEN4_PLL1:
+ mult = cpg_pll_config->pll1_mult;
+ div = cpg_pll_config->pll1_div;
+ break;
+
+ case CLK_TYPE_GEN4_PLL2:
+ mult = cpg_pll_config->pll2_mult;
+ div = cpg_pll_config->pll2_div;
+ break;
+
+ case CLK_TYPE_GEN4_PLL3:
+ mult = cpg_pll_config->pll3_mult;
+ div = cpg_pll_config->pll3_div;
+ break;
+
+ case CLK_TYPE_GEN4_PLL5:
+ mult = cpg_pll_config->pll5_mult;
+ div = cpg_pll_config->pll5_div;
+ break;
+
+ case CLK_TYPE_GEN4_PLL6:
+ mult = cpg_pll_config->pll6_mult;
+ div = cpg_pll_config->pll6_div;
+ break;
+
+ case CLK_TYPE_GEN4_MDSEL:
+ /*
+ * Clock selectable between two parents and two fixed dividers
+ * using a mode pin
+ */
+ if (cpg_mode & BIT(core->offset)) {
+ div = core->div & 0xffff;
+ } else {
+ parent = clks[core->parent >> 16];
+ if (IS_ERR(parent))
+ return ERR_CAST(parent);
+ div = core->div >> 16;
+ }
+ mult = 1;
+ break;
+
+ case CLK_TYPE_GEN4_OSC:
+ /*
+ * Clock combining OSC EXTAL predivider and a fixed divider
+ */
+ div = cpg_pll_config->osc_prediv * core->div;
+ break;
+
+ case CLK_TYPE_GEN4_RPCSRC:
+ return clk_register_divider_table(NULL, core->name,
+ __clk_get_name(parent), 0,
+ base + CPG_RPCCKCR, 3, 2, 0,
+ cpg_rpcsrc_div_table,
+ &cpg_lock);
+
+ case CLK_TYPE_GEN4_RPC:
+ return cpg_rpc_clk_register(core->name, base + CPG_RPCCKCR,
+ __clk_get_name(parent), notifiers);
+
+ case CLK_TYPE_GEN4_RPCD2:
+ return cpg_rpcd2_clk_register(core->name, base + CPG_RPCCKCR,
+ __clk_get_name(parent));
+
+ case CLK_TYPE_GEN4_SD:
+ return cpg_sd_clk_register(core->name, base, core->offset,
+ __clk_get_name(parent), notifiers,
+ 0);
+
+ default:
+ return ERR_PTR(-EINVAL);
+ }
+
+ return clk_register_fixed_factor(NULL, core->name,
+ __clk_get_name(parent), 0, mult, div);
+}
+
+int __init rcar_gen4_cpg_init(const struct rcar_gen4_cpg_pll_config *config,
+ unsigned int clk_extalr, u32 mode)
+{
+ cpg_pll_config = config;
+ cpg_clk_extalr = clk_extalr;
+ cpg_mode = mode;
+
+ spin_lock_init(&cpg_lock);
+
+ return 0;
+}
diff --git a/drivers/clk/renesas/rcar-gen4-cpg.h b/drivers/clk/renesas/rcar-gen4-cpg.h
new file mode 100644
index 000000000000..d6e40b51743b
--- /dev/null
+++ b/drivers/clk/renesas/rcar-gen4-cpg.h
@@ -0,0 +1,76 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * R-Car Gen4 Clock Pulse Generator
+ *
+ * Copyright (C) 2021 Renesas Electronics Corp.
+ *
+ */
+
+#ifndef __CLK_RENESAS_RCAR_GEN4_CPG_H__
+#define __CLK_RENESAS_RCAR_GEN4_CPG_H__
+
+enum rcar_gen4_clk_types {
+ CLK_TYPE_GEN4_MAIN = CLK_TYPE_CUSTOM,
+ CLK_TYPE_GEN4_PLL1,
+ CLK_TYPE_GEN4_PLL2,
+ CLK_TYPE_GEN4_PLL3,
+ CLK_TYPE_GEN4_PLL5,
+ CLK_TYPE_GEN4_PLL6,
+ CLK_TYPE_GEN4_SD,
+ CLK_TYPE_GEN4_R,
+ CLK_TYPE_GEN4_MDSEL, /* Select parent/divider using mode pin */
+ CLK_TYPE_GEN4_Z,
+ CLK_TYPE_GEN4_ZG,
+ CLK_TYPE_GEN4_OSC, /* OSC EXTAL predivider and fixed divider */
+ CLK_TYPE_GEN4_RPCSRC,
+ CLK_TYPE_GEN4_RPC,
+ CLK_TYPE_GEN4_RPCD2,
+
+ /* SoC specific definitions start here */
+ CLK_TYPE_GEN4_SOC_BASE,
+};
+
+#define DEF_GEN4_SD(_name, _id, _parent, _offset) \
+ DEF_BASE(_name, _id, CLK_TYPE_GEN4_SD, _parent, .offset = _offset)
+
+#define DEF_GEN4_MDSEL(_name, _id, _md, _parent0, _div0, _parent1, _div1) \
+ DEF_BASE(_name, _id, CLK_TYPE_GEN4_MDSEL, \
+ (_parent0) << 16 | (_parent1), \
+ .div = (_div0) << 16 | (_div1), .offset = _md)
+
+#define DEF_GEN4_PE(_name, _id, _parent_clean, _div_clean, _parent_sscg, \
+ _div_sscg) \
+ DEF_GEN4_MDSEL(_name, _id, 12, _parent_clean, _div_clean, \
+ _parent_sscg, _div_sscg)
+
+#define DEF_GEN4_OSC(_name, _id, _parent, _div) \
+ DEF_BASE(_name, _id, CLK_TYPE_GEN4_OSC, _parent, .div = _div)
+
+#define DEF_GEN4_Z(_name, _id, _type, _parent, _div, _offset) \
+ DEF_BASE(_name, _id, _type, _parent, .div = _div, .offset = _offset)
+
+struct rcar_gen4_cpg_pll_config {
+ u8 extal_div;
+ u8 pll1_mult;
+ u8 pll1_div;
+ u8 pll2_mult;
+ u8 pll2_div;
+ u8 pll3_mult;
+ u8 pll3_div;
+ u8 pll5_mult;
+ u8 pll5_div;
+ u8 pll6_mult;
+ u8 pll6_div;
+ u8 osc_prediv;
+};
+
+#define CPG_RPCCKCR 0x874
+
+struct clk *rcar_gen4_cpg_clk_register(struct device *dev,
+ const struct cpg_core_clk *core, const struct cpg_mssr_info *info,
+ struct clk **clks, void __iomem *base,
+ struct raw_notifier_head *notifiers);
+int rcar_gen4_cpg_init(const struct rcar_gen4_cpg_pll_config *config,
+ unsigned int clk_extalr, u32 mode);
+
+#endif
diff --git a/drivers/clk/renesas/renesas-cpg-mssr.c b/drivers/clk/renesas/renesas-cpg-mssr.c
index 21f762aa2131..ccde338b9fed 100644
--- a/drivers/clk/renesas/renesas-cpg-mssr.c
+++ b/drivers/clk/renesas/renesas-cpg-mssr.c
@@ -57,9 +57,11 @@ static const u16 mstpsr[] = {
0x9A0, 0x9A4, 0x9A8, 0x9AC,
};
-static const u16 mstpsr_for_v3u[] = {
+static const u16 mstpsr_for_gen4[] = {
0x2E00, 0x2E04, 0x2E08, 0x2E0C, 0x2E10, 0x2E14, 0x2E18, 0x2E1C,
- 0x2E20, 0x2E24, 0x2E28, 0x2E2C, 0x2E30, 0x2E34, 0x2E38,
+ 0x2E20, 0x2E24, 0x2E28, 0x2E2C, 0x2E30, 0x2E34, 0x2E38, 0x2E3C,
+ 0x2E40, 0x2E44, 0x2E48, 0x2E4C, 0x2E50, 0x2E54, 0x2E58, 0x2E5C,
+ 0x2E60, 0x2E64, 0x2E68, 0x2E6C,
};
/*
@@ -71,9 +73,11 @@ static const u16 smstpcr[] = {
0x990, 0x994, 0x998, 0x99C,
};
-static const u16 mstpcr_for_v3u[] = {
+static const u16 mstpcr_for_gen4[] = {
0x2D00, 0x2D04, 0x2D08, 0x2D0C, 0x2D10, 0x2D14, 0x2D18, 0x2D1C,
- 0x2D20, 0x2D24, 0x2D28, 0x2D2C, 0x2D30, 0x2D34, 0x2D38,
+ 0x2D20, 0x2D24, 0x2D28, 0x2D2C, 0x2D30, 0x2D34, 0x2D38, 0x2D3C,
+ 0x2D40, 0x2D44, 0x2D48, 0x2D4C, 0x2D50, 0x2D54, 0x2D58, 0x2D5C,
+ 0x2D60, 0x2D64, 0x2D68, 0x2D6C,
};
/*
@@ -95,9 +99,11 @@ static const u16 srcr[] = {
0x920, 0x924, 0x928, 0x92C,
};
-static const u16 srcr_for_v3u[] = {
+static const u16 srcr_for_gen4[] = {
0x2C00, 0x2C04, 0x2C08, 0x2C0C, 0x2C10, 0x2C14, 0x2C18, 0x2C1C,
- 0x2C20, 0x2C24, 0x2C28, 0x2C2C, 0x2C30, 0x2C34, 0x2C38,
+ 0x2C20, 0x2C24, 0x2C28, 0x2C2C, 0x2C30, 0x2C34, 0x2C38, 0x2C3C,
+ 0x2C40, 0x2C44, 0x2C48, 0x2C4C, 0x2C50, 0x2C54, 0x2C58, 0x2C5C,
+ 0x2C60, 0x2C64, 0x2C68, 0x2C6C,
};
/*
@@ -109,9 +115,11 @@ static const u16 srstclr[] = {
0x960, 0x964, 0x968, 0x96C,
};
-static const u16 srstclr_for_v3u[] = {
+static const u16 srstclr_for_gen4[] = {
0x2C80, 0x2C84, 0x2C88, 0x2C8C, 0x2C90, 0x2C94, 0x2C98, 0x2C9C,
- 0x2CA0, 0x2CA4, 0x2CA8, 0x2CAC, 0x2CB0, 0x2CB4, 0x2CB8,
+ 0x2CA0, 0x2CA4, 0x2CA8, 0x2CAC, 0x2CB0, 0x2CB4, 0x2CB8, 0x2CBC,
+ 0x2CC0, 0x2CC4, 0x2CC8, 0x2CCC, 0x2CD0, 0x2CD4, 0x2CD8, 0x2CDC,
+ 0x2CE0, 0x2CE4, 0x2CE8, 0x2CEC,
};
/**
@@ -158,7 +166,7 @@ struct cpg_mssr_priv {
struct {
u32 mask;
u32 val;
- } smstpcr_saved[ARRAY_SIZE(mstpsr_for_v3u)];
+ } smstpcr_saved[ARRAY_SIZE(mstpsr_for_gen4)];
struct clk *clks[];
};
@@ -827,6 +835,12 @@ static const struct of_device_id cpg_mssr_match[] = {
.compatible = "renesas,r8a779a0-cpg-mssr",
.data = &r8a779a0_cpg_mssr_info,
},
+#endif
+#ifdef CONFIG_CLK_R8A779F0
+ {
+ .compatible = "renesas,r8a779f0-cpg-mssr",
+ .data = &r8a779f0_cpg_mssr_info,
+ },
#endif
{ /* sentinel */ }
};
@@ -970,11 +984,11 @@ static int __init cpg_mssr_common_init(struct device *dev,
priv->reset_clear_regs = srstclr;
} else if (priv->reg_layout == CLK_REG_LAYOUT_RZ_A) {
priv->control_regs = stbcr;
- } else if (priv->reg_layout == CLK_REG_LAYOUT_RCAR_V3U) {
- priv->status_regs = mstpsr_for_v3u;
- priv->control_regs = mstpcr_for_v3u;
- priv->reset_regs = srcr_for_v3u;
- priv->reset_clear_regs = srstclr_for_v3u;
+ } else if (priv->reg_layout == CLK_REG_LAYOUT_RCAR_GEN4) {
+ priv->status_regs = mstpsr_for_gen4;
+ priv->control_regs = mstpcr_for_gen4;
+ priv->reset_regs = srcr_for_gen4;
+ priv->reset_clear_regs = srstclr_for_gen4;
} else {
error = -EINVAL;
goto out_err;
diff --git a/drivers/clk/renesas/renesas-cpg-mssr.h b/drivers/clk/renesas/renesas-cpg-mssr.h
index 6b2a0ade482e..16810dd4e6ac 100644
--- a/drivers/clk/renesas/renesas-cpg-mssr.h
+++ b/drivers/clk/renesas/renesas-cpg-mssr.h
@@ -88,7 +88,7 @@ struct device_node;
enum clk_reg_layout {
CLK_REG_LAYOUT_RCAR_GEN2_AND_GEN3 = 0,
CLK_REG_LAYOUT_RZ_A,
- CLK_REG_LAYOUT_RCAR_V3U,
+ CLK_REG_LAYOUT_RCAR_GEN4,
};
/**
@@ -178,6 +178,7 @@ extern const struct cpg_mssr_info r8a77980_cpg_mssr_info;
extern const struct cpg_mssr_info r8a77990_cpg_mssr_info;
extern const struct cpg_mssr_info r8a77995_cpg_mssr_info;
extern const struct cpg_mssr_info r8a779a0_cpg_mssr_info;
+extern const struct cpg_mssr_info r8a779f0_cpg_mssr_info;
void __init cpg_mssr_early_init(struct device_node *np,
const struct cpg_mssr_info *info);
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 13/16] tty: serial: sh-sci: Add support for R-Car Gen4
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
` (11 preceding siblings ...)
2021-11-16 7:41 ` [PATCH 12/16] clk: renesas: cpg-mssr: " Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-18 19:11 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 14/16] arm64: dts: renesas: Add Renesas R8A779F0 SoC support Yoshihiro Shimoda
` (2 subsequent siblings)
15 siblings, 1 reply; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
Add serial support for R-Car Gen4 SoC.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/tty/serial/sh-sci.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c
index 89ee43061d3a..55f5b96663b9 100644
--- a/drivers/tty/serial/sh-sci.c
+++ b/drivers/tty/serial/sh-sci.c
@@ -3180,6 +3180,9 @@ static const struct of_device_id of_sci_match[] = {
}, {
.compatible = "renesas,rcar-gen3-scif",
.data = SCI_OF_DATA(PORT_SCIF, SCIx_SH4_SCIF_BRG_REGTYPE),
+ }, {
+ .compatible = "renesas,rcar-gen4-scif",
+ .data = SCI_OF_DATA(PORT_SCIF, SCIx_SH4_SCIF_BRG_REGTYPE),
},
/* Generic types */
{
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 14/16] arm64: dts: renesas: Add Renesas R8A779F0 SoC support
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
` (12 preceding siblings ...)
2021-11-16 7:41 ` [PATCH 13/16] tty: serial: sh-sci: Add support for R-Car Gen4 Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-24 14:02 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 15/16] arm64: dts: renesas: Add Renesas Spider boards support Yoshihiro Shimoda
2021-11-16 7:41 ` [PATCH 16/16] arm64: defconfig: Enable R-Car S4-8 Yoshihiro Shimoda
15 siblings, 1 reply; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
Add initial support for the Renesas R8A779F0 (R-Car S4-8) support.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
arch/arm64/boot/dts/renesas/r8a779f0.dtsi | 121 ++++++++++++++++++++++
1 file changed, 121 insertions(+)
create mode 100644 arch/arm64/boot/dts/renesas/r8a779f0.dtsi
diff --git a/arch/arm64/boot/dts/renesas/r8a779f0.dtsi b/arch/arm64/boot/dts/renesas/r8a779f0.dtsi
new file mode 100644
index 000000000000..eda597766eaf
--- /dev/null
+++ b/arch/arm64/boot/dts/renesas/r8a779f0.dtsi
@@ -0,0 +1,121 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the R-Car S4-8 (R8A779F0) SoC
+ *
+ * Copyright (C) 2021 Renesas Electronics Corp.
+ */
+
+#include <dt-bindings/clock/r8a779f0-cpg-mssr.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/power/r8a779f0-sysc.h>
+
+/ {
+ compatible = "renesas,r8a779f0";
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ a55_0: cpu@0 {
+ compatible = "arm,cortex-a55";
+ reg = <0>;
+ device_type = "cpu";
+ power-domains = <&sysc R8A779F0_PD_A1E0D0C0>;
+ };
+ };
+
+ extal_clk: extal {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ /* This value must be overridden by the board */
+ clock-frequency = <0>;
+ };
+
+ extalr_clk: extalr {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ /* This value must be overridden by the board */
+ clock-frequency = <0>;
+ };
+
+ pmu_a55 {
+ compatible = "arm,cortex-a55-pmu";
+ interrupts-extended = <&gic GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
+ };
+
+ /* External SCIF clock - to be overridden by boards that provide it */
+ scif_clk: scif {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <0>;
+ };
+
+ soc: soc {
+ compatible = "simple-bus";
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ cpg: clock-controller@e6150000 {
+ compatible = "renesas,r8a779f0-cpg-mssr";
+ reg = <0 0xe6150000 0 0x4000>;
+ clocks = <&extal_clk>, <&extalr_clk>;
+ clock-names = "extal", "extalr";
+ #clock-cells = <2>;
+ #power-domain-cells = <0>;
+ #reset-cells = <1>;
+ };
+
+ rst: reset-controller@e6160000 {
+ compatible = "renesas,r8a779f0-rst";
+ reg = <0 0xe6160000 0 0x4000>;
+ };
+
+ sysc: system-controller@e6180000 {
+ compatible = "renesas,r8a779f0-sysc";
+ reg = <0 0xe6180000 0 0x4000>;
+ #power-domain-cells = <1>;
+ };
+
+ scif3: serial@e6c50000 {
+ compatible = "renesas,scif-r8a779f0",
+ "renesas,rcar-gen4-scif", "renesas,scif";
+ reg = <0 0xe6c50000 0 64>;
+ interrupts = <GIC_SPI 252 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg CPG_MOD 704>,
+ <&cpg CPG_CORE R8A779F0_CLK_S0D3_PER>,
+ <&scif_clk>;
+ clock-names = "fck", "brg_int", "scif_clk";
+ power-domains = <&sysc R8A779F0_PD_ALWAYS_ON>;
+ resets = <&cpg 704>;
+ status = "disabled";
+ };
+
+ gic: interrupt-controller@f1000000 {
+ compatible = "arm,gic-v3";
+ #interrupt-cells = <3>;
+ #address-cells = <0>;
+ interrupt-controller;
+ reg = <0x0 0xf1000000 0 0x20000>,
+ <0x0 0xf1060000 0 0x110000>;
+ interrupts = <GIC_PPI 9
+ (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_HIGH)>;
+ };
+
+ prr: chipid@fff00044 {
+ compatible = "renesas,prr";
+ reg = <0 0xfff00044 0 4>;
+ };
+ };
+
+ timer {
+ compatible = "arm,armv8-timer";
+ interrupts-extended = <&gic GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
+ <&gic GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
+ <&gic GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
+ <&gic GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
+ };
+};
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 15/16] arm64: dts: renesas: Add Renesas Spider boards support
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
` (13 preceding siblings ...)
2021-11-16 7:41 ` [PATCH 14/16] arm64: dts: renesas: Add Renesas R8A779F0 SoC support Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-24 14:06 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 16/16] arm64: defconfig: Enable R-Car S4-8 Yoshihiro Shimoda
15 siblings, 1 reply; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda,
Takehito Nakamura
Initial support for the Renesas Spider CPU and BreakOut boards
support.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Tested-by: Takehito Nakamura <takehito.nakamura.nx@renesas.com>
---
arch/arm64/boot/dts/renesas/Makefile | 2 ++
.../boot/dts/renesas/r8a779f0-spider-cpu.dtsi | 36 +++++++++++++++++++
.../boot/dts/renesas/r8a779f0-spider.dts | 22 ++++++++++++
3 files changed, 60 insertions(+)
create mode 100644 arch/arm64/boot/dts/renesas/r8a779f0-spider-cpu.dtsi
create mode 100644 arch/arm64/boot/dts/renesas/r8a779f0-spider.dts
diff --git a/arch/arm64/boot/dts/renesas/Makefile b/arch/arm64/boot/dts/renesas/Makefile
index d1c5c21d8d14..5bc8065a7864 100644
--- a/arch/arm64/boot/dts/renesas/Makefile
+++ b/arch/arm64/boot/dts/renesas/Makefile
@@ -63,6 +63,8 @@ dtb-$(CONFIG_ARCH_R8A77995) += r8a77995-draak.dtb
dtb-$(CONFIG_ARCH_R8A779A0) += r8a779a0-falcon.dtb
+dtb-$(CONFIG_ARCH_R8A779F0) += r8a779f0-spider.dtb
+
dtb-$(CONFIG_ARCH_R8A77951) += r8a779m1-salvator-xs.dtb
dtb-$(CONFIG_ARCH_R8A77951) += r8a779m1-ulcb.dtb
dtb-$(CONFIG_ARCH_R8A77951) += r8a779m1-ulcb-kf.dtb
diff --git a/arch/arm64/boot/dts/renesas/r8a779f0-spider-cpu.dtsi b/arch/arm64/boot/dts/renesas/r8a779f0-spider-cpu.dtsi
new file mode 100644
index 000000000000..156586532c84
--- /dev/null
+++ b/arch/arm64/boot/dts/renesas/r8a779f0-spider-cpu.dtsi
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the Spider CPU board
+ *
+ * Copyright (C) 2021 Renesas Electronics Corp.
+ */
+
+#include "r8a779f0.dtsi"
+
+/ {
+ model = "Renesas Spider CPU board";
+ compatible = "renesas,spider-cpu", "renesas,r8a779f0";
+
+ memory@48000000 {
+ device_type = "memory";
+ /* first 128MB is reserved for secure area. */
+ reg = <0x0 0x48000000 0x0 0x78000000>;
+ };
+
+ memory@480000000 {
+ device_type = "memory";
+ reg = <0x4 0x80000000 0x0 0x80000000>;
+ };
+};
+
+&extal_clk {
+ clock-frequency = <20000000>;
+};
+
+&extalr_clk {
+ clock-frequency = <32768>;
+};
+
+&scif3 {
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a779f0-spider.dts b/arch/arm64/boot/dts/renesas/r8a779f0-spider.dts
new file mode 100644
index 000000000000..f286254b41d8
--- /dev/null
+++ b/arch/arm64/boot/dts/renesas/r8a779f0-spider.dts
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the Spider CPU and BreakOut boards
+ *
+ * Copyright (C) 2021 Renesas Electronics Corp.
+ */
+
+/dts-v1/;
+#include "r8a779f0-spider-cpu.dtsi"
+
+/ {
+ model = "Renesas Spider CPU and Breakout boards based on r8a779f0";
+ compatible = "renesas,spider-breakout", "renesas,spider-cpu", "renesas,r8a779f0";
+
+ aliases {
+ serial0 = &scif3;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+};
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* [PATCH 16/16] arm64: defconfig: Enable R-Car S4-8
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
` (14 preceding siblings ...)
2021-11-16 7:41 ` [PATCH 15/16] arm64: dts: renesas: Add Renesas Spider boards support Yoshihiro Shimoda
@ 2021-11-16 7:41 ` Yoshihiro Shimoda
2021-11-24 14:03 ` Geert Uytterhoeven
15 siblings, 1 reply; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-16 7:41 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh+dt, gregkh, jirislaby
Cc: linux-renesas-soc, devicetree, linux-serial, Yoshihiro Shimoda
Enable the Renesas R-Car S4-8 (R8A779F0) SoC in the ARM64 defconfig.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
arch/arm64/configs/defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index f2e2b9bdd702..04db99bfbf9d 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -1069,6 +1069,7 @@ CONFIG_ARCH_R8A77980=y
CONFIG_ARCH_R8A77990=y
CONFIG_ARCH_R8A77995=y
CONFIG_ARCH_R8A779A0=y
+CONFIG_ARCH_R8A779F0=y
CONFIG_ARCH_R9A07G044=y
CONFIG_ROCKCHIP_PM_DOMAINS=y
CONFIG_ARCH_TEGRA_132_SOC=y
--
2.25.1
^ permalink raw reply related [flat|nested] 47+ messages in thread
* Re: [PATCH 02/16] dt-bindings: arm: renesas: Document Renesas Spider boards
2021-11-16 7:41 ` [PATCH 02/16] dt-bindings: arm: renesas: Document Renesas Spider boards Yoshihiro Shimoda
@ 2021-11-16 14:02 ` Rob Herring
2021-11-18 17:53 ` Geert Uytterhoeven
1 sibling, 0 replies; 47+ messages in thread
From: Rob Herring @ 2021-11-16 14:02 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: gregkh, magnus.damm, jirislaby, geert+renesas, robh+dt,
linux-renesas-soc, devicetree, linux-serial
On Tue, 16 Nov 2021 16:41:16 +0900, Yoshihiro Shimoda wrote:
> Add device tree bindings documentation for Renesas R-Car S4-8
> Spider CPU and BreakOut boards.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> ---
> Documentation/devicetree/bindings/arm/renesas.yaml | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:
./Documentation/devicetree/bindings/arm/renesas.yaml:324:9: [error] duplication of key "items" in mapping (key-duplicates)
dtschema/dtc warnings/errors:
make[1]: *** Deleting file 'Documentation/devicetree/bindings/arm/renesas.example.dts'
Traceback (most recent call last):
File "/usr/local/bin/dt-extract-example", line 45, in <module>
binding = yaml.load(open(args.yamlfile, encoding='utf-8').read())
File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/main.py", line 434, in load
return constructor.get_single_data()
File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 121, in get_single_data
return self.construct_document(node)
File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 131, in construct_document
for _dummy in generator:
File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 674, in construct_yaml_map
value = self.construct_mapping(node)
File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 445, in construct_mapping
return BaseConstructor.construct_mapping(self, node, deep=deep)
File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 263, in construct_mapping
if self.check_mapping_key(node, key_node, mapping, key, value):
File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 294, in check_mapping_key
raise DuplicateKeyError(*args)
ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping
in "<unicode string>", line 318, column 9
found duplicate key "items" with value "[]" (original value: "[]")
in "<unicode string>", line 324, column 9
To suppress this check see:
http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys
make[1]: *** [Documentation/devicetree/bindings/Makefile:25: Documentation/devicetree/bindings/arm/renesas.example.dts] Error 1
make[1]: *** Waiting for unfinished jobs....
Traceback (most recent call last):
File "/usr/local/bin/dt-doc-validate", line 25, in check_doc
testtree = dtschema.load(filename, line_number=line_number)
File "/usr/local/lib/python3.8/dist-packages/dtschema/lib.py", line 656, in load
return yaml.load(f.read())
File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/main.py", line 434, in load
return constructor.get_single_data()
File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 121, in get_single_data
return self.construct_document(node)
File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 131, in construct_document
for _dummy in generator:
File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 674, in construct_yaml_map
value = self.construct_mapping(node)
File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 445, in construct_mapping
return BaseConstructor.construct_mapping(self, node, deep=deep)
File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 263, in construct_mapping
if self.check_mapping_key(node, key_node, mapping, key, value):
File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 294, in check_mapping_key
raise DuplicateKeyError(*args)
ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping
in "<unicode string>", line 318, column 9
found duplicate key "items" with value "[]" (original value: "[]")
in "<unicode string>", line 324, column 9
To suppress this check see:
http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/dt-doc-validate", line 67, in <module>
ret = check_doc(f)
File "/usr/local/bin/dt-doc-validate", line 30, in check_doc
print(filename + ":", exc.path[-1], exc.message, file=sys.stderr)
AttributeError: 'DuplicateKeyError' object has no attribute 'path'
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/arm/renesas.yaml: ignoring, error parsing file
warning: no schema found in file: ./Documentation/devicetree/bindings/arm/renesas.yaml
make: *** [Makefile:1413: dt_binding_check] Error 2
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/patch/1555677
This check can fail if there are any dependencies. The base for a patch
series is generally the most recent rc1.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit.
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 01/16] dt-bindings: arm: renesas: Document R-Car S4-8 SoC DT bindings
2021-11-16 7:41 ` [PATCH 01/16] dt-bindings: arm: renesas: Document R-Car S4-8 SoC DT bindings Yoshihiro Shimoda
@ 2021-11-18 17:50 ` Geert Uytterhoeven
0 siblings, 0 replies; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-18 17:50 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Geert Uytterhoeven, Magnus Damm, Rob Herring, Greg KH,
Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Add device tree bindings documentation for Renesas R-Car S4-8
> (r8a779f0).
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
i.e. will queue in renesas-devel for v5.17.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 02/16] dt-bindings: arm: renesas: Document Renesas Spider boards
2021-11-16 7:41 ` [PATCH 02/16] dt-bindings: arm: renesas: Document Renesas Spider boards Yoshihiro Shimoda
2021-11-16 14:02 ` Rob Herring
@ 2021-11-18 17:53 ` Geert Uytterhoeven
2021-11-19 2:14 ` Yoshihiro Shimoda
1 sibling, 1 reply; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-18 17:53 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Shimoda-san,
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Add device tree bindings documentation for Renesas R-Car S4-8
> Spider CPU and BreakOut boards.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Thanks for your patch!
> --- a/Documentation/devicetree/bindings/arm/renesas.yaml
> +++ b/Documentation/devicetree/bindings/arm/renesas.yaml
> @@ -317,6 +317,14 @@ properties:
>
> - description: R-Car S4-8 (R8A779F0)
> items:
> + - enum:
> + - renesas,spider-cpu # Spider CPU board (RTP8A779FASKB0SC2S)
> + - const: renesas,r8a779f0
> +
> + items:
Missing "-" in front of "items:".
> + - enum:
> + - renesas,spider-breakout # Spider BreakOut board (RTP8A779F0ASKB0SB0S)
> + - const: renesas,spider-cpu
> - const: renesas,r8a779f0
>
> - description: R-Car H3e (R8A779M0)
The rest LGTM.
Reading[1], I assume "RTP8A779F0ASKB0SP2S" is the part number of the
full kit?
[1] https://www.renesas.com/us/en/products/automotive-products/automotive-system-chips-socs/rtp8a779f0askb0sp2s-r-car-s4-reference-boardspider
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 03/16] dt-bindings: reset: renesas,rst: Document r8a779f0 reset module
2021-11-16 7:41 ` [PATCH 03/16] dt-bindings: reset: renesas,rst: Document r8a779f0 reset module Yoshihiro Shimoda
@ 2021-11-18 18:19 ` Geert Uytterhoeven
0 siblings, 0 replies; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-18 18:19 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Document bindings for the R-Car S4-8 (R8A779F0) reset module.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
i.e. will queue in renesas-devel for v5.17.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 04/16] dt-bindings: power: renesas,rcar-sysc: Document r8a779f0 SYSC bindings
2021-11-16 7:41 ` [PATCH 04/16] dt-bindings: power: renesas,rcar-sysc: Document r8a779f0 SYSC bindings Yoshihiro Shimoda
@ 2021-11-18 18:38 ` Geert Uytterhoeven
0 siblings, 0 replies; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-18 18:38 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Document bindings for the R-Car S4-8 (aka R8A779F0) SYSC block.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
i.e. will queue in renesas-devel for v5.17.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 05/16] dt-bindings: power: Add r8a779f0 SYSC power domain definitions
2021-11-16 7:41 ` [PATCH 05/16] dt-bindings: power: Add r8a779f0 SYSC power domain definitions Yoshihiro Shimoda
@ 2021-11-18 18:42 ` Geert Uytterhoeven
2021-11-19 2:16 ` Yoshihiro Shimoda
0 siblings, 1 reply; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-18 18:42 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Shimoda-san,
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Add power domain indices for R-Car S4-8 (r8a779f0).
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Thanks for your patch!
> --- /dev/null
> +++ b/include/dt-bindings/power/r8a779f0-sysc.h
> @@ -0,0 +1,30 @@
> +/* SPDX-License-Identifier: (GPL-2.0 or MIT) */
> +/*
> + * Copyright (C) 2021 Renesas Electronics Corp.
> + */
> +#ifndef __DT_BINDINGS_POWER_R8A779F0_SYSC_H__
> +#define __DT_BINDINGS_POWER_R8A779F0_SYSC_H__
> +
> +/*
> + * These power domain indices match the Power Domain Register Numbers (PDR)
> + */
> +
> +#define R8A779F0_PD_A1E0D0C0 0
> +#define R8A779F0_PD_A1E0D0C1 1
> +#define R8A779F0_PD_A1E0D1C0 2
> +#define R8A779F0_PD_A1E0D1C1 3
> +#define R8A779F0_PD_A1E1D0C0 4
> +#define R8A779F0_PD_A1E1D0C1 5
> +#define R8A779F0_PD_A1E1D1C0 6
> +#define R8A779F0_PD_A1E1D1C1 7
> +#define R8A779F0_PD_A2E0D0 16
> +#define R8A779F0_PD_A2E0D1 17
> +#define R8A779F0_PD_A2E1D0 18
> +#define R8A779F0_PD_A2E1D1 19
> +#define R8A779F0_PD_A3E0 20
> +#define R8A779F0_PD_A3E1 21
The above are fine.
> +
> +/* Always-on power area */
> +#define R8A779F0_PD_ALWAYS_ON 22
This should be 64 (i.e. beyond the range supported by the hardware
block).
> +
> +#endif /* __DT_BINDINGS_POWER_R8A779A0_SYSC_H__*/
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 06/16] dt-bindings: clock: renesas,cpg-mssr: Document r8a779f0
2021-11-16 7:41 ` [PATCH 06/16] dt-bindings: clock: renesas,cpg-mssr: Document r8a779f0 Yoshihiro Shimoda
@ 2021-11-18 18:43 ` Geert Uytterhoeven
0 siblings, 0 replies; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-18 18:43 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Add binding documentation for the R-Car S4-8 (R8A779F0) Clock Pulse
> Generator.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
i.e. will queue in renesas-clk-for-v5.17.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 07/16] dt-bindings: clock: Add r8a779f0 CPG Core Clock Definitions
2021-11-16 7:41 ` [PATCH 07/16] dt-bindings: clock: Add r8a779f0 CPG Core Clock Definitions Yoshihiro Shimoda
@ 2021-11-18 18:53 ` Geert Uytterhoeven
2021-11-19 2:21 ` Yoshihiro Shimoda
0 siblings, 1 reply; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-18 18:53 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Shimoda-san,
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Add all Clock Pulse Generator Core Clock Outputs for the Renesas
> R-Car S4-8 (R8A779F0) SoC.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Thanks for your patch!
> --- /dev/null
> +++ b/include/dt-bindings/clock/r8a779f0-cpg-mssr.h
> @@ -0,0 +1,65 @@
> +/* SPDX-License-Identifier: (GPL-2.0 or MIT) */
> +/*
> + * Copyright (C) 2021 Renesas Electronics Corp.
> + */
> +#ifndef __DT_BINDINGS_CLOCK_R8A779F0_CPG_MSSR_H__
> +#define __DT_BINDINGS_CLOCK_R8A779F0_CPG_MSSR_H__
> +
> +#include <dt-bindings/clock/renesas-cpg-mssr.h>
> +
> +/* r8a779f0 CPG Core Clocks */
> +
> +#define R8A779F0_CLK_ZX 0
> +#define R8A779F0_CLK_ZS 1
> +#define R8A779F0_CLK_ZT 2
> +#define R8A779F0_CLK_ZTR 3
> +#define R8A779F0_CLK_S0D2 4
> +#define R8A779F0_CLK_S0D3 5
> +#define R8A779F0_CLK_S0D4 6
> +#define R8A779F0_CLK_S0D2_MM 7
> +#define R8A779F0_CLK_S0D3_MM 8
> +#define R8A779F0_CLK_S0D4_MM 9
> +#define R8A779F0_CLK_S0D2_RT 10
> +#define R8A779F0_CLK_S0D3_RT 11
> +#define R8A779F0_CLK_S0D4_RT 12
> +#define R8A779F0_CLK_S0D6_RT 13
> +#define R8A779F0_CLK_S0D3_PER 14
> +#define R8A779F0_CLK_S0D6_PER 15
> +#define R8A779F0_CLK_S0D12_PER 16
> +#define R8A779F0_CLK_S0D24_PER 17
> +#define R8A779F0_CLK_S0D2_HSC 18
> +#define R8A779F0_CLK_S0D3_HSC 19
> +#define R8A779F0_CLK_S0D4_HSC 20
> +#define R8A779F0_CLK_S0D6_HSC 21
> +#define R8A779F0_CLK_S0D12_HSC 22
> +#define R8A779F0_CLK_S0D2_CC 23
> +#define R8A779F0_CLK_CL 24
> +#define R8A779F0_CLK_CL16M 25
> +#define R8A779F0_CLK_CL16M_MM 26
> +#define R8A779F0_CLK_CL16M_RT 27
> +#define R8A779F0_CLK_CL16M_PER 28
> +#define R8A779F0_CLK_CL16M_HSC 29
> +#define R8A779F0_CLK_Z0 30
> +#define R8A779F0_CLK_Z1 31
> +#define R8A779F0_CLK_ZB3 32
> +#define R8A779F0_CLK_ZB3D2 33
> +#define R8A779F0_CLK_ZB3D4 34
> +#define R8A779F0_CLK_SDSRC 35
I think we can leave out SDSRC, like on the other SoCs, as it's an
internal clock.
> +#define R8A779F0_CLK_SD0H 36
> +#define R8A779F0_CLK_SD0 37
> +#define R8A779F0_CLK_RPC 38
> +#define R8A779F0_CLK_RPCD2 39
> +#define R8A779F0_CLK_MSO 40
> +#define R8A779F0_CLK_SASYNCRT 41
> +#define R8A779F0_CLK_SASYNCPERD1 42
> +#define R8A779F0_CLK_SASYNCPERD2 43
> +#define R8A779F0_CLK_SASYNCPERD4 44
> +#define R8A779F0_CLK_DBGSOC_HSC 45
> +#define R8A779F0_CLK_RSW2 46
> +#define R8A779F0_CLK_OSC 47
> +#define R8A779F0_CLK_ZR 48
> +#define R8A779F0_CLK_CPEX 49
> +#define R8A779F0_CLK_CBFUSA 50
> +#define R8A779F0_CLK_R 51
The rest looks good to me.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 08/16] dt-bindings: serial: renesas,scif: Document r8a779f0 bindings
2021-11-16 7:41 ` [PATCH 08/16] dt-bindings: serial: renesas,scif: Document r8a779f0 bindings Yoshihiro Shimoda
@ 2021-11-18 18:56 ` Geert Uytterhoeven
2021-11-19 2:24 ` Yoshihiro Shimoda
0 siblings, 1 reply; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-18 18:56 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Shimoda-san,
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> R-Car S4-8 (R8A779F0) SoC has the R-Car Gen4 compatible SCIF ports,
> so document the SoC specific bindings.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Thanks for your patch!
> --- a/Documentation/devicetree/bindings/serial/renesas,scif.yaml
> +++ b/Documentation/devicetree/bindings/serial/renesas,scif.yaml
> @@ -64,6 +64,12 @@ properties:
> - const: renesas,rcar-gen3-scif # R-Car Gen3 and RZ/G2
> - const: renesas,scif # generic SCIF compatible UART
>
> + - items:
> + - enum:
> + - renesas,scif-r8a779f0 # R-Car S4-8
> + - const: renesas,rcar-gen4-scif # R-Car Gen4
> + - const: renesas,scif # generic SCIF compatible UART
> +
OK.
> - items:
> - enum:
> - renesas,scif-r9a07g044 # RZ/G2{L,LC}
Please add "renesas,rcar-gen4-scif" to the block that requires resets.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 09/16] soc: renesas: Identify R-Car S4-8
2021-11-16 7:41 ` [PATCH 09/16] soc: renesas: Identify R-Car S4-8 Yoshihiro Shimoda
@ 2021-11-18 19:03 ` Geert Uytterhoeven
2021-11-19 2:27 ` Yoshihiro Shimoda
2021-11-18 19:04 ` Geert Uytterhoeven
1 sibling, 1 reply; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-18 19:03 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Shimoda-san,
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Add support for identifying the R-Car S4-8 (R8A779F0) SoC.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Thanks for your patch!
> --- a/drivers/soc/renesas/Kconfig
> +++ b/drivers/soc/renesas/Kconfig
> @@ -256,6 +256,13 @@ config ARCH_R8A779A0
> help
> This enables support for the Renesas R-Car V3U SoC.
>
> +config ARCH_R8A779F0
> + bool "ARM64 Platform support for R-Car S4-8"
> + select ARCH_RCAR_GEN3
> + select SYSC_R8A779F0
> + help
> + This enables support for the Renesas R-Car S4-8 SoC.
> +
Please keep sort order (alphabetical, not by part number).
> config ARCH_R8A774C0
> bool "ARM64 Platform support for RZ/G2E"
> select ARCH_RCAR_GEN3
> diff --git a/drivers/soc/renesas/renesas-soc.c b/drivers/soc/renesas/renesas-soc.c
> index 7961b0be1850..857a42a82747 100644
> --- a/drivers/soc/renesas/renesas-soc.c
> +++ b/drivers/soc/renesas/renesas-soc.c
> @@ -33,6 +33,11 @@ static const struct renesas_family fam_rcar_gen3 __initconst __maybe_unused = {
> .reg = 0xfff00044, /* PRR (Product Register) */
> };
>
> +static const struct renesas_family fam_rcar_gen4 __initconst __maybe_unused = {
> + .name = "R-Car Gen4",
> + .reg = 0xfff00044, /* PRR (Product Register) */
Please drop ".reg", which is only meant for existing SoCs.
For new SoCs, we rely on the presence of a "renesas,prr" node in DT.
> +};
The rest looks good to me.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 09/16] soc: renesas: Identify R-Car S4-8
2021-11-16 7:41 ` [PATCH 09/16] soc: renesas: Identify R-Car S4-8 Yoshihiro Shimoda
2021-11-18 19:03 ` Geert Uytterhoeven
@ 2021-11-18 19:04 ` Geert Uytterhoeven
2021-11-19 2:32 ` Yoshihiro Shimoda
1 sibling, 1 reply; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-18 19:04 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Shimoda-san,
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Add support for identifying the R-Car S4-8 (R8A779F0) SoC.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Thanks for your patch!
> --- a/drivers/soc/renesas/Kconfig
> +++ b/drivers/soc/renesas/Kconfig
> @@ -256,6 +256,13 @@ config ARCH_R8A779A0
> help
> This enables support for the Renesas R-Car V3U SoC.
>
> +config ARCH_R8A779F0
> + bool "ARM64 Platform support for R-Car S4-8"
> + select ARCH_RCAR_GEN3
> + select SYSC_R8A779F0
"SYSC_R8A779F0" is only defined in [PATCH 10/16], so you may want to
reorder your series. Or I will while applying later ;-)
> + help
> + This enables support for the Renesas R-Car S4-8 SoC.
> +
> config ARCH_R8A774C0
> bool "ARM64 Platform support for RZ/G2E"
> select ARCH_RCAR_GEN3
> diff --git a/drivers/soc/renesas/renesas-soc.c b/drivers/soc/renesas/renesas-soc.c
> index 7961b0be1850..857a42a82747 100644
> --- a/drivers/soc/renesas/renesas-soc.c
> +++ b/drivers/soc/renesas/renesas-soc.c
> @@ -33,6 +33,11 @@ static const struct renesas_family fam_rcar_gen3 __initconst __maybe_unused = {
> .reg = 0xfff00044, /* PRR (Product Register) */
> };
>
> +static const struct renesas_family fam_rcar_gen4 __initconst __maybe_unused = {
> + .name = "R-Car Gen4",
> + .reg = 0xfff00044, /* PRR (Product Register) */
> +};
> +
> static const struct renesas_family fam_rmobile __initconst __maybe_unused = {
> .name = "R-Mobile",
> .reg = 0xe600101c, /* CCCR (Common Chip Code Register) */
> @@ -214,6 +219,11 @@ static const struct renesas_soc soc_rcar_v3u __initconst __maybe_unused = {
> .id = 0x59,
> };
>
> +static const struct renesas_soc soc_rcar_s4 __initconst __maybe_unused = {
> + .family = &fam_rcar_gen4,
> + .id = 0x5a,
> +};
> +
> static const struct renesas_soc soc_shmobile_ag5 __initconst __maybe_unused = {
> .family = &fam_shmobile,
> .id = 0x37,
> @@ -319,6 +329,9 @@ static const struct of_device_id renesas_socs[] __initconst = {
> #ifdef CONFIG_ARCH_R8A779A0
> { .compatible = "renesas,r8a779a0", .data = &soc_rcar_v3u },
> #endif
> +#ifdef CONFIG_ARCH_R8A779F0
> + { .compatible = "renesas,r8a779f0", .data = &soc_rcar_s4 },
> +#endif
> #if defined(CONFIG_ARCH_R9A07G044)
> { .compatible = "renesas,r9a07g044", .data = &soc_rz_g2l },
> #endif
> --
> 2.25.1
>
--
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 11/16] soc: renesas: rcar-rst: Add support for R-Car S4-8
2021-11-16 7:41 ` [PATCH 11/16] soc: renesas: rcar-rst: Add support for R-Car S4-8 Yoshihiro Shimoda
@ 2021-11-18 19:10 ` Geert Uytterhoeven
2021-11-19 2:35 ` Yoshihiro Shimoda
0 siblings, 1 reply; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-18 19:10 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Shimoda-san,
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Add support for R-Car S4-8 (R8A779F0) to the R-Car RST driver.
> The register map of R-Car S4-8 is the same as R-Car V3U so that
> renames "V3U" and "r8a779a0" with "Gen4".
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Thanks for your patch!
> --- a/drivers/soc/renesas/rcar-rst.c
> +++ b/drivers/soc/renesas/rcar-rst.c
> @@ -12,7 +12,7 @@
>
> #define WDTRSTCR_RESET 0xA55A0002
> #define WDTRSTCR 0x0054
> -#define V3U_WDTRSTCR 0x0010
> +#define GEN4_WDTRSTCR 0x0010
V3U_WDTRSTCR handling is not present upstream, as it should be
handled by the boot loader (ATF?), like on other R-Car Gen3 SoCs.
Likewise, GEN4_WDTRSTCR should not become present upstream.
So please split this in two patches:
1. A patch against upstream, just adding basic R-Car S4-8 support,
2. An optional second patch to enable GEN4_WDTRSTCR in
renesas-drivers, to serve as an interim solution until the
bootloader is fixed.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 13/16] tty: serial: sh-sci: Add support for R-Car Gen4
2021-11-16 7:41 ` [PATCH 13/16] tty: serial: sh-sci: Add support for R-Car Gen4 Yoshihiro Shimoda
@ 2021-11-18 19:11 ` Geert Uytterhoeven
0 siblings, 0 replies; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-18 19:11 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Add serial support for R-Car Gen4 SoC.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* RE: [PATCH 02/16] dt-bindings: arm: renesas: Document Renesas Spider boards
2021-11-18 17:53 ` Geert Uytterhoeven
@ 2021-11-19 2:14 ` Yoshihiro Shimoda
0 siblings, 0 replies; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-19 2:14 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Geert-san,
Thank you for your review!
> From: Geert Uytterhoeven, Sent: Friday, November 19, 2021 2:54 AM
>
> On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com> wrote:
> > Add device tree bindings documentation for Renesas R-Car S4-8
> > Spider CPU and BreakOut boards.
> >
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
>
> Thanks for your patch!
>
> > --- a/Documentation/devicetree/bindings/arm/renesas.yaml
> > +++ b/Documentation/devicetree/bindings/arm/renesas.yaml
> > @@ -317,6 +317,14 @@ properties:
> >
> > - description: R-Car S4-8 (R8A779F0)
> > items:
> > + - enum:
> > + - renesas,spider-cpu # Spider CPU board (RTP8A779FASKB0SC2S)
I realized that the part number should be RTP8A779F0ASKB0SC2S.
~
I'll fix it in v2.
> > + - const: renesas,r8a779f0
> > +
> > + items:
>
> Missing "-" in front of "items:".
Oops. I'll fix it.
> > + - enum:
> > + - renesas,spider-breakout # Spider BreakOut board (RTP8A779F0ASKB0SB0S)
> > + - const: renesas,spider-cpu
> > - const: renesas,r8a779f0
> >
> > - description: R-Car H3e (R8A779M0)
>
> The rest LGTM.
> Reading[1], I assume "RTP8A779F0ASKB0SP2S" is the part number of the
> full kit?
Yes, your assumption is correct.
Best regards,
Yoshihiro Shimoda
^ permalink raw reply [flat|nested] 47+ messages in thread
* RE: [PATCH 05/16] dt-bindings: power: Add r8a779f0 SYSC power domain definitions
2021-11-18 18:42 ` Geert Uytterhoeven
@ 2021-11-19 2:16 ` Yoshihiro Shimoda
0 siblings, 0 replies; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-19 2:16 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Geert-san,
Thank you for your review!
> From: Geert Uytterhoeven, Sent: Friday, November 19, 2021 3:42 AM
>
> On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com> wrote:
> > Add power domain indices for R-Car S4-8 (r8a779f0).
> >
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
>
> Thanks for your patch!
>
> > --- /dev/null
> > +++ b/include/dt-bindings/power/r8a779f0-sysc.h
> > @@ -0,0 +1,30 @@
<snip>
> > +
> > +/* Always-on power area */
> > +#define R8A779F0_PD_ALWAYS_ON 22
>
> This should be 64 (i.e. beyond the range supported by the hardware
> block).
I got it. I'll fix it in v2.
Best regards,
Yoshihiro Shimoda
^ permalink raw reply [flat|nested] 47+ messages in thread
* RE: [PATCH 07/16] dt-bindings: clock: Add r8a779f0 CPG Core Clock Definitions
2021-11-18 18:53 ` Geert Uytterhoeven
@ 2021-11-19 2:21 ` Yoshihiro Shimoda
0 siblings, 0 replies; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-19 2:21 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Geert-san,
Thank you for your review!
> From: Geert Uytterhoeven, Sent: Friday, November 19, 2021 3:53 AM
>
> Hi Shimoda-san,
>
> On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com> wrote:
> > Add all Clock Pulse Generator Core Clock Outputs for the Renesas
> > R-Car S4-8 (R8A779F0) SoC.
> >
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
>
> Thanks for your patch!
>
> > --- /dev/null
> > +++ b/include/dt-bindings/clock/r8a779f0-cpg-mssr.h
> > @@ -0,0 +1,65 @@
<snip>
> > +#define R8A779F0_CLK_SDSRC 35
>
> I think we can leave out SDSRC, like on the other SoCs, as it's an
> internal clock.
I got it. I'll fix it in v2.
Best regards,
Yoshihiro Shimoda
^ permalink raw reply [flat|nested] 47+ messages in thread
* RE: [PATCH 08/16] dt-bindings: serial: renesas,scif: Document r8a779f0 bindings
2021-11-18 18:56 ` Geert Uytterhoeven
@ 2021-11-19 2:24 ` Yoshihiro Shimoda
0 siblings, 0 replies; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-19 2:24 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Geert-san,
Thank you for your review!
> From: Geert Uytterhoeven, Sent: Friday, November 19, 2021 3:56 AM
>
> Hi Shimoda-san,
>
> On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com> wrote:
> > R-Car S4-8 (R8A779F0) SoC has the R-Car Gen4 compatible SCIF ports,
> > so document the SoC specific bindings.
> >
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
>
> Thanks for your patch!
>
> > --- a/Documentation/devicetree/bindings/serial/renesas,scif.yaml
> > +++ b/Documentation/devicetree/bindings/serial/renesas,scif.yaml
<snip>
> > - items:
> > - enum:
> > - renesas,scif-r9a07g044 # RZ/G2{L,LC}
>
> Please add "renesas,rcar-gen4-scif" to the block that requires resets.
Oops. I got it. I'll add it in v2.
Best regards,
Yoshihiro Shimoda
^ permalink raw reply [flat|nested] 47+ messages in thread
* RE: [PATCH 09/16] soc: renesas: Identify R-Car S4-8
2021-11-18 19:03 ` Geert Uytterhoeven
@ 2021-11-19 2:27 ` Yoshihiro Shimoda
0 siblings, 0 replies; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-19 2:27 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Geert-san,
Thank you for your review1
> From: Geert Uytterhoeven, Sent: Friday, November 19, 2021 4:04 AM
>
> Hi Shimoda-san,
>
> On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com> wrote:
> > Add support for identifying the R-Car S4-8 (R8A779F0) SoC.
> >
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
>
> Thanks for your patch!
>
> > --- a/drivers/soc/renesas/Kconfig
> > +++ b/drivers/soc/renesas/Kconfig
> > @@ -256,6 +256,13 @@ config ARCH_R8A779A0
> > help
> > This enables support for the Renesas R-Car V3U SoC.
> >
> > +config ARCH_R8A779F0
> > + bool "ARM64 Platform support for R-Car S4-8"
> > + select ARCH_RCAR_GEN3
> > + select SYSC_R8A779F0
> > + help
> > + This enables support for the Renesas R-Car S4-8 SoC.
> > +
>
> Please keep sort order (alphabetical, not by part number).
I'm sorry. I didn't realized that. I'll fix it in v2.
> > config ARCH_R8A774C0
> > bool "ARM64 Platform support for RZ/G2E"
> > select ARCH_RCAR_GEN3
> > diff --git a/drivers/soc/renesas/renesas-soc.c b/drivers/soc/renesas/renesas-soc.c
> > index 7961b0be1850..857a42a82747 100644
> > --- a/drivers/soc/renesas/renesas-soc.c
> > +++ b/drivers/soc/renesas/renesas-soc.c
> > @@ -33,6 +33,11 @@ static const struct renesas_family fam_rcar_gen3 __initconst __maybe_unused = {
> > .reg = 0xfff00044, /* PRR (Product Register) */
> > };
> >
> > +static const struct renesas_family fam_rcar_gen4 __initconst __maybe_unused = {
> > + .name = "R-Car Gen4",
> > + .reg = 0xfff00044, /* PRR (Product Register) */
>
> Please drop ".reg", which is only meant for existing SoCs.
> For new SoCs, we rely on the presence of a "renesas,prr" node in DT.
I got it. I'll fix it in v2.
Best regards,
Yoshihiro Shimoda
^ permalink raw reply [flat|nested] 47+ messages in thread
* RE: [PATCH 09/16] soc: renesas: Identify R-Car S4-8
2021-11-18 19:04 ` Geert Uytterhoeven
@ 2021-11-19 2:32 ` Yoshihiro Shimoda
0 siblings, 0 replies; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-19 2:32 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Geert-san,
Thank you for your review!
> From: Geert Uytterhoeven, Sent: Friday, November 19, 2021 4:05 AM
>
> Hi Shimoda-san,
>
> On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com> wrote:
> > Add support for identifying the R-Car S4-8 (R8A779F0) SoC.
> >
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
>
> Thanks for your patch!
>
> > --- a/drivers/soc/renesas/Kconfig
> > +++ b/drivers/soc/renesas/Kconfig
> > @@ -256,6 +256,13 @@ config ARCH_R8A779A0
> > help
> > This enables support for the Renesas R-Car V3U SoC.
> >
> > +config ARCH_R8A779F0
> > + bool "ARM64 Platform support for R-Car S4-8"
> > + select ARCH_RCAR_GEN3
> > + select SYSC_R8A779F0
>
> "SYSC_R8A779F0" is only defined in [PATCH 10/16], so you may want to
> reorder your series. Or I will while applying later ;-)
Oops. Thank you for pointed it out. I'll reorder my series on v2.
Best regards,
Yoshihiro Shimoda
^ permalink raw reply [flat|nested] 47+ messages in thread
* RE: [PATCH 11/16] soc: renesas: rcar-rst: Add support for R-Car S4-8
2021-11-18 19:10 ` Geert Uytterhoeven
@ 2021-11-19 2:35 ` Yoshihiro Shimoda
0 siblings, 0 replies; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-19 2:35 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Geert-san,
Thank you for your review!
> From: Geert Uytterhoeven, Sent: Friday, November 19, 2021 4:11 AM
>
> Hi Shimoda-san,
>
> On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com> wrote:
> > Add support for R-Car S4-8 (R8A779F0) to the R-Car RST driver.
> > The register map of R-Car S4-8 is the same as R-Car V3U so that
> > renames "V3U" and "r8a779a0" with "Gen4".
> >
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
>
> Thanks for your patch!
>
> > --- a/drivers/soc/renesas/rcar-rst.c
> > +++ b/drivers/soc/renesas/rcar-rst.c
> > @@ -12,7 +12,7 @@
> >
> > #define WDTRSTCR_RESET 0xA55A0002
> > #define WDTRSTCR 0x0054
> > -#define V3U_WDTRSTCR 0x0010
> > +#define GEN4_WDTRSTCR 0x0010
>
> V3U_WDTRSTCR handling is not present upstream, as it should be
> handled by the boot loader (ATF?), like on other R-Car Gen3 SoCs.
> Likewise, GEN4_WDTRSTCR should not become present upstream.
I'm sorry. I made this patch on renesas-driver and I didn't realized
this V3U_WDTRSTCR handling is not present upstream.
> So please split this in two patches:
> 1. A patch against upstream, just adding basic R-Car S4-8 support,
> 2. An optional second patch to enable GEN4_WDTRSTCR in
> renesas-drivers, to serve as an interim solution until the
> bootloader is fixed.
I got it. I'll make the 1. patch in v2 at this time.
Best regards,
Yoshihiro Shimoda
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 10/16] soc: renesas: r8a779f0-sysc: Add r8a779f0 support
2021-11-16 7:41 ` [PATCH 10/16] soc: renesas: r8a779f0-sysc: Add r8a779f0 support Yoshihiro Shimoda
@ 2021-11-23 16:18 ` Geert Uytterhoeven
2021-11-24 6:49 ` Yoshihiro Shimoda
0 siblings, 1 reply; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-23 16:18 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Shimoda-san,
Thanks for your patch!
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Add support for R-Car S4-8 (R8A779F0) SoC power areas and register
> access. This register specification is similar with R-Car V3U.
similar to
> So, introduces rcar-gen4-sysc.c for both V3U and S4-8.
introduce.
That makes perfect sense, as "the R-Car V3U SoC is based on the R-Car
Gen 4 architecture".
(https://www.renesas.com/us/en/products/automotive-products/automotive-system-chips-socs/r-car-v3u-best-class-r-car-v3u-asil-d-system-chip-automated-driving)
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> --- a/drivers/soc/renesas/Kconfig
> +++ b/drivers/soc/renesas/Kconfig
> @@ -359,6 +359,9 @@ config SYSC_R8A77970
> config SYSC_R8A779A0
> bool "System Controller support for R-Car V3U" if COMPILE_TEST
>
> +config SYSC_R8A779F0
> + bool "System Controller support for R-Car S4-8" if COMPILE_TEST
> +
Please retain sort order (alphabetically).
> config SYSC_RMOBILE
> bool "System Controller support for R-Mobile" if COMPILE_TEST
>
> diff --git a/drivers/soc/renesas/Makefile b/drivers/soc/renesas/Makefile
> index 9b29bed2a597..f6c5f8c3818c 100644
> --- a/drivers/soc/renesas/Makefile
> +++ b/drivers/soc/renesas/Makefile
> @@ -25,11 +25,12 @@ obj-$(CONFIG_SYSC_R8A77980) += r8a77980-sysc.o
> obj-$(CONFIG_SYSC_R8A77990) += r8a77990-sysc.o
> obj-$(CONFIG_SYSC_R8A77995) += r8a77995-sysc.o
> obj-$(CONFIG_SYSC_R8A779A0) += r8a779a0-sysc.o
> +obj-$(CONFIG_SYSC_R8A779F0) += r8a779f0-sysc.o
> ifdef CONFIG_SMP
> obj-$(CONFIG_ARCH_R9A06G032) += r9a06g032-smp.o
> endif
>
> # Family
> obj-$(CONFIG_RST_RCAR) += rcar-rst.o
> -obj-$(CONFIG_SYSC_RCAR) += rcar-sysc.o
> +obj-$(CONFIG_SYSC_RCAR) += rcar-sysc.o rcar-gen4-sysc.o
This means all R-Car kernels will always include support for both
R-Car Gen1/2/3 and R-Car Gen4.
I think this should be split.
The rest looks good to me, but I think it wouldn't hurt to split this
patch in two parts: one patch to generalize r8a779a0-sysc.c for R-Car
Gen4, and a second patch to introduce support for R-Car S4-8.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* RE: [PATCH 10/16] soc: renesas: r8a779f0-sysc: Add r8a779f0 support
2021-11-23 16:18 ` Geert Uytterhoeven
@ 2021-11-24 6:49 ` Yoshihiro Shimoda
0 siblings, 0 replies; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-24 6:49 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Geert-san,
> From: Geert Uytterhoeven, Sent: Wednesday, November 24, 2021 1:18 AM
>
> Hi Shimoda-san,
>
> Thanks for your patch!
>
> On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com> wrote:
> > Add support for R-Car S4-8 (R8A779F0) SoC power areas and register
> > access. This register specification is similar with R-Car V3U.
>
> similar to
>
> > So, introduces rcar-gen4-sysc.c for both V3U and S4-8.
>
> introduce.
I'll fix these works.
> That makes perfect sense, as "the R-Car V3U SoC is based on the R-Car
> Gen 4 architecture".
> (https://www.renesas.com/us/en/products/automotive-products/automotive-system-chips-socs/r-car-v3u-best-class-r-car-
> v3u-asil-d-system-chip-automated-driving)
I got it.
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
>
> > --- a/drivers/soc/renesas/Kconfig
> > +++ b/drivers/soc/renesas/Kconfig
> > @@ -359,6 +359,9 @@ config SYSC_R8A77970
> > config SYSC_R8A779A0
> > bool "System Controller support for R-Car V3U" if COMPILE_TEST
> >
> > +config SYSC_R8A779F0
> > + bool "System Controller support for R-Car S4-8" if COMPILE_TEST
> > +
>
> Please retain sort order (alphabetically).
Oops. I'll fix it on v2.
> > config SYSC_RMOBILE
> > bool "System Controller support for R-Mobile" if COMPILE_TEST
> >
> > diff --git a/drivers/soc/renesas/Makefile b/drivers/soc/renesas/Makefile
> > index 9b29bed2a597..f6c5f8c3818c 100644
> > --- a/drivers/soc/renesas/Makefile
> > +++ b/drivers/soc/renesas/Makefile
> > @@ -25,11 +25,12 @@ obj-$(CONFIG_SYSC_R8A77980) += r8a77980-sysc.o
> > obj-$(CONFIG_SYSC_R8A77990) += r8a77990-sysc.o
> > obj-$(CONFIG_SYSC_R8A77995) += r8a77995-sysc.o
> > obj-$(CONFIG_SYSC_R8A779A0) += r8a779a0-sysc.o
> > +obj-$(CONFIG_SYSC_R8A779F0) += r8a779f0-sysc.o
> > ifdef CONFIG_SMP
> > obj-$(CONFIG_ARCH_R9A06G032) += r9a06g032-smp.o
> > endif
> >
> > # Family
> > obj-$(CONFIG_RST_RCAR) += rcar-rst.o
> > -obj-$(CONFIG_SYSC_RCAR) += rcar-sysc.o
> > +obj-$(CONFIG_SYSC_RCAR) += rcar-sysc.o rcar-gen4-sysc.o
>
> This means all R-Car kernels will always include support for both
> R-Car Gen1/2/3 and R-Car Gen4.
> I think this should be split.
>
> The rest looks good to me, but I think it wouldn't hurt to split this
> patch in two parts: one patch to generalize r8a779a0-sysc.c for R-Car
> Gen4, and a second patch to introduce support for R-Car S4-8.
I got it. I'll split this patch in two parts in v2.
Best regards,
Yoshihiro Shimoda
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 12/16] clk: renesas: cpg-mssr: Add support for R-Car S4-8
2021-11-16 7:41 ` [PATCH 12/16] clk: renesas: cpg-mssr: " Yoshihiro Shimoda
@ 2021-11-24 13:48 ` Geert Uytterhoeven
2021-11-29 8:35 ` Yoshihiro Shimoda
0 siblings, 1 reply; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-24 13:48 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Shimoda-san,
Thanks for your patch!
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Initial support for R-Car S4-8 (r8a779f0), including core, module
> clocks, resets, and register access, because register specification
> differs from R-Car Gen2/3. The register layout of V3U is a similar
> with R-Car S4-8 so that renames CLK_REG_LAYOUT_RCAR_V3U as
> CLK_REG_LAYOUT_RCAR_GEN4. However, PLL names differ between V3U
> and S4-8.
This is a small difference, so I think more code can be shared between
R-Car V3U and S4-8 (see below).
> Inspired by patches in the BSP by LUU HOAI.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> drivers/clk/renesas/Kconfig | 10 ++
> drivers/clk/renesas/Makefile | 2 +
> drivers/clk/renesas/r8a779a0-cpg-mssr.c | 2 +-
> drivers/clk/renesas/r8a779f0-cpg-mssr.c | 188 ++++++++++++++++++++++++
> drivers/clk/renesas/rcar-gen4-cpg.c | 141 ++++++++++++++++++
> drivers/clk/renesas/rcar-gen4-cpg.h | 76 ++++++++++
> drivers/clk/renesas/renesas-cpg-mssr.c | 42 ++++--
> drivers/clk/renesas/renesas-cpg-mssr.h | 3 +-
> 8 files changed, 448 insertions(+), 16 deletions(-)
> create mode 100644 drivers/clk/renesas/r8a779f0-cpg-mssr.c
> create mode 100644 drivers/clk/renesas/rcar-gen4-cpg.c
> create mode 100644 drivers/clk/renesas/rcar-gen4-cpg.h
Just like for the SYSC driver, I think it wouldn't hurt to split this
patch in two parts: one patch to generalize r8a779a0-cpg-mssr.c for
R-Car Gen4, and a second patch to introduce support for R-Car S4-8.
> +static const struct cpg_core_clk r8a779f0_core_clks[] __initconst = {
> + /* External Clock Inputs */
> + DEF_INPUT("extal", CLK_EXTAL),
> + DEF_INPUT("extalr", CLK_EXTALR),
> +
> + /* Internal Core Clocks */
> + DEF_BASE(".main", CLK_MAIN, CLK_TYPE_GEN4_MAIN, CLK_EXTAL),
> + DEF_BASE(".pll1", CLK_PLL1, CLK_TYPE_GEN4_PLL1, CLK_MAIN),
> + DEF_BASE(".pll3", CLK_PLL3, CLK_TYPE_GEN4_PLL3, CLK_MAIN),
> + DEF_BASE(".pll2", CLK_PLL2, CLK_TYPE_GEN4_PLL2, CLK_MAIN),
> + DEF_BASE(".pll6", CLK_PLL6, CLK_TYPE_GEN4_PLL6, CLK_MAIN),
> + DEF_BASE(".pll5", CLK_PLL5, CLK_TYPE_GEN4_PLL5, CLK_MAIN),
Please sort PLLn by index.
> +
> + DEF_FIXED(".pll1_div2", CLK_PLL1_DIV2, CLK_PLL1, 2, 1),
> + DEF_FIXED(".pll2_div2", CLK_PLL2_DIV2, CLK_PLL2, 2, 1),
> + DEF_FIXED(".pll3_div2", CLK_PLL3_DIV2, CLK_PLL3, 2, 1),
> + DEF_FIXED(".pll5_div2", CLK_PLL5_DIV2, CLK_PLL5, 2, 1),
> + DEF_FIXED(".pll5_div4", CLK_PLL5_DIV4, CLK_PLL5_DIV2, 2, 1),
> + DEF_FIXED(".pll6_div2", CLK_PLL6_DIV2, CLK_PLL6, 2, 1),
> + DEF_FIXED(".s0", CLK_S0, CLK_PLL1_DIV2, 2, 1),
> + DEF_FIXED(".sdsrc", CLK_SDSRC, CLK_PLL5_DIV2, 2, 1),
This relies on the default setting of the SD-IF0 Clock Frequency
Control Register 1 (SD0CKCR1)?
> + DEF_RATE(".oco", CLK_OCO, 32768),
> +
> + DEF_BASE(".rpcsrc", CLK_RPCSRC, CLK_TYPE_GEN4_RPCSRC, CLK_PLL5),
> + DEF_BASE(".rpc", R8A779F0_CLK_RPC, CLK_TYPE_GEN4_RPC, CLK_RPCSRC),
> + DEF_BASE("rpcd2", R8A779F0_CLK_RPCD2, CLK_TYPE_GEN4_RPCD2, R8A779F0_CLK_RPC),
> +
> + /* Core Clock Outputs */
> + DEF_FIXED("s0d2", R8A779F0_CLK_S0D2, CLK_S0, 2, 1),
> + DEF_FIXED("s0d3", R8A779F0_CLK_S0D3, CLK_S0, 3, 1),
> + DEF_FIXED("s0d4", R8A779F0_CLK_S0D4, CLK_S0, 4, 1),
> + DEF_FIXED("cl16m", R8A779F0_CLK_CL16M, CLK_S0, 48, 1),
> + DEF_FIXED("s0d2_mm", R8A779F0_CLK_S0D2_MM, CLK_S0, 2, 1),
> + DEF_FIXED("s0d3_mm", R8A779F0_CLK_S0D3_MM, CLK_S0, 3, 1),
> + DEF_FIXED("s0d4_mm", R8A779F0_CLK_S0D4_MM, CLK_S0, 4, 1),
> + DEF_FIXED("cl16m_mm", R8A779F0_CLK_CL16M_MM, CLK_S0, 48, 1),
> + DEF_FIXED("s0d2_rt", R8A779F0_CLK_S0D2_RT, CLK_S0, 2, 1),
> + DEF_FIXED("s0d3_rt", R8A779F0_CLK_S0D3_RT, CLK_S0, 3, 1),
> + DEF_FIXED("s0d4_rt", R8A779F0_CLK_S0D4_RT, CLK_S0, 4, 1),
> + DEF_FIXED("s0d6_rt", R8A779F0_CLK_S0D6_RT, CLK_S0, 6, 1),
> + DEF_FIXED("cl16m_rt", R8A779F0_CLK_CL16M_RT, CLK_S0, 48, 1),
> + DEF_FIXED("s0d3_per", R8A779F0_CLK_S0D3_PER, CLK_S0, 3, 1),
> + DEF_FIXED("s0d6_per", R8A779F0_CLK_S0D6_PER, CLK_S0, 6, 1),
> + DEF_FIXED("s0d12_per", R8A779F0_CLK_S0D12_PER, CLK_S0, 12, 1),
> + DEF_FIXED("s0d24_per", R8A779F0_CLK_S0D24_PER, CLK_S0, 24, 1),
> + DEF_FIXED("cl16m_per", R8A779F0_CLK_CL16M_PER, CLK_S0, 48, 1),
> + DEF_FIXED("s0d2_hsc", R8A779F0_CLK_S0D2_HSC, CLK_S0, 2, 1),
> + DEF_FIXED("s0d3_hsc", R8A779F0_CLK_S0D3_HSC, CLK_S0, 3, 1),
> + DEF_FIXED("s0d4_hsc", R8A779F0_CLK_S0D4_HSC, CLK_S0, 4, 1),
> + DEF_FIXED("s0d6_hsc", R8A779F0_CLK_S0D6_HSC, CLK_S0, 6, 1),
> + DEF_FIXED("s0d12_hsc", R8A779F0_CLK_S0D12_HSC, CLK_S0, 12, 1),
> + DEF_FIXED("cl16m_hsc", R8A779F0_CLK_CL16M_HSC, CLK_S0, 48, 1),
> + DEF_FIXED("s0d2_cc", R8A779F0_CLK_S0D2_CC, CLK_S0, 2, 1),
> + DEF_FIXED("rsw", R8A779F0_CLK_RSW2, CLK_PLL5, 2, 1),
"rsw2"?
> + DEF_FIXED("cbfusa", R8A779F0_CLK_CBFUSA, CLK_EXTAL, 2, 1),
> + DEF_FIXED("cpex", R8A779F0_CLK_CPEX, CLK_EXTAL, 2, 1),
> +
> + DEF_GEN4_SD("sd0", R8A779F0_CLK_SD0, CLK_SDSRC, 0x870),
> + DEF_DIV6P1("mso", R8A779F0_CLK_MSO, CLK_PLL5_DIV4, 0x087C),
0x87c
> +
> + DEF_GEN4_OSC("osc", R8A779F0_CLK_OSC, CLK_EXTAL, 8),
> + DEF_GEN4_MDSEL("r", R8A779F0_CLK_R, 29, CLK_EXTALR, 1, CLK_OCO, 1),
> +};
> +
> +static const struct mssr_mod_clk r8a779f0_mod_clks[] __initconst = {
> + DEF_MOD("scif0", 702, R8A779F0_CLK_S0D12_PER),
> + DEF_MOD("scif1", 703, R8A779F0_CLK_S0D12_PER),
> + DEF_MOD("scif3", 704, R8A779F0_CLK_S0D12_PER),
> + DEF_MOD("scif4", 705, R8A779F0_CLK_S0D12_PER),
> +};
> +
> +/*
> + * CPG Clock Data
> + */
> +/*
> + * MD EXTAL PLL1 PLL2 PLL3 PLL5 PLL6 OSC
> + * 14 13 (MHz)
> + * ----------------------------------------------------------------
> + * 0 0 16.66 / 1 x200 x150 x200 x200 x134 /15
EXTAL is 16 MHz?
> + * 0 1 20 / 1 x160 x120 x160 x160 x106 /19
> + * 1 0 Prohibited setting
> + * 1 1 40 / 2 x160 x120 x160 x160 x106 /38
> + */
> +#define CPG_PLL_CONFIG_INDEX(md) ((((md) & BIT(14)) >> 13) | \
> + (((md) & BIT(13)) >> 13))
> +
> +static const struct rcar_gen4_cpg_pll_config cpg_pll_configs[4] = {
> + /* EXTAL div PLL1 mult/div PLL2 mult/div PLL3 mult/div PLL5 mult/div PLL6 mult/div OSC prediv */
> + { 1, 200, 1, 150, 1, 200, 1, 200, 1, 134, 1, 16, },
OSC prediv is 15?
> + { 1, 160, 1, 120, 1, 160, 1, 160, 1, 106, 1, 19, },
> + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
> + { 2, 160, 1, 120, 1, 160, 1, 160, 1, 106, 1, 38, },
> +};
> --- /dev/null
> +++ b/drivers/clk/renesas/rcar-gen4-cpg.c
> @@ -0,0 +1,141 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * R-Car Gen4 Clock Pulse Generator
> + *
> + * Copyright (C) 2021 Renesas Electronics Corp.
> + *
> + * Based on rcar-gen3-cpg.c
> + *
> + * Copyright (C) 2015-2018 Glider bvba
> + * Copyright (C) 2019 Renesas Electronics Corp.
> + */
> +
> +#include <linux/bug.h>
> +#include <linux/bitfield.h>
> +#include <linux/clk.h>
> +#include <linux/clk-provider.h>
> +#include <linux/device.h>
> +#include <linux/err.h>
> +#include <linux/init.h>
> +#include <linux/io.h>
> +#include <linux/pm.h>
> +#include <linux/slab.h>
> +#include <linux/sys_soc.h>
Several of these includes are not needed.
> +
> +#include "renesas-cpg-mssr.h"
> +#include "rcar-gen4-cpg.h"
> +#include "rcar-cpg-lib.h"
> +
> +static const struct clk_div_table cpg_rpcsrc_div_table[] = {
> + { 2, 5 }, { 3, 6 }, { 0, 0 },
The datasheet says { 0, 4 } and { 1, 6} are also supported,
just like on R-Car V3U.
> +};
> +struct clk * __init rcar_gen4_cpg_clk_register(struct device *dev,
> + const struct cpg_core_clk *core, const struct cpg_mssr_info *info,
> + struct clk **clks, void __iomem *base,
> + struct raw_notifier_head *notifiers)
> +{
> + const struct clk *parent;
> + unsigned int mult = 1;
> + unsigned int div = 1;
> +
> + parent = clks[core->parent & 0xffff]; /* some types use high bits */
> + if (IS_ERR(parent))
> + return ERR_CAST(parent);
> +
> + switch (core->type) {
> + case CLK_TYPE_GEN4_MAIN:
> + div = cpg_pll_config->extal_div;
> + break;
> +
> + case CLK_TYPE_GEN4_PLL1:
> + mult = cpg_pll_config->pll1_mult;
> + div = cpg_pll_config->pll1_div;
> + break;
> +
> + case CLK_TYPE_GEN4_PLL2:
> + mult = cpg_pll_config->pll2_mult;
> + div = cpg_pll_config->pll2_div;
> + break;
> +
> + case CLK_TYPE_GEN4_PLL3:
> + mult = cpg_pll_config->pll3_mult;
> + div = cpg_pll_config->pll3_div;
> + break;
> +
> + case CLK_TYPE_GEN4_PLL5:
> + mult = cpg_pll_config->pll5_mult;
> + div = cpg_pll_config->pll5_div;
> + break;
> +
> + case CLK_TYPE_GEN4_PLL6:
> + mult = cpg_pll_config->pll6_mult;
> + div = cpg_pll_config->pll6_div;
> + break;
The Z clock handling for R-Car S4-8 seems to be the same as for R-Car
V3U, so you can move that here, too.
That leaves us with the different PLLn handling:
1. I think you can just move the PLL2X_3C clock type for R-Car
V3U here, too. It's only 4 lines of code. Then rcar-gen4-cpg.c
can be shared by R-Car V3U and R-Car S4-8.
2. Future full PLLn handling for R-Car S4-8 (using the PLLnCR1
registers) will need switching from CLK_TYPE_GEN4_PLLn to a
new clock type anyway.
> + case CLK_TYPE_GEN4_SD:
> + return cpg_sd_clk_register(core->name, base, core->offset,
> + __clk_get_name(parent), notifiers,
> + 0);
This should be changed to:
return cpg_sd_clk_register(core->name, base + core->offset,
__clk_get_name(parent));
due to the recent changes in renesas-clk to handle the SDH clock.
> +
> + default:
> + return ERR_PTR(-EINVAL);
> + }
> +
> + return clk_register_fixed_factor(NULL, core->name,
> + __clk_get_name(parent), 0, mult, div);
> +}
> --- /dev/null
> +++ b/drivers/clk/renesas/rcar-gen4-cpg.h
> @@ -0,0 +1,76 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * R-Car Gen4 Clock Pulse Generator
> + *
> + * Copyright (C) 2021 Renesas Electronics Corp.
> + *
> + */
> +
> +#ifndef __CLK_RENESAS_RCAR_GEN4_CPG_H__
> +#define __CLK_RENESAS_RCAR_GEN4_CPG_H__
> +
> +enum rcar_gen4_clk_types {
> + CLK_TYPE_GEN4_MAIN = CLK_TYPE_CUSTOM,
> + CLK_TYPE_GEN4_PLL1,
> + CLK_TYPE_GEN4_PLL2,
> + CLK_TYPE_GEN4_PLL3,
> + CLK_TYPE_GEN4_PLL5,
> + CLK_TYPE_GEN4_PLL6,
> + CLK_TYPE_GEN4_SD,
> + CLK_TYPE_GEN4_R,
So far unused.
> + CLK_TYPE_GEN4_MDSEL, /* Select parent/divider using mode pin */
> + CLK_TYPE_GEN4_Z,
> + CLK_TYPE_GEN4_ZG,
Both unused.
> + CLK_TYPE_GEN4_OSC, /* OSC EXTAL predivider and fixed divider */
> + CLK_TYPE_GEN4_RPCSRC,
> + CLK_TYPE_GEN4_RPC,
> + CLK_TYPE_GEN4_RPCD2,
> +
> + /* SoC specific definitions start here */
> + CLK_TYPE_GEN4_SOC_BASE,
> +};
> +
> +#define DEF_GEN4_SD(_name, _id, _parent, _offset) \
> + DEF_BASE(_name, _id, CLK_TYPE_GEN4_SD, _parent, .offset = _offset)
> +
> +#define DEF_GEN4_MDSEL(_name, _id, _md, _parent0, _div0, _parent1, _div1) \
> + DEF_BASE(_name, _id, CLK_TYPE_GEN4_MDSEL, \
> + (_parent0) << 16 | (_parent1), \
> + .div = (_div0) << 16 | (_div1), .offset = _md)
> +
> +#define DEF_GEN4_PE(_name, _id, _parent_clean, _div_clean, _parent_sscg, \
> + _div_sscg) \
> + DEF_GEN4_MDSEL(_name, _id, 12, _parent_clean, _div_clean, \
> + _parent_sscg, _div_sscg)
R-Car S4 does not have a PE clock, so please drop this.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 14/16] arm64: dts: renesas: Add Renesas R8A779F0 SoC support
2021-11-16 7:41 ` [PATCH 14/16] arm64: dts: renesas: Add Renesas R8A779F0 SoC support Yoshihiro Shimoda
@ 2021-11-24 14:02 ` Geert Uytterhoeven
0 siblings, 0 replies; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-24 14:02 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Add initial support for the Renesas R8A779F0 (R-Car S4-8) support.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 16/16] arm64: defconfig: Enable R-Car S4-8
2021-11-16 7:41 ` [PATCH 16/16] arm64: defconfig: Enable R-Car S4-8 Yoshihiro Shimoda
@ 2021-11-24 14:03 ` Geert Uytterhoeven
0 siblings, 0 replies; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-24 14:03 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
On Tue, Nov 16, 2021 at 8:43 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Enable the Renesas R-Car S4-8 (R8A779F0) SoC in the ARM64 defconfig.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 15/16] arm64: dts: renesas: Add Renesas Spider boards support
2021-11-16 7:41 ` [PATCH 15/16] arm64: dts: renesas: Add Renesas Spider boards support Yoshihiro Shimoda
@ 2021-11-24 14:06 ` Geert Uytterhoeven
2021-12-08 9:21 ` Geert Uytterhoeven
0 siblings, 1 reply; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-24 14:06 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS, Takehito Nakamura
On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Initial support for the Renesas Spider CPU and BreakOut boards
> support.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> Tested-by: Takehito Nakamura <takehito.nakamura.nx@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
(assuming memory size, extal clock frequency, and serial console port
are correct)
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* RE: [PATCH 12/16] clk: renesas: cpg-mssr: Add support for R-Car S4-8
2021-11-24 13:48 ` Geert Uytterhoeven
@ 2021-11-29 8:35 ` Yoshihiro Shimoda
2021-11-29 8:47 ` Geert Uytterhoeven
0 siblings, 1 reply; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-11-29 8:35 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Geert-san,
Thank you for your review!
> From: Geert Uytterhoeven, Sent: Wednesday, November 24, 2021 10:48 PM
>
> Hi Shimoda-san,
>
> Thanks for your patch!
>
> On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com> wrote:
> > Initial support for R-Car S4-8 (r8a779f0), including core, module
> > clocks, resets, and register access, because register specification
> > differs from R-Car Gen2/3. The register layout of V3U is a similar
> > with R-Car S4-8 so that renames CLK_REG_LAYOUT_RCAR_V3U as
> > CLK_REG_LAYOUT_RCAR_GEN4. However, PLL names differ between V3U
> > and S4-8.
>
> This is a small difference, so I think more code can be shared between
> R-Car V3U and S4-8 (see below).
I got it.
> > Inspired by patches in the BSP by LUU HOAI.
> >
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
>
> > drivers/clk/renesas/Kconfig | 10 ++
> > drivers/clk/renesas/Makefile | 2 +
> > drivers/clk/renesas/r8a779a0-cpg-mssr.c | 2 +-
> > drivers/clk/renesas/r8a779f0-cpg-mssr.c | 188 ++++++++++++++++++++++++
> > drivers/clk/renesas/rcar-gen4-cpg.c | 141 ++++++++++++++++++
> > drivers/clk/renesas/rcar-gen4-cpg.h | 76 ++++++++++
> > drivers/clk/renesas/renesas-cpg-mssr.c | 42 ++++--
> > drivers/clk/renesas/renesas-cpg-mssr.h | 3 +-
> > 8 files changed, 448 insertions(+), 16 deletions(-)
> > create mode 100644 drivers/clk/renesas/r8a779f0-cpg-mssr.c
> > create mode 100644 drivers/clk/renesas/rcar-gen4-cpg.c
> > create mode 100644 drivers/clk/renesas/rcar-gen4-cpg.h
>
> Just like for the SYSC driver, I think it wouldn't hurt to split this
> patch in two parts: one patch to generalize r8a779a0-cpg-mssr.c for
> R-Car Gen4, and a second patch to introduce support for R-Car S4-8.
I got it. I'll split this patch in two parts in v2.
> > +static const struct cpg_core_clk r8a779f0_core_clks[] __initconst = {
> > + /* External Clock Inputs */
> > + DEF_INPUT("extal", CLK_EXTAL),
> > + DEF_INPUT("extalr", CLK_EXTALR),
> > +
> > + /* Internal Core Clocks */
> > + DEF_BASE(".main", CLK_MAIN, CLK_TYPE_GEN4_MAIN, CLK_EXTAL),
> > + DEF_BASE(".pll1", CLK_PLL1, CLK_TYPE_GEN4_PLL1, CLK_MAIN),
> > + DEF_BASE(".pll3", CLK_PLL3, CLK_TYPE_GEN4_PLL3, CLK_MAIN),
> > + DEF_BASE(".pll2", CLK_PLL2, CLK_TYPE_GEN4_PLL2, CLK_MAIN),
> > + DEF_BASE(".pll6", CLK_PLL6, CLK_TYPE_GEN4_PLL6, CLK_MAIN),
> > + DEF_BASE(".pll5", CLK_PLL5, CLK_TYPE_GEN4_PLL5, CLK_MAIN),
>
> Please sort PLLn by index.
Oops. I'll fix the order.
> > +
> > + DEF_FIXED(".pll1_div2", CLK_PLL1_DIV2, CLK_PLL1, 2, 1),
> > + DEF_FIXED(".pll2_div2", CLK_PLL2_DIV2, CLK_PLL2, 2, 1),
> > + DEF_FIXED(".pll3_div2", CLK_PLL3_DIV2, CLK_PLL3, 2, 1),
> > + DEF_FIXED(".pll5_div2", CLK_PLL5_DIV2, CLK_PLL5, 2, 1),
> > + DEF_FIXED(".pll5_div4", CLK_PLL5_DIV4, CLK_PLL5_DIV2, 2, 1),
> > + DEF_FIXED(".pll6_div2", CLK_PLL6_DIV2, CLK_PLL6, 2, 1),
> > + DEF_FIXED(".s0", CLK_S0, CLK_PLL1_DIV2, 2, 1),
> > + DEF_FIXED(".sdsrc", CLK_SDSRC, CLK_PLL5_DIV2, 2, 1),
>
> This relies on the default setting of the SD-IF0 Clock Frequency
> Control Register 1 (SD0CKCR1)?
You're correct. So, we should not use DEF_FIXED for SDSRC...
> > + DEF_RATE(".oco", CLK_OCO, 32768),
> > +
> > + DEF_BASE(".rpcsrc", CLK_RPCSRC, CLK_TYPE_GEN4_RPCSRC, CLK_PLL5),
> > + DEF_BASE(".rpc", R8A779F0_CLK_RPC, CLK_TYPE_GEN4_RPC, CLK_RPCSRC),
> > + DEF_BASE("rpcd2", R8A779F0_CLK_RPCD2, CLK_TYPE_GEN4_RPCD2, R8A779F0_CLK_RPC),
> > +
> > + /* Core Clock Outputs */
> > + DEF_FIXED("s0d2", R8A779F0_CLK_S0D2, CLK_S0, 2, 1),
> > + DEF_FIXED("s0d3", R8A779F0_CLK_S0D3, CLK_S0, 3, 1),
> > + DEF_FIXED("s0d4", R8A779F0_CLK_S0D4, CLK_S0, 4, 1),
> > + DEF_FIXED("cl16m", R8A779F0_CLK_CL16M, CLK_S0, 48, 1),
> > + DEF_FIXED("s0d2_mm", R8A779F0_CLK_S0D2_MM, CLK_S0, 2, 1),
> > + DEF_FIXED("s0d3_mm", R8A779F0_CLK_S0D3_MM, CLK_S0, 3, 1),
> > + DEF_FIXED("s0d4_mm", R8A779F0_CLK_S0D4_MM, CLK_S0, 4, 1),
> > + DEF_FIXED("cl16m_mm", R8A779F0_CLK_CL16M_MM, CLK_S0, 48, 1),
> > + DEF_FIXED("s0d2_rt", R8A779F0_CLK_S0D2_RT, CLK_S0, 2, 1),
> > + DEF_FIXED("s0d3_rt", R8A779F0_CLK_S0D3_RT, CLK_S0, 3, 1),
> > + DEF_FIXED("s0d4_rt", R8A779F0_CLK_S0D4_RT, CLK_S0, 4, 1),
> > + DEF_FIXED("s0d6_rt", R8A779F0_CLK_S0D6_RT, CLK_S0, 6, 1),
> > + DEF_FIXED("cl16m_rt", R8A779F0_CLK_CL16M_RT, CLK_S0, 48, 1),
> > + DEF_FIXED("s0d3_per", R8A779F0_CLK_S0D3_PER, CLK_S0, 3, 1),
> > + DEF_FIXED("s0d6_per", R8A779F0_CLK_S0D6_PER, CLK_S0, 6, 1),
> > + DEF_FIXED("s0d12_per", R8A779F0_CLK_S0D12_PER, CLK_S0, 12, 1),
> > + DEF_FIXED("s0d24_per", R8A779F0_CLK_S0D24_PER, CLK_S0, 24, 1),
> > + DEF_FIXED("cl16m_per", R8A779F0_CLK_CL16M_PER, CLK_S0, 48, 1),
> > + DEF_FIXED("s0d2_hsc", R8A779F0_CLK_S0D2_HSC, CLK_S0, 2, 1),
> > + DEF_FIXED("s0d3_hsc", R8A779F0_CLK_S0D3_HSC, CLK_S0, 3, 1),
> > + DEF_FIXED("s0d4_hsc", R8A779F0_CLK_S0D4_HSC, CLK_S0, 4, 1),
> > + DEF_FIXED("s0d6_hsc", R8A779F0_CLK_S0D6_HSC, CLK_S0, 6, 1),
> > + DEF_FIXED("s0d12_hsc", R8A779F0_CLK_S0D12_HSC, CLK_S0, 12, 1),
> > + DEF_FIXED("cl16m_hsc", R8A779F0_CLK_CL16M_HSC, CLK_S0, 48, 1),
> > + DEF_FIXED("s0d2_cc", R8A779F0_CLK_S0D2_CC, CLK_S0, 2, 1),
> > + DEF_FIXED("rsw", R8A779F0_CLK_RSW2, CLK_PLL5, 2, 1),
>
> "rsw2"?
Yes. I'll fix it.
> > + DEF_FIXED("cbfusa", R8A779F0_CLK_CBFUSA, CLK_EXTAL, 2, 1),
> > + DEF_FIXED("cpex", R8A779F0_CLK_CPEX, CLK_EXTAL, 2, 1),
> > +
> > + DEF_GEN4_SD("sd0", R8A779F0_CLK_SD0, CLK_SDSRC, 0x870),
> > + DEF_DIV6P1("mso", R8A779F0_CLK_MSO, CLK_PLL5_DIV4, 0x087C),
>
> 0x87c
Oops. I'll fix it.
> > +
> > + DEF_GEN4_OSC("osc", R8A779F0_CLK_OSC, CLK_EXTAL, 8),
> > + DEF_GEN4_MDSEL("r", R8A779F0_CLK_R, 29, CLK_EXTALR, 1, CLK_OCO, 1),
> > +};
> > +
> > +static const struct mssr_mod_clk r8a779f0_mod_clks[] __initconst = {
> > + DEF_MOD("scif0", 702, R8A779F0_CLK_S0D12_PER),
> > + DEF_MOD("scif1", 703, R8A779F0_CLK_S0D12_PER),
> > + DEF_MOD("scif3", 704, R8A779F0_CLK_S0D12_PER),
> > + DEF_MOD("scif4", 705, R8A779F0_CLK_S0D12_PER),
> > +};
> > +
> > +/*
> > + * CPG Clock Data
> > + */
> > +/*
> > + * MD EXTAL PLL1 PLL2 PLL3 PLL5 PLL6 OSC
> > + * 14 13 (MHz)
> > + * ----------------------------------------------------------------
> > + * 0 0 16.66 / 1 x200 x150 x200 x200 x134 /15
>
> EXTAL is 16 MHz?
Oops. You're correct. I'll fix it.
> > + * 0 1 20 / 1 x160 x120 x160 x160 x106 /19
> > + * 1 0 Prohibited setting
> > + * 1 1 40 / 2 x160 x120 x160 x160 x106 /38
> > + */
> > +#define CPG_PLL_CONFIG_INDEX(md) ((((md) & BIT(14)) >> 13) | \
> > + (((md) & BIT(13)) >> 13))
> > +
> > +static const struct rcar_gen4_cpg_pll_config cpg_pll_configs[4] = {
> > + /* EXTAL div PLL1 mult/div PLL2 mult/div PLL3 mult/div PLL5 mult/div PLL6 mult/div OSC prediv */
> > + { 1, 200, 1, 150, 1, 200, 1, 200, 1, 134, 1, 16, },
>
> OSC prediv is 15?
Thank you for the indicate. I'll fix it.
> > + { 1, 160, 1, 120, 1, 160, 1, 160, 1, 106, 1, 19, },
> > + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
> > + { 2, 160, 1, 120, 1, 160, 1, 160, 1, 106, 1, 38, },
> > +};
>
> > --- /dev/null
> > +++ b/drivers/clk/renesas/rcar-gen4-cpg.c
> > @@ -0,0 +1,141 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * R-Car Gen4 Clock Pulse Generator
> > + *
> > + * Copyright (C) 2021 Renesas Electronics Corp.
> > + *
> > + * Based on rcar-gen3-cpg.c
> > + *
> > + * Copyright (C) 2015-2018 Glider bvba
> > + * Copyright (C) 2019 Renesas Electronics Corp.
> > + */
> > +
> > +#include <linux/bug.h>
> > +#include <linux/bitfield.h>
> > +#include <linux/clk.h>
> > +#include <linux/clk-provider.h>
> > +#include <linux/device.h>
> > +#include <linux/err.h>
> > +#include <linux/init.h>
> > +#include <linux/io.h>
> > +#include <linux/pm.h>
> > +#include <linux/slab.h>
> > +#include <linux/sys_soc.h>
>
> Several of these includes are not needed.
I got it. I'll remove unnecessary header files.
> > +
> > +#include "renesas-cpg-mssr.h"
> > +#include "rcar-gen4-cpg.h"
> > +#include "rcar-cpg-lib.h"
> > +
> > +static const struct clk_div_table cpg_rpcsrc_div_table[] = {
> > + { 2, 5 }, { 3, 6 }, { 0, 0 },
>
> The datasheet says { 0, 4 } and { 1, 6} are also supported,
> just like on R-Car V3U.
I got it.
> > +};
>
> > +struct clk * __init rcar_gen4_cpg_clk_register(struct device *dev,
> > + const struct cpg_core_clk *core, const struct cpg_mssr_info *info,
> > + struct clk **clks, void __iomem *base,
> > + struct raw_notifier_head *notifiers)
> > +{
> > + const struct clk *parent;
> > + unsigned int mult = 1;
> > + unsigned int div = 1;
> > +
> > + parent = clks[core->parent & 0xffff]; /* some types use high bits */
> > + if (IS_ERR(parent))
> > + return ERR_CAST(parent);
> > +
> > + switch (core->type) {
> > + case CLK_TYPE_GEN4_MAIN:
> > + div = cpg_pll_config->extal_div;
> > + break;
> > +
> > + case CLK_TYPE_GEN4_PLL1:
> > + mult = cpg_pll_config->pll1_mult;
> > + div = cpg_pll_config->pll1_div;
> > + break;
> > +
> > + case CLK_TYPE_GEN4_PLL2:
> > + mult = cpg_pll_config->pll2_mult;
> > + div = cpg_pll_config->pll2_div;
> > + break;
> > +
> > + case CLK_TYPE_GEN4_PLL3:
> > + mult = cpg_pll_config->pll3_mult;
> > + div = cpg_pll_config->pll3_div;
> > + break;
> > +
> > + case CLK_TYPE_GEN4_PLL5:
> > + mult = cpg_pll_config->pll5_mult;
> > + div = cpg_pll_config->pll5_div;
> > + break;
> > +
> > + case CLK_TYPE_GEN4_PLL6:
> > + mult = cpg_pll_config->pll6_mult;
> > + div = cpg_pll_config->pll6_div;
> > + break;
>
> The Z clock handling for R-Car S4-8 seems to be the same as for R-Car
> V3U, so you can move that here, too.
>
> That leaves us with the different PLLn handling:
> 1. I think you can just move the PLL2X_3C clock type for R-Car
> V3U here, too. It's only 4 lines of code. Then rcar-gen4-cpg.c
> can be shared by R-Car V3U and R-Car S4-8.
I got it. I'll modify it.
> 2. Future full PLLn handling for R-Car S4-8 (using the PLLnCR1
> registers) will need switching from CLK_TYPE_GEN4_PLLn to a
> new clock type anyway.
I got it.
> > + case CLK_TYPE_GEN4_SD:
> > + return cpg_sd_clk_register(core->name, base, core->offset,
> > + __clk_get_name(parent), notifiers,
> > + 0);
>
> This should be changed to:
>
> return cpg_sd_clk_register(core->name, base + core->offset,
> __clk_get_name(parent));
>
> due to the recent changes in renesas-clk to handle the SDH clock.
Thank you for the comment. I'll rebase it on the recent renesas-clk.
> > +
> > + default:
> > + return ERR_PTR(-EINVAL);
> > + }
> > +
> > + return clk_register_fixed_factor(NULL, core->name,
> > + __clk_get_name(parent), 0, mult, div);
> > +}
>
> > --- /dev/null
> > +++ b/drivers/clk/renesas/rcar-gen4-cpg.h
> > @@ -0,0 +1,76 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +/*
> > + * R-Car Gen4 Clock Pulse Generator
> > + *
> > + * Copyright (C) 2021 Renesas Electronics Corp.
> > + *
> > + */
> > +
> > +#ifndef __CLK_RENESAS_RCAR_GEN4_CPG_H__
> > +#define __CLK_RENESAS_RCAR_GEN4_CPG_H__
> > +
> > +enum rcar_gen4_clk_types {
> > + CLK_TYPE_GEN4_MAIN = CLK_TYPE_CUSTOM,
> > + CLK_TYPE_GEN4_PLL1,
> > + CLK_TYPE_GEN4_PLL2,
> > + CLK_TYPE_GEN4_PLL3,
> > + CLK_TYPE_GEN4_PLL5,
> > + CLK_TYPE_GEN4_PLL6,
> > + CLK_TYPE_GEN4_SD,
> > + CLK_TYPE_GEN4_R,
>
> So far unused.
I'll remove CLK_TYPE_GEN4_R.
> > + CLK_TYPE_GEN4_MDSEL, /* Select parent/divider using mode pin */
> > + CLK_TYPE_GEN4_Z,
> > + CLK_TYPE_GEN4_ZG,
>
> Both unused.
I'll remove CLK_TYPE_GEN4_Z[G].
> > + CLK_TYPE_GEN4_OSC, /* OSC EXTAL predivider and fixed divider */
> > + CLK_TYPE_GEN4_RPCSRC,
> > + CLK_TYPE_GEN4_RPC,
> > + CLK_TYPE_GEN4_RPCD2,
> > +
> > + /* SoC specific definitions start here */
> > + CLK_TYPE_GEN4_SOC_BASE,
> > +};
> > +
> > +#define DEF_GEN4_SD(_name, _id, _parent, _offset) \
> > + DEF_BASE(_name, _id, CLK_TYPE_GEN4_SD, _parent, .offset = _offset)
> > +
> > +#define DEF_GEN4_MDSEL(_name, _id, _md, _parent0, _div0, _parent1, _div1) \
> > + DEF_BASE(_name, _id, CLK_TYPE_GEN4_MDSEL, \
> > + (_parent0) << 16 | (_parent1), \
> > + .div = (_div0) << 16 | (_div1), .offset = _md)
> > +
> > +#define DEF_GEN4_PE(_name, _id, _parent_clean, _div_clean, _parent_sscg, \
> > + _div_sscg) \
> > + DEF_GEN4_MDSEL(_name, _id, 12, _parent_clean, _div_clean, \
> > + _parent_sscg, _div_sscg)
>
> R-Car S4 does not have a PE clock, so please drop this.
I got it.
Best regards,
Yoshihiro Shimoda
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 12/16] clk: renesas: cpg-mssr: Add support for R-Car S4-8
2021-11-29 8:35 ` Yoshihiro Shimoda
@ 2021-11-29 8:47 ` Geert Uytterhoeven
0 siblings, 0 replies; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-11-29 8:47 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS
Hi Shimoda-san,
On Mon, Nov 29, 2021 at 9:36 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> > From: Geert Uytterhoeven, Sent: Wednesday, November 24, 2021 10:48 PM
> > On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
> > <yoshihiro.shimoda.uh@renesas.com> wrote:
> > > Initial support for R-Car S4-8 (r8a779f0), including core, module
> > > clocks, resets, and register access, because register specification
> > > differs from R-Car Gen2/3. The register layout of V3U is a similar
> > > with R-Car S4-8 so that renames CLK_REG_LAYOUT_RCAR_V3U as
> > > CLK_REG_LAYOUT_RCAR_GEN4. However, PLL names differ between V3U
> > > and S4-8.
> > >
> > > Inspired by patches in the BSP by LUU HOAI.
> > >
> > > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> > > +
> > > + DEF_FIXED(".pll1_div2", CLK_PLL1_DIV2, CLK_PLL1, 2, 1),
> > > + DEF_FIXED(".pll2_div2", CLK_PLL2_DIV2, CLK_PLL2, 2, 1),
> > > + DEF_FIXED(".pll3_div2", CLK_PLL3_DIV2, CLK_PLL3, 2, 1),
> > > + DEF_FIXED(".pll5_div2", CLK_PLL5_DIV2, CLK_PLL5, 2, 1),
> > > + DEF_FIXED(".pll5_div4", CLK_PLL5_DIV4, CLK_PLL5_DIV2, 2, 1),
> > > + DEF_FIXED(".pll6_div2", CLK_PLL6_DIV2, CLK_PLL6, 2, 1),
> > > + DEF_FIXED(".s0", CLK_S0, CLK_PLL1_DIV2, 2, 1),
> > > + DEF_FIXED(".sdsrc", CLK_SDSRC, CLK_PLL5_DIV2, 2, 1),
> >
> > This relies on the default setting of the SD-IF0 Clock Frequency
> > Control Register 1 (SD0CKCR1)?
>
> You're correct. So, we should not use DEF_FIXED for SDSRC...
You can use DEF_FIXED in the initial version, and add proper SD0CKCR1
support later.
This is similar to the handling of the various PLLs: currently they're
treated as fixed ratio clocks, later they can become programmable by
adding support for the PLLnCR1 registers.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* Re: [PATCH 15/16] arm64: dts: renesas: Add Renesas Spider boards support
2021-11-24 14:06 ` Geert Uytterhoeven
@ 2021-12-08 9:21 ` Geert Uytterhoeven
2021-12-08 9:36 ` Yoshihiro Shimoda
0 siblings, 1 reply; 47+ messages in thread
From: Geert Uytterhoeven @ 2021-12-08 9:21 UTC (permalink / raw)
To: Yoshihiro Shimoda
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS, Takehito Nakamura
Hi Shimoda-san,
On Wed, Nov 24, 2021 at 3:06 PM Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com> wrote:
> > Initial support for the Renesas Spider CPU and BreakOut boards
> > support.
> >
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> > Tested-by: Takehito Nakamura <takehito.nakamura.nx@renesas.com>
>
> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
> (assuming memory size, extal clock frequency, and serial console port
> are correct)
(with the schematics)
So the console is actually SCIF3 pinmuxed to the HSCIF0 pins on the
Debug Serial USB connector on the CPU board?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
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
^ permalink raw reply [flat|nested] 47+ messages in thread
* RE: [PATCH 15/16] arm64: dts: renesas: Add Renesas Spider boards support
2021-12-08 9:21 ` Geert Uytterhoeven
@ 2021-12-08 9:36 ` Yoshihiro Shimoda
0 siblings, 0 replies; 47+ messages in thread
From: Yoshihiro Shimoda @ 2021-12-08 9:36 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Magnus Damm, Rob Herring, Greg KH, Jiri Slaby, Linux-Renesas,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
open list:SERIAL DRIVERS, Takehito Nakamura
Hi Geert-san,
> From: Geert Uytterhoeven, Sent: Wednesday, December 8, 2021 6:21 PM
>
> Hi Shimoda-san,
>
> On Wed, Nov 24, 2021 at 3:06 PM Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> > On Tue, Nov 16, 2021 at 8:42 AM Yoshihiro Shimoda
> > <yoshihiro.shimoda.uh@renesas.com> wrote:
> > > Initial support for the Renesas Spider CPU and BreakOut boards
> > > support.
> > >
> > > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> > > Tested-by: Takehito Nakamura <takehito.nakamura.nx@renesas.com>
> >
> > Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
> > (assuming memory size, extal clock frequency, and serial console port
> > are correct)
>
> (with the schematics)
> So the console is actually SCIF3 pinmuxed to the HSCIF0 pins on the
> Debug Serial USB connector on the CPU board?
Yes, the console is SCIF3.
Best regards,
Yoshihiro Shimoda
^ permalink raw reply [flat|nested] 47+ messages in thread
end of thread, other threads:[~2021-12-08 9:36 UTC | newest]
Thread overview: 47+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-16 7:41 [PATCH 00/16] treewide: Initial support for R-Car S4-8 Yoshihiro Shimoda
2021-11-16 7:41 ` [PATCH 01/16] dt-bindings: arm: renesas: Document R-Car S4-8 SoC DT bindings Yoshihiro Shimoda
2021-11-18 17:50 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 02/16] dt-bindings: arm: renesas: Document Renesas Spider boards Yoshihiro Shimoda
2021-11-16 14:02 ` Rob Herring
2021-11-18 17:53 ` Geert Uytterhoeven
2021-11-19 2:14 ` Yoshihiro Shimoda
2021-11-16 7:41 ` [PATCH 03/16] dt-bindings: reset: renesas,rst: Document r8a779f0 reset module Yoshihiro Shimoda
2021-11-18 18:19 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 04/16] dt-bindings: power: renesas,rcar-sysc: Document r8a779f0 SYSC bindings Yoshihiro Shimoda
2021-11-18 18:38 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 05/16] dt-bindings: power: Add r8a779f0 SYSC power domain definitions Yoshihiro Shimoda
2021-11-18 18:42 ` Geert Uytterhoeven
2021-11-19 2:16 ` Yoshihiro Shimoda
2021-11-16 7:41 ` [PATCH 06/16] dt-bindings: clock: renesas,cpg-mssr: Document r8a779f0 Yoshihiro Shimoda
2021-11-18 18:43 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 07/16] dt-bindings: clock: Add r8a779f0 CPG Core Clock Definitions Yoshihiro Shimoda
2021-11-18 18:53 ` Geert Uytterhoeven
2021-11-19 2:21 ` Yoshihiro Shimoda
2021-11-16 7:41 ` [PATCH 08/16] dt-bindings: serial: renesas,scif: Document r8a779f0 bindings Yoshihiro Shimoda
2021-11-18 18:56 ` Geert Uytterhoeven
2021-11-19 2:24 ` Yoshihiro Shimoda
2021-11-16 7:41 ` [PATCH 09/16] soc: renesas: Identify R-Car S4-8 Yoshihiro Shimoda
2021-11-18 19:03 ` Geert Uytterhoeven
2021-11-19 2:27 ` Yoshihiro Shimoda
2021-11-18 19:04 ` Geert Uytterhoeven
2021-11-19 2:32 ` Yoshihiro Shimoda
2021-11-16 7:41 ` [PATCH 10/16] soc: renesas: r8a779f0-sysc: Add r8a779f0 support Yoshihiro Shimoda
2021-11-23 16:18 ` Geert Uytterhoeven
2021-11-24 6:49 ` Yoshihiro Shimoda
2021-11-16 7:41 ` [PATCH 11/16] soc: renesas: rcar-rst: Add support for R-Car S4-8 Yoshihiro Shimoda
2021-11-18 19:10 ` Geert Uytterhoeven
2021-11-19 2:35 ` Yoshihiro Shimoda
2021-11-16 7:41 ` [PATCH 12/16] clk: renesas: cpg-mssr: " Yoshihiro Shimoda
2021-11-24 13:48 ` Geert Uytterhoeven
2021-11-29 8:35 ` Yoshihiro Shimoda
2021-11-29 8:47 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 13/16] tty: serial: sh-sci: Add support for R-Car Gen4 Yoshihiro Shimoda
2021-11-18 19:11 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 14/16] arm64: dts: renesas: Add Renesas R8A779F0 SoC support Yoshihiro Shimoda
2021-11-24 14:02 ` Geert Uytterhoeven
2021-11-16 7:41 ` [PATCH 15/16] arm64: dts: renesas: Add Renesas Spider boards support Yoshihiro Shimoda
2021-11-24 14:06 ` Geert Uytterhoeven
2021-12-08 9:21 ` Geert Uytterhoeven
2021-12-08 9:36 ` Yoshihiro Shimoda
2021-11-16 7:41 ` [PATCH 16/16] arm64: defconfig: Enable R-Car S4-8 Yoshihiro Shimoda
2021-11-24 14:03 ` Geert Uytterhoeven
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.