Documentation / devicetree / bindings / mmc / fsl-imx-esdhc.yaml


Based on kernel version 6.11. Page generated on 2024-09-24 08:21 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mmc/fsl-imx-esdhc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Freescale Enhanced Secure Digital Host Controller (eSDHC) for i.MX

maintainers:
  - Shawn Guo <shawnguo@kernel.org>

allOf:
  - $ref: sdhci-common.yaml#

description: |
  The Enhanced Secure Digital Host Controller on Freescale i.MX family
  provides an interface for MMC, SD, and SDIO types of memory cards.
 
  This file documents differences between the core properties described
  by mmc.txt and the properties used by the sdhci-esdhc-imx driver.

properties:
  compatible:
    oneOf:
      - enum:
          - fsl,imx25-esdhc
          - fsl,imx35-esdhc
          - fsl,imx51-esdhc
          - fsl,imx53-esdhc
          - fsl,imx6q-usdhc
          - fsl,imx6sl-usdhc
          - fsl,imx6sx-usdhc
          - fsl,imx7d-usdhc
          - fsl,imx7ulp-usdhc
          - fsl,imx8mm-usdhc
          - fsl,imxrt1050-usdhc
          - nxp,s32g2-usdhc
      - items:
          - const: fsl,imx50-esdhc
          - const: fsl,imx53-esdhc
      - items:
          - enum:
              - fsl,imx6sll-usdhc
              - fsl,imx6ull-usdhc
              - fsl,imx6ul-usdhc
          - const: fsl,imx6sx-usdhc
      - items:
          - const: fsl,imx7d-usdhc
          - const: fsl,imx6sl-usdhc
      - items:
          - enum:
              - fsl,imx8mq-usdhc
          - const: fsl,imx7d-usdhc
      - items:
          - enum:
              - fsl,imx8mn-usdhc
              - fsl,imx8mp-usdhc
              - fsl,imx8ulp-usdhc
              - fsl,imx93-usdhc
              - fsl,imx95-usdhc
          - const: fsl,imx8mm-usdhc
      - items:
          - enum:
              - fsl,imx8dxl-usdhc
              - fsl,imx8qm-usdhc
          - const: fsl,imx8qxp-usdhc
      - items:
          - enum:
              - fsl,imx8mm-usdhc
              - fsl,imx8mn-usdhc
              - fsl,imx8mp-usdhc
              - fsl,imx8qm-usdhc
              - fsl,imx8qxp-usdhc
          - const: fsl,imx7d-usdhc
        deprecated: true
      - items:
          - enum:
              - fsl,imx8mn-usdhc
              - fsl,imx8mp-usdhc
          - const: fsl,imx8mm-usdhc
          - const: fsl,imx7d-usdhc
        deprecated: true
      - items:
          - enum:
              - fsl,imx8dxl-usdhc
              - fsl,imx8qm-usdhc
          - const: fsl,imx8qxp-usdhc
          - const: fsl,imx7d-usdhc
        deprecated: true
      - items:
          - enum:
              - fsl,imxrt1170-usdhc
          - const: fsl,imxrt1050-usdhc
      - items:
          - const: nxp,s32g3-usdhc
          - const: nxp,s32g2-usdhc

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  fsl,wp-controller:
    description: |
      boolean, if present, indicate to use controller internal write protection.
    type: boolean

  fsl,delay-line:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: |
      Specify the number of delay cells for override mode.
      This is used to set the clock delay for DLL(Delay Line) on override mode
      to select a proper data sampling window in case the clock quality is not good
      because the signal path is too long on the board. Please refer to eSDHC/uSDHC
      chapter, DLL (Delay Line) section in RM for details.
    default: 0

  voltage-ranges:
    $ref: /schemas/types.yaml#/definitions/uint32-matrix
    description: |
      Specify the voltage range in case there are software transparent level
      shifters on the outputs of the controller. Two cells are required, first
      cell specifies minimum slot voltage (mV), second cell specifies maximum
      slot voltage (mV).
    items:
      items:
        - description: value for minimum slot voltage
        - description: value for maximum slot voltage
    maxItems: 1

  fsl,tuning-start-tap:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: |
      Specify the start delay cell point when send first CMD19 in tuning procedure.
    default: 0

  fsl,tuning-step:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: |
      Specify the increasing delay cell steps in tuning procedure.
      The uSDHC use one delay cell as default increasing step to do tuning process.
      This property allows user to change the tuning step to more than one delay
      cell which is useful for some special boards or cards when the default
      tuning step can't find the proper delay window within limited tuning retries.
    default: 0

  fsl,strobe-dll-delay-target:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: |
      Specify the strobe dll control slave delay target.
      This delay target programming host controller loopback read clock, and this
      property allows user to change the delay target for the strobe input read clock.
      If not use this property, driver default set the delay target to value 7.
      Only eMMC HS400 mode need to take care of this property.
    default: 0

  clocks:
    maxItems: 3
    description:
      Handle clocks for the sdhc controller.

  clock-names:
    items:
      - const: ipg
      - const: ahb
      - const: per

  iommus:
    maxItems: 1

  power-domains:
    maxItems: 1

  pinctrl-names:
    oneOf:
      - minItems: 3
        items:
          - const: default
          - const: state_100mhz
          - const: state_200mhz
          - const: sleep
      - minItems: 2
        items:
          - const: default
          - const: state_100mhz
          - const: sleep
      - minItems: 1
        items:
          - const: default
          - const: sleep

required:
  - compatible
  - reg
  - interrupts

unevaluatedProperties: false

examples:
  - |
    mmc@70004000 {
        compatible = "fsl,imx51-esdhc";
        reg = <0x70004000 0x4000>;
        interrupts = <1>;
        fsl,wp-controller;
    };
 
    mmc@70008000 {
        compatible = "fsl,imx51-esdhc";
        reg = <0x70008000 0x4000>;
        interrupts = <2>;
        cd-gpios = <&gpio1 6 0>; /* GPIO1_6 */
        wp-gpios = <&gpio1 5 0>; /* GPIO1_5 */
    };