18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/mtd/gpmi-nand.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Freescale General-Purpose Media Interface (GPMI) binding
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Han Xu <han.xu@nxp.com>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ciallOf:
138c2ecf20Sopenharmony_ci  - $ref: "nand-controller.yaml"
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_cidescription: |
168c2ecf20Sopenharmony_ci  The GPMI nand controller provides an interface to control the NAND
178c2ecf20Sopenharmony_ci  flash chips. The device tree may optionally contain sub-nodes
188c2ecf20Sopenharmony_ci  describing partitions of the address space. See partition.txt for
198c2ecf20Sopenharmony_ci  more detail.
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ciproperties:
228c2ecf20Sopenharmony_ci  compatible:
238c2ecf20Sopenharmony_ci    oneOf:
248c2ecf20Sopenharmony_ci      - enum:
258c2ecf20Sopenharmony_ci          - fsl,imx23-gpmi-nand
268c2ecf20Sopenharmony_ci          - fsl,imx28-gpmi-nand
278c2ecf20Sopenharmony_ci          - fsl,imx6q-gpmi-nand
288c2ecf20Sopenharmony_ci          - fsl,imx6sx-gpmi-nand
298c2ecf20Sopenharmony_ci          - fsl,imx7d-gpmi-nand
308c2ecf20Sopenharmony_ci      - items:
318c2ecf20Sopenharmony_ci          - enum:
328c2ecf20Sopenharmony_ci              - fsl,imx8mm-gpmi-nand
338c2ecf20Sopenharmony_ci              - fsl,imx8mn-gpmi-nand
348c2ecf20Sopenharmony_ci          - const: fsl,imx7d-gpmi-nand
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci  reg:
378c2ecf20Sopenharmony_ci    items:
388c2ecf20Sopenharmony_ci      - description: Address and length of gpmi block.
398c2ecf20Sopenharmony_ci      - description: Address and length of bch block.
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci  reg-names:
428c2ecf20Sopenharmony_ci    items:
438c2ecf20Sopenharmony_ci      - const: gpmi-nand
448c2ecf20Sopenharmony_ci      - const: bch
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci  interrupts:
478c2ecf20Sopenharmony_ci    maxItems: 1
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ci  interrupt-names:
508c2ecf20Sopenharmony_ci    const: bch
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci  dmas:
538c2ecf20Sopenharmony_ci    maxItems: 1
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci  dma-names:
568c2ecf20Sopenharmony_ci    const: rx-tx
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci  clocks:
598c2ecf20Sopenharmony_ci    minItems: 1
608c2ecf20Sopenharmony_ci    maxItems: 5
618c2ecf20Sopenharmony_ci    items:
628c2ecf20Sopenharmony_ci      - description: SoC gpmi io clock
638c2ecf20Sopenharmony_ci      - description: SoC gpmi apb clock
648c2ecf20Sopenharmony_ci      - description: SoC gpmi bch clock
658c2ecf20Sopenharmony_ci      - description: SoC gpmi bch apb clock
668c2ecf20Sopenharmony_ci      - description: SoC per1 bch clock
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci  clock-names:
698c2ecf20Sopenharmony_ci    minItems: 1
708c2ecf20Sopenharmony_ci    maxItems: 5
718c2ecf20Sopenharmony_ci    items:
728c2ecf20Sopenharmony_ci      - const: gpmi_io
738c2ecf20Sopenharmony_ci      - const: gpmi_apb
748c2ecf20Sopenharmony_ci      - const: gpmi_bch
758c2ecf20Sopenharmony_ci      - const: gpmi_bch_apb
768c2ecf20Sopenharmony_ci      - const: per1_bch
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci  fsl,use-minimum-ecc:
798c2ecf20Sopenharmony_ci    type: boolean
808c2ecf20Sopenharmony_ci    description: |
818c2ecf20Sopenharmony_ci      Protect this NAND flash with the minimum ECC strength required.
828c2ecf20Sopenharmony_ci      The required ECC strength is automatically discoverable for some
838c2ecf20Sopenharmony_ci      flash (e.g., according to the ONFI standard). However, note that
848c2ecf20Sopenharmony_ci      if this strength is not discoverable or this property is not enabled,
858c2ecf20Sopenharmony_ci      the software may chooses an implementation-defined ECC scheme.
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ci  fsl,no-blockmark-swap:
888c2ecf20Sopenharmony_ci    type: boolean
898c2ecf20Sopenharmony_ci    description: |
908c2ecf20Sopenharmony_ci      Don't swap the bad block marker from the OOB area with the byte in
918c2ecf20Sopenharmony_ci      the data area but rely on the flash based BBT for identifying bad blocks.
928c2ecf20Sopenharmony_ci      NOTE: this is only valid in conjunction with 'nand-on-flash-bbt'.
938c2ecf20Sopenharmony_ci      WARNING: on i.MX28 blockmark swapping cannot be disabled for the BootROM
948c2ecf20Sopenharmony_ci      in the FCB. Thus, partitions written from Linux with this feature turned
958c2ecf20Sopenharmony_ci      on may not be accessible by the BootROM code.
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_cirequired:
988c2ecf20Sopenharmony_ci  - compatible
998c2ecf20Sopenharmony_ci  - reg
1008c2ecf20Sopenharmony_ci  - reg-names
1018c2ecf20Sopenharmony_ci  - interrupts
1028c2ecf20Sopenharmony_ci  - interrupt-names
1038c2ecf20Sopenharmony_ci  - clocks
1048c2ecf20Sopenharmony_ci  - clock-names
1058c2ecf20Sopenharmony_ci  - dmas
1068c2ecf20Sopenharmony_ci  - dma-names
1078c2ecf20Sopenharmony_ci
1088c2ecf20Sopenharmony_ciunevaluatedProperties: false
1098c2ecf20Sopenharmony_ci
1108c2ecf20Sopenharmony_ciexamples:
1118c2ecf20Sopenharmony_ci  - |
1128c2ecf20Sopenharmony_ci    nand-controller@8000c000 {
1138c2ecf20Sopenharmony_ci        #address-cells = <1>;
1148c2ecf20Sopenharmony_ci        #size-cells = <0>;
1158c2ecf20Sopenharmony_ci        compatible = "fsl,imx28-gpmi-nand";
1168c2ecf20Sopenharmony_ci        reg = <0x8000c000 0x2000>, <0x8000a000 0x2000>;
1178c2ecf20Sopenharmony_ci        reg-names = "gpmi-nand", "bch";
1188c2ecf20Sopenharmony_ci        interrupts = <41>;
1198c2ecf20Sopenharmony_ci        interrupt-names = "bch";
1208c2ecf20Sopenharmony_ci        clocks = <&clks 50>;
1218c2ecf20Sopenharmony_ci        clock-names = "gpmi_io";
1228c2ecf20Sopenharmony_ci        dmas = <&dma_apbh 4>;
1238c2ecf20Sopenharmony_ci        dma-names = "rx-tx";
1248c2ecf20Sopenharmony_ci    };
125