18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/mmc/cdns,sdhci.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Cadence SD/SDIO/eMMC Host Controller (SD4HC)
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Masahiro Yamada <yamada.masahiro@socionext.com>
118c2ecf20Sopenharmony_ci  - Piotr Sroka <piotrs@cadence.com>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ciallOf:
148c2ecf20Sopenharmony_ci  - $ref: mmc-controller.yaml
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ciproperties:
178c2ecf20Sopenharmony_ci  compatible:
188c2ecf20Sopenharmony_ci    items:
198c2ecf20Sopenharmony_ci      - enum:
208c2ecf20Sopenharmony_ci          - socionext,uniphier-sd4hc
218c2ecf20Sopenharmony_ci      - const: cdns,sd4hc
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ci  reg:
248c2ecf20Sopenharmony_ci    maxItems: 1
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci  interrupts:
278c2ecf20Sopenharmony_ci    maxItems: 1
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci  clocks:
308c2ecf20Sopenharmony_ci    maxItems: 1
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci  # PHY DLL input delays:
338c2ecf20Sopenharmony_ci  # They are used to delay the data valid window, and align the window to
348c2ecf20Sopenharmony_ci  # sampling clock. The delay starts from 5ns (for delay parameter equal to 0)
358c2ecf20Sopenharmony_ci  # and it is increased by 2.5ns in each step.
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci  cdns,phy-input-delay-sd-highspeed:
388c2ecf20Sopenharmony_ci    description: Value of the delay in the input path for SD high-speed timing
398c2ecf20Sopenharmony_ci    $ref: "/schemas/types.yaml#/definitions/uint32"
408c2ecf20Sopenharmony_ci    minimum: 0
418c2ecf20Sopenharmony_ci    maximum: 0x1f
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci  cdns,phy-input-delay-legacy:
448c2ecf20Sopenharmony_ci    description: Value of the delay in the input path for legacy timing
458c2ecf20Sopenharmony_ci    $ref: "/schemas/types.yaml#/definitions/uint32"
468c2ecf20Sopenharmony_ci    minimum: 0
478c2ecf20Sopenharmony_ci    maximum: 0x1f
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ci  cdns,phy-input-delay-sd-uhs-sdr12:
508c2ecf20Sopenharmony_ci    description: Value of the delay in the input path for SD UHS SDR12 timing
518c2ecf20Sopenharmony_ci    $ref: "/schemas/types.yaml#/definitions/uint32"
528c2ecf20Sopenharmony_ci    minimum: 0
538c2ecf20Sopenharmony_ci    maximum: 0x1f
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci  cdns,phy-input-delay-sd-uhs-sdr25:
568c2ecf20Sopenharmony_ci    description: Value of the delay in the input path for SD UHS SDR25 timing
578c2ecf20Sopenharmony_ci    $ref: "/schemas/types.yaml#/definitions/uint32"
588c2ecf20Sopenharmony_ci    minimum: 0
598c2ecf20Sopenharmony_ci    maximum: 0x1f
608c2ecf20Sopenharmony_ci
618c2ecf20Sopenharmony_ci  cdns,phy-input-delay-sd-uhs-sdr50:
628c2ecf20Sopenharmony_ci    description: Value of the delay in the input path for SD UHS SDR50 timing
638c2ecf20Sopenharmony_ci    $ref: "/schemas/types.yaml#/definitions/uint32"
648c2ecf20Sopenharmony_ci    minimum: 0
658c2ecf20Sopenharmony_ci    maximum: 0x1f
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_ci  cdns,phy-input-delay-sd-uhs-ddr50:
688c2ecf20Sopenharmony_ci    description: Value of the delay in the input path for SD UHS DDR50 timing
698c2ecf20Sopenharmony_ci    $ref: "/schemas/types.yaml#/definitions/uint32"
708c2ecf20Sopenharmony_ci    minimum: 0
718c2ecf20Sopenharmony_ci    maximum: 0x1f
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ci  cdns,phy-input-delay-mmc-highspeed:
748c2ecf20Sopenharmony_ci    description: Value of the delay in the input path for MMC high-speed timing
758c2ecf20Sopenharmony_ci    $ref: "/schemas/types.yaml#/definitions/uint32"
768c2ecf20Sopenharmony_ci    minimum: 0
778c2ecf20Sopenharmony_ci    maximum: 0x1f
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ci  cdns,phy-input-delay-mmc-ddr:
808c2ecf20Sopenharmony_ci    description: Value of the delay in the input path for eMMC high-speed DDR timing
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_ci  # PHY DLL clock delays:
838c2ecf20Sopenharmony_ci  # Each delay property represents the fraction of the clock period.
848c2ecf20Sopenharmony_ci  # The approximate delay value will be
858c2ecf20Sopenharmony_ci  # (<delay property value>/128)*sdmclk_clock_period.
868c2ecf20Sopenharmony_ci    $ref: "/schemas/types.yaml#/definitions/uint32"
878c2ecf20Sopenharmony_ci    minimum: 0
888c2ecf20Sopenharmony_ci    maximum: 0x1f
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ci  cdns,phy-dll-delay-sdclk:
918c2ecf20Sopenharmony_ci    description: |
928c2ecf20Sopenharmony_ci      Value of the delay introduced on the sdclk output for all modes except
938c2ecf20Sopenharmony_ci      HS200, HS400 and HS400_ES.
948c2ecf20Sopenharmony_ci    $ref: "/schemas/types.yaml#/definitions/uint32"
958c2ecf20Sopenharmony_ci    minimum: 0
968c2ecf20Sopenharmony_ci    maximum: 0x7f
978c2ecf20Sopenharmony_ci
988c2ecf20Sopenharmony_ci  cdns,phy-dll-delay-sdclk-hsmmc:
998c2ecf20Sopenharmony_ci    description: |
1008c2ecf20Sopenharmony_ci      Value of the delay introduced on the sdclk output for HS200, HS400 and
1018c2ecf20Sopenharmony_ci      HS400_ES speed modes.
1028c2ecf20Sopenharmony_ci    $ref: "/schemas/types.yaml#/definitions/uint32"
1038c2ecf20Sopenharmony_ci    minimum: 0
1048c2ecf20Sopenharmony_ci    maximum: 0x7f
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ci  cdns,phy-dll-delay-strobe:
1078c2ecf20Sopenharmony_ci    description: |
1088c2ecf20Sopenharmony_ci      Value of the delay introduced on the dat_strobe input used in
1098c2ecf20Sopenharmony_ci      HS400 / HS400_ES speed modes.
1108c2ecf20Sopenharmony_ci    $ref: "/schemas/types.yaml#/definitions/uint32"
1118c2ecf20Sopenharmony_ci    minimum: 0
1128c2ecf20Sopenharmony_ci    maximum: 0x7f
1138c2ecf20Sopenharmony_ci
1148c2ecf20Sopenharmony_cirequired:
1158c2ecf20Sopenharmony_ci  - compatible
1168c2ecf20Sopenharmony_ci  - reg
1178c2ecf20Sopenharmony_ci  - interrupts
1188c2ecf20Sopenharmony_ci  - clocks
1198c2ecf20Sopenharmony_ci
1208c2ecf20Sopenharmony_ciunevaluatedProperties: false
1218c2ecf20Sopenharmony_ci
1228c2ecf20Sopenharmony_ciexamples:
1238c2ecf20Sopenharmony_ci  - |
1248c2ecf20Sopenharmony_ci    emmc: mmc@5a000000 {
1258c2ecf20Sopenharmony_ci        compatible = "socionext,uniphier-sd4hc", "cdns,sd4hc";
1268c2ecf20Sopenharmony_ci        reg = <0x5a000000 0x400>;
1278c2ecf20Sopenharmony_ci        interrupts = <0 78 4>;
1288c2ecf20Sopenharmony_ci        clocks = <&clk 4>;
1298c2ecf20Sopenharmony_ci        bus-width = <8>;
1308c2ecf20Sopenharmony_ci        mmc-ddr-1_8v;
1318c2ecf20Sopenharmony_ci        mmc-hs200-1_8v;
1328c2ecf20Sopenharmony_ci        mmc-hs400-1_8v;
1338c2ecf20Sopenharmony_ci        cdns,phy-dll-delay-sdclk = <0>;
1348c2ecf20Sopenharmony_ci    };
135