162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/mtd/gpmi-nand.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Freescale General-Purpose Media Interface (GPMI)
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Han Xu <han.xu@nxp.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  The GPMI nand controller provides an interface to control the NAND
1462306a36Sopenharmony_ci  flash chips. The device tree may optionally contain sub-nodes
1562306a36Sopenharmony_ci  describing partitions of the address space. See partition.txt for
1662306a36Sopenharmony_ci  more detail.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciproperties:
1962306a36Sopenharmony_ci  compatible:
2062306a36Sopenharmony_ci    oneOf:
2162306a36Sopenharmony_ci      - enum:
2262306a36Sopenharmony_ci          - fsl,imx23-gpmi-nand
2362306a36Sopenharmony_ci          - fsl,imx28-gpmi-nand
2462306a36Sopenharmony_ci          - fsl,imx6q-gpmi-nand
2562306a36Sopenharmony_ci          - fsl,imx6sx-gpmi-nand
2662306a36Sopenharmony_ci          - fsl,imx7d-gpmi-nand
2762306a36Sopenharmony_ci      - items:
2862306a36Sopenharmony_ci          - enum:
2962306a36Sopenharmony_ci              - fsl,imx8mm-gpmi-nand
3062306a36Sopenharmony_ci              - fsl,imx8mn-gpmi-nand
3162306a36Sopenharmony_ci          - const: fsl,imx7d-gpmi-nand
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci  reg:
3462306a36Sopenharmony_ci    items:
3562306a36Sopenharmony_ci      - description: Address and length of gpmi block.
3662306a36Sopenharmony_ci      - description: Address and length of bch block.
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci  reg-names:
3962306a36Sopenharmony_ci    items:
4062306a36Sopenharmony_ci      - const: gpmi-nand
4162306a36Sopenharmony_ci      - const: bch
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci  interrupts:
4462306a36Sopenharmony_ci    maxItems: 1
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  interrupt-names:
4762306a36Sopenharmony_ci    const: bch
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci  dmas:
5062306a36Sopenharmony_ci    maxItems: 1
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci  dma-names:
5362306a36Sopenharmony_ci    const: rx-tx
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  clocks:
5662306a36Sopenharmony_ci    minItems: 1
5762306a36Sopenharmony_ci    maxItems: 5
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci  clock-names:
6062306a36Sopenharmony_ci    minItems: 1
6162306a36Sopenharmony_ci    maxItems: 5
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci  fsl,use-minimum-ecc:
6462306a36Sopenharmony_ci    type: boolean
6562306a36Sopenharmony_ci    description: |
6662306a36Sopenharmony_ci      Protect this NAND flash with the minimum ECC strength required.
6762306a36Sopenharmony_ci      The required ECC strength is automatically discoverable for some
6862306a36Sopenharmony_ci      flash (e.g., according to the ONFI standard). However, note that
6962306a36Sopenharmony_ci      if this strength is not discoverable or this property is not enabled,
7062306a36Sopenharmony_ci      the software may chooses an implementation-defined ECC scheme.
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci  fsl,no-blockmark-swap:
7362306a36Sopenharmony_ci    type: boolean
7462306a36Sopenharmony_ci    description: |
7562306a36Sopenharmony_ci      Don't swap the bad block marker from the OOB area with the byte in
7662306a36Sopenharmony_ci      the data area but rely on the flash based BBT for identifying bad blocks.
7762306a36Sopenharmony_ci      NOTE: this is only valid in conjunction with 'nand-on-flash-bbt'.
7862306a36Sopenharmony_ci      WARNING: on i.MX28 blockmark swapping cannot be disabled for the BootROM
7962306a36Sopenharmony_ci      in the FCB. Thus, partitions written from Linux with this feature turned
8062306a36Sopenharmony_ci      on may not be accessible by the BootROM code.
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_cirequired:
8362306a36Sopenharmony_ci  - compatible
8462306a36Sopenharmony_ci  - reg
8562306a36Sopenharmony_ci  - reg-names
8662306a36Sopenharmony_ci  - interrupts
8762306a36Sopenharmony_ci  - interrupt-names
8862306a36Sopenharmony_ci  - clocks
8962306a36Sopenharmony_ci  - clock-names
9062306a36Sopenharmony_ci  - dmas
9162306a36Sopenharmony_ci  - dma-names
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ciunevaluatedProperties: false
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ciallOf:
9662306a36Sopenharmony_ci  - $ref: nand-controller.yaml
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci  - if:
9962306a36Sopenharmony_ci      properties:
10062306a36Sopenharmony_ci        compatible:
10162306a36Sopenharmony_ci          contains:
10262306a36Sopenharmony_ci            enum:
10362306a36Sopenharmony_ci              - fsl,imx23-gpmi-nand
10462306a36Sopenharmony_ci              - fsl,imx28-gpmi-nand
10562306a36Sopenharmony_ci    then:
10662306a36Sopenharmony_ci      properties:
10762306a36Sopenharmony_ci        clocks:
10862306a36Sopenharmony_ci          items:
10962306a36Sopenharmony_ci            - description: SoC gpmi io clock
11062306a36Sopenharmony_ci        clock-names:
11162306a36Sopenharmony_ci          items:
11262306a36Sopenharmony_ci            - const: gpmi_io
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci  - if:
11562306a36Sopenharmony_ci      properties:
11662306a36Sopenharmony_ci        compatible:
11762306a36Sopenharmony_ci          contains:
11862306a36Sopenharmony_ci            enum:
11962306a36Sopenharmony_ci              - fsl,imx6q-gpmi-nand
12062306a36Sopenharmony_ci              - fsl,imx6sx-gpmi-nand
12162306a36Sopenharmony_ci    then:
12262306a36Sopenharmony_ci      properties:
12362306a36Sopenharmony_ci        clocks:
12462306a36Sopenharmony_ci          items:
12562306a36Sopenharmony_ci            - description: SoC gpmi io clock
12662306a36Sopenharmony_ci            - description: SoC gpmi apb clock
12762306a36Sopenharmony_ci            - description: SoC gpmi bch clock
12862306a36Sopenharmony_ci            - description: SoC gpmi bch apb clock
12962306a36Sopenharmony_ci            - description: SoC per1 bch clock
13062306a36Sopenharmony_ci        clock-names:
13162306a36Sopenharmony_ci          items:
13262306a36Sopenharmony_ci            - const: gpmi_io
13362306a36Sopenharmony_ci            - const: gpmi_apb
13462306a36Sopenharmony_ci            - const: gpmi_bch
13562306a36Sopenharmony_ci            - const: gpmi_bch_apb
13662306a36Sopenharmony_ci            - const: per1_bch
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci  - if:
13962306a36Sopenharmony_ci      properties:
14062306a36Sopenharmony_ci        compatible:
14162306a36Sopenharmony_ci          contains:
14262306a36Sopenharmony_ci            const: fsl,imx7d-gpmi-nand
14362306a36Sopenharmony_ci    then:
14462306a36Sopenharmony_ci      properties:
14562306a36Sopenharmony_ci        clocks:
14662306a36Sopenharmony_ci          items:
14762306a36Sopenharmony_ci            - description: SoC gpmi io clock
14862306a36Sopenharmony_ci            - description: SoC gpmi bch apb clock
14962306a36Sopenharmony_ci        clock-names:
15062306a36Sopenharmony_ci          items:
15162306a36Sopenharmony_ci            - const: gpmi_io
15262306a36Sopenharmony_ci            - const: gpmi_bch_apb
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ciexamples:
15562306a36Sopenharmony_ci  - |
15662306a36Sopenharmony_ci    nand-controller@8000c000 {
15762306a36Sopenharmony_ci        #address-cells = <1>;
15862306a36Sopenharmony_ci        #size-cells = <0>;
15962306a36Sopenharmony_ci        compatible = "fsl,imx28-gpmi-nand";
16062306a36Sopenharmony_ci        reg = <0x8000c000 0x2000>, <0x8000a000 0x2000>;
16162306a36Sopenharmony_ci        reg-names = "gpmi-nand", "bch";
16262306a36Sopenharmony_ci        interrupts = <41>;
16362306a36Sopenharmony_ci        interrupt-names = "bch";
16462306a36Sopenharmony_ci        clocks = <&clks 50>;
16562306a36Sopenharmony_ci        clock-names = "gpmi_io";
16662306a36Sopenharmony_ci        dmas = <&dma_apbh 4>;
16762306a36Sopenharmony_ci        dma-names = "rx-tx";
16862306a36Sopenharmony_ci    };
169