# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause

%YAML 1.2
---
$id: http://devicetree.org/schemas/mtd/mxic,multi-itfc-v009-nand-controller.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Macronix Raw NAND Controller

maintainers:
  - Mason Yang <masonccyang@mxic.com.tw>

description:
  The Macronix Multi-Interface Raw NAND Controller is a versatile flash
  memory controller for embedding in SoCs, capable of interfacing with
  various NAND devices. It requires dedicated clock inputs for core, data
  transmit, and delayed transmit paths along with register space and an
  interrupt line for operation.

allOf:
  - $ref: nand-controller.yaml#

properties:
  compatible:
    const: mxic,multi-itfc-v009-nand-controller

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  "#address-cells":
    const: 1

  "#size-cells":
    const: 0

  clocks:
    minItems: 3
    maxItems: 3

  clock-names:
    items:
      - const: ps
      - const: send
      - const: send_dly

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

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    nand-controller@43c30000 {
        compatible = "mxic,multi-itfc-v009-nand-controller";
        reg = <0x43c30000 0x10000>;
        #address-cells = <1>;
        #size-cells = <0>;
        interrupts = <GIC_SPI 0x1d IRQ_TYPE_EDGE_RISING>;
        clocks = <&clkwizard 0>, <&clkwizard 1>, <&clkc 15>;
        clock-names = "ps", "send", "send_dly";

        nand@0 {
            reg = <0>;
            nand-ecc-mode = "soft";
            nand-ecc-algo = "bch";
        };
    };
...
