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
@@ -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>;-};
@@ -0,0 +1,158 @@+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)+%YAML1.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>;+};
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
@@ -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>;- };
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(-)
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(-)
@@ -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
@@ -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>;- };
From: Rob Herring <robh@kernel.org> Date: 2021-05-06 20:50:46
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(-)
From: Rob Herring <robh@kernel.org> Date: 2021-05-06 20:54:37
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>
@@ -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>;- };
Hi Rob,
On Thu, May 6, 2021 at 10:56 PM Rob Herring [off-list ref] wrote:
On Tue, May 04, 2021 at 04:51:12PM +0200, Geert Uytterhoeven wrote:
quoted
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>
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