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

title: Amlogic Meson6, Meson8 and Meson8b SDIO/MMC controller

description: |
  The highspeed MMC host controller on Amlogic SoCs provides an interface
  for MMC, SD, SDIO and SDHC types of memory cards.

  Supported maximum speeds are the ones of the eMMC standard 4.41 as well
  as the speed of SD standard 2.0.

  The hardware provides an internal "mux" which allows up to three slots
  to be controlled. Only one slot can be accessed at a time.

maintainers:
  - Neil Armstrong <neil.armstrong@linaro.org>

properties:
  compatible:
    items:
      - enum:
          - amlogic,meson8-sdio
          - amlogic,meson8b-sdio
      - const: amlogic,meson-mx-sdio

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    maxItems: 2

  clock-names:
    items:
      - const: core
      - const: clkin

  "#address-cells":
    const: 1

  "#size-cells":
    const: 0

patternProperties:
  "slot@[0-2]$":
    $ref: mmc-slot.yaml#
    description:
      A node for each slot provided by the MMC controller

    properties:
      reg:
        enum: [0, 1, 2]

      bus-width:
        enum: [1, 4]

    unevaluatedProperties: false

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names
  - "#address-cells"
  - "#size-cells"

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    mmc@c1108c20 {
        compatible = "amlogic,meson8-sdio", "amlogic,meson-mx-sdio";
        reg = <0xc1108c20 0x20>;
        interrupts = <GIC_SPI 28 IRQ_TYPE_EDGE_RISING>;
        clocks = <&clk_core>, <&clk_in>;
        clock-names = "core", "clkin";
        #address-cells = <1>;
        #size-cells = <0>;

        slot@1 {
            compatible = "mmc-slot";
            reg = <1>;
            bus-width = <4>;
        };
    };
