Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / mtd / rockchip,nand-controller.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/mtd/rockchip,nand-controller.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Rockchip SoCs NAND FLASH Controller (NFC)
8
9 allOf:
10   - $ref: "nand-controller.yaml#"
11
12 maintainers:
13   - Heiko Stuebner <heiko@sntech.de>
14
15 properties:
16   compatible:
17     oneOf:
18       - const: rockchip,px30-nfc
19       - const: rockchip,rk2928-nfc
20       - const: rockchip,rv1108-nfc
21       - items:
22           - const: rockchip,rk3036-nfc
23           - const: rockchip,rk2928-nfc
24       - items:
25           - const: rockchip,rk3308-nfc
26           - const: rockchip,rv1108-nfc
27
28   reg:
29     maxItems: 1
30
31   interrupts:
32     maxItems: 1
33
34   clocks:
35     minItems: 1
36     items:
37       - description: Bus Clock
38       - description: Module Clock
39
40   clock-names:
41     minItems: 1
42     items:
43       - const: ahb
44       - const: nfc
45
46   assigned-clocks:
47     maxItems: 1
48
49   assigned-clock-rates:
50     maxItems: 1
51
52   power-domains:
53     maxItems: 1
54
55 patternProperties:
56   "^nand@[0-7]$":
57     type: object
58     properties:
59       reg:
60         minimum: 0
61         maximum: 7
62
63       nand-ecc-mode:
64         const: hw
65
66       nand-ecc-step-size:
67         const: 1024
68
69       nand-ecc-strength:
70         enum: [16, 24, 40, 60, 70]
71         description: |
72           The ECC configurations that can be supported are as follows.
73             NFC v600 ECC 16, 24, 40, 60
74               RK2928, RK3066, RK3188
75
76             NFC v622 ECC 16, 24, 40, 60
77               RK3036, RK3128
78
79             NFC v800 ECC 16
80               RK3308, RV1108
81
82             NFC v900 ECC 16, 40, 60, 70
83               RK3326, PX30
84
85       nand-bus-width:
86         const: 8
87
88       rockchip,boot-blks:
89         $ref: /schemas/types.yaml#/definitions/uint32
90         minimum: 2
91         default: 16
92         description:
93           The NFC driver need this information to select ECC
94           algorithms supported by the boot ROM.
95           Only used in combination with 'nand-is-boot-medium'.
96
97       rockchip,boot-ecc-strength:
98         enum: [16, 24, 40, 60, 70]
99         allOf:
100           - $ref: /schemas/types.yaml#/definitions/uint32
101         description: |
102           If specified it indicates that a different BCH/ECC setting is
103           supported by the boot ROM.
104             NFC v600 ECC 16, 24
105               RK2928, RK3066, RK3188
106
107             NFC v622 ECC 16, 24, 40, 60
108               RK3036, RK3128
109
110             NFC v800 ECC 16
111               RK3308, RV1108
112
113             NFC v900 ECC 16, 70
114               RK3326, PX30
115
116           Only used in combination with 'nand-is-boot-medium'.
117
118 required:
119   - compatible
120   - reg
121   - interrupts
122   - clocks
123   - clock-names
124
125 unevaluatedProperties: false
126
127 examples:
128   - |
129     #include <dt-bindings/clock/rk3308-cru.h>
130     #include <dt-bindings/interrupt-controller/arm-gic.h>
131     nfc: nand-controller@ff4b0000 {
132       compatible = "rockchip,rk3308-nfc",
133                    "rockchip,rv1108-nfc";
134       reg = <0xff4b0000 0x4000>;
135       interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
136       clocks = <&cru HCLK_NANDC>, <&cru SCLK_NANDC>;
137       clock-names = "ahb", "nfc";
138       assigned-clocks = <&clks SCLK_NANDC>;
139       assigned-clock-rates = <150000000>;
140
141       pinctrl-0 = <&flash_ale &flash_bus8 &flash_cle &flash_csn0
142                    &flash_rdn &flash_rdy &flash_wrn>;
143       pinctrl-names = "default";
144
145       #address-cells = <1>;
146       #size-cells = <0>;
147
148       nand@0 {
149         reg = <0>;
150         label = "rk-nand";
151         nand-bus-width = <8>;
152         nand-ecc-mode = "hw";
153         nand-ecc-step-size = <1024>;
154         nand-ecc-strength = <16>;
155         nand-is-boot-medium;
156         rockchip,boot-blks = <8>;
157         rockchip,boot-ecc-strength = <16>;
158       };
159     };
160
161 ...