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

title: TI OMAP SDHCI Controller

maintainers:
  - Kishon Vijay Abraham I <kishon@ti.com>

description:
  For UHS devices which require tuning, the device tree should have a
  cpu_thermal node which maps to the appropriate thermal zone. This
  is used to get the temperature of the zone during tuning.

properties:
  compatible:
    enum:
      - ti,omap2430-sdhci
      - ti,omap3-sdhci
      - ti,omap4-sdhci
      - ti,omap5-sdhci
      - ti,dra7-sdhci
      - ti,k2g-sdhci
      - ti,am335-sdhci
      - ti,am437-sdhci

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    maxItems: 2

  clock-names:
    items:
      - const: fck
      - const: mmchsdb_fck

  dmas:
    maxItems: 2

  dma-names:
    items:
      - const: tx
      - const: rx

  pinctrl-names:
    minItems: 1
    maxItems: 14
    items:
      enum:
        - default
        - default-rev11
        - hs
        - sdr12
        - sdr12-rev11
        - sdr25
        - sdr25-rev11
        - sdr50
        - ddr50-rev11
        - sdr104-rev11
        - ddr50
        - sdr104
        - ddr_1_8v-rev11
        - ddr_1_8v
        - ddr_3_3v
        - hs-rev11
        - hs200_1_8v-rev11
        - hs200_1_8v
        - sleep

  pinctrl-0:
    maxItems: 1

  pinctrl-1:
    maxItems: 1

  pinctrl-2:
    maxItems: 1

  pinctrl-3:
    maxItems: 1

  pinctrl-4:
    maxItems: 1

  pinctrl-5:
    maxItems: 1

  pinctrl-6:
    maxItems: 1

  pinctrl-7:
    maxItems: 1

  pinctrl-8:
    maxItems: 1

  power-domains:
    maxItems: 1

  pbias-supply:
    description:
      It is used to specify the voltage regulator that provides the bias
      voltage for certain analog or I/O pads.

  ti,non-removable:
    description:
      It indicates that a component is not meant to be easily removed or
      replaced by the user, such as an embedded battery or a non-removable
      storage slot like eMMC.
    type: boolean
    deprecated: true

  clock-frequency:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      It represents the speed at which a clock signal associated with a device
      or bus operates, measured in Hertz (Hz). This value is crucial for configuring
      hardware components that require a specific clock speed.

required:
  - compatible
  - reg
  - interrupts

allOf:
  - $ref: sdhci-common.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - ti,dra7-sdhci
              - ti,k2g-sdhci
    then:
      required:
        - max-frequency
  - if:
      properties:
        compatible:
          contains:
            const: ti,k2g-sdhci
    then:
      required:
        - clocks
        - clock-names

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    mmc@4809c000 {
        compatible = "ti,dra7-sdhci";
        reg = <0x4809c000 0x400>;
        interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
        max-frequency = <192000000>;
        sdhci-caps-mask = <0x0 0x400000>;
        bus-width = <4>;
        vmmc-supply = <&vmmc>; /* phandle to regulator node */
        dmas = <&sdma 61>, <&sdma 62>;
        dma-names = "tx", "rx";
    };
...
