1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mtd/qcom,nandc.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm NAND controller
8
9maintainers:
10  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
11
12properties:
13  compatible:
14    enum:
15      - qcom,ipq806x-nand
16      - qcom,ipq4019-nand
17      - qcom,ipq6018-nand
18      - qcom,ipq8074-nand
19      - qcom,sdx55-nand
20
21  reg:
22    maxItems: 1
23
24  clocks:
25    items:
26      - description: Core Clock
27      - description: Always ON Clock
28
29  clock-names:
30    items:
31      - const: core
32      - const: aon
33
34  "#address-cells": true
35  "#size-cells": true
36
37patternProperties:
38  "^nand@[a-f0-9]$":
39    type: object
40    properties:
41      nand-bus-width:
42        const: 8
43
44      nand-ecc-strength:
45        enum: [1, 4, 8]
46
47      nand-ecc-step-size:
48        enum:
49          - 512
50
51allOf:
52  - $ref: "nand-controller.yaml#"
53
54  - if:
55      properties:
56        compatible:
57          contains:
58            const: qcom,ipq806x-nand
59    then:
60      properties:
61        dmas:
62          items:
63            - description: rxtx DMA channel
64
65        dma-names:
66          items:
67            - const: rxtx
68
69        qcom,cmd-crci:
70          $ref: /schemas/types.yaml#/definitions/uint32
71          description:
72            Must contain the ADM command type CRCI block instance number
73            specified for the NAND controller on the given platform
74
75        qcom,data-crci:
76          $ref: /schemas/types.yaml#/definitions/uint32
77          description:
78            Must contain the ADM data type CRCI block instance number
79            specified for the NAND controller on the given platform
80
81  - if:
82      properties:
83        compatible:
84          contains:
85            enum:
86              - qcom,ipq4019-nand
87              - qcom,ipq6018-nand
88              - qcom,ipq8074-nand
89              - qcom,sdx55-nand
90
91    then:
92      properties:
93        dmas:
94          items:
95            - description: tx DMA channel
96            - description: rx DMA channel
97            - description: cmd DMA channel
98
99        dma-names:
100          items:
101            - const: tx
102            - const: rx
103            - const: cmd
104
105required:
106  - compatible
107  - reg
108  - clocks
109  - clock-names
110
111unevaluatedProperties: false
112
113examples:
114  - |
115    #include <dt-bindings/clock/qcom,gcc-ipq806x.h>
116    nand-controller@1ac00000 {
117      compatible = "qcom,ipq806x-nand";
118      reg = <0x1ac00000 0x800>;
119
120      clocks = <&gcc EBI2_CLK>,
121               <&gcc EBI2_AON_CLK>;
122      clock-names = "core", "aon";
123
124      dmas = <&adm_dma 3>;
125      dma-names = "rxtx";
126      qcom,cmd-crci = <15>;
127      qcom,data-crci = <3>;
128
129      #address-cells = <1>;
130      #size-cells = <0>;
131
132      nand@0 {
133        reg = <0>;
134
135        nand-ecc-strength = <4>;
136        nand-bus-width = <8>;
137
138        partitions {
139          compatible = "fixed-partitions";
140          #address-cells = <1>;
141          #size-cells = <1>;
142
143          partition@0 {
144            label = "boot-nand";
145            reg = <0 0x58a0000>;
146          };
147
148          partition@58a0000 {
149            label = "fs-nand";
150            reg = <0x58a0000 0x4000000>;
151          };
152        };
153      };
154    };
155
156    #include <dt-bindings/clock/qcom,gcc-ipq4019.h>
157    nand-controller@79b0000 {
158      compatible = "qcom,ipq4019-nand";
159      reg = <0x79b0000 0x1000>;
160
161      clocks = <&gcc GCC_QPIC_CLK>,
162               <&gcc GCC_QPIC_AHB_CLK>;
163      clock-names = "core", "aon";
164
165      dmas = <&qpicbam 0>,
166             <&qpicbam 1>,
167             <&qpicbam 2>;
168      dma-names = "tx", "rx", "cmd";
169
170      #address-cells = <1>;
171      #size-cells = <0>;
172
173      nand@0 {
174        reg = <0>;
175        nand-ecc-strength = <4>;
176        nand-bus-width = <8>;
177
178        partitions {
179          compatible = "fixed-partitions";
180          #address-cells = <1>;
181          #size-cells = <1>;
182
183          partition@0 {
184            label = "boot-nand";
185            reg = <0 0x58a0000>;
186          };
187
188          partition@58a0000 {
189            label = "fs-nand";
190            reg = <0x58a0000 0x4000000>;
191          };
192        };
193      };
194    };
195
196...
197