1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mmc/cdns,sdhci.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Cadence SD/SDIO/eMMC Host Controller (SD4HC)
8
9maintainers:
10  - Masahiro Yamada <yamada.masahiro@socionext.com>
11  - Piotr Sroka <piotrs@cadence.com>
12
13allOf:
14  - $ref: mmc-controller.yaml
15
16properties:
17  compatible:
18    items:
19      - enum:
20          - microchip,mpfs-sd4hc
21          - socionext,uniphier-sd4hc
22      - const: cdns,sd4hc
23
24  reg:
25    maxItems: 1
26
27  interrupts:
28    maxItems: 1
29
30  clocks:
31    maxItems: 1
32
33  # PHY DLL input delays:
34  # They are used to delay the data valid window, and align the window to
35  # sampling clock. The delay starts from 5ns (for delay parameter equal to 0)
36  # and it is increased by 2.5ns in each step.
37
38  cdns,phy-input-delay-sd-highspeed:
39    description: Value of the delay in the input path for SD high-speed timing
40    $ref: "/schemas/types.yaml#/definitions/uint32"
41    minimum: 0
42    maximum: 0x1f
43
44  cdns,phy-input-delay-legacy:
45    description: Value of the delay in the input path for legacy timing
46    $ref: "/schemas/types.yaml#/definitions/uint32"
47    minimum: 0
48    maximum: 0x1f
49
50  cdns,phy-input-delay-sd-uhs-sdr12:
51    description: Value of the delay in the input path for SD UHS SDR12 timing
52    $ref: "/schemas/types.yaml#/definitions/uint32"
53    minimum: 0
54    maximum: 0x1f
55
56  cdns,phy-input-delay-sd-uhs-sdr25:
57    description: Value of the delay in the input path for SD UHS SDR25 timing
58    $ref: "/schemas/types.yaml#/definitions/uint32"
59    minimum: 0
60    maximum: 0x1f
61
62  cdns,phy-input-delay-sd-uhs-sdr50:
63    description: Value of the delay in the input path for SD UHS SDR50 timing
64    $ref: "/schemas/types.yaml#/definitions/uint32"
65    minimum: 0
66    maximum: 0x1f
67
68  cdns,phy-input-delay-sd-uhs-ddr50:
69    description: Value of the delay in the input path for SD UHS DDR50 timing
70    $ref: "/schemas/types.yaml#/definitions/uint32"
71    minimum: 0
72    maximum: 0x1f
73
74  cdns,phy-input-delay-mmc-highspeed:
75    description: Value of the delay in the input path for MMC high-speed timing
76    $ref: "/schemas/types.yaml#/definitions/uint32"
77    minimum: 0
78    maximum: 0x1f
79
80  cdns,phy-input-delay-mmc-ddr:
81    description: Value of the delay in the input path for eMMC high-speed DDR timing
82
83  # PHY DLL clock delays:
84  # Each delay property represents the fraction of the clock period.
85  # The approximate delay value will be
86  # (<delay property value>/128)*sdmclk_clock_period.
87    $ref: "/schemas/types.yaml#/definitions/uint32"
88    minimum: 0
89    maximum: 0x1f
90
91  cdns,phy-dll-delay-sdclk:
92    description: |
93      Value of the delay introduced on the sdclk output for all modes except
94      HS200, HS400 and HS400_ES.
95    $ref: "/schemas/types.yaml#/definitions/uint32"
96    minimum: 0
97    maximum: 0x7f
98
99  cdns,phy-dll-delay-sdclk-hsmmc:
100    description: |
101      Value of the delay introduced on the sdclk output for HS200, HS400 and
102      HS400_ES speed modes.
103    $ref: "/schemas/types.yaml#/definitions/uint32"
104    minimum: 0
105    maximum: 0x7f
106
107  cdns,phy-dll-delay-strobe:
108    description: |
109      Value of the delay introduced on the dat_strobe input used in
110      HS400 / HS400_ES speed modes.
111    $ref: "/schemas/types.yaml#/definitions/uint32"
112    minimum: 0
113    maximum: 0x7f
114
115required:
116  - compatible
117  - reg
118  - interrupts
119  - clocks
120
121unevaluatedProperties: false
122
123examples:
124  - |
125    emmc: mmc@5a000000 {
126        compatible = "socionext,uniphier-sd4hc", "cdns,sd4hc";
127        reg = <0x5a000000 0x400>;
128        interrupts = <0 78 4>;
129        clocks = <&clk 4>;
130        bus-width = <8>;
131        mmc-ddr-1_8v;
132        mmc-hs200-1_8v;
133        mmc-hs400-1_8v;
134        cdns,phy-dll-delay-sdclk = <0>;
135    };
136