1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mtd/denali,nand.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Denali NAND controller
8
9maintainers:
10  - Masahiro Yamada <yamada.masahiro@socionext.com>
11
12properties:
13  compatible:
14    enum:
15      - altr,socfpga-denali-nand
16      - socionext,uniphier-denali-nand-v5a
17      - socionext,uniphier-denali-nand-v5b
18
19  reg-names:
20    description: |
21      There are two register regions:
22        nand_data:  host data/command interface
23        denali_reg: register interface
24    items:
25      - const: nand_data
26      - const: denali_reg
27
28  reg:
29    minItems: 2
30    maxItems: 2
31
32  interrupts:
33    maxItems: 1
34
35  clock-names:
36    description: |
37      There are three clocks:
38        nand:   controller core clock
39        nand_x: bus interface clock
40        ecc:    ECC circuit clock
41    items:
42      - const: nand
43      - const: nand_x
44      - const: ecc
45
46  clocks:
47    minItems: 3
48    maxItems: 3
49
50  reset-names:
51    description: |
52      There are two optional resets:
53        nand: controller core reset
54        reg:  register reset
55    oneOf:
56      - items:
57          - const: nand
58          - const: reg
59      - const: nand
60      - const: reg
61
62  resets:
63    minItems: 1
64    maxItems: 2
65
66allOf:
67  - $ref: nand-controller.yaml
68
69  - if:
70      properties:
71        compatible:
72          contains:
73            const: altr,socfpga-denali-nand
74    then:
75      patternProperties:
76        "^nand@[a-f0-9]$":
77          type: object
78          properties:
79            nand-ecc-strength:
80              enum:
81                - 8
82                - 15
83            nand-ecc-step-size:
84              enum:
85                - 512
86
87  - if:
88      properties:
89        compatible:
90          contains:
91            const: socionext,uniphier-denali-nand-v5a
92    then:
93      patternProperties:
94        "^nand@[a-f0-9]$":
95          type: object
96          properties:
97            nand-ecc-strength:
98              enum:
99                - 8
100                - 16
101                - 24
102            nand-ecc-step-size:
103              enum:
104                - 1024
105
106  - if:
107      properties:
108        compatible:
109          contains:
110            const: socionext,uniphier-denali-nand-v5b
111    then:
112      patternProperties:
113        "^nand@[a-f0-9]$":
114          type: object
115          properties:
116            nand-ecc-strength:
117              enum:
118                - 8
119                - 16
120            nand-ecc-step-size:
121              enum:
122                - 1024
123
124required:
125  - compatible
126  - reg
127  - interrupts
128  - clock-names
129  - clocks
130
131unevaluatedProperties: false
132
133examples:
134  - |
135    nand-controller@ff900000 {
136        compatible = "altr,socfpga-denali-nand";
137        reg-names = "nand_data", "denali_reg";
138        reg = <0xff900000 0x20>, <0xffb80000 0x1000>;
139        interrupts = <0 144 4>;
140        clock-names = "nand", "nand_x", "ecc";
141        clocks = <&nand_clk>, <&nand_x_clk>, <&nand_ecc_clk>;
142        reset-names = "nand", "reg";
143        resets = <&nand_rst>, <&nand_reg_rst>;
144        #address-cells = <1>;
145        #size-cells = <0>;
146
147        nand@0 {
148                reg = <0>;
149        };
150    };
151