xref: /linux/Documentation/devicetree/bindings/memory-controllers/fsl/fsl,ifc.yaml (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
1985ede63SLi Yang# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2985ede63SLi Yang%YAML 1.2
3985ede63SLi Yang---
4985ede63SLi Yang$id: http://devicetree.org/schemas/memory-controllers/fsl/fsl,ifc.yaml#
5985ede63SLi Yang$schema: http://devicetree.org/meta-schemas/core.yaml#
6985ede63SLi Yang
7985ede63SLi Yangtitle: FSL/NXP Integrated Flash Controller
8985ede63SLi Yang
9985ede63SLi Yangmaintainers:
10*815cc771SMichael Walle  - Shawn Guo <shawnguo@kernel.org>
11985ede63SLi Yang
12985ede63SLi Yangdescription: |
13985ede63SLi Yang  NXP's integrated flash controller (IFC) is an advanced version of the
14985ede63SLi Yang  enhanced local bus controller which includes similar programming and signal
15985ede63SLi Yang  interfaces with an extended feature set. The IFC provides access to multiple
16985ede63SLi Yang  external memory types, such as NAND flash (SLC and MLC), NOR flash, EPROM,
17985ede63SLi Yang  SRAM and other memories where address and data are shared on a bus.
18985ede63SLi Yang
19985ede63SLi Yangproperties:
20985ede63SLi Yang  $nodename:
21985ede63SLi Yang    pattern: "^memory-controller@[0-9a-f]+$"
22985ede63SLi Yang
23985ede63SLi Yang  compatible:
24985ede63SLi Yang    const: fsl,ifc
25985ede63SLi Yang
26985ede63SLi Yang  "#address-cells":
27985ede63SLi Yang    enum: [2, 3]
28985ede63SLi Yang    description: |
29985ede63SLi Yang      Should be either two or three.  The first cell is the chipselect
30985ede63SLi Yang      number, and the remaining cells are the offset into the chipselect.
31985ede63SLi Yang
32985ede63SLi Yang  "#size-cells":
33985ede63SLi Yang    enum: [1, 2]
34985ede63SLi Yang    description: |
35985ede63SLi Yang      Either one or two, depending on how large each chipselect can be.
36985ede63SLi Yang
37985ede63SLi Yang  reg:
38985ede63SLi Yang    maxItems: 1
39985ede63SLi Yang
40985ede63SLi Yang  interrupts:
41985ede63SLi Yang    minItems: 1
42985ede63SLi Yang    maxItems: 2
43985ede63SLi Yang    description: |
44985ede63SLi Yang      IFC may have one or two interrupts.  If two interrupt specifiers are
45985ede63SLi Yang      present, the first is the "common" interrupt (CM_EVTER_STAT), and the
46985ede63SLi Yang      second is the NAND interrupt (NAND_EVTER_STAT).  If there is only one,
47985ede63SLi Yang      that interrupt reports both types of event.
48985ede63SLi Yang
49985ede63SLi Yang  little-endian:
50985ede63SLi Yang    type: boolean
51985ede63SLi Yang    description: |
52985ede63SLi Yang      If this property is absent, the big-endian mode will be in use as default
53985ede63SLi Yang      for registers.
54985ede63SLi Yang
55985ede63SLi Yang  ranges:
56985ede63SLi Yang    description: |
57985ede63SLi Yang      Each range corresponds to a single chipselect, and covers the entire
58985ede63SLi Yang      access window as configured.
59985ede63SLi Yang
60985ede63SLi YangpatternProperties:
61985ede63SLi Yang  "^.*@[a-f0-9]+(,[a-f0-9]+)+$":
62985ede63SLi Yang    type: object
63985ede63SLi Yang    description: |
64985ede63SLi Yang      Child device nodes describe the devices connected to IFC such as NOR (e.g.
65985ede63SLi Yang      cfi-flash) and NAND (fsl,ifc-nand). There might be board specific devices
66985ede63SLi Yang      like FPGAs, CPLDs, etc.
67985ede63SLi Yang
68985ede63SLi Yang    required:
69985ede63SLi Yang      - compatible
70985ede63SLi Yang      - reg
71985ede63SLi Yang
72985ede63SLi Yangrequired:
73985ede63SLi Yang  - compatible
74985ede63SLi Yang  - reg
75985ede63SLi Yang  - interrupts
76985ede63SLi Yang
77985ede63SLi YangadditionalProperties: false
78985ede63SLi Yang
79985ede63SLi Yangexamples:
80985ede63SLi Yang  - |
81985ede63SLi Yang    soc {
82985ede63SLi Yang        #address-cells = <2>;
83985ede63SLi Yang        #size-cells = <2>;
84985ede63SLi Yang
85985ede63SLi Yang        memory-controller@ffe1e000 {
86985ede63SLi Yang            compatible = "fsl,ifc";
87985ede63SLi Yang            #address-cells = <2>;
88985ede63SLi Yang            #size-cells = <1>;
89985ede63SLi Yang            reg = <0x0 0xffe1e000 0 0x2000>;
90985ede63SLi Yang            interrupts = <16 2 19 2>;
91985ede63SLi Yang            little-endian;
92985ede63SLi Yang
93985ede63SLi Yang            /* NOR, NAND Flashes and CPLD on board */
94985ede63SLi Yang            ranges = <0x0 0x0 0x0 0xee000000 0x02000000>,
95985ede63SLi Yang                     <0x1 0x0 0x0 0xffa00000 0x00010000>,
96985ede63SLi Yang                     <0x3 0x0 0x0 0xffb00000 0x00020000>;
97985ede63SLi Yang
98985ede63SLi Yang            flash@0,0 {
99985ede63SLi Yang                #address-cells = <1>;
100985ede63SLi Yang                #size-cells = <1>;
101985ede63SLi Yang                compatible = "cfi-flash";
102985ede63SLi Yang                reg = <0x0 0x0 0x2000000>;
103985ede63SLi Yang                bank-width = <2>;
104985ede63SLi Yang                device-width = <1>;
105985ede63SLi Yang
106985ede63SLi Yang                partition@0 {
107985ede63SLi Yang                    /* 32MB for user data */
108985ede63SLi Yang                    reg = <0x0 0x02000000>;
109985ede63SLi Yang                    label = "NOR Data";
110985ede63SLi Yang                };
111985ede63SLi Yang            };
112985ede63SLi Yang        };
113985ede63SLi Yang    };
114