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