18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/mtd/denali,nand.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Denali NAND controller
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Masahiro Yamada <yamada.masahiro@socionext.com>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ciproperties:
138c2ecf20Sopenharmony_ci  compatible:
148c2ecf20Sopenharmony_ci    enum:
158c2ecf20Sopenharmony_ci      - altr,socfpga-denali-nand
168c2ecf20Sopenharmony_ci      - socionext,uniphier-denali-nand-v5a
178c2ecf20Sopenharmony_ci      - socionext,uniphier-denali-nand-v5b
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci  reg-names:
208c2ecf20Sopenharmony_ci    description: |
218c2ecf20Sopenharmony_ci      There are two register regions:
228c2ecf20Sopenharmony_ci        nand_data:  host data/command interface
238c2ecf20Sopenharmony_ci        denali_reg: register interface
248c2ecf20Sopenharmony_ci    items:
258c2ecf20Sopenharmony_ci      - const: nand_data
268c2ecf20Sopenharmony_ci      - const: denali_reg
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci  reg:
298c2ecf20Sopenharmony_ci    minItems: 2
308c2ecf20Sopenharmony_ci    maxItems: 2
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci  interrupts:
338c2ecf20Sopenharmony_ci    maxItems: 1
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci  clock-names:
368c2ecf20Sopenharmony_ci    description: |
378c2ecf20Sopenharmony_ci      There are three clocks:
388c2ecf20Sopenharmony_ci        nand:   controller core clock
398c2ecf20Sopenharmony_ci        nand_x: bus interface clock
408c2ecf20Sopenharmony_ci        ecc:    ECC circuit clock
418c2ecf20Sopenharmony_ci    items:
428c2ecf20Sopenharmony_ci      - const: nand
438c2ecf20Sopenharmony_ci      - const: nand_x
448c2ecf20Sopenharmony_ci      - const: ecc
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci  clocks:
478c2ecf20Sopenharmony_ci    minItems: 3
488c2ecf20Sopenharmony_ci    maxItems: 3
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci  reset-names:
518c2ecf20Sopenharmony_ci    description: |
528c2ecf20Sopenharmony_ci      There are two optional resets:
538c2ecf20Sopenharmony_ci        nand: controller core reset
548c2ecf20Sopenharmony_ci        reg:  register reset
558c2ecf20Sopenharmony_ci    oneOf:
568c2ecf20Sopenharmony_ci      - items:
578c2ecf20Sopenharmony_ci          - const: nand
588c2ecf20Sopenharmony_ci          - const: reg
598c2ecf20Sopenharmony_ci      - const: nand
608c2ecf20Sopenharmony_ci      - const: reg
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci  resets:
638c2ecf20Sopenharmony_ci    minItems: 1
648c2ecf20Sopenharmony_ci    maxItems: 2
658c2ecf20Sopenharmony_ci
668c2ecf20Sopenharmony_ciallOf:
678c2ecf20Sopenharmony_ci  - $ref: nand-controller.yaml
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci  - if:
708c2ecf20Sopenharmony_ci      properties:
718c2ecf20Sopenharmony_ci        compatible:
728c2ecf20Sopenharmony_ci          contains:
738c2ecf20Sopenharmony_ci            const: altr,socfpga-denali-nand
748c2ecf20Sopenharmony_ci    then:
758c2ecf20Sopenharmony_ci      patternProperties:
768c2ecf20Sopenharmony_ci        "^nand@[a-f0-9]$":
778c2ecf20Sopenharmony_ci          type: object
788c2ecf20Sopenharmony_ci          properties:
798c2ecf20Sopenharmony_ci            nand-ecc-strength:
808c2ecf20Sopenharmony_ci              enum:
818c2ecf20Sopenharmony_ci                - 8
828c2ecf20Sopenharmony_ci                - 15
838c2ecf20Sopenharmony_ci            nand-ecc-step-size:
848c2ecf20Sopenharmony_ci              enum:
858c2ecf20Sopenharmony_ci                - 512
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ci  - if:
888c2ecf20Sopenharmony_ci      properties:
898c2ecf20Sopenharmony_ci        compatible:
908c2ecf20Sopenharmony_ci          contains:
918c2ecf20Sopenharmony_ci            const: socionext,uniphier-denali-nand-v5a
928c2ecf20Sopenharmony_ci    then:
938c2ecf20Sopenharmony_ci      patternProperties:
948c2ecf20Sopenharmony_ci        "^nand@[a-f0-9]$":
958c2ecf20Sopenharmony_ci          type: object
968c2ecf20Sopenharmony_ci          properties:
978c2ecf20Sopenharmony_ci            nand-ecc-strength:
988c2ecf20Sopenharmony_ci              enum:
998c2ecf20Sopenharmony_ci                - 8
1008c2ecf20Sopenharmony_ci                - 16
1018c2ecf20Sopenharmony_ci                - 24
1028c2ecf20Sopenharmony_ci            nand-ecc-step-size:
1038c2ecf20Sopenharmony_ci              enum:
1048c2ecf20Sopenharmony_ci                - 1024
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ci  - if:
1078c2ecf20Sopenharmony_ci      properties:
1088c2ecf20Sopenharmony_ci        compatible:
1098c2ecf20Sopenharmony_ci          contains:
1108c2ecf20Sopenharmony_ci            const: socionext,uniphier-denali-nand-v5b
1118c2ecf20Sopenharmony_ci    then:
1128c2ecf20Sopenharmony_ci      patternProperties:
1138c2ecf20Sopenharmony_ci        "^nand@[a-f0-9]$":
1148c2ecf20Sopenharmony_ci          type: object
1158c2ecf20Sopenharmony_ci          properties:
1168c2ecf20Sopenharmony_ci            nand-ecc-strength:
1178c2ecf20Sopenharmony_ci              enum:
1188c2ecf20Sopenharmony_ci                - 8
1198c2ecf20Sopenharmony_ci                - 16
1208c2ecf20Sopenharmony_ci            nand-ecc-step-size:
1218c2ecf20Sopenharmony_ci              enum:
1228c2ecf20Sopenharmony_ci                - 1024
1238c2ecf20Sopenharmony_ci
1248c2ecf20Sopenharmony_cirequired:
1258c2ecf20Sopenharmony_ci  - compatible
1268c2ecf20Sopenharmony_ci  - reg
1278c2ecf20Sopenharmony_ci  - interrupts
1288c2ecf20Sopenharmony_ci  - clock-names
1298c2ecf20Sopenharmony_ci  - clocks
1308c2ecf20Sopenharmony_ci
1318c2ecf20Sopenharmony_ciunevaluatedProperties: false
1328c2ecf20Sopenharmony_ci
1338c2ecf20Sopenharmony_ciexamples:
1348c2ecf20Sopenharmony_ci  - |
1358c2ecf20Sopenharmony_ci    nand-controller@ff900000 {
1368c2ecf20Sopenharmony_ci        compatible = "altr,socfpga-denali-nand";
1378c2ecf20Sopenharmony_ci        reg-names = "nand_data", "denali_reg";
1388c2ecf20Sopenharmony_ci        reg = <0xff900000 0x20>, <0xffb80000 0x1000>;
1398c2ecf20Sopenharmony_ci        interrupts = <0 144 4>;
1408c2ecf20Sopenharmony_ci        clock-names = "nand", "nand_x", "ecc";
1418c2ecf20Sopenharmony_ci        clocks = <&nand_clk>, <&nand_x_clk>, <&nand_ecc_clk>;
1428c2ecf20Sopenharmony_ci        reset-names = "nand", "reg";
1438c2ecf20Sopenharmony_ci        resets = <&nand_rst>, <&nand_reg_rst>;
1448c2ecf20Sopenharmony_ci        #address-cells = <1>;
1458c2ecf20Sopenharmony_ci        #size-cells = <0>;
1468c2ecf20Sopenharmony_ci
1478c2ecf20Sopenharmony_ci        nand@0 {
1488c2ecf20Sopenharmony_ci                reg = <0>;
1498c2ecf20Sopenharmony_ci        };
1508c2ecf20Sopenharmony_ci    };
151