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/arasan,sdhci.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Arasan SDHCI Controller 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Adrian Hunter <adrian.hunter@intel.com> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ciallOf: 1362306a36Sopenharmony_ci - $ref: mmc-controller.yaml# 1462306a36Sopenharmony_ci - if: 1562306a36Sopenharmony_ci properties: 1662306a36Sopenharmony_ci compatible: 1762306a36Sopenharmony_ci contains: 1862306a36Sopenharmony_ci const: arasan,sdhci-5.1 1962306a36Sopenharmony_ci then: 2062306a36Sopenharmony_ci required: 2162306a36Sopenharmony_ci - phys 2262306a36Sopenharmony_ci - phy-names 2362306a36Sopenharmony_ci - if: 2462306a36Sopenharmony_ci properties: 2562306a36Sopenharmony_ci compatible: 2662306a36Sopenharmony_ci contains: 2762306a36Sopenharmony_ci enum: 2862306a36Sopenharmony_ci - xlnx,zynqmp-8.9a 2962306a36Sopenharmony_ci - xlnx,versal-8.9a 3062306a36Sopenharmony_ci - xlnx,versal-net-emmc 3162306a36Sopenharmony_ci then: 3262306a36Sopenharmony_ci properties: 3362306a36Sopenharmony_ci clock-output-names: 3462306a36Sopenharmony_ci oneOf: 3562306a36Sopenharmony_ci - items: 3662306a36Sopenharmony_ci - const: clk_out_sd0 3762306a36Sopenharmony_ci - const: clk_in_sd0 3862306a36Sopenharmony_ci - items: 3962306a36Sopenharmony_ci - const: clk_out_sd1 4062306a36Sopenharmony_ci - const: clk_in_sd1 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ciproperties: 4362306a36Sopenharmony_ci compatible: 4462306a36Sopenharmony_ci oneOf: 4562306a36Sopenharmony_ci - const: arasan,sdhci-8.9a # generic Arasan SDHCI 8.9a PHY 4662306a36Sopenharmony_ci - const: arasan,sdhci-4.9a # generic Arasan SDHCI 4.9a PHY 4762306a36Sopenharmony_ci - const: arasan,sdhci-5.1 # generic Arasan SDHCI 5.1 PHY 4862306a36Sopenharmony_ci - items: 4962306a36Sopenharmony_ci - const: rockchip,rk3399-sdhci-5.1 # rk3399 eMMC PHY 5062306a36Sopenharmony_ci - const: arasan,sdhci-5.1 5162306a36Sopenharmony_ci description: 5262306a36Sopenharmony_ci For this device it is strongly suggested to include 5362306a36Sopenharmony_ci arasan,soc-ctl-syscon. 5462306a36Sopenharmony_ci - items: 5562306a36Sopenharmony_ci - const: xlnx,zynqmp-8.9a # ZynqMP SDHCI 8.9a PHY 5662306a36Sopenharmony_ci - const: arasan,sdhci-8.9a 5762306a36Sopenharmony_ci description: 5862306a36Sopenharmony_ci For this device it is strongly suggested to include 5962306a36Sopenharmony_ci clock-output-names and '#clock-cells'. 6062306a36Sopenharmony_ci - items: 6162306a36Sopenharmony_ci - const: xlnx,versal-8.9a # Versal SDHCI 8.9a PHY 6262306a36Sopenharmony_ci - const: arasan,sdhci-8.9a 6362306a36Sopenharmony_ci description: 6462306a36Sopenharmony_ci For this device it is strongly suggested to include 6562306a36Sopenharmony_ci clock-output-names and '#clock-cells'. 6662306a36Sopenharmony_ci - const: xlnx,versal-net-emmc # Versal Net eMMC PHY 6762306a36Sopenharmony_ci description: 6862306a36Sopenharmony_ci For this device it is strongly suggested to include 6962306a36Sopenharmony_ci clock-output-names and '#clock-cells'. 7062306a36Sopenharmony_ci - items: 7162306a36Sopenharmony_ci - const: intel,lgm-sdhci-5.1-emmc # Intel LGM eMMC PHY 7262306a36Sopenharmony_ci - const: arasan,sdhci-5.1 7362306a36Sopenharmony_ci description: 7462306a36Sopenharmony_ci For this device it is strongly suggested to include 7562306a36Sopenharmony_ci arasan,soc-ctl-syscon. 7662306a36Sopenharmony_ci - items: 7762306a36Sopenharmony_ci - const: intel,lgm-sdhci-5.1-sdxc # Intel LGM SDXC PHY 7862306a36Sopenharmony_ci - const: arasan,sdhci-5.1 7962306a36Sopenharmony_ci description: 8062306a36Sopenharmony_ci For this device it is strongly suggested to include 8162306a36Sopenharmony_ci arasan,soc-ctl-syscon. 8262306a36Sopenharmony_ci - items: 8362306a36Sopenharmony_ci - const: intel,keembay-sdhci-5.1-emmc # Intel Keem Bay eMMC PHY 8462306a36Sopenharmony_ci - const: arasan,sdhci-5.1 8562306a36Sopenharmony_ci description: 8662306a36Sopenharmony_ci For this device it is strongly suggested to include 8762306a36Sopenharmony_ci arasan,soc-ctl-syscon. 8862306a36Sopenharmony_ci - const: intel,keembay-sdhci-5.1-sd # Intel Keem Bay SD controller 8962306a36Sopenharmony_ci description: 9062306a36Sopenharmony_ci For this device it is strongly suggested to include 9162306a36Sopenharmony_ci arasan,soc-ctl-syscon. 9262306a36Sopenharmony_ci - const: intel,keembay-sdhci-5.1-sdio # Intel Keem Bay SDIO controller 9362306a36Sopenharmony_ci description: 9462306a36Sopenharmony_ci For this device it is strongly suggested to include 9562306a36Sopenharmony_ci arasan,soc-ctl-syscon. 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci reg: 9862306a36Sopenharmony_ci maxItems: 1 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ci clocks: 10162306a36Sopenharmony_ci minItems: 2 10262306a36Sopenharmony_ci maxItems: 3 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci clock-names: 10562306a36Sopenharmony_ci minItems: 2 10662306a36Sopenharmony_ci items: 10762306a36Sopenharmony_ci - const: clk_xin 10862306a36Sopenharmony_ci - const: clk_ahb 10962306a36Sopenharmony_ci - const: gate 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ci interrupts: 11262306a36Sopenharmony_ci maxItems: 1 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci phys: 11562306a36Sopenharmony_ci maxItems: 1 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci phy-names: 11862306a36Sopenharmony_ci const: phy_arasan 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci resets: 12162306a36Sopenharmony_ci maxItems: 1 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci arasan,soc-ctl-syscon: 12462306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle 12562306a36Sopenharmony_ci description: 12662306a36Sopenharmony_ci A phandle to a syscon device (see ../mfd/syscon.txt) used to access 12762306a36Sopenharmony_ci core corecfg registers. Offsets of registers in this syscon are 12862306a36Sopenharmony_ci determined based on the main compatible string for the device. 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci clock-output-names: 13162306a36Sopenharmony_ci minItems: 1 13262306a36Sopenharmony_ci maxItems: 2 13362306a36Sopenharmony_ci description: 13462306a36Sopenharmony_ci Name of the card clock which will be exposed by this device. 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_ci '#clock-cells': 13762306a36Sopenharmony_ci enum: [0, 1] 13862306a36Sopenharmony_ci description: 13962306a36Sopenharmony_ci With this property in place we will export one or two clocks 14062306a36Sopenharmony_ci representing the Card Clock. These clocks are expected to be 14162306a36Sopenharmony_ci consumed by our PHY. 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci xlnx,fails-without-test-cd: 14462306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/flag 14562306a36Sopenharmony_ci description: 14662306a36Sopenharmony_ci When present, the controller doesn't work when the CD line is not 14762306a36Sopenharmony_ci connected properly, and the line is not connected properly. 14862306a36Sopenharmony_ci Test mode can be used to force the controller to function. 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci xlnx,int-clock-stable-broken: 15162306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/flag 15262306a36Sopenharmony_ci description: 15362306a36Sopenharmony_ci When present, the controller always reports that the internal clock 15462306a36Sopenharmony_ci is stable even when it is not. 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci xlnx,mio-bank: 15762306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 15862306a36Sopenharmony_ci enum: [0, 1, 2] 15962306a36Sopenharmony_ci default: 0 16062306a36Sopenharmony_ci description: 16162306a36Sopenharmony_ci The MIO bank number in which the command and data lines are configured. 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci iommus: 16462306a36Sopenharmony_ci maxItems: 1 16562306a36Sopenharmony_ci 16662306a36Sopenharmony_ci power-domains: 16762306a36Sopenharmony_ci maxItems: 1 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_cidependencies: 17062306a36Sopenharmony_ci '#clock-cells': [ clock-output-names ] 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_cirequired: 17362306a36Sopenharmony_ci - compatible 17462306a36Sopenharmony_ci - reg 17562306a36Sopenharmony_ci - interrupts 17662306a36Sopenharmony_ci - clocks 17762306a36Sopenharmony_ci - clock-names 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ciunevaluatedProperties: false 18062306a36Sopenharmony_ci 18162306a36Sopenharmony_ciexamples: 18262306a36Sopenharmony_ci - | 18362306a36Sopenharmony_ci mmc@e0100000 { 18462306a36Sopenharmony_ci compatible = "arasan,sdhci-8.9a"; 18562306a36Sopenharmony_ci reg = <0xe0100000 0x1000>; 18662306a36Sopenharmony_ci clock-names = "clk_xin", "clk_ahb"; 18762306a36Sopenharmony_ci clocks = <&clkc 21>, <&clkc 32>; 18862306a36Sopenharmony_ci interrupt-parent = <&gic>; 18962306a36Sopenharmony_ci interrupts = <0 24 4>; 19062306a36Sopenharmony_ci }; 19162306a36Sopenharmony_ci 19262306a36Sopenharmony_ci - | 19362306a36Sopenharmony_ci mmc@e2800000 { 19462306a36Sopenharmony_ci compatible = "arasan,sdhci-5.1"; 19562306a36Sopenharmony_ci reg = <0xe2800000 0x1000>; 19662306a36Sopenharmony_ci clock-names = "clk_xin", "clk_ahb"; 19762306a36Sopenharmony_ci clocks = <&cru 8>, <&cru 18>; 19862306a36Sopenharmony_ci interrupt-parent = <&gic>; 19962306a36Sopenharmony_ci interrupts = <0 24 4>; 20062306a36Sopenharmony_ci phys = <&emmc_phy>; 20162306a36Sopenharmony_ci phy-names = "phy_arasan"; 20262306a36Sopenharmony_ci }; 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ci - | 20562306a36Sopenharmony_ci #include <dt-bindings/clock/rk3399-cru.h> 20662306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/arm-gic.h> 20762306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 20862306a36Sopenharmony_ci mmc@fe330000 { 20962306a36Sopenharmony_ci compatible = "rockchip,rk3399-sdhci-5.1", "arasan,sdhci-5.1"; 21062306a36Sopenharmony_ci reg = <0xfe330000 0x10000>; 21162306a36Sopenharmony_ci interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; 21262306a36Sopenharmony_ci clocks = <&cru SCLK_EMMC>, <&cru ACLK_EMMC>; 21362306a36Sopenharmony_ci clock-names = "clk_xin", "clk_ahb"; 21462306a36Sopenharmony_ci arasan,soc-ctl-syscon = <&grf>; 21562306a36Sopenharmony_ci assigned-clocks = <&cru SCLK_EMMC>; 21662306a36Sopenharmony_ci assigned-clock-rates = <200000000>; 21762306a36Sopenharmony_ci clock-output-names = "emmc_cardclock"; 21862306a36Sopenharmony_ci phys = <&emmc_phy>; 21962306a36Sopenharmony_ci phy-names = "phy_arasan"; 22062306a36Sopenharmony_ci #clock-cells = <0>; 22162306a36Sopenharmony_ci }; 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci - | 22462306a36Sopenharmony_ci mmc@ff160000 { 22562306a36Sopenharmony_ci compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a"; 22662306a36Sopenharmony_ci interrupt-parent = <&gic>; 22762306a36Sopenharmony_ci interrupts = <0 48 4>; 22862306a36Sopenharmony_ci reg = <0xff160000 0x1000>; 22962306a36Sopenharmony_ci clocks = <&clk200>, <&clk200>; 23062306a36Sopenharmony_ci clock-names = "clk_xin", "clk_ahb"; 23162306a36Sopenharmony_ci clock-output-names = "clk_out_sd0", "clk_in_sd0"; 23262306a36Sopenharmony_ci #clock-cells = <1>; 23362306a36Sopenharmony_ci clk-phase-sd-hs = <63>, <72>; 23462306a36Sopenharmony_ci }; 23562306a36Sopenharmony_ci 23662306a36Sopenharmony_ci - | 23762306a36Sopenharmony_ci mmc@f1040000 { 23862306a36Sopenharmony_ci compatible = "xlnx,versal-8.9a", "arasan,sdhci-8.9a"; 23962306a36Sopenharmony_ci interrupt-parent = <&gic>; 24062306a36Sopenharmony_ci interrupts = <0 126 4>; 24162306a36Sopenharmony_ci reg = <0xf1040000 0x10000>; 24262306a36Sopenharmony_ci clocks = <&clk200>, <&clk200>; 24362306a36Sopenharmony_ci clock-names = "clk_xin", "clk_ahb"; 24462306a36Sopenharmony_ci clock-output-names = "clk_out_sd0", "clk_in_sd0"; 24562306a36Sopenharmony_ci #clock-cells = <1>; 24662306a36Sopenharmony_ci clk-phase-sd-hs = <132>, <60>; 24762306a36Sopenharmony_ci }; 24862306a36Sopenharmony_ci 24962306a36Sopenharmony_ci - | 25062306a36Sopenharmony_ci #define LGM_CLK_EMMC5 25162306a36Sopenharmony_ci #define LGM_CLK_NGI 25262306a36Sopenharmony_ci #define LGM_GCLK_EMMC 25362306a36Sopenharmony_ci mmc@ec700000 { 25462306a36Sopenharmony_ci compatible = "intel,lgm-sdhci-5.1-emmc", "arasan,sdhci-5.1"; 25562306a36Sopenharmony_ci reg = <0xec700000 0x300>; 25662306a36Sopenharmony_ci interrupt-parent = <&ioapic1>; 25762306a36Sopenharmony_ci interrupts = <44 1>; 25862306a36Sopenharmony_ci clocks = <&cgu0 LGM_CLK_EMMC5>, <&cgu0 LGM_CLK_NGI>, 25962306a36Sopenharmony_ci <&cgu0 LGM_GCLK_EMMC>; 26062306a36Sopenharmony_ci clock-names = "clk_xin", "clk_ahb", "gate"; 26162306a36Sopenharmony_ci clock-output-names = "emmc_cardclock"; 26262306a36Sopenharmony_ci #clock-cells = <0>; 26362306a36Sopenharmony_ci phys = <&emmc_phy>; 26462306a36Sopenharmony_ci phy-names = "phy_arasan"; 26562306a36Sopenharmony_ci arasan,soc-ctl-syscon = <&sysconf>; 26662306a36Sopenharmony_ci }; 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ci - | 26962306a36Sopenharmony_ci #define LGM_CLK_SDIO 27062306a36Sopenharmony_ci #define LGM_GCLK_SDXC 27162306a36Sopenharmony_ci mmc@ec600000 { 27262306a36Sopenharmony_ci compatible = "intel,lgm-sdhci-5.1-sdxc", "arasan,sdhci-5.1"; 27362306a36Sopenharmony_ci reg = <0xec600000 0x300>; 27462306a36Sopenharmony_ci interrupt-parent = <&ioapic1>; 27562306a36Sopenharmony_ci interrupts = <43 1>; 27662306a36Sopenharmony_ci clocks = <&cgu0 LGM_CLK_SDIO>, <&cgu0 LGM_CLK_NGI>, 27762306a36Sopenharmony_ci <&cgu0 LGM_GCLK_SDXC>; 27862306a36Sopenharmony_ci clock-names = "clk_xin", "clk_ahb", "gate"; 27962306a36Sopenharmony_ci clock-output-names = "sdxc_cardclock"; 28062306a36Sopenharmony_ci #clock-cells = <0>; 28162306a36Sopenharmony_ci phys = <&sdxc_phy>; 28262306a36Sopenharmony_ci phy-names = "phy_arasan"; 28362306a36Sopenharmony_ci arasan,soc-ctl-syscon = <&sysconf>; 28462306a36Sopenharmony_ci }; 28562306a36Sopenharmony_ci 28662306a36Sopenharmony_ci - | 28762306a36Sopenharmony_ci #define KEEM_BAY_PSS_AUX_EMMC 28862306a36Sopenharmony_ci #define KEEM_BAY_PSS_EMMC 28962306a36Sopenharmony_ci mmc@33000000 { 29062306a36Sopenharmony_ci compatible = "intel,keembay-sdhci-5.1-emmc", "arasan,sdhci-5.1"; 29162306a36Sopenharmony_ci interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; 29262306a36Sopenharmony_ci reg = <0x33000000 0x300>; 29362306a36Sopenharmony_ci clock-names = "clk_xin", "clk_ahb"; 29462306a36Sopenharmony_ci clocks = <&scmi_clk KEEM_BAY_PSS_AUX_EMMC>, 29562306a36Sopenharmony_ci <&scmi_clk KEEM_BAY_PSS_EMMC>; 29662306a36Sopenharmony_ci phys = <&emmc_phy>; 29762306a36Sopenharmony_ci phy-names = "phy_arasan"; 29862306a36Sopenharmony_ci assigned-clocks = <&scmi_clk KEEM_BAY_PSS_AUX_EMMC>; 29962306a36Sopenharmony_ci assigned-clock-rates = <200000000>; 30062306a36Sopenharmony_ci clock-output-names = "emmc_cardclock"; 30162306a36Sopenharmony_ci #clock-cells = <0>; 30262306a36Sopenharmony_ci arasan,soc-ctl-syscon = <&mmc_phy_syscon>; 30362306a36Sopenharmony_ci }; 30462306a36Sopenharmony_ci 30562306a36Sopenharmony_ci - | 30662306a36Sopenharmony_ci #define KEEM_BAY_PSS_AUX_SD0 30762306a36Sopenharmony_ci #define KEEM_BAY_PSS_SD0 30862306a36Sopenharmony_ci mmc@31000000 { 30962306a36Sopenharmony_ci compatible = "intel,keembay-sdhci-5.1-sd"; 31062306a36Sopenharmony_ci interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; 31162306a36Sopenharmony_ci reg = <0x31000000 0x300>; 31262306a36Sopenharmony_ci clock-names = "clk_xin", "clk_ahb"; 31362306a36Sopenharmony_ci clocks = <&scmi_clk KEEM_BAY_PSS_AUX_SD0>, 31462306a36Sopenharmony_ci <&scmi_clk KEEM_BAY_PSS_SD0>; 31562306a36Sopenharmony_ci arasan,soc-ctl-syscon = <&sd0_phy_syscon>; 31662306a36Sopenharmony_ci }; 317