# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause %YAML 1.2 --- $id: http://devicetree.org/schemas/mtd/denali,nand.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Denali NAND controller maintainers: - Masahiro Yamada <yamada.masahiro@socionext.com> properties: compatible: enum: - altr,socfpga-denali-nand - socionext,uniphier-denali-nand-v5a - socionext,uniphier-denali-nand-v5b reg-names: description: | There are two register regions: nand_data: host data/command interface denali_reg: register interface items: - const: nand_data - const: denali_reg reg: minItems: 2 maxItems: 2 interrupts: maxItems: 1 clock-names: description: | There are three clocks: nand: controller core clock nand_x: bus interface clock ecc: ECC circuit clock items: - const: nand - const: nand_x - const: ecc clocks: minItems: 3 maxItems: 3 reset-names: description: | There are two optional resets: nand: controller core reset reg: register reset oneOf: - items: - const: nand - const: reg - const: nand - const: reg resets: minItems: 1 maxItems: 2 allOf: - $ref: nand-controller.yaml - if: properties: compatible: contains: const: altr,socfpga-denali-nand then: patternProperties: "^nand@[a-f0-9]$": type: object properties: nand-ecc-strength: enum: - 8 - 15 nand-ecc-step-size: enum: - 512 - if: properties: compatible: contains: const: socionext,uniphier-denali-nand-v5a then: patternProperties: "^nand@[a-f0-9]$": type: object properties: nand-ecc-strength: enum: - 8 - 16 - 24 nand-ecc-step-size: enum: - 1024 - if: properties: compatible: contains: const: socionext,uniphier-denali-nand-v5b then: patternProperties: "^nand@[a-f0-9]$": type: object properties: nand-ecc-strength: enum: - 8 - 16 nand-ecc-step-size: enum: - 1024 required: - compatible - reg - interrupts - clock-names - clocks unevaluatedProperties: false examples: - | nand-controller@ff900000 { compatible = "altr,socfpga-denali-nand"; reg-names = "nand_data", "denali_reg"; reg = <0xff900000 0x20>, <0xffb80000 0x1000>; interrupts = <0 144 4>; clock-names = "nand", "nand_x", "ecc"; clocks = <&nand_clk>, <&nand_x_clk>, <&nand_ecc_clk>; reset-names = "nand", "reg"; resets = <&nand_rst>, <&nand_reg_rst>; #address-cells = <1>; #size-cells = <0>; nand@0 { reg = <0>; }; };