# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mmc/fsl,esdhc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Freescale Enhanced Secure Digital Host Controller (eSDHC)

description:
  The Enhanced Secure Digital Host Controller provides an interface
  for MMC, SD, and SDIO types of memory cards.

maintainers:
  - Frank Li <Frank.Li@nxp.com>

properties:
  compatible:
    items:
      - enum:
          - fsl,mpc8536-esdhc
          - fsl,mpc8378-esdhc
          - fsl,p2020-esdhc
          - fsl,p4080-esdhc
          - fsl,t1040-esdhc
          - fsl,t4240-esdhc
          - fsl,ls1012a-esdhc
          - fsl,ls1028a-esdhc
          - fsl,ls1088a-esdhc
          - fsl,ls1043a-esdhc
          - fsl,ls1046a-esdhc
          - fsl,ls2080a-esdhc
      - const: fsl,esdhc

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    maxItems: 1

  clock-frequency:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: specifies eSDHC base clock frequency.

  sdhci,wp-inverted:
    $ref: /schemas/types.yaml#/definitions/flag
    deprecated: true
    description:
      specifies that eSDHC controller reports
      inverted write-protect state; New devices should use the generic
      "wp-inverted" property.

  sdhci,1-bit-only:
    $ref: /schemas/types.yaml#/definitions/flag
    deprecated: true
    description:
      specifies that a controller can only handle
      1-bit data transfers. New devices should use the generic
      "bus-width = <1>" property.

  sdhci,auto-cmd12:
    $ref: /schemas/types.yaml#/definitions/flag
    description:
      specifies that a controller can only handle auto CMD12.

  voltage-ranges:
    $ref: /schemas/types.yaml#/definitions/uint32-matrix
    items:
      items:
        - description: specifies minimum slot voltage (mV).
        - description: specifies maximum slot voltage (mV).
    minItems: 1
    maxItems: 8

  dma-coherent: true

  little-endian:
    $ref: /schemas/types.yaml#/definitions/flag
    description:
      If the host controller is little-endian mode, specify
      this property. The default endian mode is big-endian.

required:
  - compatible
  - reg
  - interrupts

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

unevaluatedProperties: false

examples:
  - |
    mmc@2e000 {
        compatible = "fsl,mpc8378-esdhc", "fsl,esdhc";
        reg = <0x2e000 0x1000>;
        interrupts = <42 0x8>;
        interrupt-parent = <&ipic>;
        /* Filled in by U-Boot */
        clock-frequency = <100000000>;
        voltage-ranges = <3300 3300>;
    };
