blob: 5fe65795f7963e55e7fdddd34bf591221b4d174b [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mmc/samsung,exynos-dw-mshc.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title:
8 Samsung Exynos SoC specific extensions to the Synopsys Designware Mobile
9 Storage Host Controller
10
11maintainers:
12 - Jaehoon Chung <jh80.chung@samsung.com>
13 - Krzysztof Kozlowski <krzk@kernel.org>
14
15properties:
16 compatible:
Tom Rini93743d22024-04-01 09:08:13 -040017 oneOf:
18 - enum:
19 - axis,artpec8-dw-mshc
20 - samsung,exynos4210-dw-mshc
21 - samsung,exynos4412-dw-mshc
22 - samsung,exynos5250-dw-mshc
23 - samsung,exynos5420-dw-mshc
24 - samsung,exynos5420-dw-mshc-smu
25 - samsung,exynos7-dw-mshc
26 - samsung,exynos7-dw-mshc-smu
27 - items:
28 - enum:
29 - samsung,exynos5433-dw-mshc-smu
30 - samsung,exynos7885-dw-mshc-smu
31 - samsung,exynos850-dw-mshc-smu
32 - const: samsung,exynos7-dw-mshc-smu
Tom Rini53633a82024-02-29 12:33:36 -050033
34 reg:
35 maxItems: 1
36
37 interrupts:
38 maxItems: 1
39
40 clocks:
41 maxItems: 2
42 description:
43 Handle to "biu" and "ciu" clocks for the
44 bus interface unit clock and the card interface unit clock.
45
46 clock-names:
47 items:
48 - const: biu
49 - const: ciu
50
51 samsung,dw-mshc-ciu-div:
52 $ref: /schemas/types.yaml#/definitions/uint32
53 minimum: 0
54 maximum: 7
55 description:
56 The divider value for the card interface unit (ciu) clock.
57
58 samsung,dw-mshc-ddr-timing:
59 $ref: /schemas/types.yaml#/definitions/uint32-array
60 items:
61 - description: CIU clock phase shift value for tx mode
62 minimum: 0
63 maximum: 7
64 - description: CIU clock phase shift value for rx mode
65 minimum: 0
66 maximum: 7
67 description:
68 The value of CUI clock phase shift value in transmit mode and CIU clock
69 phase shift value in receive mode for double data rate mode operation.
70 See also samsung,dw-mshc-hs400-timing property.
71
72 samsung,dw-mshc-hs400-timing:
73 $ref: /schemas/types.yaml#/definitions/uint32-array
74 items:
75 - description: CIU clock phase shift value for tx mode
76 minimum: 0
77 maximum: 7
78 - description: CIU clock phase shift value for rx mode
79 minimum: 0
80 maximum: 7
81 description: |
82 The value of CIU TX and RX clock phase shift value for HS400 mode
83 operation.
84 Valid values for SDR and DDR CIU clock timing::
85 - valid value for tx phase shift and rx phase shift is 0 to 7.
86 - when CIU clock divider value is set to 3, all possible 8 phase shift
87 values can be used.
88 - if CIU clock divider value is 0 (that is divide by 1), both tx and rx
89 phase shift clocks should be 0.
90 If missing, values from samsung,dw-mshc-ddr-timing property are used.
91
92 samsung,dw-mshc-sdr-timing:
93 $ref: /schemas/types.yaml#/definitions/uint32-array
94 items:
95 - description: CIU clock phase shift value for tx mode
96 minimum: 0
97 maximum: 7
98 - description: CIU clock phase shift value for rx mode
99 minimum: 0
100 maximum: 7
101 description:
102 The value of CIU clock phase shift value in transmit mode and CIU clock
103 phase shift value in receive mode for single data rate mode operation.
104 See also samsung,dw-mshc-hs400-timing property.
105
106 samsung,read-strobe-delay:
107 $ref: /schemas/types.yaml#/definitions/uint32
108 description:
109 RCLK (Data strobe) delay to control HS400 mode (Latency value for delay
110 line in Read path). If missing, default from hardware is used.
111
112required:
113 - compatible
114 - reg
115 - interrupts
116 - clocks
117 - clock-names
118 - samsung,dw-mshc-ddr-timing
119 - samsung,dw-mshc-sdr-timing
120
121allOf:
122 - $ref: synopsys-dw-mshc-common.yaml#
123 - if:
124 properties:
125 compatible:
126 contains:
127 enum:
128 - samsung,exynos5250-dw-mshc
129 - samsung,exynos5420-dw-mshc
130 - samsung,exynos7-dw-mshc
131 - samsung,exynos7-dw-mshc-smu
132 - axis,artpec8-dw-mshc
133 then:
134 required:
135 - samsung,dw-mshc-ciu-div
136
137unevaluatedProperties: false
138
139examples:
140 - |
141 #include <dt-bindings/clock/exynos5420.h>
142 #include <dt-bindings/interrupt-controller/arm-gic.h>
143
144 mmc@12220000 {
145 compatible = "samsung,exynos5420-dw-mshc";
146 interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
147 #address-cells = <1>;
148 #size-cells = <0>;
149 reg = <0x12220000 0x1000>;
150 clocks = <&clock CLK_MMC2>, <&clock CLK_SCLK_MMC2>;
151 clock-names = "biu", "ciu";
152 fifo-depth = <0x40>;
153 card-detect-delay = <200>;
154 samsung,dw-mshc-ciu-div = <3>;
155 samsung,dw-mshc-sdr-timing = <0 4>;
156 samsung,dw-mshc-ddr-timing = <0 2>;
157 pinctrl-names = "default";
158 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_wp &sd2_bus1 &sd2_bus4>;
159 bus-width = <4>;
160 cap-sd-highspeed;
161 max-frequency = <200000000>;
162 vmmc-supply = <&ldo19_reg>;
163 vqmmc-supply = <&ldo13_reg>;
164 sd-uhs-sdr50;
165 sd-uhs-sdr104;
166 sd-uhs-ddr50;
167 };