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/mmc/renesas,sdhi.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Renesas SDHI SD/MMC 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          - const: renesas,sdhi-sh73a0  # R-Mobile APE6
1762306a36Sopenharmony_ci      - items:
1862306a36Sopenharmony_ci          - const: renesas,sdhi-r7s72100 # RZ/A1H
1962306a36Sopenharmony_ci      - items:
2062306a36Sopenharmony_ci          - const: renesas,sdhi-r7s9210 # SH-Mobile AG5
2162306a36Sopenharmony_ci      - items:
2262306a36Sopenharmony_ci          - const: renesas,sdhi-r8a73a4 # R-Mobile APE6
2362306a36Sopenharmony_ci      - items:
2462306a36Sopenharmony_ci          - const: renesas,sdhi-r8a7740 # R-Mobile A1
2562306a36Sopenharmony_ci      - items:
2662306a36Sopenharmony_ci          - enum:
2762306a36Sopenharmony_ci              - renesas,sdhi-r8a7778 # R-Car M1
2862306a36Sopenharmony_ci              - renesas,sdhi-r8a7779 # R-Car H1
2962306a36Sopenharmony_ci          - const: renesas,rcar-gen1-sdhi # R-Car Gen1
3062306a36Sopenharmony_ci      - items:
3162306a36Sopenharmony_ci          - enum:
3262306a36Sopenharmony_ci              - renesas,sdhi-r8a7742  # RZ/G1H
3362306a36Sopenharmony_ci              - renesas,sdhi-r8a7743  # RZ/G1M
3462306a36Sopenharmony_ci              - renesas,sdhi-r8a7744  # RZ/G1N
3562306a36Sopenharmony_ci              - renesas,sdhi-r8a7745  # RZ/G1E
3662306a36Sopenharmony_ci              - renesas,sdhi-r8a77470 # RZ/G1C
3762306a36Sopenharmony_ci              - renesas,sdhi-r8a7790  # R-Car H2
3862306a36Sopenharmony_ci              - renesas,sdhi-r8a7791  # R-Car M2-W
3962306a36Sopenharmony_ci              - renesas,sdhi-r8a7792  # R-Car V2H
4062306a36Sopenharmony_ci              - renesas,sdhi-r8a7793  # R-Car M2-N
4162306a36Sopenharmony_ci              - renesas,sdhi-r8a7794  # R-Car E2
4262306a36Sopenharmony_ci          - const: renesas,rcar-gen2-sdhi # R-Car Gen2 and RZ/G1
4362306a36Sopenharmony_ci      - items:
4462306a36Sopenharmony_ci          - const: renesas,sdhi-mmc-r8a77470 # RZ/G1C (SDHI/MMC IP)
4562306a36Sopenharmony_ci      - items:
4662306a36Sopenharmony_ci          - enum:
4762306a36Sopenharmony_ci              - renesas,sdhi-r8a774a1  # RZ/G2M
4862306a36Sopenharmony_ci              - renesas,sdhi-r8a774b1  # RZ/G2N
4962306a36Sopenharmony_ci              - renesas,sdhi-r8a774c0  # RZ/G2E
5062306a36Sopenharmony_ci              - renesas,sdhi-r8a774e1  # RZ/G2H
5162306a36Sopenharmony_ci              - renesas,sdhi-r8a7795   # R-Car H3
5262306a36Sopenharmony_ci              - renesas,sdhi-r8a7796   # R-Car M3-W
5362306a36Sopenharmony_ci              - renesas,sdhi-r8a77961  # R-Car M3-W+
5462306a36Sopenharmony_ci              - renesas,sdhi-r8a77965  # R-Car M3-N
5562306a36Sopenharmony_ci              - renesas,sdhi-r8a77970  # R-Car V3M
5662306a36Sopenharmony_ci              - renesas,sdhi-r8a77980  # R-Car V3H
5762306a36Sopenharmony_ci              - renesas,sdhi-r8a77990  # R-Car E3
5862306a36Sopenharmony_ci              - renesas,sdhi-r8a77995  # R-Car D3
5962306a36Sopenharmony_ci              - renesas,sdhi-r9a07g043 # RZ/G2UL
6062306a36Sopenharmony_ci              - renesas,sdhi-r9a07g044 # RZ/G2{L,LC}
6162306a36Sopenharmony_ci              - renesas,sdhi-r9a07g054 # RZ/V2L
6262306a36Sopenharmony_ci              - renesas,sdhi-r9a09g011 # RZ/V2M
6362306a36Sopenharmony_ci          - const: renesas,rcar-gen3-sdhi # R-Car Gen3 or RZ/G2
6462306a36Sopenharmony_ci      - items:
6562306a36Sopenharmony_ci          - enum:
6662306a36Sopenharmony_ci              - renesas,sdhi-r8a779a0  # R-Car V3U
6762306a36Sopenharmony_ci              - renesas,sdhi-r8a779f0  # R-Car S4-8
6862306a36Sopenharmony_ci              - renesas,sdhi-r8a779g0  # R-Car V4H
6962306a36Sopenharmony_ci          - const: renesas,rcar-gen4-sdhi # R-Car Gen4
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci  reg:
7262306a36Sopenharmony_ci    maxItems: 1
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci  interrupts:
7562306a36Sopenharmony_ci    minItems: 1
7662306a36Sopenharmony_ci    maxItems: 3
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci  clocks: true
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci  clock-names: true
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci  dmas:
8362306a36Sopenharmony_ci    minItems: 4
8462306a36Sopenharmony_ci    maxItems: 4
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci  dma-names:
8762306a36Sopenharmony_ci    minItems: 4
8862306a36Sopenharmony_ci    maxItems: 4
8962306a36Sopenharmony_ci    items:
9062306a36Sopenharmony_ci      enum:
9162306a36Sopenharmony_ci        - tx
9262306a36Sopenharmony_ci        - rx
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci  iommus:
9562306a36Sopenharmony_ci    maxItems: 1
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci  power-domains:
9862306a36Sopenharmony_ci    maxItems: 1
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci  resets:
10162306a36Sopenharmony_ci    maxItems: 1
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci  pinctrl-0:
10462306a36Sopenharmony_ci    minItems: 1
10562306a36Sopenharmony_ci    maxItems: 2
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci  pinctrl-1:
10862306a36Sopenharmony_ci    maxItems: 1
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci  pinctrl-names: true
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci  max-frequency: true
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ciallOf:
11562306a36Sopenharmony_ci  - $ref: mmc-controller.yaml
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci  - if:
11862306a36Sopenharmony_ci      properties:
11962306a36Sopenharmony_ci        compatible:
12062306a36Sopenharmony_ci          contains:
12162306a36Sopenharmony_ci            enum:
12262306a36Sopenharmony_ci              - renesas,sdhi-r9a07g043
12362306a36Sopenharmony_ci              - renesas,sdhi-r9a07g044
12462306a36Sopenharmony_ci              - renesas,sdhi-r9a07g054
12562306a36Sopenharmony_ci              - renesas,sdhi-r9a09g011
12662306a36Sopenharmony_ci    then:
12762306a36Sopenharmony_ci      properties:
12862306a36Sopenharmony_ci        clocks:
12962306a36Sopenharmony_ci          items:
13062306a36Sopenharmony_ci            - description: IMCLK, SDHI channel main clock1.
13162306a36Sopenharmony_ci            - description: CLK_HS, SDHI channel High speed clock which operates
13262306a36Sopenharmony_ci                           4 times that of SDHI channel main clock1.
13362306a36Sopenharmony_ci            - description: IMCLK2, SDHI channel main clock2. When this clock is
13462306a36Sopenharmony_ci                           turned off, external SD card detection cannot be
13562306a36Sopenharmony_ci                           detected.
13662306a36Sopenharmony_ci            - description: ACLK, SDHI channel bus clock.
13762306a36Sopenharmony_ci        clock-names:
13862306a36Sopenharmony_ci          items:
13962306a36Sopenharmony_ci            - const: core
14062306a36Sopenharmony_ci            - const: clkh
14162306a36Sopenharmony_ci            - const: cd
14262306a36Sopenharmony_ci            - const: aclk
14362306a36Sopenharmony_ci      required:
14462306a36Sopenharmony_ci        - clock-names
14562306a36Sopenharmony_ci        - resets
14662306a36Sopenharmony_ci    else:
14762306a36Sopenharmony_ci      if:
14862306a36Sopenharmony_ci        properties:
14962306a36Sopenharmony_ci          compatible:
15062306a36Sopenharmony_ci            contains:
15162306a36Sopenharmony_ci              enum:
15262306a36Sopenharmony_ci                - renesas,rcar-gen2-sdhi
15362306a36Sopenharmony_ci                - renesas,rcar-gen3-sdhi
15462306a36Sopenharmony_ci                - renesas,rcar-gen4-sdhi
15562306a36Sopenharmony_ci      then:
15662306a36Sopenharmony_ci        properties:
15762306a36Sopenharmony_ci          clocks:
15862306a36Sopenharmony_ci            minItems: 1
15962306a36Sopenharmony_ci            maxItems: 3
16062306a36Sopenharmony_ci          clock-names:
16162306a36Sopenharmony_ci            minItems: 1
16262306a36Sopenharmony_ci            uniqueItems: true
16362306a36Sopenharmony_ci            items:
16462306a36Sopenharmony_ci              - const: core
16562306a36Sopenharmony_ci              - enum: [ clkh, cd ]
16662306a36Sopenharmony_ci              - const: cd
16762306a36Sopenharmony_ci      else:
16862306a36Sopenharmony_ci        properties:
16962306a36Sopenharmony_ci          clocks:
17062306a36Sopenharmony_ci            minItems: 1
17162306a36Sopenharmony_ci            maxItems: 2
17262306a36Sopenharmony_ci          clock-names:
17362306a36Sopenharmony_ci            minItems: 1
17462306a36Sopenharmony_ci            items:
17562306a36Sopenharmony_ci              - const: core
17662306a36Sopenharmony_ci              - const: cd
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ci  - if:
17962306a36Sopenharmony_ci      properties:
18062306a36Sopenharmony_ci        compatible:
18162306a36Sopenharmony_ci          contains:
18262306a36Sopenharmony_ci            const: renesas,sdhi-mmc-r8a77470
18362306a36Sopenharmony_ci    then:
18462306a36Sopenharmony_ci      properties:
18562306a36Sopenharmony_ci        pinctrl-names:
18662306a36Sopenharmony_ci          items:
18762306a36Sopenharmony_ci            - const: state_uhs
18862306a36Sopenharmony_ci    else:
18962306a36Sopenharmony_ci      properties:
19062306a36Sopenharmony_ci        pinctrl-names:
19162306a36Sopenharmony_ci          minItems: 1
19262306a36Sopenharmony_ci          items:
19362306a36Sopenharmony_ci            - const: default
19462306a36Sopenharmony_ci            - const: state_uhs
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci  - if:
19762306a36Sopenharmony_ci      properties:
19862306a36Sopenharmony_ci        compatible:
19962306a36Sopenharmony_ci          contains:
20062306a36Sopenharmony_ci            enum:
20162306a36Sopenharmony_ci              - renesas,sdhi-r7s72100
20262306a36Sopenharmony_ci              - renesas,sdhi-r7s9210
20362306a36Sopenharmony_ci    then:
20462306a36Sopenharmony_ci      required:
20562306a36Sopenharmony_ci        - clock-names
20662306a36Sopenharmony_ci      description:
20762306a36Sopenharmony_ci        The internal card detection logic that exists in these controllers is
20862306a36Sopenharmony_ci        sectioned off to be run by a separate second clock source to allow
20962306a36Sopenharmony_ci        the main core clock to be turned off to save power.
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_cirequired:
21262306a36Sopenharmony_ci  - compatible
21362306a36Sopenharmony_ci  - reg
21462306a36Sopenharmony_ci  - interrupts
21562306a36Sopenharmony_ci  - clocks
21662306a36Sopenharmony_ci  - power-domains
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ciunevaluatedProperties: false
21962306a36Sopenharmony_ci
22062306a36Sopenharmony_ciexamples:
22162306a36Sopenharmony_ci  - |
22262306a36Sopenharmony_ci    #include <dt-bindings/clock/r8a7790-cpg-mssr.h>
22362306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
22462306a36Sopenharmony_ci    #include <dt-bindings/power/r8a7790-sysc.h>
22562306a36Sopenharmony_ci
22662306a36Sopenharmony_ci    sdhi0: mmc@ee100000 {
22762306a36Sopenharmony_ci            compatible = "renesas,sdhi-r8a7790", "renesas,rcar-gen2-sdhi";
22862306a36Sopenharmony_ci            reg = <0xee100000 0x328>;
22962306a36Sopenharmony_ci            interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
23062306a36Sopenharmony_ci            clocks = <&cpg CPG_MOD 314>;
23162306a36Sopenharmony_ci            dmas = <&dmac0 0xcd>, <&dmac0 0xce>, <&dmac1 0xcd>, <&dmac1 0xce>;
23262306a36Sopenharmony_ci            dma-names = "tx", "rx", "tx", "rx";
23362306a36Sopenharmony_ci            max-frequency = <195000000>;
23462306a36Sopenharmony_ci            power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
23562306a36Sopenharmony_ci            resets = <&cpg 314>;
23662306a36Sopenharmony_ci    };
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ci    sdhi1: mmc@ee120000 {
23962306a36Sopenharmony_ci             compatible = "renesas,sdhi-r8a7790", "renesas,rcar-gen2-sdhi";
24062306a36Sopenharmony_ci             reg = <0xee120000 0x328>;
24162306a36Sopenharmony_ci             interrupts = <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>;
24262306a36Sopenharmony_ci             clocks = <&cpg CPG_MOD 313>;
24362306a36Sopenharmony_ci             dmas = <&dmac0 0xc9>, <&dmac0 0xca>, <&dmac1 0xc9>, <&dmac1 0xca>;
24462306a36Sopenharmony_ci             dma-names = "tx", "rx", "tx", "rx";
24562306a36Sopenharmony_ci             max-frequency = <195000000>;
24662306a36Sopenharmony_ci             power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
24762306a36Sopenharmony_ci             resets = <&cpg 313>;
24862306a36Sopenharmony_ci    };
24962306a36Sopenharmony_ci
25062306a36Sopenharmony_ci    sdhi2: mmc@ee140000 {
25162306a36Sopenharmony_ci             compatible = "renesas,sdhi-r8a7790", "renesas,rcar-gen2-sdhi";
25262306a36Sopenharmony_ci             reg = <0xee140000 0x100>;
25362306a36Sopenharmony_ci             interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
25462306a36Sopenharmony_ci             clocks = <&cpg CPG_MOD 312>;
25562306a36Sopenharmony_ci             dmas = <&dmac0 0xc1>, <&dmac0 0xc2>, <&dmac1 0xc1>, <&dmac1 0xc2>;
25662306a36Sopenharmony_ci             dma-names = "tx", "rx", "tx", "rx";
25762306a36Sopenharmony_ci             max-frequency = <97500000>;
25862306a36Sopenharmony_ci             power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
25962306a36Sopenharmony_ci             resets = <&cpg 312>;
26062306a36Sopenharmony_ci     };
26162306a36Sopenharmony_ci
26262306a36Sopenharmony_ci     sdhi3: mmc@ee160000 {
26362306a36Sopenharmony_ci              compatible = "renesas,sdhi-r8a7790", "renesas,rcar-gen2-sdhi";
26462306a36Sopenharmony_ci              reg = <0xee160000 0x100>;
26562306a36Sopenharmony_ci              interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
26662306a36Sopenharmony_ci              clocks = <&cpg CPG_MOD 311>;
26762306a36Sopenharmony_ci              dmas = <&dmac0 0xd3>, <&dmac0 0xd4>, <&dmac1 0xd3>, <&dmac1 0xd4>;
26862306a36Sopenharmony_ci              dma-names = "tx", "rx", "tx", "rx";
26962306a36Sopenharmony_ci              max-frequency = <97500000>;
27062306a36Sopenharmony_ci              power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
27162306a36Sopenharmony_ci              resets = <&cpg 311>;
27262306a36Sopenharmony_ci    };
273