1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
4 $id: http://devicetree.org/schemas/mmc/arasan,sdhci.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Arasan SDHCI Controller
10 - Adrian Hunter <adrian.hunter@intel.com>
13 - $ref: mmc-controller.yaml#
18 const: arasan,sdhci-5.1
30 - xlnx,versal-net-emmc
45 - const: arasan,sdhci-8.9a # generic Arasan SDHCI 8.9a PHY
46 - const: arasan,sdhci-4.9a # generic Arasan SDHCI 4.9a PHY
47 - const: arasan,sdhci-5.1 # generic Arasan SDHCI 5.1 PHY
49 - const: rockchip,rk3399-sdhci-5.1 # rk3399 eMMC PHY
50 - const: arasan,sdhci-5.1
52 For this device it is strongly suggested to include
53 arasan,soc-ctl-syscon.
55 - const: xlnx,zynqmp-8.9a # ZynqMP SDHCI 8.9a PHY
56 - const: arasan,sdhci-8.9a
58 For this device it is strongly suggested to include
59 clock-output-names and '#clock-cells'.
61 - const: xlnx,versal-8.9a # Versal SDHCI 8.9a PHY
62 - const: arasan,sdhci-8.9a
64 For this device it is strongly suggested to include
65 clock-output-names and '#clock-cells'.
66 - const: xlnx,versal-net-emmc # Versal Net eMMC PHY
68 For this device it is strongly suggested to include
69 clock-output-names and '#clock-cells'.
71 - const: intel,lgm-sdhci-5.1-emmc # Intel LGM eMMC PHY
72 - const: arasan,sdhci-5.1
74 For this device it is strongly suggested to include
75 arasan,soc-ctl-syscon.
77 - const: intel,lgm-sdhci-5.1-sdxc # Intel LGM SDXC PHY
78 - const: arasan,sdhci-5.1
80 For this device it is strongly suggested to include
81 arasan,soc-ctl-syscon.
83 - const: intel,keembay-sdhci-5.1-emmc # Intel Keem Bay eMMC PHY
84 - const: arasan,sdhci-5.1
86 For this device it is strongly suggested to include
87 arasan,soc-ctl-syscon.
88 - const: intel,keembay-sdhci-5.1-sd # Intel Keem Bay SD controller
90 For this device it is strongly suggested to include
91 arasan,soc-ctl-syscon.
92 - const: intel,keembay-sdhci-5.1-sdio # Intel Keem Bay SDIO controller
94 For this device it is strongly suggested to include
95 arasan,soc-ctl-syscon.
123 arasan,soc-ctl-syscon:
124 $ref: /schemas/types.yaml#/definitions/phandle
126 A phandle to a syscon device (see ../mfd/syscon.txt) used to access
127 core corecfg registers. Offsets of registers in this syscon are
128 determined based on the main compatible string for the device.
134 Name of the card clock which will be exposed by this device.
139 With this property in place we will export one or two clocks
140 representing the Card Clock. These clocks are expected to be
143 xlnx,fails-without-test-cd:
144 $ref: /schemas/types.yaml#/definitions/flag
146 When present, the controller doesn't work when the CD line is not
147 connected properly, and the line is not connected properly.
148 Test mode can be used to force the controller to function.
150 xlnx,int-clock-stable-broken:
151 $ref: /schemas/types.yaml#/definitions/flag
153 When present, the controller always reports that the internal clock
154 is stable even when it is not.
157 $ref: /schemas/types.yaml#/definitions/uint32
161 The MIO bank number in which the command and data lines are configured.
170 '#clock-cells': [ clock-output-names ]
179 unevaluatedProperties: false
184 compatible = "arasan,sdhci-8.9a";
185 reg = <0xe0100000 0x1000>;
186 clock-names = "clk_xin", "clk_ahb";
187 clocks = <&clkc 21>, <&clkc 32>;
188 interrupt-parent = <&gic>;
189 interrupts = <0 24 4>;
194 compatible = "arasan,sdhci-5.1";
195 reg = <0xe2800000 0x1000>;
196 clock-names = "clk_xin", "clk_ahb";
197 clocks = <&cru 8>, <&cru 18>;
198 interrupt-parent = <&gic>;
199 interrupts = <0 24 4>;
201 phy-names = "phy_arasan";
205 #include <dt-bindings/clock/rk3399-cru.h>
206 #include <dt-bindings/interrupt-controller/arm-gic.h>
207 #include <dt-bindings/interrupt-controller/irq.h>
209 compatible = "rockchip,rk3399-sdhci-5.1", "arasan,sdhci-5.1";
210 reg = <0xfe330000 0x10000>;
211 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
212 clocks = <&cru SCLK_EMMC>, <&cru ACLK_EMMC>;
213 clock-names = "clk_xin", "clk_ahb";
214 arasan,soc-ctl-syscon = <&grf>;
215 assigned-clocks = <&cru SCLK_EMMC>;
216 assigned-clock-rates = <200000000>;
217 clock-output-names = "emmc_cardclock";
219 phy-names = "phy_arasan";
225 compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
226 interrupt-parent = <&gic>;
227 interrupts = <0 48 4>;
228 reg = <0xff160000 0x1000>;
229 clocks = <&clk200>, <&clk200>, <&clk1200>;
230 clock-names = "clk_xin", "clk_ahb", "gate";
231 clock-output-names = "clk_out_sd0", "clk_in_sd0";
233 clk-phase-sd-hs = <63>, <72>;
238 compatible = "xlnx,versal-8.9a", "arasan,sdhci-8.9a";
239 interrupt-parent = <&gic>;
240 interrupts = <0 126 4>;
241 reg = <0xf1040000 0x10000>;
242 clocks = <&clk200>, <&clk200>, <&clk1200>;
243 clock-names = "clk_xin", "clk_ahb", "gate";
244 clock-output-names = "clk_out_sd0", "clk_in_sd0";
246 clk-phase-sd-hs = <132>, <60>;
250 #define LGM_CLK_EMMC5
252 #define LGM_GCLK_EMMC
254 compatible = "intel,lgm-sdhci-5.1-emmc", "arasan,sdhci-5.1";
255 reg = <0xec700000 0x300>;
256 interrupt-parent = <&ioapic1>;
258 clocks = <&cgu0 LGM_CLK_EMMC5>, <&cgu0 LGM_CLK_NGI>,
259 <&cgu0 LGM_GCLK_EMMC>;
260 clock-names = "clk_xin", "clk_ahb", "gate";
261 clock-output-names = "emmc_cardclock";
264 phy-names = "phy_arasan";
265 arasan,soc-ctl-syscon = <&sysconf>;
270 #define LGM_GCLK_SDXC
272 compatible = "intel,lgm-sdhci-5.1-sdxc", "arasan,sdhci-5.1";
273 reg = <0xec600000 0x300>;
274 interrupt-parent = <&ioapic1>;
276 clocks = <&cgu0 LGM_CLK_SDIO>, <&cgu0 LGM_CLK_NGI>,
277 <&cgu0 LGM_GCLK_SDXC>;
278 clock-names = "clk_xin", "clk_ahb", "gate";
279 clock-output-names = "sdxc_cardclock";
282 phy-names = "phy_arasan";
283 arasan,soc-ctl-syscon = <&sysconf>;
287 #define KEEM_BAY_PSS_AUX_EMMC
288 #define KEEM_BAY_PSS_EMMC
290 compatible = "intel,keembay-sdhci-5.1-emmc", "arasan,sdhci-5.1";
291 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
292 reg = <0x33000000 0x300>;
293 clock-names = "clk_xin", "clk_ahb";
294 clocks = <&scmi_clk KEEM_BAY_PSS_AUX_EMMC>,
295 <&scmi_clk KEEM_BAY_PSS_EMMC>;
297 phy-names = "phy_arasan";
298 assigned-clocks = <&scmi_clk KEEM_BAY_PSS_AUX_EMMC>;
299 assigned-clock-rates = <200000000>;
300 clock-output-names = "emmc_cardclock";
302 arasan,soc-ctl-syscon = <&mmc_phy_syscon>;
306 #define KEEM_BAY_PSS_AUX_SD0
307 #define KEEM_BAY_PSS_SD0
309 compatible = "intel,keembay-sdhci-5.1-sd";
310 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
311 reg = <0x31000000 0x300>;
312 clock-names = "clk_xin", "clk_ahb";
313 clocks = <&scmi_clk KEEM_BAY_PSS_AUX_SD0>,
314 <&scmi_clk KEEM_BAY_PSS_SD0>;
315 arasan,soc-ctl-syscon = <&sd0_phy_syscon>;