# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) %YAML 1.2 --- $id: "http://devicetree.org/schemas/mmc/sdhci-msm.yaml#" $schema: "http://devicetree.org/meta-schemas/core.yaml#" title: Qualcomm SDHCI controller (sdhci-msm) maintainers: - Bhupesh Sharma description: Secure Digital Host Controller Interface (SDHCI) present on Qualcomm SOCs supports SD/MMC/SDIO devices. properties: compatible: oneOf: - enum: - qcom,sdhci-msm-v4 deprecated: true - items: - enum: - qcom,apq8084-sdhci - qcom,msm8226-sdhci - qcom,msm8953-sdhci - qcom,msm8974-sdhci - qcom,msm8916-sdhci - qcom,msm8992-sdhci - qcom,msm8994-sdhci - qcom,msm8996-sdhci - qcom,msm8998-sdhci - const: qcom,sdhci-msm-v4 # for sdcc versions less than 5.0 - items: - enum: - qcom,qcs404-sdhci - qcom,sc7180-sdhci - qcom,sc7280-sdhci - qcom,sdm630-sdhci - qcom,sdm845-sdhci - qcom,sdx55-sdhci - qcom,sdx65-sdhci - qcom,sm6125-sdhci - qcom,sm6350-sdhci - qcom,sm8150-sdhci - qcom,sm8250-sdhci - qcom,sm8450-sdhci - const: qcom,sdhci-msm-v5 # for sdcc version 5.0 reg: minItems: 1 maxItems: 4 reg-names: minItems: 1 maxItems: 4 clocks: minItems: 3 items: - description: Main peripheral bus clock, PCLK/HCLK - AHB Bus clock - description: SDC MMC clock, MCLK - description: TCXO clock - description: clock for Inline Crypto Engine - description: SDCC bus voter clock - description: reference clock for RCLK delay calibration - description: sleep clock for RCLK delay calibration clock-names: minItems: 2 items: - const: iface - const: core - const: xo - const: ice - const: bus - const: cal - const: sleep interrupts: maxItems: 2 interrupt-names: items: - const: hc_irq - const: pwr_irq pinctrl-names: minItems: 1 items: - const: default - const: sleep pinctrl-0: description: Should specify pin control groups used for this controller. resets: maxItems: 1 qcom,ddr-config: $ref: /schemas/types.yaml#/definitions/uint32 description: platform specific settings for DDR_CONFIG reg. qcom,dll-config: $ref: /schemas/types.yaml#/definitions/uint32 description: platform specific settings for DLL_CONFIG reg. iommus: minItems: 1 maxItems: 8 description: | phandle to apps_smmu node with sid mask. interconnects: items: - description: data path, sdhc to ddr - description: config path, cpu to sdhc interconnect-names: items: - const: sdhc-ddr - const: cpu-sdhc power-domains: description: A phandle to sdhci power domain node maxItems: 1 mmc-ddr-1_8v: true mmc-hs200-1_8v: true mmc-hs400-1_8v: true bus-width: true max-frequency: true operating-points-v2: true patternProperties: '^opp-table(-[a-z0-9]+)?$': if: properties: compatible: const: operating-points-v2 then: patternProperties: '^opp-?[0-9]+$': required: - required-opps required: - compatible - reg - clocks - clock-names - interrupts allOf: - $ref: mmc-controller.yaml# - if: properties: compatible: contains: enum: - qcom,sdhci-msm-v4 then: properties: reg: minItems: 2 items: - description: Host controller register map - description: SD Core register map - description: CQE register map - description: Inline Crypto Engine register map reg-names: minItems: 2 items: - const: hc - const: core - const: cqhci - const: ice else: properties: reg: minItems: 1 items: - description: Host controller register map - description: CQE register map - description: Inline Crypto Engine register map reg-names: minItems: 1 items: - const: hc - const: cqhci - const: ice unevaluatedProperties: false examples: - | #include #include #include #include sdhc_2: mmc@8804000 { compatible = "qcom,sm8250-sdhci", "qcom,sdhci-msm-v5"; reg = <0 0x08804000 0 0x1000>; interrupts = , ; interrupt-names = "hc_irq", "pwr_irq"; clocks = <&gcc GCC_SDCC2_AHB_CLK>, <&gcc GCC_SDCC2_APPS_CLK>, <&rpmhcc RPMH_CXO_CLK>; clock-names = "iface", "core", "xo"; iommus = <&apps_smmu 0x4a0 0x0>; qcom,dll-config = <0x0007642c>; qcom,ddr-config = <0x80040868>; power-domains = <&rpmhpd SM8250_CX>; operating-points-v2 = <&sdhc2_opp_table>; sdhc2_opp_table: opp-table { compatible = "operating-points-v2"; opp-19200000 { opp-hz = /bits/ 64 <19200000>; required-opps = <&rpmhpd_opp_min_svs>; }; opp-50000000 { opp-hz = /bits/ 64 <50000000>; required-opps = <&rpmhpd_opp_low_svs>; }; opp-100000000 { opp-hz = /bits/ 64 <100000000>; required-opps = <&rpmhpd_opp_svs>; }; opp-202000000 { opp-hz = /bits/ 64 <202000000>; required-opps = <&rpmhpd_opp_svs_l1>; }; }; };