1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mtd/ingenic,nand.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Ingenic SoCs NAND controller devicetree bindings
8
9maintainers:
10  - Paul Cercueil <paul@crapouillou.net>
11
12allOf:
13  - $ref: nand-controller.yaml#
14
15properties:
16  compatible:
17    enum:
18      - ingenic,jz4740-nand
19      - ingenic,jz4725b-nand
20      - ingenic,jz4780-nand
21
22  reg:
23    items:
24      - description: Bank number, offset and size of first attached NAND chip
25      - description: Bank number, offset and size of second attached NAND chip
26      - description: Bank number, offset and size of third attached NAND chip
27      - description: Bank number, offset and size of fourth attached NAND chip
28    minItems: 1
29
30  ecc-engine: true
31
32  partitions:
33    type: object
34    description:
35      Node containing description of fixed partitions.
36      See Documentation/devicetree/bindings/mtd/partition.txt
37
38patternProperties:
39  "^nand@[a-f0-9]$":
40    type: object
41    properties:
42      rb-gpios:
43        description: GPIO specifier for the busy pin.
44        maxItems: 1
45
46      wp-gpios:
47        description: GPIO specifier for the write-protect pin.
48        maxItems: 1
49
50required:
51  - compatible
52  - reg
53
54unevaluatedProperties: false
55
56examples:
57  - |
58    #include <dt-bindings/clock/jz4780-cgu.h>
59    memory-controller@13410000 {
60      compatible = "ingenic,jz4780-nemc";
61      reg = <0x13410000 0x10000>;
62      #address-cells = <2>;
63      #size-cells = <1>;
64      ranges = <1 0 0x1b000000 0x1000000>,
65         <2 0 0x1a000000 0x1000000>,
66         <3 0 0x19000000 0x1000000>,
67         <4 0 0x18000000 0x1000000>,
68         <5 0 0x17000000 0x1000000>,
69         <6 0 0x16000000 0x1000000>;
70
71      clocks = <&cgu JZ4780_CLK_NEMC>;
72
73      nand-controller@1 {
74        compatible = "ingenic,jz4780-nand";
75        reg = <1 0 0x1000000>;
76
77        #address-cells = <1>;
78        #size-cells = <0>;
79
80        ecc-engine = <&bch>;
81
82        ingenic,nemc-tAS = <10>;
83        ingenic,nemc-tAH = <5>;
84        ingenic,nemc-tBP = <10>;
85        ingenic,nemc-tAW = <15>;
86        ingenic,nemc-tSTRV = <100>;
87
88        pinctrl-names = "default";
89        pinctrl-0 = <&pins_nemc>;
90
91        nand@1 {
92          reg = <1>;
93
94          nand-ecc-step-size = <1024>;
95          nand-ecc-strength = <24>;
96          nand-ecc-mode = "hw";
97          nand-on-flash-bbt;
98
99          pinctrl-names = "default";
100          pinctrl-0 = <&pins_nemc_cs1>;
101
102          partitions {
103            compatible = "fixed-partitions";
104            #address-cells = <2>;
105            #size-cells = <2>;
106
107            partition@0 {
108              label = "u-boot-spl";
109              reg = <0x0 0x0 0x0 0x800000>;
110            };
111
112            partition@800000 {
113              label = "u-boot";
114              reg = <0x0 0x800000 0x0 0x200000>;
115            };
116
117            partition@a00000 {
118              label = "u-boot-env";
119              reg = <0x0 0xa00000 0x0 0x200000>;
120            };
121
122            partition@c00000 {
123              label = "boot";
124              reg = <0x0 0xc00000 0x0 0x4000000>;
125            };
126
127            partition@4c00000 {
128              label = "system";
129              reg = <0x0 0x4c00000 0x1 0xfb400000>;
130            };
131          };
132        };
133      };
134    };
135