Ensure all raw NAND chip properties are valid by referencing the relevant schema and set unevaluatedProperties to false in the NAND chip section to avoid spurious additions of random properties. Doing this in one location also saves us from dupplicating the description of the NAND chip object. Cc: Masahiro Yamada <yamada.masahiro@socionext.com> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Reviewed-by: Rob Herring <robh@kernel.org> Link: https://lore.kernel.org/linux-mtd/20230619092916.3028470-12-miquel.raynal@bootlin.com
154 lines
3.2 KiB
YAML
154 lines
3.2 KiB
YAML
# 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
|
|
|
|
patternProperties:
|
|
"^nand@[a-f0-9]$":
|
|
type: object
|
|
$ref: raw-nand-chip.yaml
|
|
unevaluatedProperties: false
|
|
|
|
allOf:
|
|
- $ref: nand-controller.yaml
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: altr,socfpga-denali-nand
|
|
then:
|
|
patternProperties:
|
|
"^nand@[a-f0-9]$":
|
|
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]$":
|
|
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]$":
|
|
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>;
|
|
};
|
|
};
|