summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/memory-controllers/fsl/ifc.txt
blob: 89427b018ba75053938f75e13f74a0591a8c3044 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Integrated Flash Controller

Properties:
- name : Should be ifc
- compatible : should contain "fsl,ifc". The version of the integrated
               flash controller can be found in the IFC_REV register at
               offset zero.

- #address-cells : Should be either two or three.  The first cell is the
                   chipselect number, and the remaining cells are the
                   offset into the chipselect.
- #size-cells : Either one or two, depending on how large each chipselect
                can be.
- reg : Offset and length of the register set for the device
- interrupts: IFC may have one or two interrupts.  If two interrupt
              specifiers are present, the first is the "common"
              interrupt (CM_EVTER_STAT), and the second is the NAND
              interrupt (NAND_EVTER_STAT).  If there is only one,
              that interrupt reports both types of event.

- little-endian : If this property is absent, the big-endian mode will
                  be in use as default for registers.

- ranges : Each range corresponds to a single chipselect, and covers
           the entire access window as configured.

Child device nodes describe the devices connected to IFC such as NOR (e.g.
cfi-flash) and NAND (fsl,ifc-nand). There might be board specific devices
like FPGAs, CPLDs, etc.

Example:

	ifc@ffe1e000 {
		compatible = "fsl,ifc", "simple-bus";
		#address-cells = <2>;
		#size-cells = <1>;
		reg = <0x0 0xffe1e000 0 0x2000>;
		interrupts = <16 2 19 2>;
		little-endian;

		/* NOR, NAND Flashes and CPLD on board */
		ranges = <0x0 0x0 0x0 0xee000000 0x02000000
			  0x1 0x0 0x0 0xffa00000 0x00010000
			  0x3 0x0 0x0 0xffb00000 0x00020000>;

		flash@0,0 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "cfi-flash";
			reg = <0x0 0x0 0x2000000>;
			bank-width = <2>;
			device-width = <1>;

			partition@0 {
				/* 32MB for user data */
				reg = <0x0 0x02000000>;
				label = "NOR Data";
			};
		};

		flash@1,0 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,ifc-nand";
			reg = <0x1 0x0 0x10000>;

			partition@0 {
				/* This location must not be altered  */
				/* 1MB for u-boot Bootloader Image */
				reg = <0x0 0x00100000>;
				label = "NAND U-Boot Image";
				read-only;
			};
		};

		cpld@3,0 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,p1010rdb-cpld";
			reg = <0x3 0x0 0x000001f>;
		};
	};