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