linux-renesas-soc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] dt-bindings: i2c: renesas: Convert to json-schema
@ 2021-05-04 14:35 Geert Uytterhoeven
  2021-05-04 14:35 ` [PATCH 1/6] i2c: rcar: Drop "renesas,i2c-rcar" Geert Uytterhoeven
                   ` (7 more replies)
  0 siblings, 8 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-04 14:35 UTC (permalink / raw)
  To: Rob Herring, Wolfram Sang, Chris Brandt
  Cc: linux-i2c, linux-renesas-soc, Geert Uytterhoeven

	Hi all,

This patch series converts the DT bindings for the various I2C
controllers found in Renesas SoCs to json-schema, after a small cleanup
to ease the conversion.

The trickiest part is the conversion for renesas,iic, as it's not clear
to me which IIC instances have the automatic transmission registers and
which don't.  Whatever the outcome, passing validation for this variant
will require DTS changes.

Thanks for your comments!

Geert Uytterhoeven (6):
  i2c: rcar: Drop "renesas,i2c-rcar"
  dt-bindings: i2c: renesas,i2c: Drop "renesas,i2c-rcar"
  dt-bindings: i2c: renesas,i2c: Convert to json-schema
  [RFC] dt-bindings: i2c: renesas,iic: Convert to json-schema
  dt-bindings: i2c: renesas,riic: Convert to json-schema
  dt-bindings: i2c: renesas,iic-emev2: Convert to json-schema

 .../devicetree/bindings/i2c/renesas,i2c.txt   |  67 --------
 .../bindings/i2c/renesas,iic-emev2.txt        |  22 ---
 .../bindings/i2c/renesas,iic-emev2.yaml       |  54 ++++++
 .../devicetree/bindings/i2c/renesas,iic.txt   |  72 --------
 .../bindings/i2c/renesas,rcar-i2c.yaml        | 158 +++++++++++++++++
 .../devicetree/bindings/i2c/renesas,riic.txt  |  32 ----
 .../devicetree/bindings/i2c/renesas,riic.yaml |  83 +++++++++
 .../bindings/i2c/renesas,rmobile-iic.yaml     | 160 ++++++++++++++++++
 MAINTAINERS                                   |   8 +-
 drivers/i2c/busses/i2c-rcar.c                 |   1 -
 10 files changed, 459 insertions(+), 198 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,i2c.txt
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,iic-emev2.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,iic.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,riic.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,riic.yaml
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,rmobile-iic.yaml

-- 
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] 33+ messages in thread

* [PATCH 1/6] i2c: rcar: Drop "renesas,i2c-rcar"
  2021-05-04 14:35 [PATCH 0/6] dt-bindings: i2c: renesas: Convert to json-schema Geert Uytterhoeven
@ 2021-05-04 14:35 ` Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
                     ` (2 more replies)
  2021-05-04 14:35 ` [PATCH 2/6] dt-bindings: i2c: renesas,i2c: " Geert Uytterhoeven
                   ` (6 subsequent siblings)
  7 siblings, 3 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-04 14:35 UTC (permalink / raw)
  To: Rob Herring, Wolfram Sang, Chris Brandt
  Cc: linux-i2c, linux-renesas-soc, Geert Uytterhoeven

The compatible value "renesas,i2c-rcar" was deprecated in commit
ad4a8dc3fec6485b ("i2c: rcar: Add per-Generation fallback bindings"),
and never had any users in upstream Linux.  Drop its match entry from
the driver.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
 drivers/i2c/busses/i2c-rcar.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c
index 327c092a4130bd20..bff9913c37b8b277 100644
--- a/drivers/i2c/busses/i2c-rcar.c
+++ b/drivers/i2c/busses/i2c-rcar.c
@@ -1013,7 +1013,6 @@ static const struct of_device_id rcar_i2c_dt_ids[] = {
 	{ .compatible = "renesas,i2c-r8a7794", .data = (void *)I2C_RCAR_GEN2 },
 	{ .compatible = "renesas,i2c-r8a7795", .data = (void *)I2C_RCAR_GEN3 },
 	{ .compatible = "renesas,i2c-r8a7796", .data = (void *)I2C_RCAR_GEN3 },
-	{ .compatible = "renesas,i2c-rcar", .data = (void *)I2C_RCAR_GEN1 },	/* Deprecated */
 	{ .compatible = "renesas,rcar-gen1-i2c", .data = (void *)I2C_RCAR_GEN1 },
 	{ .compatible = "renesas,rcar-gen2-i2c", .data = (void *)I2C_RCAR_GEN2 },
 	{ .compatible = "renesas,rcar-gen3-i2c", .data = (void *)I2C_RCAR_GEN3 },
-- 
2.25.1


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

* [PATCH 2/6] dt-bindings: i2c: renesas,i2c: Drop "renesas,i2c-rcar"
  2021-05-04 14:35 [PATCH 0/6] dt-bindings: i2c: renesas: Convert to json-schema Geert Uytterhoeven
  2021-05-04 14:35 ` [PATCH 1/6] i2c: rcar: Drop "renesas,i2c-rcar" Geert Uytterhoeven
@ 2021-05-04 14:35 ` Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
                     ` (3 more replies)
  2021-05-04 14:35 ` [PATCH 3/6] dt-bindings: i2c: renesas,i2c: Convert to json-schema Geert Uytterhoeven
                   ` (5 subsequent siblings)
  7 siblings, 4 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-04 14:35 UTC (permalink / raw)
  To: Rob Herring, Wolfram Sang, Chris Brandt
  Cc: linux-i2c, linux-renesas-soc, Geert Uytterhoeven

The compatible value "renesas,i2c-rcar" was deprecated in commit
ad4a8dc3fec6485b ("i2c: rcar: Add per-Generation fallback bindings"),
and never had any users in upstream Linux.  Drop its description from
the DT bindings.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
 Documentation/devicetree/bindings/i2c/renesas,i2c.txt | 1 -
 1 file changed, 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/i2c/renesas,i2c.txt b/Documentation/devicetree/bindings/i2c/renesas,i2c.txt
index 5762d2d1ab9c9658..f4240fcf28bbf6eb 100644
--- a/Documentation/devicetree/bindings/i2c/renesas,i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/renesas,i2c.txt
@@ -32,7 +32,6 @@ Required properties:
 				device.
 	"renesas,rcar-gen3-i2c" for a generic R-Car Gen3 or RZ/G2 compatible
 				device.
-	"renesas,i2c-rcar" (deprecated)
 
 	When compatible with the generic version, nodes must list the
 	SoC-specific version corresponding to the platform first followed
-- 
2.25.1


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

* [PATCH 3/6] dt-bindings: i2c: renesas,i2c: Convert to json-schema
  2021-05-04 14:35 [PATCH 0/6] dt-bindings: i2c: renesas: Convert to json-schema Geert Uytterhoeven
  2021-05-04 14:35 ` [PATCH 1/6] i2c: rcar: Drop "renesas,i2c-rcar" Geert Uytterhoeven
  2021-05-04 14:35 ` [PATCH 2/6] dt-bindings: i2c: renesas,i2c: " Geert Uytterhoeven
@ 2021-05-04 14:35 ` Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
                     ` (2 more replies)
  2021-05-04 14:35 ` [PATCH/RFC 4/6] dt-bindings: i2c: renesas,iic: " Geert Uytterhoeven
                   ` (4 subsequent siblings)
  7 siblings, 3 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-04 14:35 UTC (permalink / raw)
  To: Rob Herring, Wolfram Sang, Chris Brandt
  Cc: linux-i2c, linux-renesas-soc, Geert Uytterhoeven

Convert the Renesas R-Car I2C Controller Device Tree binding
documentation to json-schema.

Document missing properties.
Make the clocks property required.
DMA is supported on R-Car Gen3 and RZ/G2 only.
Update the example to match reality.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
 .../devicetree/bindings/i2c/renesas,i2c.txt   |  66 --------
 .../bindings/i2c/renesas,rcar-i2c.yaml        | 158 ++++++++++++++++++
 MAINTAINERS                                   |   2 +-
 3 files changed, 159 insertions(+), 67 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,i2c.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml

diff --git a/Documentation/devicetree/bindings/i2c/renesas,i2c.txt b/Documentation/devicetree/bindings/i2c/renesas,i2c.txt
deleted file mode 100644
index f4240fcf28bbf6eb..0000000000000000
--- a/Documentation/devicetree/bindings/i2c/renesas,i2c.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-I2C for R-Car platforms
-
-Required properties:
-- compatible:
-	"renesas,i2c-r8a7742" if the device is a part of a R8A7742 SoC.
-	"renesas,i2c-r8a7743" if the device is a part of a R8A7743 SoC.
-	"renesas,i2c-r8a7744" if the device is a part of a R8A7744 SoC.
-	"renesas,i2c-r8a7745" if the device is a part of a R8A7745 SoC.
-	"renesas,i2c-r8a77470" if the device is a part of a R8A77470 SoC.
-	"renesas,i2c-r8a774a1" if the device is a part of a R8A774A1 SoC.
-	"renesas,i2c-r8a774b1" if the device is a part of a R8A774B1 SoC.
-	"renesas,i2c-r8a774c0" if the device is a part of a R8A774C0 SoC.
-	"renesas,i2c-r8a774e1" if the device is a part of a R8A774E1 SoC.
-	"renesas,i2c-r8a7778" if the device is a part of a R8A7778 SoC.
-	"renesas,i2c-r8a7779" if the device is a part of a R8A7779 SoC.
-	"renesas,i2c-r8a7790" if the device is a part of a R8A7790 SoC.
-	"renesas,i2c-r8a7791" if the device is a part of a R8A7791 SoC.
-	"renesas,i2c-r8a7792" if the device is a part of a R8A7792 SoC.
-	"renesas,i2c-r8a7793" if the device is a part of a R8A7793 SoC.
-	"renesas,i2c-r8a7794" if the device is a part of a R8A7794 SoC.
-	"renesas,i2c-r8a7795" if the device is a part of a R8A7795 SoC.
-	"renesas,i2c-r8a7796" if the device is a part of a R8A77960 SoC.
-	"renesas,i2c-r8a77961" if the device is a part of a R8A77961 SoC.
-	"renesas,i2c-r8a77965" if the device is a part of a R8A77965 SoC.
-	"renesas,i2c-r8a77970" if the device is a part of a R8A77970 SoC.
-	"renesas,i2c-r8a77980" if the device is a part of a R8A77980 SoC.
-	"renesas,i2c-r8a77990" if the device is a part of a R8A77990 SoC.
-	"renesas,i2c-r8a77995" if the device is a part of a R8A77995 SoC.
-	"renesas,i2c-r8a779a0" if the device is a part of a R8A779A0 SoC.
-	"renesas,rcar-gen1-i2c" for a generic R-Car Gen1 compatible device.
-	"renesas,rcar-gen2-i2c" for a generic R-Car Gen2 or RZ/G1 compatible
-				device.
-	"renesas,rcar-gen3-i2c" for a generic R-Car Gen3 or RZ/G2 compatible
-				device.
-
-	When compatible with the generic version, nodes must list the
-	SoC-specific version corresponding to the platform first followed
-	by the generic version.
-
-- reg: physical base address of the controller and length of memory mapped
-  region.
-- interrupts: interrupt specifier.
-
-Optional properties:
-- clock-frequency: desired I2C bus clock frequency in Hz. The absence of this
-  property indicates the default frequency 100 kHz.
-- clocks: clock specifier.
-- dmas: Must contain a list of two references to DMA specifiers, one for
-  transmission, and one for reception.
-- dma-names: Must contain a list of two DMA names, "tx" and "rx".
-
-- i2c-scl-falling-time-ns: see i2c.txt
-- i2c-scl-internal-delay-ns: see i2c.txt
-- i2c-scl-rising-time-ns: see i2c.txt
-
-Examples :
-
-i2c0: i2c@e6508000 {
-	#address-cells = <1>;
-	#size-cells = <0>;
-	compatible = "renesas,i2c-r8a7791", "renesas,rcar-gen2-i2c";
-	reg = <0 0xe6508000 0 0x40>;
-	interrupts = <0 287 IRQ_TYPE_LEVEL_HIGH>;
-	clocks = <&mstp9_clks R8A7791_CLK_I2C0>;
-	clock-frequency = <400000>;
-};
diff --git a/Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml b/Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml
new file mode 100644
index 0000000000000000..052aad44e781a561
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml
@@ -0,0 +1,158 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i2c/renesas,rcar-i2c.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas R-Car I2C Controller
+
+maintainers:
+  - Wolfram Sang <wsa+renesas@sang-engineering.com>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - renesas,i2c-r8a7778      # R-Car M1A
+              - renesas,i2c-r8a7779      # R-Car H1
+          - const: renesas,rcar-gen1-i2c # R-Car Gen1
+
+      - items:
+          - enum:
+              - renesas,i2c-r8a7742      # RZ/G1H
+              - renesas,i2c-r8a7743      # RZ/G1M
+              - renesas,i2c-r8a7744      # RZ/G1N
+              - renesas,i2c-r8a7745      # RZ/G1E
+              - renesas,i2c-r8a77470     # RZ/G1C
+              - renesas,i2c-r8a7790      # R-Car H2
+              - renesas,i2c-r8a7791      # R-Car M2-W
+              - renesas,i2c-r8a7792      # R-Car V2H
+              - renesas,i2c-r8a7793      # R-Car M2-N
+              - renesas,i2c-r8a7794      # R-Car E2
+          - const: renesas,rcar-gen2-i2c # R-Car Gen2 and RZ/G1
+
+      - items:
+          - enum:
+              - renesas,i2c-r8a774a1     # RZ/G2M
+              - renesas,i2c-r8a774b1     # RZ/G2N
+              - renesas,i2c-r8a774c0     # RZ/G2E
+              - renesas,i2c-r8a774e1     # RZ/G2H
+              - renesas,i2c-r8a7795      # R-Car H3
+              - renesas,i2c-r8a7796      # R-Car M3-W
+              - renesas,i2c-r8a77961     # R-Car M3-W+
+              - renesas,i2c-r8a77965     # R-Car M3-N
+              - renesas,i2c-r8a77970     # R-Car V3M
+              - renesas,i2c-r8a77980     # R-Car V3H
+              - renesas,i2c-r8a77990     # R-Car E3
+              - renesas,i2c-r8a77995     # R-Car D3
+              - renesas,i2c-r8a779a0     # R-Car V3U
+          - const: renesas,rcar-gen3-i2c # R-Car Gen3 and RZ/G2
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clock-frequency:
+    description:
+      Desired I2C bus clock frequency in Hz. The absence of this property
+      indicates the default frequency 100 kHz.
+
+  clocks:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+  dmas:
+    minItems: 2
+    maxItems: 4
+    description:
+      Must contain a list of pairs of references to DMA specifiers, one for
+      transmission, and one for reception.
+
+  dma-names:
+    minItems: 2
+    maxItems: 4
+    items:
+      enum:
+        - tx
+        - rx
+
+  i2c-scl-falling-time-ns:
+    default: 35
+    description:
+      Number of nanoseconds the SCL signal takes to fall; t(f) in the I2C
+      specification.
+
+  i2c-scl-internal-delay-ns:
+    default: 50
+    description:
+      Number of nanoseconds the IP core additionally needs to setup SCL.
+
+  i2c-scl-rising-time-ns:
+    default: 200
+    description:
+      Number of nanoseconds the SCL signal takes to rise; t(r) in the I2C
+      specification.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - power-domains
+  - '#address-cells'
+  - '#size-cells'
+
+allOf:
+  - $ref: /schemas/i2c/i2c-controller.yaml#
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,rcar-gen1-i2c
+              - renesas,rcar-gen2-i2c
+    then:
+      properties:
+        dmas: false
+        dma-names: false
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,rcar-gen2-i2c
+              - renesas,rcar-gen3-i2c
+    then:
+      required:
+        - resets
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/r8a7791-cpg-mssr.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/power/r8a7791-sysc.h>
+
+    i2c0: i2c@e6508000 {
+            #address-cells = <1>;
+            #size-cells = <0>;
+            compatible = "renesas,i2c-r8a7791", "renesas,rcar-gen2-i2c";
+            reg = <0xe6508000 0x40>;
+            interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
+            clock-frequency = <400000>;
+            clocks = <&cpg CPG_MOD 931>;
+            power-domains = <&sysc R8A7791_PD_ALWAYS_ON>;
+            resets = <&cpg 931>;
+            i2c-scl-internal-delay-ns = <6>;
+    };
diff --git a/MAINTAINERS b/MAINTAINERS
index 88a34613fa20cdb1..8a7ca33961d49daa 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -15452,7 +15452,7 @@ F:	drivers/iio/adc/rcar-gyroadc.c
 RENESAS R-CAR I2C DRIVERS
 M:	Wolfram Sang <wsa+renesas@sang-engineering.com>
 S:	Supported
-F:	Documentation/devicetree/bindings/i2c/renesas,i2c.txt
+F:	Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml
 F:	Documentation/devicetree/bindings/i2c/renesas,iic.txt
 F:	drivers/i2c/busses/i2c-rcar.c
 F:	drivers/i2c/busses/i2c-sh_mobile.c
-- 
2.25.1


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

* [PATCH/RFC 4/6] dt-bindings: i2c: renesas,iic: Convert to json-schema
  2021-05-04 14:35 [PATCH 0/6] dt-bindings: i2c: renesas: Convert to json-schema Geert Uytterhoeven
                   ` (2 preceding siblings ...)
  2021-05-04 14:35 ` [PATCH 3/6] dt-bindings: i2c: renesas,i2c: Convert to json-schema Geert Uytterhoeven
@ 2021-05-04 14:35 ` Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
                     ` (2 more replies)
  2021-05-04 14:35 ` [PATCH 5/6] dt-bindings: i2c: renesas,riic: " Geert Uytterhoeven
                   ` (3 subsequent siblings)
  7 siblings, 3 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-04 14:35 UTC (permalink / raw)
  To: Rob Herring, Wolfram Sang, Chris Brandt
  Cc: linux-i2c, linux-renesas-soc, Geert Uytterhoeven

Convert the Renesas R-Mobile I2C Bus Interface (IIC) Device Tree binding
documentation to json-schema.

Document missing properties.
R-Mobile A1 and SH-Mobile have multiple interrupts.
Update the example to match reality.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
It is still not clear to me which instances on R-Car Gen2 and RZ/G1
support automatic transmission, cfr. this note for the IIC3 instance in
the Hardware User's Manual:

    Automatic transmission for PMIC control (DVFS) is not available
    because the second generation R-Car series and RZ/G series products
    do not support the DVFS function (automatic transmission can be used
    as a hardware function, but this is not meaningful for actual use
    cases).

The only thing that's clear is that R-Car E2 and RZ/G1E do not have the
automatic transmission registers.  Note that current r8a7745.dtsi and
r8a7794.dtsi do not reflect that.

This binding interpretes the note as that IIC3 does not support
automatic transmission on R-Car H2, M2-W, M2-N, and V2H, and RZ/G1H,
RZ/H1M, RZ/G1N, while the other (if any) IIC instances on these SoCs do
support automatic transmission.  This matches with the current
r8a774[234].dtsi, which do not declare compatibility with the
family-specific and generic versions.  Note that the current
r8a779[0123].dtsi still do, and thus should be updated!

Possible alternative interpretations of the note are:
  - Only IIC3 has the automatic transmission registers.  But the
    automatic transmission feature is not useful as the SoCs lack DVFS
    support.
  - All IIC instances have the automatic transmission registers, and
    IIC3 is traditionally used to control the PMIC.  But as the SoCs
    lack DVFS support, the automatic transmission feature is not useful.
    As R-Car V2H has only instance IIC3, and is documented to have
    automatic transmissiong registers, this might be the correct
    interpration?
  - Anything else?

Thanks for your comments!
---
 .../devicetree/bindings/i2c/renesas,iic.txt   |  72 --------
 .../bindings/i2c/renesas,rmobile-iic.yaml     | 160 ++++++++++++++++++
 MAINTAINERS                                   |   2 +-
 3 files changed, 161 insertions(+), 73 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,iic.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,rmobile-iic.yaml

diff --git a/Documentation/devicetree/bindings/i2c/renesas,iic.txt b/Documentation/devicetree/bindings/i2c/renesas,iic.txt
deleted file mode 100644
index 93d412832e66b682..0000000000000000
--- a/Documentation/devicetree/bindings/i2c/renesas,iic.txt
+++ /dev/null
@@ -1,72 +0,0 @@
-Device tree configuration for Renesas IIC (sh_mobile) driver
-
-Required properties:
-- compatible      :
-			- "renesas,iic-r8a73a4" (R-Mobile APE6)
-			- "renesas,iic-r8a7740" (R-Mobile A1)
-			- "renesas,iic-r8a7742" (RZ/G1H)
-			- "renesas,iic-r8a7743" (RZ/G1M)
-			- "renesas,iic-r8a7744" (RZ/G1N)
-			- "renesas,iic-r8a7745" (RZ/G1E)
-			- "renesas,iic-r8a774a1" (RZ/G2M)
-			- "renesas,iic-r8a774b1" (RZ/G2N)
-			- "renesas,iic-r8a774c0" (RZ/G2E)
-			- "renesas,iic-r8a774e1" (RZ/G2H)
-			- "renesas,iic-r8a7790" (R-Car H2)
-			- "renesas,iic-r8a7791" (R-Car M2-W)
-			- "renesas,iic-r8a7792" (R-Car V2H)
-			- "renesas,iic-r8a7793" (R-Car M2-N)
-			- "renesas,iic-r8a7794" (R-Car E2)
-			- "renesas,iic-r8a7795" (R-Car H3)
-			- "renesas,iic-r8a7796" (R-Car M3-W)
-			- "renesas,iic-r8a77961" (R-Car M3-W+)
-			- "renesas,iic-r8a77965" (R-Car M3-N)
-			- "renesas,iic-r8a77990" (R-Car E3)
-			- "renesas,iic-sh73a0" (SH-Mobile AG5)
-			- "renesas,rcar-gen2-iic" (generic R-Car Gen2 or RZ/G1
-							compatible device)
-			- "renesas,rcar-gen3-iic" (generic R-Car Gen3 or RZ/G2
-							compatible device)
-			- "renesas,rmobile-iic" (generic device)
-
-			When compatible with a generic R-Car version, nodes
-			must list the SoC-specific version corresponding to
-			the platform first followed by the generic R-Car
-			version.
-
-			When compatible with "renesas,rmobile-iic" it should
-			be the last compatibility string listed.
-
-			The r8a77990 (R-Car E3) and r8a774c0 (RZ/G2E)
-			controllers are not considered compatible with
-			"renesas,rcar-gen3-iic" or "renesas,rmobile-iic"
-			due to the absence of automatic transmission registers.
-
-- reg             : address start and address range size of device
-- interrupts      : interrupt of device
-- clocks          : clock for device
-- #address-cells  : should be <1>
-- #size-cells     : should be <0>
-
-Optional properties:
-- clock-frequency : frequency of bus clock in Hz. Default 100kHz if unset.
-- dmas            : Must contain a list of two references to DMA
-		    specifiers, one for transmission, and one for
-		    reception.
-- dma-names       : Must contain a list of two DMA names, "tx" and "rx".
-
-
-Pinctrl properties might be needed, too. See there.
-
-Example:
-
-	iic0: i2c@e6500000 {
-		compatible = "renesas,iic-r8a7790", "renesas,rcar-gen2-iic",
-			     "renesas,rmobile-iic";
-		reg = <0 0xe6500000 0 0x425>;
-		interrupts = <0 174 IRQ_TYPE_LEVEL_HIGH>;
-		clocks = <&mstp3_clks R8A7790_CLK_IIC0>;
-		clock-frequency = <400000>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-	};
diff --git a/Documentation/devicetree/bindings/i2c/renesas,rmobile-iic.yaml b/Documentation/devicetree/bindings/i2c/renesas,rmobile-iic.yaml
new file mode 100644
index 0000000000000000..7aa87f64922c0fd2
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/renesas,rmobile-iic.yaml
@@ -0,0 +1,160 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i2c/renesas,rmobile-iic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas R-Mobile I2C Bus Interface (IIC)
+
+maintainers:
+  - Wolfram Sang <wsa+renesas@sang-engineering.com>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - renesas,iic-r8a73a4      # R-Mobile APE6
+              - renesas,iic-r8a7740      # R-Mobile A1
+              - renesas,iic-sh73a0       # SH-Mobile AG5
+          - const: renesas,rmobile-iic   # Generic
+
+      - items:
+          - enum:
+              - renesas,iic-r8a7742      # RZ/G1H IIC[012]
+              - renesas,iic-r8a7743      # RZ/G1M IIC[01]
+              - renesas,iic-r8a7744      # RZ/G1N IIC[01]
+              - renesas,iic-r8a7790      # R-Car H2 IIC[012]
+              - renesas,iic-r8a7791      # R-Car M2-W IIC[01]
+              - renesas,iic-r8a7793      # R-Car M2-N IIC[01]
+          - const: renesas,rcar-gen2-iic # R-Car Gen2 and RZ/G1
+          - const: renesas,rmobile-iic   # Generic
+
+      - items:
+          - enum:
+              - renesas,iic-r8a774a1     # RZ/G2M
+              - renesas,iic-r8a774b1     # RZ/G2N
+              - renesas,iic-r8a774e1     # RZ/G2H
+              - renesas,iic-r8a7795      # R-Car H3
+              - renesas,iic-r8a7796      # R-Car M3-W
+              - renesas,iic-r8a77961     # R-Car M3-W+
+              - renesas,iic-r8a77965     # R-Car M3-N
+          - const: renesas,rcar-gen3-iic # R-Car Gen3 and RZ/G2
+          - const: renesas,rmobile-iic   # Generic
+
+      - items:
+            # Instances lacking automatic transmission registers are not
+            # considered compatible with family-specific or generic versions
+          - enum:
+              - renesas,iic-r8a7742      # RZ/G1H IIC3
+              - renesas,iic-r8a7743      # RZ/G1M IIC3
+              - renesas,iic-r8a7744      # RZ/G1N IIC3
+              - renesas,iic-r8a7745      # RZ/G1E
+              - renesas,iic-r8a774c0     # RZ/G2E
+              - renesas,iic-r8a7790      # R-Car H2 IIC3
+              - renesas,iic-r8a7791      # R-Car M2-W IIC3
+              - renesas,iic-r8a7792      # R-Car V2H IIC3
+              - renesas,iic-r8a7793      # R-Car M2-N IIC3
+              - renesas,iic-r8a7794      # R-Car E2
+              - renesas,iic-r8a77990     # R-Car E3
+
+  reg:
+    maxItems: 1
+
+  interrupts: true
+
+  clock-frequency:
+    description:
+      Desired I2C bus clock frequency in Hz. The absence of this property
+      indicates the default frequency 100 kHz.
+
+  clocks:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+  dmas:
+    minItems: 2
+    maxItems: 4
+    description:
+      Must contain a list of pairs of references to DMA specifiers, one for
+      transmission, and one for reception.
+
+  dma-names:
+    minItems: 2
+    maxItems: 4
+    items:
+      enum:
+        - tx
+        - rx
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - power-domains
+  - '#address-cells'
+  - '#size-cells'
+
+allOf:
+  - $ref: /schemas/i2c/i2c-controller.yaml#
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,iic-r8a7740
+              - renesas,iic-sh73a0
+    then:
+      properties:
+        interrupts:
+          items:
+            - description: Arbitration Lost Interrupt (ALI)
+            - description: Non-acknowledge Detection Interrupt (TACKI)
+            - description: Wait Interrupt (WAITI)
+            - description: Data Transmit Enable interrupt (DTEI)
+    else:
+      properties:
+        interrupts:
+          items:
+            - description: Single combined interrupt
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,rcar-gen2-iic
+              - renesas,rcar-gen3-iic
+    then:
+      required:
+        - resets
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/r8a7790-cpg-mssr.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/power/r8a7790-sysc.h>
+
+    iic0: i2c@e6500000 {
+            compatible = "renesas,iic-r8a7790", "renesas,rcar-gen2-iic",
+                         "renesas,rmobile-iic";
+            reg = <0xe6500000 0x425>;
+            interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
+            clocks = <&cpg CPG_MOD 318>;
+            clock-frequency = <400000>;
+            dmas = <&dmac0 0x61>, <&dmac0 0x62>, <&dmac1 0x61>, <&dmac1 0x62>;
+            dma-names = "tx", "rx", "tx", "rx";
+            power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
+            resets = <&cpg 318>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+    };
diff --git a/MAINTAINERS b/MAINTAINERS
index 8a7ca33961d49daa..c8834d7a1aac0efd 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -15453,7 +15453,7 @@ RENESAS R-CAR I2C DRIVERS
 M:	Wolfram Sang <wsa+renesas@sang-engineering.com>
 S:	Supported
 F:	Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml
-F:	Documentation/devicetree/bindings/i2c/renesas,iic.txt
+F:	Documentation/devicetree/bindings/i2c/renesas,rmobile-iic.yaml
 F:	drivers/i2c/busses/i2c-rcar.c
 F:	drivers/i2c/busses/i2c-sh_mobile.c
 
-- 
2.25.1


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

* [PATCH 5/6] dt-bindings: i2c: renesas,riic: Convert to json-schema
  2021-05-04 14:35 [PATCH 0/6] dt-bindings: i2c: renesas: Convert to json-schema Geert Uytterhoeven
                   ` (3 preceding siblings ...)
  2021-05-04 14:35 ` [PATCH/RFC 4/6] dt-bindings: i2c: renesas,iic: " Geert Uytterhoeven
@ 2021-05-04 14:35 ` Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
  2021-05-06 20:56   ` Rob Herring
  2021-05-04 14:35 ` [PATCH 6/6] dt-bindings: i2c: renesas,iic-emev2: " Geert Uytterhoeven
                   ` (2 subsequent siblings)
  7 siblings, 2 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-04 14:35 UTC (permalink / raw)
  To: Rob Herring, Wolfram Sang, Chris Brandt
  Cc: linux-i2c, linux-renesas-soc, Geert Uytterhoeven

Convert the Renesas RZ/A I2C Bus Interface (RIIC) Device Tree binding
documentation to json-schema.

Document missing properties.
Update the example to match reality.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
 .../devicetree/bindings/i2c/renesas,riic.txt  | 32 -------
 .../devicetree/bindings/i2c/renesas,riic.yaml | 83 +++++++++++++++++++
 MAINTAINERS                                   |  2 +-
 3 files changed, 84 insertions(+), 33 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,riic.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,riic.yaml

diff --git a/Documentation/devicetree/bindings/i2c/renesas,riic.txt b/Documentation/devicetree/bindings/i2c/renesas,riic.txt
deleted file mode 100644
index e26fe3ad86a9509f..0000000000000000
--- a/Documentation/devicetree/bindings/i2c/renesas,riic.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-Device tree configuration for Renesas RIIC driver
-
-Required properties:
-- compatible      :
-	"renesas,riic-r7s72100" if the device is a part of a R7S72100 SoC.
-	"renesas,riic-r7s9210" if the device is a part of a R7S9210 SoC.
-	"renesas,riic-rz" for a generic RZ/A compatible device.
-- reg             : address start and address range size of device
-- interrupts      : 8 interrupts (TEI, RI, TI, SPI, STI, NAKI, ALI, TMOI)
-- clock-frequency : frequency of bus clock in Hz
-- #address-cells  : should be <1>
-- #size-cells     : should be <0>
-
-Pinctrl properties might be needed, too. See there.
-
-Example:
-
-	i2c0: i2c@fcfee000 {
-		compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
-		reg = <0xfcfee000 0x44>;
-		interrupts = <0 157 IRQ_TYPE_LEVEL_HIGH>,
-			     <0 158 IRQ_TYPE_EDGE_RISING>,
-			     <0 159 IRQ_TYPE_EDGE_RISING>,
-			     <0 160 IRQ_TYPE_LEVEL_HIGH>,
-			     <0 161 IRQ_TYPE_LEVEL_HIGH>,
-			     <0 162 IRQ_TYPE_LEVEL_HIGH>,
-			     <0 163 IRQ_TYPE_LEVEL_HIGH>,
-			     <0 164 IRQ_TYPE_LEVEL_HIGH>;
-		clock-frequency = <100000>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-	};
diff --git a/Documentation/devicetree/bindings/i2c/renesas,riic.yaml b/Documentation/devicetree/bindings/i2c/renesas,riic.yaml
new file mode 100644
index 0000000000000000..e6951bf451d95cff
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/renesas,riic.yaml
@@ -0,0 +1,83 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i2c/renesas,riic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas RZ/A I2C Bus Interface (RIIC)
+
+maintainers:
+  - Chris Brandt <chris.brandt@renesas.com>
+  - Wolfram Sang <wsa+renesas@sang-engineering.com>
+
+allOf:
+  - $ref: /schemas/i2c/i2c-controller.yaml#
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - renesas,riic-r7s72100 # RZ/A1H
+              - renesas,riic-r7s9210  # RZ/A2M
+          - const: renesas,riic-rz    # RZ/A
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: Transmit End Interrupt (TEI)
+      - description: Receive Data Full Interrupt (RI)
+      - description: Transmit Data Empty Interrupt (TI)
+      - description: Stop Condition Detection Interrupt (SPI)
+      - description: Start Condition Detection Interrupt (STI)
+      - description: NACK Reception Interrupt (NAKI)
+      - description: Arbitration-Lost Interrupt (ALI)
+      - description: Timeout Interrupt (TMOI)
+
+  clock-frequency:
+    description:
+      Desired I2C bus clock frequency in Hz. The absence of this property
+      indicates the default frequency 100 kHz.
+
+  clocks:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-frequency
+  - power-domains
+  - '#address-cells'
+  - '#size-cells'
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/r7s72100-clock.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    i2c0: i2c@fcfee000 {
+            compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
+            reg = <0xfcfee000 0x44>;
+            interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 158 IRQ_TYPE_EDGE_RISING>,
+                         <GIC_SPI 159 IRQ_TYPE_EDGE_RISING>,
+                         <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
+            clocks = <&mstp9_clks R7S72100_CLK_I2C0>;
+            clock-frequency = <100000>;
+            power-domains = <&cpg_clocks>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+    };
diff --git a/MAINTAINERS b/MAINTAINERS
index c8834d7a1aac0efd..ea519a8ffc6a9356 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -15469,7 +15469,7 @@ F:	drivers/thermal/rcar_thermal.c
 RENESAS RIIC DRIVER
 M:	Chris Brandt <chris.brandt@renesas.com>
 S:	Supported
-F:	Documentation/devicetree/bindings/i2c/renesas,riic.txt
+F:	Documentation/devicetree/bindings/i2c/renesas,riic.yaml
 F:	drivers/i2c/busses/i2c-riic.c
 
 RENESAS USB PHY DRIVER
-- 
2.25.1


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

* [PATCH 6/6] dt-bindings: i2c: renesas,iic-emev2: Convert to json-schema
  2021-05-04 14:35 [PATCH 0/6] dt-bindings: i2c: renesas: Convert to json-schema Geert Uytterhoeven
                   ` (4 preceding siblings ...)
  2021-05-04 14:35 ` [PATCH 5/6] dt-bindings: i2c: renesas,riic: " Geert Uytterhoeven
@ 2021-05-04 14:35 ` Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
                     ` (2 more replies)
  2021-05-04 14:42 ` [PATCH 0/6] dt-bindings: i2c: renesas: " Rob Herring
  2021-05-04 14:51 ` Geert Uytterhoeven
  7 siblings, 3 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-04 14:35 UTC (permalink / raw)
  To: Rob Herring, Wolfram Sang, Chris Brandt
  Cc: linux-i2c, linux-renesas-soc, Geert Uytterhoeven

Convert the Renesas EMMA Mobile EV2 IIC Interface (IIC) Device Tree
binding documentation to json-schema.

Document missing properties.
Update the example to match reality.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
 .../bindings/i2c/renesas,iic-emev2.txt        | 22 --------
 .../bindings/i2c/renesas,iic-emev2.yaml       | 54 +++++++++++++++++++
 MAINTAINERS                                   |  2 +-
 3 files changed, 55 insertions(+), 23 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,iic-emev2.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml

diff --git a/Documentation/devicetree/bindings/i2c/renesas,iic-emev2.txt b/Documentation/devicetree/bindings/i2c/renesas,iic-emev2.txt
deleted file mode 100644
index 5ed1ea1c7e14a9cd..0000000000000000
--- a/Documentation/devicetree/bindings/i2c/renesas,iic-emev2.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Device tree configuration for Renesas EMEV2 IIC controller
-
-Required properties:
-- compatible      : "renesas,iic-emev2"
-- reg             : address start and address range size of device
-- interrupts      : specifier for the IIC controller interrupt
-- clocks          : phandle to the IP core SCLK
-- clock-names     : must be "sclk"
-- #address-cells  : should be <1>
-- #size-cells     : should be <0>
-
-Example:
-
-	iic0: i2c@e0070000 {
-		#address-cells = <1>;
-		#size-cells = <0>;
-		compatible = "renesas,iic-emev2";
-		reg = <0xe0070000 0x28>;
-		interrupts = <0 32 IRQ_TYPE_EDGE_RISING>;
-		clocks = <&iic0_sclk>;
-		clock-names = "sclk";
-	};
diff --git a/Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml b/Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml
new file mode 100644
index 0000000000000000..17c1102562be98e7
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i2c/renesas,iic-emev2.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas EMMA Mobile EV2 IIC Interface
+
+maintainers:
+  - Wolfram Sang <wsa+renesas@sang-engineering.com>
+
+allOf:
+  - $ref: /schemas/i2c/i2c-controller.yaml#
+
+properties:
+  compatible:
+    const: renesas,iic-emev2
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    const: sclk
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+  - '#address-cells'
+  - '#size-cells'
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    iic0: i2c@e0070000 {
+            #address-cells = <1>;
+            #size-cells = <0>;
+            compatible = "renesas,iic-emev2";
+            reg = <0xe0070000 0x28>;
+            interrupts = <GIC_SPI 32 IRQ_TYPE_EDGE_RISING>;
+            clocks = <&iic0_sclk>;
+            clock-names = "sclk";
+    };
diff --git a/MAINTAINERS b/MAINTAINERS
index ea519a8ffc6a9356..c9e5749a4402c441 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -15431,7 +15431,7 @@ F:	drivers/clk/renesas/
 RENESAS EMEV2 I2C DRIVER
 M:	Wolfram Sang <wsa+renesas@sang-engineering.com>
 S:	Supported
-F:	Documentation/devicetree/bindings/i2c/renesas,iic-emev2.txt
+F:	Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml
 F:	drivers/i2c/busses/i2c-emev2.c
 
 RENESAS ETHERNET DRIVERS
-- 
2.25.1


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

* Re: [PATCH 0/6] dt-bindings: i2c: renesas: Convert to json-schema
  2021-05-04 14:35 [PATCH 0/6] dt-bindings: i2c: renesas: Convert to json-schema Geert Uytterhoeven
                   ` (5 preceding siblings ...)
  2021-05-04 14:35 ` [PATCH 6/6] dt-bindings: i2c: renesas,iic-emev2: " Geert Uytterhoeven
@ 2021-05-04 14:42 ` Rob Herring
  2021-05-04 14:51   ` Geert Uytterhoeven
  2021-05-04 14:51 ` Geert Uytterhoeven
  7 siblings, 1 reply; 33+ messages in thread
From: Rob Herring @ 2021-05-04 14:42 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Wolfram Sang, Chris Brandt, linux-i2c, linux-renesas-soc

On Tue, May 4, 2021 at 9:36 AM Geert Uytterhoeven
<geert+renesas@glider.be> wrote:
>
>         Hi all,
>
> This patch series converts the DT bindings for the various I2C
> controllers found in Renesas SoCs to json-schema, after a small cleanup
> to ease the conversion.

You missed the DT list. Can you resend please.

Rob

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

* [PATCH 0/6] dt-bindings: i2c: renesas: Convert to json-schema
  2021-05-04 14:35 [PATCH 0/6] dt-bindings: i2c: renesas: Convert to json-schema Geert Uytterhoeven
                   ` (6 preceding siblings ...)
  2021-05-04 14:42 ` [PATCH 0/6] dt-bindings: i2c: renesas: " Rob Herring
@ 2021-05-04 14:51 ` Geert Uytterhoeven
  7 siblings, 0 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-04 14:51 UTC (permalink / raw)
  To: Rob Herring, Wolfram Sang, Chris Brandt
  Cc: devicetree, linux-i2c, linux-renesas-soc, Geert Uytterhoeven

	Hi all,

This patch series converts the DT bindings for the various I2C
controllers found in Renesas SoCs to json-schema, after a small cleanup
to ease the conversion.

The trickiest part is the conversion for renesas,iic, as it's not clear
to me which IIC instances have the automatic transmission registers and
which don't.  Whatever the outcome, passing validation for this variant
will require DTS changes.

Thanks for your comments!

Geert Uytterhoeven (6):
  i2c: rcar: Drop "renesas,i2c-rcar"
  dt-bindings: i2c: renesas,i2c: Drop "renesas,i2c-rcar"
  dt-bindings: i2c: renesas,i2c: Convert to json-schema
  [RFC] dt-bindings: i2c: renesas,iic: Convert to json-schema
  dt-bindings: i2c: renesas,riic: Convert to json-schema
  dt-bindings: i2c: renesas,iic-emev2: Convert to json-schema

 .../devicetree/bindings/i2c/renesas,i2c.txt   |  67 --------
 .../bindings/i2c/renesas,iic-emev2.txt        |  22 ---
 .../bindings/i2c/renesas,iic-emev2.yaml       |  54 ++++++
 .../devicetree/bindings/i2c/renesas,iic.txt   |  72 --------
 .../bindings/i2c/renesas,rcar-i2c.yaml        | 158 +++++++++++++++++
 .../devicetree/bindings/i2c/renesas,riic.txt  |  32 ----
 .../devicetree/bindings/i2c/renesas,riic.yaml |  83 +++++++++
 .../bindings/i2c/renesas,rmobile-iic.yaml     | 160 ++++++++++++++++++
 MAINTAINERS                                   |   8 +-
 drivers/i2c/busses/i2c-rcar.c                 |   1 -
 10 files changed, 459 insertions(+), 198 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,i2c.txt
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,iic-emev2.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,iic.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,riic.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,riic.yaml
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,rmobile-iic.yaml

-- 
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] 33+ messages in thread

* [PATCH 1/6] i2c: rcar: Drop "renesas,i2c-rcar"
  2021-05-04 14:35 ` [PATCH 1/6] i2c: rcar: Drop "renesas,i2c-rcar" Geert Uytterhoeven
@ 2021-05-04 14:51   ` Geert Uytterhoeven
  2021-05-05  7:18   ` Wolfram Sang
  2021-05-28  7:55   ` Wolfram Sang
  2 siblings, 0 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-04 14:51 UTC (permalink / raw)
  To: Rob Herring, Wolfram Sang, Chris Brandt
  Cc: devicetree, linux-i2c, linux-renesas-soc, Geert Uytterhoeven

The compatible value "renesas,i2c-rcar" was deprecated in commit
ad4a8dc3fec6485b ("i2c: rcar: Add per-Generation fallback bindings"),
and never had any users in upstream Linux.  Drop its match entry from
the driver.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
 drivers/i2c/busses/i2c-rcar.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c
index 327c092a4130bd20..bff9913c37b8b277 100644
--- a/drivers/i2c/busses/i2c-rcar.c
+++ b/drivers/i2c/busses/i2c-rcar.c
@@ -1013,7 +1013,6 @@ static const struct of_device_id rcar_i2c_dt_ids[] = {
 	{ .compatible = "renesas,i2c-r8a7794", .data = (void *)I2C_RCAR_GEN2 },
 	{ .compatible = "renesas,i2c-r8a7795", .data = (void *)I2C_RCAR_GEN3 },
 	{ .compatible = "renesas,i2c-r8a7796", .data = (void *)I2C_RCAR_GEN3 },
-	{ .compatible = "renesas,i2c-rcar", .data = (void *)I2C_RCAR_GEN1 },	/* Deprecated */
 	{ .compatible = "renesas,rcar-gen1-i2c", .data = (void *)I2C_RCAR_GEN1 },
 	{ .compatible = "renesas,rcar-gen2-i2c", .data = (void *)I2C_RCAR_GEN2 },
 	{ .compatible = "renesas,rcar-gen3-i2c", .data = (void *)I2C_RCAR_GEN3 },
-- 
2.25.1


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

* [PATCH 2/6] dt-bindings: i2c: renesas,i2c: Drop "renesas,i2c-rcar"
  2021-05-04 14:35 ` [PATCH 2/6] dt-bindings: i2c: renesas,i2c: " Geert Uytterhoeven
@ 2021-05-04 14:51   ` Geert Uytterhoeven
  2021-05-05  7:18   ` Wolfram Sang
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-04 14:51 UTC (permalink / raw)
  To: Rob Herring, Wolfram Sang, Chris Brandt
  Cc: devicetree, linux-i2c, linux-renesas-soc, Geert Uytterhoeven

The compatible value "renesas,i2c-rcar" was deprecated in commit
ad4a8dc3fec6485b ("i2c: rcar: Add per-Generation fallback bindings"),
and never had any users in upstream Linux.  Drop its description from
the DT bindings.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
 Documentation/devicetree/bindings/i2c/renesas,i2c.txt | 1 -
 1 file changed, 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/i2c/renesas,i2c.txt b/Documentation/devicetree/bindings/i2c/renesas,i2c.txt
index 5762d2d1ab9c9658..f4240fcf28bbf6eb 100644
--- a/Documentation/devicetree/bindings/i2c/renesas,i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/renesas,i2c.txt
@@ -32,7 +32,6 @@ Required properties:
 				device.
 	"renesas,rcar-gen3-i2c" for a generic R-Car Gen3 or RZ/G2 compatible
 				device.
-	"renesas,i2c-rcar" (deprecated)
 
 	When compatible with the generic version, nodes must list the
 	SoC-specific version corresponding to the platform first followed
-- 
2.25.1


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

* [PATCH 3/6] dt-bindings: i2c: renesas,i2c: Convert to json-schema
  2021-05-04 14:35 ` [PATCH 3/6] dt-bindings: i2c: renesas,i2c: Convert to json-schema Geert Uytterhoeven
@ 2021-05-04 14:51   ` Geert Uytterhoeven
  2021-05-06 20:52   ` Rob Herring
  2021-05-28  7:56   ` Wolfram Sang
  2 siblings, 0 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-04 14:51 UTC (permalink / raw)
  To: Rob Herring, Wolfram Sang, Chris Brandt
  Cc: devicetree, linux-i2c, linux-renesas-soc, Geert Uytterhoeven

Convert the Renesas R-Car I2C Controller Device Tree binding
documentation to json-schema.

Document missing properties.
Make the clocks property required.
DMA is supported on R-Car Gen3 and RZ/G2 only.
Update the example to match reality.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
 .../devicetree/bindings/i2c/renesas,i2c.txt   |  66 --------
 .../bindings/i2c/renesas,rcar-i2c.yaml        | 158 ++++++++++++++++++
 MAINTAINERS                                   |   2 +-
 3 files changed, 159 insertions(+), 67 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,i2c.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml

diff --git a/Documentation/devicetree/bindings/i2c/renesas,i2c.txt b/Documentation/devicetree/bindings/i2c/renesas,i2c.txt
deleted file mode 100644
index f4240fcf28bbf6eb..0000000000000000
--- a/Documentation/devicetree/bindings/i2c/renesas,i2c.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-I2C for R-Car platforms
-
-Required properties:
-- compatible:
-	"renesas,i2c-r8a7742" if the device is a part of a R8A7742 SoC.
-	"renesas,i2c-r8a7743" if the device is a part of a R8A7743 SoC.
-	"renesas,i2c-r8a7744" if the device is a part of a R8A7744 SoC.
-	"renesas,i2c-r8a7745" if the device is a part of a R8A7745 SoC.
-	"renesas,i2c-r8a77470" if the device is a part of a R8A77470 SoC.
-	"renesas,i2c-r8a774a1" if the device is a part of a R8A774A1 SoC.
-	"renesas,i2c-r8a774b1" if the device is a part of a R8A774B1 SoC.
-	"renesas,i2c-r8a774c0" if the device is a part of a R8A774C0 SoC.
-	"renesas,i2c-r8a774e1" if the device is a part of a R8A774E1 SoC.
-	"renesas,i2c-r8a7778" if the device is a part of a R8A7778 SoC.
-	"renesas,i2c-r8a7779" if the device is a part of a R8A7779 SoC.
-	"renesas,i2c-r8a7790" if the device is a part of a R8A7790 SoC.
-	"renesas,i2c-r8a7791" if the device is a part of a R8A7791 SoC.
-	"renesas,i2c-r8a7792" if the device is a part of a R8A7792 SoC.
-	"renesas,i2c-r8a7793" if the device is a part of a R8A7793 SoC.
-	"renesas,i2c-r8a7794" if the device is a part of a R8A7794 SoC.
-	"renesas,i2c-r8a7795" if the device is a part of a R8A7795 SoC.
-	"renesas,i2c-r8a7796" if the device is a part of a R8A77960 SoC.
-	"renesas,i2c-r8a77961" if the device is a part of a R8A77961 SoC.
-	"renesas,i2c-r8a77965" if the device is a part of a R8A77965 SoC.
-	"renesas,i2c-r8a77970" if the device is a part of a R8A77970 SoC.
-	"renesas,i2c-r8a77980" if the device is a part of a R8A77980 SoC.
-	"renesas,i2c-r8a77990" if the device is a part of a R8A77990 SoC.
-	"renesas,i2c-r8a77995" if the device is a part of a R8A77995 SoC.
-	"renesas,i2c-r8a779a0" if the device is a part of a R8A779A0 SoC.
-	"renesas,rcar-gen1-i2c" for a generic R-Car Gen1 compatible device.
-	"renesas,rcar-gen2-i2c" for a generic R-Car Gen2 or RZ/G1 compatible
-				device.
-	"renesas,rcar-gen3-i2c" for a generic R-Car Gen3 or RZ/G2 compatible
-				device.
-
-	When compatible with the generic version, nodes must list the
-	SoC-specific version corresponding to the platform first followed
-	by the generic version.
-
-- reg: physical base address of the controller and length of memory mapped
-  region.
-- interrupts: interrupt specifier.
-
-Optional properties:
-- clock-frequency: desired I2C bus clock frequency in Hz. The absence of this
-  property indicates the default frequency 100 kHz.
-- clocks: clock specifier.
-- dmas: Must contain a list of two references to DMA specifiers, one for
-  transmission, and one for reception.
-- dma-names: Must contain a list of two DMA names, "tx" and "rx".
-
-- i2c-scl-falling-time-ns: see i2c.txt
-- i2c-scl-internal-delay-ns: see i2c.txt
-- i2c-scl-rising-time-ns: see i2c.txt
-
-Examples :
-
-i2c0: i2c@e6508000 {
-	#address-cells = <1>;
-	#size-cells = <0>;
-	compatible = "renesas,i2c-r8a7791", "renesas,rcar-gen2-i2c";
-	reg = <0 0xe6508000 0 0x40>;
-	interrupts = <0 287 IRQ_TYPE_LEVEL_HIGH>;
-	clocks = <&mstp9_clks R8A7791_CLK_I2C0>;
-	clock-frequency = <400000>;
-};
diff --git a/Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml b/Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml
new file mode 100644
index 0000000000000000..052aad44e781a561
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml
@@ -0,0 +1,158 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i2c/renesas,rcar-i2c.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas R-Car I2C Controller
+
+maintainers:
+  - Wolfram Sang <wsa+renesas@sang-engineering.com>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - renesas,i2c-r8a7778      # R-Car M1A
+              - renesas,i2c-r8a7779      # R-Car H1
+          - const: renesas,rcar-gen1-i2c # R-Car Gen1
+
+      - items:
+          - enum:
+              - renesas,i2c-r8a7742      # RZ/G1H
+              - renesas,i2c-r8a7743      # RZ/G1M
+              - renesas,i2c-r8a7744      # RZ/G1N
+              - renesas,i2c-r8a7745      # RZ/G1E
+              - renesas,i2c-r8a77470     # RZ/G1C
+              - renesas,i2c-r8a7790      # R-Car H2
+              - renesas,i2c-r8a7791      # R-Car M2-W
+              - renesas,i2c-r8a7792      # R-Car V2H
+              - renesas,i2c-r8a7793      # R-Car M2-N
+              - renesas,i2c-r8a7794      # R-Car E2
+          - const: renesas,rcar-gen2-i2c # R-Car Gen2 and RZ/G1
+
+      - items:
+          - enum:
+              - renesas,i2c-r8a774a1     # RZ/G2M
+              - renesas,i2c-r8a774b1     # RZ/G2N
+              - renesas,i2c-r8a774c0     # RZ/G2E
+              - renesas,i2c-r8a774e1     # RZ/G2H
+              - renesas,i2c-r8a7795      # R-Car H3
+              - renesas,i2c-r8a7796      # R-Car M3-W
+              - renesas,i2c-r8a77961     # R-Car M3-W+
+              - renesas,i2c-r8a77965     # R-Car M3-N
+              - renesas,i2c-r8a77970     # R-Car V3M
+              - renesas,i2c-r8a77980     # R-Car V3H
+              - renesas,i2c-r8a77990     # R-Car E3
+              - renesas,i2c-r8a77995     # R-Car D3
+              - renesas,i2c-r8a779a0     # R-Car V3U
+          - const: renesas,rcar-gen3-i2c # R-Car Gen3 and RZ/G2
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clock-frequency:
+    description:
+      Desired I2C bus clock frequency in Hz. The absence of this property
+      indicates the default frequency 100 kHz.
+
+  clocks:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+  dmas:
+    minItems: 2
+    maxItems: 4
+    description:
+      Must contain a list of pairs of references to DMA specifiers, one for
+      transmission, and one for reception.
+
+  dma-names:
+    minItems: 2
+    maxItems: 4
+    items:
+      enum:
+        - tx
+        - rx
+
+  i2c-scl-falling-time-ns:
+    default: 35
+    description:
+      Number of nanoseconds the SCL signal takes to fall; t(f) in the I2C
+      specification.
+
+  i2c-scl-internal-delay-ns:
+    default: 50
+    description:
+      Number of nanoseconds the IP core additionally needs to setup SCL.
+
+  i2c-scl-rising-time-ns:
+    default: 200
+    description:
+      Number of nanoseconds the SCL signal takes to rise; t(r) in the I2C
+      specification.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - power-domains
+  - '#address-cells'
+  - '#size-cells'
+
+allOf:
+  - $ref: /schemas/i2c/i2c-controller.yaml#
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,rcar-gen1-i2c
+              - renesas,rcar-gen2-i2c
+    then:
+      properties:
+        dmas: false
+        dma-names: false
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,rcar-gen2-i2c
+              - renesas,rcar-gen3-i2c
+    then:
+      required:
+        - resets
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/r8a7791-cpg-mssr.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/power/r8a7791-sysc.h>
+
+    i2c0: i2c@e6508000 {
+            #address-cells = <1>;
+            #size-cells = <0>;
+            compatible = "renesas,i2c-r8a7791", "renesas,rcar-gen2-i2c";
+            reg = <0xe6508000 0x40>;
+            interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
+            clock-frequency = <400000>;
+            clocks = <&cpg CPG_MOD 931>;
+            power-domains = <&sysc R8A7791_PD_ALWAYS_ON>;
+            resets = <&cpg 931>;
+            i2c-scl-internal-delay-ns = <6>;
+    };
diff --git a/MAINTAINERS b/MAINTAINERS
index 88a34613fa20cdb1..8a7ca33961d49daa 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -15452,7 +15452,7 @@ F:	drivers/iio/adc/rcar-gyroadc.c
 RENESAS R-CAR I2C DRIVERS
 M:	Wolfram Sang <wsa+renesas@sang-engineering.com>
 S:	Supported
-F:	Documentation/devicetree/bindings/i2c/renesas,i2c.txt
+F:	Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml
 F:	Documentation/devicetree/bindings/i2c/renesas,iic.txt
 F:	drivers/i2c/busses/i2c-rcar.c
 F:	drivers/i2c/busses/i2c-sh_mobile.c
-- 
2.25.1


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

* [PATCH/RFC 4/6] dt-bindings: i2c: renesas,iic: Convert to json-schema
  2021-05-04 14:35 ` [PATCH/RFC 4/6] dt-bindings: i2c: renesas,iic: " Geert Uytterhoeven
@ 2021-05-04 14:51   ` Geert Uytterhoeven
  2021-05-05  7:33   ` Wolfram Sang
  2021-05-06 20:54   ` Rob Herring
  2 siblings, 0 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-04 14:51 UTC (permalink / raw)
  To: Rob Herring, Wolfram Sang, Chris Brandt
  Cc: devicetree, linux-i2c, linux-renesas-soc, Geert Uytterhoeven

Convert the Renesas R-Mobile I2C Bus Interface (IIC) Device Tree binding
documentation to json-schema.

Document missing properties.
R-Mobile A1 and SH-Mobile have multiple interrupts.
Update the example to match reality.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
It is still not clear to me which instances on R-Car Gen2 and RZ/G1
support automatic transmission, cfr. this note for the IIC3 instance in
the Hardware User's Manual:

    Automatic transmission for PMIC control (DVFS) is not available
    because the second generation R-Car series and RZ/G series products
    do not support the DVFS function (automatic transmission can be used
    as a hardware function, but this is not meaningful for actual use
    cases).

The only thing that's clear is that R-Car E2 and RZ/G1E do not have the
automatic transmission registers.  Note that current r8a7745.dtsi and
r8a7794.dtsi do not reflect that.

This binding interpretes the note as that IIC3 does not support
automatic transmission on R-Car H2, M2-W, M2-N, and V2H, and RZ/G1H,
RZ/H1M, RZ/G1N, while the other (if any) IIC instances on these SoCs do
support automatic transmission.  This matches with the current
r8a774[234].dtsi, which do not declare compatibility with the
family-specific and generic versions.  Note that the current
r8a779[0123].dtsi still do, and thus should be updated!

Possible alternative interpretations of the note are:
  - Only IIC3 has the automatic transmission registers.  But the
    automatic transmission feature is not useful as the SoCs lack DVFS
    support.
  - All IIC instances have the automatic transmission registers, and
    IIC3 is traditionally used to control the PMIC.  But as the SoCs
    lack DVFS support, the automatic transmission feature is not useful.
    As R-Car V2H has only instance IIC3, and is documented to have
    automatic transmissiong registers, this might be the correct
    interpration?
  - Anything else?

Thanks for your comments!
---
 .../devicetree/bindings/i2c/renesas,iic.txt   |  72 --------
 .../bindings/i2c/renesas,rmobile-iic.yaml     | 160 ++++++++++++++++++
 MAINTAINERS                                   |   2 +-
 3 files changed, 161 insertions(+), 73 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,iic.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,rmobile-iic.yaml

diff --git a/Documentation/devicetree/bindings/i2c/renesas,iic.txt b/Documentation/devicetree/bindings/i2c/renesas,iic.txt
deleted file mode 100644
index 93d412832e66b682..0000000000000000
--- a/Documentation/devicetree/bindings/i2c/renesas,iic.txt
+++ /dev/null
@@ -1,72 +0,0 @@
-Device tree configuration for Renesas IIC (sh_mobile) driver
-
-Required properties:
-- compatible      :
-			- "renesas,iic-r8a73a4" (R-Mobile APE6)
-			- "renesas,iic-r8a7740" (R-Mobile A1)
-			- "renesas,iic-r8a7742" (RZ/G1H)
-			- "renesas,iic-r8a7743" (RZ/G1M)
-			- "renesas,iic-r8a7744" (RZ/G1N)
-			- "renesas,iic-r8a7745" (RZ/G1E)
-			- "renesas,iic-r8a774a1" (RZ/G2M)
-			- "renesas,iic-r8a774b1" (RZ/G2N)
-			- "renesas,iic-r8a774c0" (RZ/G2E)
-			- "renesas,iic-r8a774e1" (RZ/G2H)
-			- "renesas,iic-r8a7790" (R-Car H2)
-			- "renesas,iic-r8a7791" (R-Car M2-W)
-			- "renesas,iic-r8a7792" (R-Car V2H)
-			- "renesas,iic-r8a7793" (R-Car M2-N)
-			- "renesas,iic-r8a7794" (R-Car E2)
-			- "renesas,iic-r8a7795" (R-Car H3)
-			- "renesas,iic-r8a7796" (R-Car M3-W)
-			- "renesas,iic-r8a77961" (R-Car M3-W+)
-			- "renesas,iic-r8a77965" (R-Car M3-N)
-			- "renesas,iic-r8a77990" (R-Car E3)
-			- "renesas,iic-sh73a0" (SH-Mobile AG5)
-			- "renesas,rcar-gen2-iic" (generic R-Car Gen2 or RZ/G1
-							compatible device)
-			- "renesas,rcar-gen3-iic" (generic R-Car Gen3 or RZ/G2
-							compatible device)
-			- "renesas,rmobile-iic" (generic device)
-
-			When compatible with a generic R-Car version, nodes
-			must list the SoC-specific version corresponding to
-			the platform first followed by the generic R-Car
-			version.
-
-			When compatible with "renesas,rmobile-iic" it should
-			be the last compatibility string listed.
-
-			The r8a77990 (R-Car E3) and r8a774c0 (RZ/G2E)
-			controllers are not considered compatible with
-			"renesas,rcar-gen3-iic" or "renesas,rmobile-iic"
-			due to the absence of automatic transmission registers.
-
-- reg             : address start and address range size of device
-- interrupts      : interrupt of device
-- clocks          : clock for device
-- #address-cells  : should be <1>
-- #size-cells     : should be <0>
-
-Optional properties:
-- clock-frequency : frequency of bus clock in Hz. Default 100kHz if unset.
-- dmas            : Must contain a list of two references to DMA
-		    specifiers, one for transmission, and one for
-		    reception.
-- dma-names       : Must contain a list of two DMA names, "tx" and "rx".
-
-
-Pinctrl properties might be needed, too. See there.
-
-Example:
-
-	iic0: i2c@e6500000 {
-		compatible = "renesas,iic-r8a7790", "renesas,rcar-gen2-iic",
-			     "renesas,rmobile-iic";
-		reg = <0 0xe6500000 0 0x425>;
-		interrupts = <0 174 IRQ_TYPE_LEVEL_HIGH>;
-		clocks = <&mstp3_clks R8A7790_CLK_IIC0>;
-		clock-frequency = <400000>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-	};
diff --git a/Documentation/devicetree/bindings/i2c/renesas,rmobile-iic.yaml b/Documentation/devicetree/bindings/i2c/renesas,rmobile-iic.yaml
new file mode 100644
index 0000000000000000..7aa87f64922c0fd2
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/renesas,rmobile-iic.yaml
@@ -0,0 +1,160 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i2c/renesas,rmobile-iic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas R-Mobile I2C Bus Interface (IIC)
+
+maintainers:
+  - Wolfram Sang <wsa+renesas@sang-engineering.com>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - renesas,iic-r8a73a4      # R-Mobile APE6
+              - renesas,iic-r8a7740      # R-Mobile A1
+              - renesas,iic-sh73a0       # SH-Mobile AG5
+          - const: renesas,rmobile-iic   # Generic
+
+      - items:
+          - enum:
+              - renesas,iic-r8a7742      # RZ/G1H IIC[012]
+              - renesas,iic-r8a7743      # RZ/G1M IIC[01]
+              - renesas,iic-r8a7744      # RZ/G1N IIC[01]
+              - renesas,iic-r8a7790      # R-Car H2 IIC[012]
+              - renesas,iic-r8a7791      # R-Car M2-W IIC[01]
+              - renesas,iic-r8a7793      # R-Car M2-N IIC[01]
+          - const: renesas,rcar-gen2-iic # R-Car Gen2 and RZ/G1
+          - const: renesas,rmobile-iic   # Generic
+
+      - items:
+          - enum:
+              - renesas,iic-r8a774a1     # RZ/G2M
+              - renesas,iic-r8a774b1     # RZ/G2N
+              - renesas,iic-r8a774e1     # RZ/G2H
+              - renesas,iic-r8a7795      # R-Car H3
+              - renesas,iic-r8a7796      # R-Car M3-W
+              - renesas,iic-r8a77961     # R-Car M3-W+
+              - renesas,iic-r8a77965     # R-Car M3-N
+          - const: renesas,rcar-gen3-iic # R-Car Gen3 and RZ/G2
+          - const: renesas,rmobile-iic   # Generic
+
+      - items:
+            # Instances lacking automatic transmission registers are not
+            # considered compatible with family-specific or generic versions
+          - enum:
+              - renesas,iic-r8a7742      # RZ/G1H IIC3
+              - renesas,iic-r8a7743      # RZ/G1M IIC3
+              - renesas,iic-r8a7744      # RZ/G1N IIC3
+              - renesas,iic-r8a7745      # RZ/G1E
+              - renesas,iic-r8a774c0     # RZ/G2E
+              - renesas,iic-r8a7790      # R-Car H2 IIC3
+              - renesas,iic-r8a7791      # R-Car M2-W IIC3
+              - renesas,iic-r8a7792      # R-Car V2H IIC3
+              - renesas,iic-r8a7793      # R-Car M2-N IIC3
+              - renesas,iic-r8a7794      # R-Car E2
+              - renesas,iic-r8a77990     # R-Car E3
+
+  reg:
+    maxItems: 1
+
+  interrupts: true
+
+  clock-frequency:
+    description:
+      Desired I2C bus clock frequency in Hz. The absence of this property
+      indicates the default frequency 100 kHz.
+
+  clocks:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+  dmas:
+    minItems: 2
+    maxItems: 4
+    description:
+      Must contain a list of pairs of references to DMA specifiers, one for
+      transmission, and one for reception.
+
+  dma-names:
+    minItems: 2
+    maxItems: 4
+    items:
+      enum:
+        - tx
+        - rx
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - power-domains
+  - '#address-cells'
+  - '#size-cells'
+
+allOf:
+  - $ref: /schemas/i2c/i2c-controller.yaml#
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,iic-r8a7740
+              - renesas,iic-sh73a0
+    then:
+      properties:
+        interrupts:
+          items:
+            - description: Arbitration Lost Interrupt (ALI)
+            - description: Non-acknowledge Detection Interrupt (TACKI)
+            - description: Wait Interrupt (WAITI)
+            - description: Data Transmit Enable interrupt (DTEI)
+    else:
+      properties:
+        interrupts:
+          items:
+            - description: Single combined interrupt
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,rcar-gen2-iic
+              - renesas,rcar-gen3-iic
+    then:
+      required:
+        - resets
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/r8a7790-cpg-mssr.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/power/r8a7790-sysc.h>
+
+    iic0: i2c@e6500000 {
+            compatible = "renesas,iic-r8a7790", "renesas,rcar-gen2-iic",
+                         "renesas,rmobile-iic";
+            reg = <0xe6500000 0x425>;
+            interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
+            clocks = <&cpg CPG_MOD 318>;
+            clock-frequency = <400000>;
+            dmas = <&dmac0 0x61>, <&dmac0 0x62>, <&dmac1 0x61>, <&dmac1 0x62>;
+            dma-names = "tx", "rx", "tx", "rx";
+            power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
+            resets = <&cpg 318>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+    };
diff --git a/MAINTAINERS b/MAINTAINERS
index 8a7ca33961d49daa..c8834d7a1aac0efd 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -15453,7 +15453,7 @@ RENESAS R-CAR I2C DRIVERS
 M:	Wolfram Sang <wsa+renesas@sang-engineering.com>
 S:	Supported
 F:	Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml
-F:	Documentation/devicetree/bindings/i2c/renesas,iic.txt
+F:	Documentation/devicetree/bindings/i2c/renesas,rmobile-iic.yaml
 F:	drivers/i2c/busses/i2c-rcar.c
 F:	drivers/i2c/busses/i2c-sh_mobile.c
 
-- 
2.25.1


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

* [PATCH 5/6] dt-bindings: i2c: renesas,riic: Convert to json-schema
  2021-05-04 14:35 ` [PATCH 5/6] dt-bindings: i2c: renesas,riic: " Geert Uytterhoeven
@ 2021-05-04 14:51   ` Geert Uytterhoeven
  2021-05-06 20:56   ` Rob Herring
  1 sibling, 0 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-04 14:51 UTC (permalink / raw)
  To: Rob Herring, Wolfram Sang, Chris Brandt
  Cc: devicetree, linux-i2c, linux-renesas-soc, Geert Uytterhoeven

Convert the Renesas RZ/A I2C Bus Interface (RIIC) Device Tree binding
documentation to json-schema.

Document missing properties.
Update the example to match reality.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
 .../devicetree/bindings/i2c/renesas,riic.txt  | 32 -------
 .../devicetree/bindings/i2c/renesas,riic.yaml | 83 +++++++++++++++++++
 MAINTAINERS                                   |  2 +-
 3 files changed, 84 insertions(+), 33 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,riic.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,riic.yaml

diff --git a/Documentation/devicetree/bindings/i2c/renesas,riic.txt b/Documentation/devicetree/bindings/i2c/renesas,riic.txt
deleted file mode 100644
index e26fe3ad86a9509f..0000000000000000
--- a/Documentation/devicetree/bindings/i2c/renesas,riic.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-Device tree configuration for Renesas RIIC driver
-
-Required properties:
-- compatible      :
-	"renesas,riic-r7s72100" if the device is a part of a R7S72100 SoC.
-	"renesas,riic-r7s9210" if the device is a part of a R7S9210 SoC.
-	"renesas,riic-rz" for a generic RZ/A compatible device.
-- reg             : address start and address range size of device
-- interrupts      : 8 interrupts (TEI, RI, TI, SPI, STI, NAKI, ALI, TMOI)
-- clock-frequency : frequency of bus clock in Hz
-- #address-cells  : should be <1>
-- #size-cells     : should be <0>
-
-Pinctrl properties might be needed, too. See there.
-
-Example:
-
-	i2c0: i2c@fcfee000 {
-		compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
-		reg = <0xfcfee000 0x44>;
-		interrupts = <0 157 IRQ_TYPE_LEVEL_HIGH>,
-			     <0 158 IRQ_TYPE_EDGE_RISING>,
-			     <0 159 IRQ_TYPE_EDGE_RISING>,
-			     <0 160 IRQ_TYPE_LEVEL_HIGH>,
-			     <0 161 IRQ_TYPE_LEVEL_HIGH>,
-			     <0 162 IRQ_TYPE_LEVEL_HIGH>,
-			     <0 163 IRQ_TYPE_LEVEL_HIGH>,
-			     <0 164 IRQ_TYPE_LEVEL_HIGH>;
-		clock-frequency = <100000>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-	};
diff --git a/Documentation/devicetree/bindings/i2c/renesas,riic.yaml b/Documentation/devicetree/bindings/i2c/renesas,riic.yaml
new file mode 100644
index 0000000000000000..e6951bf451d95cff
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/renesas,riic.yaml
@@ -0,0 +1,83 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i2c/renesas,riic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas RZ/A I2C Bus Interface (RIIC)
+
+maintainers:
+  - Chris Brandt <chris.brandt@renesas.com>
+  - Wolfram Sang <wsa+renesas@sang-engineering.com>
+
+allOf:
+  - $ref: /schemas/i2c/i2c-controller.yaml#
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - renesas,riic-r7s72100 # RZ/A1H
+              - renesas,riic-r7s9210  # RZ/A2M
+          - const: renesas,riic-rz    # RZ/A
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: Transmit End Interrupt (TEI)
+      - description: Receive Data Full Interrupt (RI)
+      - description: Transmit Data Empty Interrupt (TI)
+      - description: Stop Condition Detection Interrupt (SPI)
+      - description: Start Condition Detection Interrupt (STI)
+      - description: NACK Reception Interrupt (NAKI)
+      - description: Arbitration-Lost Interrupt (ALI)
+      - description: Timeout Interrupt (TMOI)
+
+  clock-frequency:
+    description:
+      Desired I2C bus clock frequency in Hz. The absence of this property
+      indicates the default frequency 100 kHz.
+
+  clocks:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-frequency
+  - power-domains
+  - '#address-cells'
+  - '#size-cells'
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/r7s72100-clock.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    i2c0: i2c@fcfee000 {
+            compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
+            reg = <0xfcfee000 0x44>;
+            interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 158 IRQ_TYPE_EDGE_RISING>,
+                         <GIC_SPI 159 IRQ_TYPE_EDGE_RISING>,
+                         <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
+            clocks = <&mstp9_clks R7S72100_CLK_I2C0>;
+            clock-frequency = <100000>;
+            power-domains = <&cpg_clocks>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+    };
diff --git a/MAINTAINERS b/MAINTAINERS
index c8834d7a1aac0efd..ea519a8ffc6a9356 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -15469,7 +15469,7 @@ F:	drivers/thermal/rcar_thermal.c
 RENESAS RIIC DRIVER
 M:	Chris Brandt <chris.brandt@renesas.com>
 S:	Supported
-F:	Documentation/devicetree/bindings/i2c/renesas,riic.txt
+F:	Documentation/devicetree/bindings/i2c/renesas,riic.yaml
 F:	drivers/i2c/busses/i2c-riic.c
 
 RENESAS USB PHY DRIVER
-- 
2.25.1


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

* [PATCH 6/6] dt-bindings: i2c: renesas,iic-emev2: Convert to json-schema
  2021-05-04 14:35 ` [PATCH 6/6] dt-bindings: i2c: renesas,iic-emev2: " Geert Uytterhoeven
@ 2021-05-04 14:51   ` Geert Uytterhoeven
  2021-05-06 20:57   ` Rob Herring
  2021-05-28  7:56   ` Wolfram Sang
  2 siblings, 0 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-04 14:51 UTC (permalink / raw)
  To: Rob Herring, Wolfram Sang, Chris Brandt
  Cc: devicetree, linux-i2c, linux-renesas-soc, Geert Uytterhoeven

Convert the Renesas EMMA Mobile EV2 IIC Interface (IIC) Device Tree
binding documentation to json-schema.

Document missing properties.
Update the example to match reality.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
 .../bindings/i2c/renesas,iic-emev2.txt        | 22 --------
 .../bindings/i2c/renesas,iic-emev2.yaml       | 54 +++++++++++++++++++
 MAINTAINERS                                   |  2 +-
 3 files changed, 55 insertions(+), 23 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,iic-emev2.txt
 create mode 100644 Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml

diff --git a/Documentation/devicetree/bindings/i2c/renesas,iic-emev2.txt b/Documentation/devicetree/bindings/i2c/renesas,iic-emev2.txt
deleted file mode 100644
index 5ed1ea1c7e14a9cd..0000000000000000
--- a/Documentation/devicetree/bindings/i2c/renesas,iic-emev2.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Device tree configuration for Renesas EMEV2 IIC controller
-
-Required properties:
-- compatible      : "renesas,iic-emev2"
-- reg             : address start and address range size of device
-- interrupts      : specifier for the IIC controller interrupt
-- clocks          : phandle to the IP core SCLK
-- clock-names     : must be "sclk"
-- #address-cells  : should be <1>
-- #size-cells     : should be <0>
-
-Example:
-
-	iic0: i2c@e0070000 {
-		#address-cells = <1>;
-		#size-cells = <0>;
-		compatible = "renesas,iic-emev2";
-		reg = <0xe0070000 0x28>;
-		interrupts = <0 32 IRQ_TYPE_EDGE_RISING>;
-		clocks = <&iic0_sclk>;
-		clock-names = "sclk";
-	};
diff --git a/Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml b/Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml
new file mode 100644
index 0000000000000000..17c1102562be98e7
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i2c/renesas,iic-emev2.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas EMMA Mobile EV2 IIC Interface
+
+maintainers:
+  - Wolfram Sang <wsa+renesas@sang-engineering.com>
+
+allOf:
+  - $ref: /schemas/i2c/i2c-controller.yaml#
+
+properties:
+  compatible:
+    const: renesas,iic-emev2
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    const: sclk
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+  - '#address-cells'
+  - '#size-cells'
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    iic0: i2c@e0070000 {
+            #address-cells = <1>;
+            #size-cells = <0>;
+            compatible = "renesas,iic-emev2";
+            reg = <0xe0070000 0x28>;
+            interrupts = <GIC_SPI 32 IRQ_TYPE_EDGE_RISING>;
+            clocks = <&iic0_sclk>;
+            clock-names = "sclk";
+    };
diff --git a/MAINTAINERS b/MAINTAINERS
index ea519a8ffc6a9356..c9e5749a4402c441 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -15431,7 +15431,7 @@ F:	drivers/clk/renesas/
 RENESAS EMEV2 I2C DRIVER
 M:	Wolfram Sang <wsa+renesas@sang-engineering.com>
 S:	Supported
-F:	Documentation/devicetree/bindings/i2c/renesas,iic-emev2.txt
+F:	Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml
 F:	drivers/i2c/busses/i2c-emev2.c
 
 RENESAS ETHERNET DRIVERS
-- 
2.25.1


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

* Re: [PATCH 0/6] dt-bindings: i2c: renesas: Convert to json-schema
  2021-05-04 14:42 ` [PATCH 0/6] dt-bindings: i2c: renesas: " Rob Herring
@ 2021-05-04 14:51   ` Geert Uytterhoeven
  0 siblings, 0 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-04 14:51 UTC (permalink / raw)
  To: Rob Herring
  Cc: Geert Uytterhoeven, Wolfram Sang, Chris Brandt, Linux I2C, Linux-Renesas

Hi Rob,

On Tue, May 4, 2021 at 4:42 PM Rob Herring <robh+dt@kernel.org> wrote:
> On Tue, May 4, 2021 at 9:36 AM Geert Uytterhoeven
> <geert+renesas@glider.be> wrote:
> > This patch series converts the DT bindings for the various I2C
> > controllers found in Renesas SoCs to json-schema, after a small cleanup
> > to ease the conversion.
>
> You missed the DT list. Can you resend please.

Oops. Thanks for notifying me, done.

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] 33+ messages in thread

* Re: [PATCH 2/6] dt-bindings: i2c: renesas,i2c: Drop "renesas,i2c-rcar"
  2021-05-04 14:35 ` [PATCH 2/6] dt-bindings: i2c: renesas,i2c: " Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
@ 2021-05-05  7:18   ` Wolfram Sang
  2021-05-06 20:50   ` Rob Herring
  2021-05-28  7:56   ` Wolfram Sang
  3 siblings, 0 replies; 33+ messages in thread
From: Wolfram Sang @ 2021-05-05  7:18 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Rob Herring, Chris Brandt, linux-i2c, linux-renesas-soc

[-- Attachment #1: Type: text/plain, Size: 552 bytes --]

On Tue, May 04, 2021 at 04:35:54PM +0200, Geert Uytterhoeven wrote:
> The compatible value "renesas,i2c-rcar" was deprecated in commit
> ad4a8dc3fec6485b ("i2c: rcar: Add per-Generation fallback bindings"),
> and never had any users in upstream Linux.  Drop its description from
> the DT bindings.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>

If there were never upstream users, I also think we can remove it.
Still, I'd feel better with an ack from Rob.

Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* Re: [PATCH 1/6] i2c: rcar: Drop "renesas,i2c-rcar"
  2021-05-04 14:35 ` [PATCH 1/6] i2c: rcar: Drop "renesas,i2c-rcar" Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
@ 2021-05-05  7:18   ` Wolfram Sang
  2021-05-28  7:55   ` Wolfram Sang
  2 siblings, 0 replies; 33+ messages in thread
From: Wolfram Sang @ 2021-05-05  7:18 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Rob Herring, Chris Brandt, linux-i2c, linux-renesas-soc

[-- Attachment #1: Type: text/plain, Size: 547 bytes --]

On Tue, May 04, 2021 at 04:35:53PM +0200, Geert Uytterhoeven wrote:
> The compatible value "renesas,i2c-rcar" was deprecated in commit
> ad4a8dc3fec6485b ("i2c: rcar: Add per-Generation fallback bindings"),
> and never had any users in upstream Linux.  Drop its match entry from
> the driver.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>

If there were never upstream users, I also think we can remove it.
Still, I'd feel better with an ack from Rob.

Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* Re: [PATCH/RFC 4/6] dt-bindings: i2c: renesas,iic: Convert to json-schema
  2021-05-04 14:35 ` [PATCH/RFC 4/6] dt-bindings: i2c: renesas,iic: " Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
@ 2021-05-05  7:33   ` Wolfram Sang
  2021-05-26 14:47     ` Geert Uytterhoeven
  2021-05-06 20:54   ` Rob Herring
  2 siblings, 1 reply; 33+ messages in thread
From: Wolfram Sang @ 2021-05-05  7:33 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Rob Herring, Chris Brandt, linux-i2c, linux-renesas-soc

[-- Attachment #1: Type: text/plain, Size: 1018 bytes --]


> Possible alternative interpretations of the note are:
>   - Only IIC3 has the automatic transmission registers.  But the
>     automatic transmission feature is not useful as the SoCs lack DVFS
>     support.

I immediately thought "yeah, this is it", but had to do some resarch
where my assumption comes from. I found it in older H2 datasheets
(v0.9). Here in 56.1:

"Automatic transmission for PMIC control: The IIC3 module of the R-Car
H2 and M2 supports automatic data transmission under PMIC control
(DVFS)."

Or table 56.8:

"Registers of IIC Command for Automatic Transmission Mode (IIC3 only)
[R-CarH2, M2, and V2H]"


This all is a strong indication for IIC3 only. Which SoCs that have is
still confusing. Table 56.8 mentions V2H but 56.1 doesn't. Then again, I
could imagine that V2H has it but simply DVFS is not advertised for V2H.
And in the later documents, DVFS advertisement was removed for H2 and M2
as well.

(PS: sorry for replying to the "wrong" thread, I accidently deleted the
"correct" one)


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* Re: [PATCH 2/6] dt-bindings: i2c: renesas,i2c: Drop "renesas,i2c-rcar"
  2021-05-04 14:35 ` [PATCH 2/6] dt-bindings: i2c: renesas,i2c: " Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
  2021-05-05  7:18   ` Wolfram Sang
@ 2021-05-06 20:50   ` Rob Herring
  2021-05-28  7:56   ` Wolfram Sang
  3 siblings, 0 replies; 33+ messages in thread
From: Rob Herring @ 2021-05-06 20:50 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Rob Herring, linux-renesas-soc, linux-i2c, Wolfram Sang,
	Chris Brandt, devicetree

On Tue, 04 May 2021 16:51:09 +0200, Geert Uytterhoeven wrote:
> The compatible value "renesas,i2c-rcar" was deprecated in commit
> ad4a8dc3fec6485b ("i2c: rcar: Add per-Generation fallback bindings"),
> and never had any users in upstream Linux.  Drop its description from
> the DT bindings.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> ---
>  Documentation/devicetree/bindings/i2c/renesas,i2c.txt | 1 -
>  1 file changed, 1 deletion(-)
> 

Acked-by: Rob Herring <robh@kernel.org>

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

* Re: [PATCH 3/6] dt-bindings: i2c: renesas,i2c: Convert to json-schema
  2021-05-04 14:35 ` [PATCH 3/6] dt-bindings: i2c: renesas,i2c: Convert to json-schema Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
@ 2021-05-06 20:52   ` Rob Herring
  2021-05-28  7:56   ` Wolfram Sang
  2 siblings, 0 replies; 33+ messages in thread
From: Rob Herring @ 2021-05-06 20:52 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Rob Herring, linux-renesas-soc, devicetree, Wolfram Sang,
	linux-i2c, Chris Brandt

On Tue, 04 May 2021 16:51:10 +0200, Geert Uytterhoeven wrote:
> Convert the Renesas R-Car I2C Controller Device Tree binding
> documentation to json-schema.
> 
> Document missing properties.
> Make the clocks property required.
> DMA is supported on R-Car Gen3 and RZ/G2 only.
> Update the example to match reality.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> ---
>  .../devicetree/bindings/i2c/renesas,i2c.txt   |  66 --------
>  .../bindings/i2c/renesas,rcar-i2c.yaml        | 158 ++++++++++++++++++
>  MAINTAINERS                                   |   2 +-
>  3 files changed, 159 insertions(+), 67 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,i2c.txt
>  create mode 100644 Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml
> 

Reviewed-by: Rob Herring <robh@kernel.org>

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

* Re: [PATCH/RFC 4/6] dt-bindings: i2c: renesas,iic: Convert to json-schema
  2021-05-04 14:35 ` [PATCH/RFC 4/6] dt-bindings: i2c: renesas,iic: " Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
  2021-05-05  7:33   ` Wolfram Sang
@ 2021-05-06 20:54   ` Rob Herring
  2 siblings, 0 replies; 33+ messages in thread
From: Rob Herring @ 2021-05-06 20:54 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Wolfram Sang, Chris Brandt, devicetree, linux-i2c, linux-renesas-soc

On Tue, May 04, 2021 at 04:51:11PM +0200, Geert Uytterhoeven wrote:
> Convert the Renesas R-Mobile I2C Bus Interface (IIC) Device Tree binding
> documentation to json-schema.
> 
> Document missing properties.
> R-Mobile A1 and SH-Mobile have multiple interrupts.
> Update the example to match reality.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> ---
> It is still not clear to me which instances on R-Car Gen2 and RZ/G1
> support automatic transmission, cfr. this note for the IIC3 instance in
> the Hardware User's Manual:
> 
>     Automatic transmission for PMIC control (DVFS) is not available
>     because the second generation R-Car series and RZ/G series products
>     do not support the DVFS function (automatic transmission can be used
>     as a hardware function, but this is not meaningful for actual use
>     cases).
> 
> The only thing that's clear is that R-Car E2 and RZ/G1E do not have the
> automatic transmission registers.  Note that current r8a7745.dtsi and
> r8a7794.dtsi do not reflect that.
> 
> This binding interpretes the note as that IIC3 does not support
> automatic transmission on R-Car H2, M2-W, M2-N, and V2H, and RZ/G1H,
> RZ/H1M, RZ/G1N, while the other (if any) IIC instances on these SoCs do
> support automatic transmission.  This matches with the current
> r8a774[234].dtsi, which do not declare compatibility with the
> family-specific and generic versions.  Note that the current
> r8a779[0123].dtsi still do, and thus should be updated!
> 
> Possible alternative interpretations of the note are:
>   - Only IIC3 has the automatic transmission registers.  But the
>     automatic transmission feature is not useful as the SoCs lack DVFS
>     support.
>   - All IIC instances have the automatic transmission registers, and
>     IIC3 is traditionally used to control the PMIC.  But as the SoCs
>     lack DVFS support, the automatic transmission feature is not useful.
>     As R-Car V2H has only instance IIC3, and is documented to have
>     automatic transmissiong registers, this might be the correct
>     interpration?
>   - Anything else?

Can't help there, but looks fine otherwise.

Reviewed-by: Rob Herring <robh@kernel.org>

> 
> Thanks for your comments!
> ---
>  .../devicetree/bindings/i2c/renesas,iic.txt   |  72 --------
>  .../bindings/i2c/renesas,rmobile-iic.yaml     | 160 ++++++++++++++++++
>  MAINTAINERS                                   |   2 +-
>  3 files changed, 161 insertions(+), 73 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,iic.txt
>  create mode 100644 Documentation/devicetree/bindings/i2c/renesas,rmobile-iic.yaml

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

* Re: [PATCH 5/6] dt-bindings: i2c: renesas,riic: Convert to json-schema
  2021-05-04 14:35 ` [PATCH 5/6] dt-bindings: i2c: renesas,riic: " Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
@ 2021-05-06 20:56   ` Rob Herring
  2021-05-07  6:56     ` Geert Uytterhoeven
  1 sibling, 1 reply; 33+ messages in thread
From: Rob Herring @ 2021-05-06 20:56 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Wolfram Sang, Chris Brandt, devicetree, linux-i2c, linux-renesas-soc

On Tue, May 04, 2021 at 04:51:12PM +0200, Geert Uytterhoeven wrote:
> Convert the Renesas RZ/A I2C Bus Interface (RIIC) Device Tree binding
> documentation to json-schema.
> 
> Document missing properties.
> Update the example to match reality.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> ---
>  .../devicetree/bindings/i2c/renesas,riic.txt  | 32 -------
>  .../devicetree/bindings/i2c/renesas,riic.yaml | 83 +++++++++++++++++++
>  MAINTAINERS                                   |  2 +-
>  3 files changed, 84 insertions(+), 33 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,riic.txt
>  create mode 100644 Documentation/devicetree/bindings/i2c/renesas,riic.yaml
> 
> diff --git a/Documentation/devicetree/bindings/i2c/renesas,riic.txt b/Documentation/devicetree/bindings/i2c/renesas,riic.txt
> deleted file mode 100644
> index e26fe3ad86a9509f..0000000000000000
> --- a/Documentation/devicetree/bindings/i2c/renesas,riic.txt
> +++ /dev/null
> @@ -1,32 +0,0 @@
> -Device tree configuration for Renesas RIIC driver
> -
> -Required properties:
> -- compatible      :
> -	"renesas,riic-r7s72100" if the device is a part of a R7S72100 SoC.
> -	"renesas,riic-r7s9210" if the device is a part of a R7S9210 SoC.
> -	"renesas,riic-rz" for a generic RZ/A compatible device.
> -- reg             : address start and address range size of device
> -- interrupts      : 8 interrupts (TEI, RI, TI, SPI, STI, NAKI, ALI, TMOI)
> -- clock-frequency : frequency of bus clock in Hz
> -- #address-cells  : should be <1>
> -- #size-cells     : should be <0>
> -
> -Pinctrl properties might be needed, too. See there.
> -
> -Example:
> -
> -	i2c0: i2c@fcfee000 {
> -		compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
> -		reg = <0xfcfee000 0x44>;
> -		interrupts = <0 157 IRQ_TYPE_LEVEL_HIGH>,
> -			     <0 158 IRQ_TYPE_EDGE_RISING>,
> -			     <0 159 IRQ_TYPE_EDGE_RISING>,
> -			     <0 160 IRQ_TYPE_LEVEL_HIGH>,
> -			     <0 161 IRQ_TYPE_LEVEL_HIGH>,
> -			     <0 162 IRQ_TYPE_LEVEL_HIGH>,
> -			     <0 163 IRQ_TYPE_LEVEL_HIGH>,
> -			     <0 164 IRQ_TYPE_LEVEL_HIGH>;
> -		clock-frequency = <100000>;
> -		#address-cells = <1>;
> -		#size-cells = <0>;
> -	};
> diff --git a/Documentation/devicetree/bindings/i2c/renesas,riic.yaml b/Documentation/devicetree/bindings/i2c/renesas,riic.yaml
> new file mode 100644
> index 0000000000000000..e6951bf451d95cff
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/i2c/renesas,riic.yaml
> @@ -0,0 +1,83 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/i2c/renesas,riic.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Renesas RZ/A I2C Bus Interface (RIIC)
> +
> +maintainers:
> +  - Chris Brandt <chris.brandt@renesas.com>
> +  - Wolfram Sang <wsa+renesas@sang-engineering.com>
> +
> +allOf:
> +  - $ref: /schemas/i2c/i2c-controller.yaml#
> +
> +properties:
> +  compatible:
> +    oneOf:
> +      - items:

Don't need oneOf here with only 1 entry. Otherwise,

Reviewed-by: Rob Herring <robh@kernel.org>

> +          - enum:
> +              - renesas,riic-r7s72100 # RZ/A1H
> +              - renesas,riic-r7s9210  # RZ/A2M
> +          - const: renesas,riic-rz    # RZ/A
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    items:
> +      - description: Transmit End Interrupt (TEI)
> +      - description: Receive Data Full Interrupt (RI)
> +      - description: Transmit Data Empty Interrupt (TI)
> +      - description: Stop Condition Detection Interrupt (SPI)
> +      - description: Start Condition Detection Interrupt (STI)
> +      - description: NACK Reception Interrupt (NAKI)
> +      - description: Arbitration-Lost Interrupt (ALI)
> +      - description: Timeout Interrupt (TMOI)
> +
> +  clock-frequency:
> +    description:
> +      Desired I2C bus clock frequency in Hz. The absence of this property
> +      indicates the default frequency 100 kHz.
> +
> +  clocks:
> +    maxItems: 1
> +
> +  power-domains:
> +    maxItems: 1
> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +  - clocks
> +  - clock-frequency
> +  - power-domains
> +  - '#address-cells'
> +  - '#size-cells'
> +
> +unevaluatedProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/clock/r7s72100-clock.h>
> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> +    i2c0: i2c@fcfee000 {
> +            compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
> +            reg = <0xfcfee000 0x44>;
> +            interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 158 IRQ_TYPE_EDGE_RISING>,
> +                         <GIC_SPI 159 IRQ_TYPE_EDGE_RISING>,
> +                         <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
> +            clocks = <&mstp9_clks R7S72100_CLK_I2C0>;
> +            clock-frequency = <100000>;
> +            power-domains = <&cpg_clocks>;
> +            #address-cells = <1>;
> +            #size-cells = <0>;
> +    };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index c8834d7a1aac0efd..ea519a8ffc6a9356 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -15469,7 +15469,7 @@ F:	drivers/thermal/rcar_thermal.c
>  RENESAS RIIC DRIVER
>  M:	Chris Brandt <chris.brandt@renesas.com>
>  S:	Supported
> -F:	Documentation/devicetree/bindings/i2c/renesas,riic.txt
> +F:	Documentation/devicetree/bindings/i2c/renesas,riic.yaml
>  F:	drivers/i2c/busses/i2c-riic.c
>  
>  RENESAS USB PHY DRIVER
> -- 
> 2.25.1
> 

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

* Re: [PATCH 6/6] dt-bindings: i2c: renesas,iic-emev2: Convert to json-schema
  2021-05-04 14:35 ` [PATCH 6/6] dt-bindings: i2c: renesas,iic-emev2: " Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
@ 2021-05-06 20:57   ` Rob Herring
  2021-05-28  7:56   ` Wolfram Sang
  2 siblings, 0 replies; 33+ messages in thread
From: Rob Herring @ 2021-05-06 20:57 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Wolfram Sang, Chris Brandt, linux-renesas-soc, linux-i2c,
	devicetree, Rob Herring

On Tue, 04 May 2021 16:51:13 +0200, Geert Uytterhoeven wrote:
> Convert the Renesas EMMA Mobile EV2 IIC Interface (IIC) Device Tree
> binding documentation to json-schema.
> 
> Document missing properties.
> Update the example to match reality.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> ---
>  .../bindings/i2c/renesas,iic-emev2.txt        | 22 --------
>  .../bindings/i2c/renesas,iic-emev2.yaml       | 54 +++++++++++++++++++
>  MAINTAINERS                                   |  2 +-
>  3 files changed, 55 insertions(+), 23 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/i2c/renesas,iic-emev2.txt
>  create mode 100644 Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml
> 

Reviewed-by: Rob Herring <robh@kernel.org>

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

* Re: [PATCH 5/6] dt-bindings: i2c: renesas,riic: Convert to json-schema
  2021-05-06 20:56   ` Rob Herring
@ 2021-05-07  6:56     ` Geert Uytterhoeven
  2021-05-28  7:56       ` Wolfram Sang
  0 siblings, 1 reply; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-07  6:56 UTC (permalink / raw)
  To: Rob Herring
  Cc: Wolfram Sang, Chris Brandt,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Linux I2C, Linux-Renesas

Hi Rob,

On Thu, May 6, 2021 at 10:56 PM Rob Herring <robh@kernel.org> wrote:
> On Tue, May 04, 2021 at 04:51:12PM +0200, Geert Uytterhoeven wrote:
> > Convert the Renesas RZ/A I2C Bus Interface (RIIC) Device Tree binding
> > documentation to json-schema.
> >
> > Document missing properties.
> > Update the example to match reality.
> >
> > Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>

> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/i2c/renesas,riic.yaml

> > +properties:
> > +  compatible:
> > +    oneOf:
> > +      - items:
>
> Don't need oneOf here with only 1 entry. Otherwise,

Thanks, dropping for v2.

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] 33+ messages in thread

* Re: [PATCH/RFC 4/6] dt-bindings: i2c: renesas,iic: Convert to json-schema
  2021-05-05  7:33   ` Wolfram Sang
@ 2021-05-26 14:47     ` Geert Uytterhoeven
  2021-05-28 13:51       ` Wolfram Sang
  0 siblings, 1 reply; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-26 14:47 UTC (permalink / raw)
  To: Wolfram Sang
  Cc: Rob Herring, Chris Brandt, Linux I2C, Linux-Renesas,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS

On Wed, May 5, 2021 at 9:33 AM Wolfram Sang
<wsa+renesas@sang-engineering.com> wrote:
> > Possible alternative interpretations of the note are:
> >   - Only IIC3 has the automatic transmission registers.  But the
> >     automatic transmission feature is not useful as the SoCs lack DVFS
> >     support.
>
> I immediately thought "yeah, this is it", but had to do some resarch
> where my assumption comes from. I found it in older H2 datasheets
> (v0.9). Here in 56.1:
>
> "Automatic transmission for PMIC control: The IIC3 module of the R-Car
> H2 and M2 supports automatic data transmission under PMIC control
> (DVFS)."
>
> Or table 56.8:
>
> "Registers of IIC Command for Automatic Transmission Mode (IIC3 only)
> [R-CarH2, M2, and V2H]"
>
>
> This all is a strong indication for IIC3 only. Which SoCs that have is
> still confusing. Table 56.8 mentions V2H but 56.1 doesn't. Then again, I
> could imagine that V2H has it but simply DVFS is not advertised for V2H.
> And in the later documents, DVFS advertisement was removed for H2 and M2
> as well.

From off-list experiments checking for the presence of automatic
transmission registers by writing to them, and seeing if they retain their
values, we know that all IIC instances checked on R-Car Gen2
SoCs do have these registers.  The same is true for R-Car E3, which
is explicitly documented _not_ to have the registers...
In addition, Wolfram tried transmitting something on R-Car H2 from
the U-Boot prompt, and noticed the ICINT.ADTE bit is set afterwards,
indicating success.

So I went one step further, and hooked up a logic analyzer, to see
if anything is actually transmitted.

Koelsch (R-Car M2-W):

  - IIC1 (I2C8) IIC1_SCL_C (GP6_22) EXIO Connector C pin 37
                IIC1_SDA_C (GP6_23) EXIO Connector C pin 39

    # Configure pinctrl for IIC1
    mw.l e6060000 f77fffff
    mw.l e6060098 08800000
    mw.l e6060000 ffffedff
    mw.l e6060058 00001200
    mw.l e6060000 3000c0c0
    mw.l e606001c cfff3f3f

    # Enable IIC0-2 clocks in SMSTPCR3
    mw e615013c ff7bfffe

    # Reset using ICCR clears all ICINT flags
    mw.b e6510004 1

    # Set up clock (ICC[LH])
    mw.b e6510010 0x69
    mw.b e6510014 0x1e

    # Write dummy data to ICATD00
    mw.b e6510100 bf

    # ICSTART.AutoStart = 1
    mw.b e6510070 80

    # Logic Analyzer says: S / P / P / P => broken?

    # Check ICINT; 01 => ADTE
    md.b e6510054 1


  - IIC3 (I2C6 DVFS) IIC3_SCL EXIO Connector C pin 19
                     IIC3_SDA EXIO Connector C pin 21

    # Enable IIC3 clock in SMSTPCR9
    mw e6150994 fbffffff

    # Reset using ICCR clears all ICINT flags
    mw.b e60b0004 1

    # Set up clock (ICC[LH])
    mw.b e60b0010 0x1b
    mw.b e60b0014 0x14

    # Write dummy data to ICATD00
    mw.b e60b0100 de

    # ICSTART.AutoStart = 1
    mw.b e60b0070 80

    # Logic Analyzer: S / Address: 0x6f / W / NACK => Good!

    # Check ICINT; 01 => ADTE
    md.b e60b0054 1


Ebisu (R-Car E3):

  - IIC (DVFS) IIC_SCL EXIO Connector D pin 75
               IIC_SDA EXIO Connector D pin 77

    # Enable IIC clock in SMSTPCR9
    mw e6150994 fbffffff

    # Reset using ICCR clears all ICINT flags
    mw.b e60b0004 1

    # Set up clock (ICC[LH])
    mw.b e60b0010 0x1b
    mw.b e60b0014 0x14

    # Write dummy data to ICATD00
    mw.b e60b0100 ad

    # ICSTART.AutoStart = 1
    mw.b e60b0070 80

    # Logic Analyzer: S / Address: 0x56 / R / NACK => Good!

    # Check ICINT; 01 => ADTE
    md.b e60b0054 1


Preliminary conclusions:
  1. Automatic transmission works on the last IIC instance on R-Car
     Gen2, which was originally intended for DVFS (which is not
     implemented, as of Hardware User's Manual Rev. 2.00).
     It works partially/not on other IIC instances. Perhaps I did
     something wrong in my setup?

  2. Despite the Hardware User's Manual stating the single IIC instance
     on R-Car E3 does not have the automatic transmission registers,
     the feature seems to be present and working.  So we can declare
     it to be compatible with the generic version.

As the Linux (or other OS?) i2c driver doesn't use automatic
transmission, and it's very unlikely it ever will (anyone with a
use case?), I'm inclined to simplify, and declare all IIC instances
compatible with the generic version.
If we ever want to implement support for automatic transmission,
we can still differentiate by the SoC-specific compatible values,
as they are present anyway, and may have to resort to checking
e.g. instance base addresses anyway.

Thoughts? Thanks!

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] 33+ messages in thread

* Re: [PATCH 1/6] i2c: rcar: Drop "renesas,i2c-rcar"
  2021-05-04 14:35 ` [PATCH 1/6] i2c: rcar: Drop "renesas,i2c-rcar" Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
  2021-05-05  7:18   ` Wolfram Sang
@ 2021-05-28  7:55   ` Wolfram Sang
  2 siblings, 0 replies; 33+ messages in thread
From: Wolfram Sang @ 2021-05-28  7:55 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Rob Herring, Chris Brandt, linux-i2c, linux-renesas-soc

[-- Attachment #1: Type: text/plain, Size: 399 bytes --]

On Tue, May 04, 2021 at 04:35:53PM +0200, Geert Uytterhoeven wrote:
> The compatible value "renesas,i2c-rcar" was deprecated in commit
> ad4a8dc3fec6485b ("i2c: rcar: Add per-Generation fallback bindings"),
> and never had any users in upstream Linux.  Drop its match entry from
> the driver.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>

Applied to for-next, thanks!


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* Re: [PATCH 2/6] dt-bindings: i2c: renesas,i2c: Drop "renesas,i2c-rcar"
  2021-05-04 14:35 ` [PATCH 2/6] dt-bindings: i2c: renesas,i2c: " Geert Uytterhoeven
                     ` (2 preceding siblings ...)
  2021-05-06 20:50   ` Rob Herring
@ 2021-05-28  7:56   ` Wolfram Sang
  3 siblings, 0 replies; 33+ messages in thread
From: Wolfram Sang @ 2021-05-28  7:56 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Rob Herring, Chris Brandt, linux-i2c, linux-renesas-soc

[-- Attachment #1: Type: text/plain, Size: 404 bytes --]

On Tue, May 04, 2021 at 04:35:54PM +0200, Geert Uytterhoeven wrote:
> The compatible value "renesas,i2c-rcar" was deprecated in commit
> ad4a8dc3fec6485b ("i2c: rcar: Add per-Generation fallback bindings"),
> and never had any users in upstream Linux.  Drop its description from
> the DT bindings.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>

Applied to for-next, thanks!


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* Re: [PATCH 3/6] dt-bindings: i2c: renesas,i2c: Convert to json-schema
  2021-05-04 14:35 ` [PATCH 3/6] dt-bindings: i2c: renesas,i2c: Convert to json-schema Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
  2021-05-06 20:52   ` Rob Herring
@ 2021-05-28  7:56   ` Wolfram Sang
  2 siblings, 0 replies; 33+ messages in thread
From: Wolfram Sang @ 2021-05-28  7:56 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Rob Herring, Chris Brandt, linux-i2c, linux-renesas-soc

[-- Attachment #1: Type: text/plain, Size: 431 bytes --]

On Tue, May 04, 2021 at 04:35:55PM +0200, Geert Uytterhoeven wrote:
> Convert the Renesas R-Car I2C Controller Device Tree binding
> documentation to json-schema.
> 
> Document missing properties.
> Make the clocks property required.
> DMA is supported on R-Car Gen3 and RZ/G2 only.
> Update the example to match reality.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>

Applied to for-next, thanks!


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* Re: [PATCH 6/6] dt-bindings: i2c: renesas,iic-emev2: Convert to json-schema
  2021-05-04 14:35 ` [PATCH 6/6] dt-bindings: i2c: renesas,iic-emev2: " Geert Uytterhoeven
  2021-05-04 14:51   ` Geert Uytterhoeven
  2021-05-06 20:57   ` Rob Herring
@ 2021-05-28  7:56   ` Wolfram Sang
  2 siblings, 0 replies; 33+ messages in thread
From: Wolfram Sang @ 2021-05-28  7:56 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Rob Herring, Chris Brandt, linux-i2c, linux-renesas-soc

[-- Attachment #1: Type: text/plain, Size: 358 bytes --]

On Tue, May 04, 2021 at 04:35:58PM +0200, Geert Uytterhoeven wrote:
> Convert the Renesas EMMA Mobile EV2 IIC Interface (IIC) Device Tree
> binding documentation to json-schema.
> 
> Document missing properties.
> Update the example to match reality.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>

Applied to for-next, thanks!


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* Re: [PATCH 5/6] dt-bindings: i2c: renesas,riic: Convert to json-schema
  2021-05-07  6:56     ` Geert Uytterhoeven
@ 2021-05-28  7:56       ` Wolfram Sang
  0 siblings, 0 replies; 33+ messages in thread
From: Wolfram Sang @ 2021-05-28  7:56 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Rob Herring, Chris Brandt,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Linux I2C, Linux-Renesas

[-- Attachment #1: Type: text/plain, Size: 117 bytes --]


> > Don't need oneOf here with only 1 entry. Otherwise,
> 
> Thanks, dropping for v2.

Waiting for v2 here.


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* Re: [PATCH/RFC 4/6] dt-bindings: i2c: renesas,iic: Convert to json-schema
  2021-05-26 14:47     ` Geert Uytterhoeven
@ 2021-05-28 13:51       ` Wolfram Sang
  2021-05-28 14:14         ` Geert Uytterhoeven
  0 siblings, 1 reply; 33+ messages in thread
From: Wolfram Sang @ 2021-05-28 13:51 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Rob Herring, Chris Brandt, Linux I2C, Linux-Renesas,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS

[-- Attachment #1: Type: text/plain, Size: 880 bytes --]

Hi Geert,

> In addition, Wolfram tried transmitting something on R-Car H2 from
> the U-Boot prompt, and noticed the ICINT.ADTE bit is set afterwards,
> indicating success.

Note that I tested this basic test on E2 as well.

> As the Linux (or other OS?) i2c driver doesn't use automatic
> transmission, and it's very unlikely it ever will (anyone with a
> use case?), I'm inclined to simplify, and declare all IIC instances
> compatible with the generic version.
> If we ever want to implement support for automatic transmission,
> we can still differentiate by the SoC-specific compatible values,
> as they are present anyway, and may have to resort to checking
> e.g. instance base addresses anyway.
> 
> Thoughts? Thanks!

I agree. So, if nobody speaks up in the next days, I will apply this
patch as is.

Thanks for your investigating!

   Wolfram


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* Re: [PATCH/RFC 4/6] dt-bindings: i2c: renesas,iic: Convert to json-schema
  2021-05-28 13:51       ` Wolfram Sang
@ 2021-05-28 14:14         ` Geert Uytterhoeven
  0 siblings, 0 replies; 33+ messages in thread
From: Geert Uytterhoeven @ 2021-05-28 14:14 UTC (permalink / raw)
  To: Wolfram Sang, Rob Herring, Chris Brandt, Linux I2C,
	Linux-Renesas,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS

Hi Wolfram,

On Fri, May 28, 2021 at 3:51 PM Wolfram Sang
<wsa+renesas@sang-engineering.com> wrote:
> > In addition, Wolfram tried transmitting something on R-Car H2 from
> > the U-Boot prompt, and noticed the ICINT.ADTE bit is set afterwards,
> > indicating success.
>
> Note that I tested this basic test on E2 as well.
>
> > As the Linux (or other OS?) i2c driver doesn't use automatic
> > transmission, and it's very unlikely it ever will (anyone with a
> > use case?), I'm inclined to simplify, and declare all IIC instances
> > compatible with the generic version.
> > If we ever want to implement support for automatic transmission,
> > we can still differentiate by the SoC-specific compatible values,
> > as they are present anyway, and may have to resort to checking
> > e.g. instance base addresses anyway.
> >
> > Thoughts? Thanks!
>
> I agree. So, if nobody speaks up in the next days, I will apply this
> patch as is.

Actually I'm more inclined to drop the special handling for the compatible
values in the fourth set of items.  I.e. move them to the second and third
set, and update the DTS files....

> Thanks for your investigating!

You're welcome.
Have a nice weekend!

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] 33+ messages in thread

end of thread, other threads:[~2021-05-28 14:15 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-04 14:35 [PATCH 0/6] dt-bindings: i2c: renesas: Convert to json-schema Geert Uytterhoeven
2021-05-04 14:35 ` [PATCH 1/6] i2c: rcar: Drop "renesas,i2c-rcar" Geert Uytterhoeven
2021-05-04 14:51   ` Geert Uytterhoeven
2021-05-05  7:18   ` Wolfram Sang
2021-05-28  7:55   ` Wolfram Sang
2021-05-04 14:35 ` [PATCH 2/6] dt-bindings: i2c: renesas,i2c: " Geert Uytterhoeven
2021-05-04 14:51   ` Geert Uytterhoeven
2021-05-05  7:18   ` Wolfram Sang
2021-05-06 20:50   ` Rob Herring
2021-05-28  7:56   ` Wolfram Sang
2021-05-04 14:35 ` [PATCH 3/6] dt-bindings: i2c: renesas,i2c: Convert to json-schema Geert Uytterhoeven
2021-05-04 14:51   ` Geert Uytterhoeven
2021-05-06 20:52   ` Rob Herring
2021-05-28  7:56   ` Wolfram Sang
2021-05-04 14:35 ` [PATCH/RFC 4/6] dt-bindings: i2c: renesas,iic: " Geert Uytterhoeven
2021-05-04 14:51   ` Geert Uytterhoeven
2021-05-05  7:33   ` Wolfram Sang
2021-05-26 14:47     ` Geert Uytterhoeven
2021-05-28 13:51       ` Wolfram Sang
2021-05-28 14:14         ` Geert Uytterhoeven
2021-05-06 20:54   ` Rob Herring
2021-05-04 14:35 ` [PATCH 5/6] dt-bindings: i2c: renesas,riic: " Geert Uytterhoeven
2021-05-04 14:51   ` Geert Uytterhoeven
2021-05-06 20:56   ` Rob Herring
2021-05-07  6:56     ` Geert Uytterhoeven
2021-05-28  7:56       ` Wolfram Sang
2021-05-04 14:35 ` [PATCH 6/6] dt-bindings: i2c: renesas,iic-emev2: " Geert Uytterhoeven
2021-05-04 14:51   ` Geert Uytterhoeven
2021-05-06 20:57   ` Rob Herring
2021-05-28  7:56   ` Wolfram Sang
2021-05-04 14:42 ` [PATCH 0/6] dt-bindings: i2c: renesas: " Rob Herring
2021-05-04 14:51   ` Geert Uytterhoeven
2021-05-04 14:51 ` Geert Uytterhoeven

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).