xref: /linux/Documentation/devicetree/bindings/mtd/gpmi-nand.yaml (revision 6315d93541f8a5f77c5ef5c4f25233e66d189603)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mtd/gpmi-nand.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Freescale General-Purpose Media Interface (GPMI)
8
9maintainers:
10  - Han Xu <han.xu@nxp.com>
11
12description: |
13  The GPMI nand controller provides an interface to control the NAND
14  flash chips. The device tree may optionally contain sub-nodes
15  describing partitions of the address space. See mtd.yaml for
16  more detail.
17
18properties:
19  compatible:
20    oneOf:
21      - enum:
22          - fsl,imx23-gpmi-nand
23          - fsl,imx28-gpmi-nand
24          - fsl,imx6q-gpmi-nand
25          - fsl,imx6sx-gpmi-nand
26          - fsl,imx7d-gpmi-nand
27          - fsl,imx8qxp-gpmi-nand
28      - items:
29          - enum:
30              - fsl,imx8mm-gpmi-nand
31              - fsl,imx8mn-gpmi-nand
32              - fsl,imx8mp-gpmi-nand
33              - fsl,imx8mq-gpmi-nand
34          - const: fsl,imx7d-gpmi-nand
35      - items:
36          - enum:
37              - fsl,imx8dxl-gpmi-nand
38              - fsl,imx8qm-gpmi-nand
39          - const: fsl,imx8qxp-gpmi-nand
40
41  reg:
42    items:
43      - description: Address and length of gpmi block.
44      - description: Address and length of bch block.
45
46  reg-names:
47    items:
48      - const: gpmi-nand
49      - const: bch
50
51  interrupts:
52    maxItems: 1
53
54  interrupt-names:
55    const: bch
56
57  dmas:
58    maxItems: 1
59
60  dma-names:
61    const: rx-tx
62
63  clocks:
64    minItems: 1
65    maxItems: 5
66
67  clock-names:
68    minItems: 1
69    maxItems: 5
70
71  fsl,use-minimum-ecc:
72    type: boolean
73    description: |
74      Protect this NAND flash with the minimum ECC strength required.
75      The required ECC strength is automatically discoverable for some
76      flash (e.g., according to the ONFI standard). However, note that
77      if this strength is not discoverable or this property is not enabled,
78      the software may chooses an implementation-defined ECC scheme.
79
80  fsl,no-blockmark-swap:
81    type: boolean
82    description: |
83      Don't swap the bad block marker from the OOB area with the byte in
84      the data area but rely on the flash based BBT for identifying bad blocks.
85      NOTE: this is only valid in conjunction with 'nand-on-flash-bbt'.
86      WARNING: on i.MX28 blockmark swapping cannot be disabled for the BootROM
87      in the FCB. Thus, partitions written from Linux with this feature turned
88      on may not be accessible by the BootROM code.
89
90required:
91  - compatible
92  - reg
93  - reg-names
94  - interrupts
95  - interrupt-names
96  - clocks
97  - clock-names
98  - dmas
99  - dma-names
100
101unevaluatedProperties: false
102
103allOf:
104  - $ref: nand-controller.yaml
105
106  - if:
107      properties:
108        compatible:
109          contains:
110            enum:
111              - fsl,imx23-gpmi-nand
112              - fsl,imx28-gpmi-nand
113    then:
114      properties:
115        clocks:
116          items:
117            - description: SoC gpmi io clock
118        clock-names:
119          items:
120            - const: gpmi_io
121
122  - if:
123      properties:
124        compatible:
125          contains:
126            enum:
127              - fsl,imx6q-gpmi-nand
128              - fsl,imx6sx-gpmi-nand
129    then:
130      properties:
131        clocks:
132          items:
133            - description: SoC gpmi io clock
134            - description: SoC gpmi apb clock
135            - description: SoC gpmi bch clock
136            - description: SoC gpmi bch apb clock
137            - description: SoC per1 bch clock
138        clock-names:
139          items:
140            - const: gpmi_io
141            - const: gpmi_apb
142            - const: gpmi_bch
143            - const: gpmi_bch_apb
144            - const: per1_bch
145
146  - if:
147      properties:
148        compatible:
149          contains:
150            const: fsl,imx7d-gpmi-nand
151    then:
152      properties:
153        clocks:
154          items:
155            - description: SoC gpmi io clock
156            - description: SoC gpmi bch apb clock
157        clock-names:
158          items:
159            - const: gpmi_io
160            - const: gpmi_bch_apb
161
162  - if:
163      properties:
164        compatible:
165          contains:
166            enum:
167              - fsl,imx8qxp-gpmi-nand
168    then:
169      properties:
170        clocks:
171          items:
172            - description: SoC gpmi io clock
173            - description: SoC gpmi apb clock
174            - description: SoC gpmi bch clock
175            - description: SoC gpmi bch apb clock
176        clock-names:
177          items:
178            - const: gpmi_io
179            - const: gpmi_apb
180            - const: gpmi_bch
181            - const: gpmi_bch_apb
182
183examples:
184  - |
185    nand-controller@8000c000 {
186        #address-cells = <1>;
187        #size-cells = <0>;
188        compatible = "fsl,imx28-gpmi-nand";
189        reg = <0x8000c000 0x2000>, <0x8000a000 0x2000>;
190        reg-names = "gpmi-nand", "bch";
191        interrupts = <41>;
192        interrupt-names = "bch";
193        clocks = <&clks 50>;
194        clock-names = "gpmi_io";
195        dmas = <&dma_apbh 4>;
196        dma-names = "rx-tx";
197    };
198