hc
2023-10-25 6c2073b7aa40e29d0eca7d571dd7bc590c7ecaa7
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>;
       };
   };