xref: /openbmc/linux/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1da386f7fSManivannan Sadhasivam# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2da386f7fSManivannan Sadhasivam%YAML 1.2
3da386f7fSManivannan Sadhasivam---
4da386f7fSManivannan Sadhasivam$id: http://devicetree.org/schemas/mtd/qcom,nandc.yaml#
5da386f7fSManivannan Sadhasivam$schema: http://devicetree.org/meta-schemas/core.yaml#
6da386f7fSManivannan Sadhasivam
7da386f7fSManivannan Sadhasivamtitle: Qualcomm NAND controller
8da386f7fSManivannan Sadhasivam
9da386f7fSManivannan Sadhasivammaintainers:
10da386f7fSManivannan Sadhasivam  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
11da386f7fSManivannan Sadhasivam
12da386f7fSManivannan Sadhasivamproperties:
13da386f7fSManivannan Sadhasivam  compatible:
14da386f7fSManivannan Sadhasivam    enum:
15da386f7fSManivannan Sadhasivam      - qcom,ipq806x-nand
16da386f7fSManivannan Sadhasivam      - qcom,ipq4019-nand
17da386f7fSManivannan Sadhasivam      - qcom,ipq6018-nand
18da386f7fSManivannan Sadhasivam      - qcom,ipq8074-nand
19da386f7fSManivannan Sadhasivam      - qcom,sdx55-nand
20da386f7fSManivannan Sadhasivam
21da386f7fSManivannan Sadhasivam  reg:
22da386f7fSManivannan Sadhasivam    maxItems: 1
23da386f7fSManivannan Sadhasivam
24da386f7fSManivannan Sadhasivam  clocks:
25da386f7fSManivannan Sadhasivam    items:
26da386f7fSManivannan Sadhasivam      - description: Core Clock
27da386f7fSManivannan Sadhasivam      - description: Always ON Clock
28da386f7fSManivannan Sadhasivam
29da386f7fSManivannan Sadhasivam  clock-names:
30da386f7fSManivannan Sadhasivam    items:
31da386f7fSManivannan Sadhasivam      - const: core
32da386f7fSManivannan Sadhasivam      - const: aon
33da386f7fSManivannan Sadhasivam
34da386f7fSManivannan SadhasivampatternProperties:
35da386f7fSManivannan Sadhasivam  "^nand@[a-f0-9]$":
36da386f7fSManivannan Sadhasivam    type: object
37da386f7fSManivannan Sadhasivam    $ref: raw-nand-chip.yaml
38da386f7fSManivannan Sadhasivam    properties:
39da386f7fSManivannan Sadhasivam
40da386f7fSManivannan Sadhasivam      nand-bus-width:
41da386f7fSManivannan Sadhasivam        const: 8
42da386f7fSManivannan Sadhasivam
43da386f7fSManivannan Sadhasivam      nand-ecc-strength:
44da386f7fSManivannan Sadhasivam        enum: [1, 4, 8]
45da386f7fSManivannan Sadhasivam
46da386f7fSManivannan Sadhasivam      nand-ecc-step-size:
47da386f7fSManivannan Sadhasivam        enum:
48da386f7fSManivannan Sadhasivam          - 512
49*1f79a611SRob Herring
50da386f7fSManivannan Sadhasivam      qcom,boot-partitions:
51da386f7fSManivannan Sadhasivam        $ref: /schemas/types.yaml#/definitions/uint32-matrix
52da386f7fSManivannan Sadhasivam        items:
53da386f7fSManivannan Sadhasivam          items:
54da386f7fSManivannan Sadhasivam            - description: offset
55da386f7fSManivannan Sadhasivam            - description: size
56da386f7fSManivannan Sadhasivam        description:
57da386f7fSManivannan Sadhasivam          Boot partition use a different layout where the 4 bytes of spare
58da386f7fSManivannan Sadhasivam          data are not protected by ECC. Use this to declare these special
59da386f7fSManivannan Sadhasivam          partitions by defining first the offset and then the size.
60da386f7fSManivannan Sadhasivam
61da386f7fSManivannan Sadhasivam          It's in the form of <offset1 size1 offset2 size2 offset3 ...>
62da386f7fSManivannan Sadhasivam          and should be declared in ascending order.
63da386f7fSManivannan Sadhasivam
64da386f7fSManivannan Sadhasivam          Refer to the ipq8064 example on how to use this special binding.
65da386f7fSManivannan Sadhasivam
66da386f7fSManivannan Sadhasivam    unevaluatedProperties: false
67da386f7fSManivannan Sadhasivam
68da386f7fSManivannan SadhasivamallOf:
69da386f7fSManivannan Sadhasivam  - $ref: nand-controller.yaml#
70da386f7fSManivannan Sadhasivam
71da386f7fSManivannan Sadhasivam  - if:
72da386f7fSManivannan Sadhasivam      properties:
73da386f7fSManivannan Sadhasivam        compatible:
74da386f7fSManivannan Sadhasivam          contains:
75da386f7fSManivannan Sadhasivam            const: qcom,ipq806x-nand
76da386f7fSManivannan Sadhasivam    then:
77da386f7fSManivannan Sadhasivam      properties:
78da386f7fSManivannan Sadhasivam        dmas:
79da386f7fSManivannan Sadhasivam          items:
80da386f7fSManivannan Sadhasivam            - description: rxtx DMA channel
81da386f7fSManivannan Sadhasivam
82da386f7fSManivannan Sadhasivam        dma-names:
83da386f7fSManivannan Sadhasivam          items:
84da386f7fSManivannan Sadhasivam            - const: rxtx
85da386f7fSManivannan Sadhasivam
86da386f7fSManivannan Sadhasivam        qcom,cmd-crci:
87da386f7fSManivannan Sadhasivam          $ref: /schemas/types.yaml#/definitions/uint32
88da386f7fSManivannan Sadhasivam          description:
89da386f7fSManivannan Sadhasivam            Must contain the ADM command type CRCI block instance number
90da386f7fSManivannan Sadhasivam            specified for the NAND controller on the given platform
91da386f7fSManivannan Sadhasivam
92da386f7fSManivannan Sadhasivam        qcom,data-crci:
93da386f7fSManivannan Sadhasivam          $ref: /schemas/types.yaml#/definitions/uint32
94da386f7fSManivannan Sadhasivam          description:
95da386f7fSManivannan Sadhasivam            Must contain the ADM data type CRCI block instance number
96da386f7fSManivannan Sadhasivam            specified for the NAND controller on the given platform
97da386f7fSManivannan Sadhasivam
98da386f7fSManivannan Sadhasivam  - if:
99da386f7fSManivannan Sadhasivam      properties:
100da386f7fSManivannan Sadhasivam        compatible:
101da386f7fSManivannan Sadhasivam          contains:
1025278cc93SChristian Marangi            enum:
1035278cc93SChristian Marangi              - qcom,ipq4019-nand
1045278cc93SChristian Marangi              - qcom,ipq6018-nand
1055278cc93SChristian Marangi              - qcom,ipq8074-nand
1065278cc93SChristian Marangi              - qcom,sdx55-nand
1075278cc93SChristian Marangi
1085278cc93SChristian Marangi    then:
1095278cc93SChristian Marangi      properties:
1105278cc93SChristian Marangi        dmas:
1115278cc93SChristian Marangi          items:
1125278cc93SChristian Marangi            - description: tx DMA channel
1135278cc93SChristian Marangi            - description: rx DMA channel
1145278cc93SChristian Marangi            - description: cmd DMA channel
1155278cc93SChristian Marangi
1165278cc93SChristian Marangi        dma-names:
1175278cc93SChristian Marangi          items:
1185278cc93SChristian Marangi            - const: tx
1195278cc93SChristian Marangi            - const: rx
1205278cc93SChristian Marangi            - const: cmd
1215278cc93SChristian Marangi
1225278cc93SChristian Marangi  - if:
1235278cc93SChristian Marangi      properties:
1245278cc93SChristian Marangi        compatible:
1255278cc93SChristian Marangi          contains:
1265278cc93SChristian Marangi            enum:
127da386f7fSManivannan Sadhasivam              - qcom,ipq806x-nand
128da386f7fSManivannan Sadhasivam
129da386f7fSManivannan Sadhasivam    then:
130da386f7fSManivannan Sadhasivam      patternProperties:
131da386f7fSManivannan Sadhasivam        "^nand@[a-f0-9]$":
132da386f7fSManivannan Sadhasivam          properties:
133da386f7fSManivannan Sadhasivam            qcom,boot-partitions: true
134da386f7fSManivannan Sadhasivam    else:
135da386f7fSManivannan Sadhasivam      patternProperties:
136da386f7fSManivannan Sadhasivam        "^nand@[a-f0-9]$":
137da386f7fSManivannan Sadhasivam          properties:
138da386f7fSManivannan Sadhasivam            qcom,boot-partitions: false
139da386f7fSManivannan Sadhasivam
140da386f7fSManivannan Sadhasivamrequired:
141da386f7fSManivannan Sadhasivam  - compatible
142da386f7fSManivannan Sadhasivam  - reg
143da386f7fSManivannan Sadhasivam  - clocks
144da386f7fSManivannan Sadhasivam  - clock-names
145da386f7fSManivannan Sadhasivam
146da386f7fSManivannan SadhasivamunevaluatedProperties: false
147da386f7fSManivannan Sadhasivam
148da386f7fSManivannan Sadhasivamexamples:
149da386f7fSManivannan Sadhasivam  - |
150da386f7fSManivannan Sadhasivam    #include <dt-bindings/clock/qcom,gcc-ipq806x.h>
151da386f7fSManivannan Sadhasivam    nand-controller@1ac00000 {
152da386f7fSManivannan Sadhasivam        compatible = "qcom,ipq806x-nand";
153da386f7fSManivannan Sadhasivam        reg = <0x1ac00000 0x800>;
154da386f7fSManivannan Sadhasivam
155da386f7fSManivannan Sadhasivam        clocks = <&gcc EBI2_CLK>,
156da386f7fSManivannan Sadhasivam                 <&gcc EBI2_AON_CLK>;
157da386f7fSManivannan Sadhasivam        clock-names = "core", "aon";
158da386f7fSManivannan Sadhasivam
159da386f7fSManivannan Sadhasivam        dmas = <&adm_dma 3>;
1605278cc93SChristian Marangi        dma-names = "rxtx";
1615278cc93SChristian Marangi        qcom,cmd-crci = <15>;
162da386f7fSManivannan Sadhasivam        qcom,data-crci = <3>;
163da386f7fSManivannan Sadhasivam
164da386f7fSManivannan Sadhasivam        #address-cells = <1>;
165da386f7fSManivannan Sadhasivam        #size-cells = <0>;
166da386f7fSManivannan Sadhasivam
167da386f7fSManivannan Sadhasivam        nand@0 {
168da386f7fSManivannan Sadhasivam            reg = <0>;
169da386f7fSManivannan Sadhasivam
170da386f7fSManivannan Sadhasivam            nand-ecc-strength = <4>;
171da386f7fSManivannan Sadhasivam            nand-bus-width = <8>;
172da386f7fSManivannan Sadhasivam
173da386f7fSManivannan Sadhasivam            qcom,boot-partitions = <0x0 0x58a0000>;
174da386f7fSManivannan Sadhasivam
175da386f7fSManivannan Sadhasivam            partitions {
176da386f7fSManivannan Sadhasivam                compatible = "fixed-partitions";
177da386f7fSManivannan Sadhasivam                #address-cells = <1>;
178da386f7fSManivannan Sadhasivam                #size-cells = <1>;
179da386f7fSManivannan Sadhasivam
180da386f7fSManivannan Sadhasivam                partition@0 {
181da386f7fSManivannan Sadhasivam                    label = "boot-nand";
182da386f7fSManivannan Sadhasivam                    reg = <0 0x58a0000>;
183da386f7fSManivannan Sadhasivam                };
184da386f7fSManivannan Sadhasivam
185da386f7fSManivannan Sadhasivam                partition@58a0000 {
186da386f7fSManivannan Sadhasivam                    label = "fs-nand";
187da386f7fSManivannan Sadhasivam                    reg = <0x58a0000 0x4000000>;
188da386f7fSManivannan Sadhasivam                };
189da386f7fSManivannan Sadhasivam            };
190da386f7fSManivannan Sadhasivam        };
191da386f7fSManivannan Sadhasivam    };
192da386f7fSManivannan Sadhasivam
193da386f7fSManivannan Sadhasivam    #include <dt-bindings/clock/qcom,gcc-ipq4019.h>
194da386f7fSManivannan Sadhasivam    nand-controller@79b0000 {
195da386f7fSManivannan Sadhasivam        compatible = "qcom,ipq4019-nand";
196da386f7fSManivannan Sadhasivam        reg = <0x79b0000 0x1000>;
197da386f7fSManivannan Sadhasivam
198da386f7fSManivannan Sadhasivam        clocks = <&gcc GCC_QPIC_CLK>,
199da386f7fSManivannan Sadhasivam                 <&gcc GCC_QPIC_AHB_CLK>;
200da386f7fSManivannan Sadhasivam        clock-names = "core", "aon";
201da386f7fSManivannan Sadhasivam
202da386f7fSManivannan Sadhasivam        dmas = <&qpicbam 0>,
203da386f7fSManivannan Sadhasivam               <&qpicbam 1>,
204da386f7fSManivannan Sadhasivam               <&qpicbam 2>;
205da386f7fSManivannan Sadhasivam        dma-names = "tx", "rx", "cmd";
206da386f7fSManivannan Sadhasivam
207da386f7fSManivannan Sadhasivam        #address-cells = <1>;
208da386f7fSManivannan Sadhasivam        #size-cells = <0>;
209da386f7fSManivannan Sadhasivam
210da386f7fSManivannan Sadhasivam        nand@0 {
211da386f7fSManivannan Sadhasivam            reg = <0>;
212da386f7fSManivannan Sadhasivam            nand-ecc-strength = <4>;
213da386f7fSManivannan Sadhasivam            nand-bus-width = <8>;
214da386f7fSManivannan Sadhasivam
215da386f7fSManivannan Sadhasivam            partitions {
216da386f7fSManivannan Sadhasivam                compatible = "fixed-partitions";
217da386f7fSManivannan Sadhasivam                #address-cells = <1>;
218da386f7fSManivannan Sadhasivam                #size-cells = <1>;
219da386f7fSManivannan Sadhasivam
220da386f7fSManivannan Sadhasivam                partition@0 {
221                    label = "boot-nand";
222                    reg = <0 0x58a0000>;
223                };
224
225                partition@58a0000 {
226                    label = "fs-nand";
227                    reg = <0x58a0000 0x4000000>;
228                };
229            };
230        };
231    };
232
233...
234