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