]>
Commit | Line | Data |
---|---|---|
22869a9e LW |
1 | Multi-Function Devices (MFD) |
2 | ||
3 | These devices comprise a nexus for heterogeneous hardware blocks containing | |
4 | more than one non-unique yet varying hardware functionality. | |
5 | ||
6 | A typical MFD can be: | |
7 | ||
8 | - A mixed signal ASIC on an external bus, sometimes a PMIC (Power Management | |
9 | Integrated Circuit) that is manufactured in a lower technology node (rough | |
10 | silicon) that handles analog drivers for things like audio amplifiers, LED | |
11 | drivers, level shifters, PHY (physical interfaces to things like USB or | |
12 | ethernet), regulators etc. | |
13 | ||
14 | - A range of memory registers containing "miscellaneous system registers" also | |
15 | known as a system controller "syscon" or any other memory range containing a | |
16 | mix of unrelated hardware devices. | |
17 | ||
18 | Optional properties: | |
19 | ||
20 | - compatible : "simple-mfd" - this signifies that the operating system should | |
21 | consider all subnodes of the MFD device as separate devices akin to how | |
bbc741c6 | 22 | "simple-bus" indicates when to see subnodes as children for a simple |
22869a9e LW |
23 | memory-mapped bus. For more complex devices, when the nexus driver has to |
24 | probe registers to figure out what child devices exist etc, this should not | |
25 | be used. In the latter case the child devices will be determined by the | |
26 | operating system. | |
27 | ||
0894e987 AJ |
28 | - ranges: Describes the address mapping relationship to the parent. Should set |
29 | the child's base address to 0, the physical address within parent's address | |
30 | space, and the length of the address map. | |
31 | ||
32 | - #address-cells: Specifies the number of cells used to represent physical base | |
33 | addresses. Must be present if ranges is used. | |
34 | ||
35 | - #size-cells: Specifies the number of cells used to represent the size of an | |
36 | address. Must be present if ranges is used. | |
37 | ||
22869a9e LW |
38 | Example: |
39 | ||
40 | foo@1000 { | |
41 | compatible = "syscon", "simple-mfd"; | |
42 | reg = <0x01000 0x1000>; | |
43 | ||
48c926cd | 44 | led@8.0 { |
22869a9e LW |
45 | compatible = "register-bit-led"; |
46 | offset = <0x08>; | |
47 | mask = <0x01>; | |
48 | label = "myled"; | |
49 | default-state = "on"; | |
50 | }; | |
51 | }; |