162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/i2c/renesas,rcar-i2c.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Renesas R-Car I2C Controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Wolfram Sang <wsa+renesas@sang-engineering.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciproperties:
1362306a36Sopenharmony_ci  compatible:
1462306a36Sopenharmony_ci    oneOf:
1562306a36Sopenharmony_ci      - items:
1662306a36Sopenharmony_ci          - enum:
1762306a36Sopenharmony_ci              - renesas,i2c-r8a7778      # R-Car M1A
1862306a36Sopenharmony_ci              - renesas,i2c-r8a7779      # R-Car H1
1962306a36Sopenharmony_ci          - const: renesas,rcar-gen1-i2c # R-Car Gen1
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci      - items:
2262306a36Sopenharmony_ci          - enum:
2362306a36Sopenharmony_ci              - renesas,i2c-r8a7742      # RZ/G1H
2462306a36Sopenharmony_ci              - renesas,i2c-r8a7743      # RZ/G1M
2562306a36Sopenharmony_ci              - renesas,i2c-r8a7744      # RZ/G1N
2662306a36Sopenharmony_ci              - renesas,i2c-r8a7745      # RZ/G1E
2762306a36Sopenharmony_ci              - renesas,i2c-r8a77470     # RZ/G1C
2862306a36Sopenharmony_ci              - renesas,i2c-r8a7790      # R-Car H2
2962306a36Sopenharmony_ci              - renesas,i2c-r8a7791      # R-Car M2-W
3062306a36Sopenharmony_ci              - renesas,i2c-r8a7792      # R-Car V2H
3162306a36Sopenharmony_ci              - renesas,i2c-r8a7793      # R-Car M2-N
3262306a36Sopenharmony_ci              - renesas,i2c-r8a7794      # R-Car E2
3362306a36Sopenharmony_ci          - const: renesas,rcar-gen2-i2c # R-Car Gen2 and RZ/G1
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci      - items:
3662306a36Sopenharmony_ci          - enum:
3762306a36Sopenharmony_ci              - renesas,i2c-r8a774a1     # RZ/G2M
3862306a36Sopenharmony_ci              - renesas,i2c-r8a774b1     # RZ/G2N
3962306a36Sopenharmony_ci              - renesas,i2c-r8a774c0     # RZ/G2E
4062306a36Sopenharmony_ci              - renesas,i2c-r8a774e1     # RZ/G2H
4162306a36Sopenharmony_ci              - renesas,i2c-r8a7795      # R-Car H3
4262306a36Sopenharmony_ci              - renesas,i2c-r8a7796      # R-Car M3-W
4362306a36Sopenharmony_ci              - renesas,i2c-r8a77961     # R-Car M3-W+
4462306a36Sopenharmony_ci              - renesas,i2c-r8a77965     # R-Car M3-N
4562306a36Sopenharmony_ci              - renesas,i2c-r8a77970     # R-Car V3M
4662306a36Sopenharmony_ci              - renesas,i2c-r8a77980     # R-Car V3H
4762306a36Sopenharmony_ci              - renesas,i2c-r8a77990     # R-Car E3
4862306a36Sopenharmony_ci              - renesas,i2c-r8a77995     # R-Car D3
4962306a36Sopenharmony_ci          - const: renesas,rcar-gen3-i2c # R-Car Gen3 and RZ/G2
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci      - items:
5262306a36Sopenharmony_ci          - enum:
5362306a36Sopenharmony_ci              - renesas,i2c-r8a779a0     # R-Car V3U
5462306a36Sopenharmony_ci              - renesas,i2c-r8a779f0     # R-Car S4-8
5562306a36Sopenharmony_ci              - renesas,i2c-r8a779g0     # R-Car V4H
5662306a36Sopenharmony_ci          - const: renesas,rcar-gen4-i2c # R-Car Gen4
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci  reg:
5962306a36Sopenharmony_ci    maxItems: 1
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci  interrupts:
6262306a36Sopenharmony_ci    maxItems: 1
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci  clock-frequency:
6562306a36Sopenharmony_ci    description:
6662306a36Sopenharmony_ci      Desired I2C bus clock frequency in Hz. The absence of this property
6762306a36Sopenharmony_ci      indicates the default frequency 100 kHz.
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci  clocks:
7062306a36Sopenharmony_ci    maxItems: 1
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci  power-domains:
7362306a36Sopenharmony_ci    maxItems: 1
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci  resets:
7662306a36Sopenharmony_ci    maxItems: 1
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci  dmas:
7962306a36Sopenharmony_ci    minItems: 2
8062306a36Sopenharmony_ci    maxItems: 4
8162306a36Sopenharmony_ci    description:
8262306a36Sopenharmony_ci      Must contain a list of pairs of references to DMA specifiers, one for
8362306a36Sopenharmony_ci      transmission, and one for reception.
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci  dma-names:
8662306a36Sopenharmony_ci    minItems: 2
8762306a36Sopenharmony_ci    maxItems: 4
8862306a36Sopenharmony_ci    items:
8962306a36Sopenharmony_ci      enum:
9062306a36Sopenharmony_ci        - tx
9162306a36Sopenharmony_ci        - rx
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci  i2c-scl-falling-time-ns:
9462306a36Sopenharmony_ci    default: 35
9562306a36Sopenharmony_ci    description:
9662306a36Sopenharmony_ci      Number of nanoseconds the SCL signal takes to fall; t(f) in the I2C
9762306a36Sopenharmony_ci      specification.
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci  i2c-scl-internal-delay-ns:
10062306a36Sopenharmony_ci    default: 50
10162306a36Sopenharmony_ci    description:
10262306a36Sopenharmony_ci      Number of nanoseconds the IP core additionally needs to setup SCL.
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci  i2c-scl-rising-time-ns:
10562306a36Sopenharmony_ci    default: 200
10662306a36Sopenharmony_ci    description:
10762306a36Sopenharmony_ci      Number of nanoseconds the SCL signal takes to rise; t(r) in the I2C
10862306a36Sopenharmony_ci      specification.
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_cirequired:
11162306a36Sopenharmony_ci  - compatible
11262306a36Sopenharmony_ci  - reg
11362306a36Sopenharmony_ci  - interrupts
11462306a36Sopenharmony_ci  - clocks
11562306a36Sopenharmony_ci  - power-domains
11662306a36Sopenharmony_ci  - '#address-cells'
11762306a36Sopenharmony_ci  - '#size-cells'
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ciallOf:
12062306a36Sopenharmony_ci  - $ref: /schemas/i2c/i2c-controller.yaml#
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci  - if:
12362306a36Sopenharmony_ci      properties:
12462306a36Sopenharmony_ci        compatible:
12562306a36Sopenharmony_ci          contains:
12662306a36Sopenharmony_ci            enum:
12762306a36Sopenharmony_ci              - renesas,rcar-gen1-i2c
12862306a36Sopenharmony_ci              - renesas,rcar-gen2-i2c
12962306a36Sopenharmony_ci    then:
13062306a36Sopenharmony_ci      properties:
13162306a36Sopenharmony_ci        dmas: false
13262306a36Sopenharmony_ci        dma-names: false
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci  - if:
13562306a36Sopenharmony_ci      properties:
13662306a36Sopenharmony_ci        compatible:
13762306a36Sopenharmony_ci          contains:
13862306a36Sopenharmony_ci            enum:
13962306a36Sopenharmony_ci              - renesas,rcar-gen2-i2c
14062306a36Sopenharmony_ci              - renesas,rcar-gen3-i2c
14162306a36Sopenharmony_ci              - renesas,rcar-gen4-i2c
14262306a36Sopenharmony_ci    then:
14362306a36Sopenharmony_ci      required:
14462306a36Sopenharmony_ci        - resets
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ciunevaluatedProperties: false
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ciexamples:
14962306a36Sopenharmony_ci  - |
15062306a36Sopenharmony_ci    #include <dt-bindings/clock/r8a7791-cpg-mssr.h>
15162306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
15262306a36Sopenharmony_ci    #include <dt-bindings/power/r8a7791-sysc.h>
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci    i2c0: i2c@e6508000 {
15562306a36Sopenharmony_ci            #address-cells = <1>;
15662306a36Sopenharmony_ci            #size-cells = <0>;
15762306a36Sopenharmony_ci            compatible = "renesas,i2c-r8a7791", "renesas,rcar-gen2-i2c";
15862306a36Sopenharmony_ci            reg = <0xe6508000 0x40>;
15962306a36Sopenharmony_ci            interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
16062306a36Sopenharmony_ci            clock-frequency = <400000>;
16162306a36Sopenharmony_ci            clocks = <&cpg CPG_MOD 931>;
16262306a36Sopenharmony_ci            power-domains = <&sysc R8A7791_PD_ALWAYS_ON>;
16362306a36Sopenharmony_ci            resets = <&cpg 931>;
16462306a36Sopenharmony_ci            i2c-scl-internal-delay-ns = <6>;
16562306a36Sopenharmony_ci    };
166