GNU Linux-libre 4.14.266-gnu1
[releases.git] / Documentation / devicetree / bindings / arm / vexpress-sysreg.txt
1 ARM Versatile Express system registers
2 --------------------------------------
3
4 This is a system control registers block, providing multiple low level
5 platform functions like board detection and identification, software
6 interrupt generation, MMC and NOR Flash control etc.
7
8 Required node properties:
9 - compatible value : = "arm,vexpress,sysreg";
10 - reg : physical base address and the size of the registers window
11
12 Deprecated properties, replaced by GPIO subnodes (see below):
13 - gpio-controller : specifies that the node is a GPIO controller
14 - #gpio-cells : size of the GPIO specifier, should be 2:
15   - first cell is the pseudo-GPIO line number:
16     0 - MMC CARDIN
17     1 - MMC WPROT
18     2 - NOR FLASH WPn
19   - second cell can take standard GPIO flags (currently ignored).
20
21 Control registers providing pseudo-GPIO lines must be represented
22 by subnodes, each of them requiring the following properties:
23 - compatible value : one of
24                         "arm,vexpress-sysreg,sys_led"
25                         "arm,vexpress-sysreg,sys_mci"
26                         "arm,vexpress-sysreg,sys_flash"
27 - gpio-controller : makes the node a GPIO controller
28 - #gpio-cells : size of the GPIO specifier, must be 2:
29   - first cell is the function number:
30     - for sys_led : 0..7 = LED 0..7
31     - for sys_mci : 0 = MMC CARDIN, 1 = MMC WPROT
32     - for sys_flash : 0 = NOR FLASH WPn
33   - second cell can take standard GPIO flags (currently ignored).
34
35 Example:
36         v2m_sysreg: sysreg@10000000 {
37                 compatible = "arm,vexpress-sysreg";
38                 reg = <0x10000000 0x1000>;
39
40                 v2m_led_gpios: sys_led@08 {
41                         compatible = "arm,vexpress-sysreg,sys_led";
42                         gpio-controller;
43                         #gpio-cells = <2>;
44                 };
45
46                 v2m_mmc_gpios: sys_mci@48 {
47                         compatible = "arm,vexpress-sysreg,sys_mci";
48                         gpio-controller;
49                         #gpio-cells = <2>;
50                 };
51
52                 v2m_flash_gpios: sys_flash@4c {
53                         compatible = "arm,vexpress-sysreg,sys_flash";
54                         gpio-controller;
55                         #gpio-cells = <2>;
56                 };
57         };
58
59 This block also can also act a bridge to the platform's configuration
60 bus via "system control" interface, addressing devices with site number,
61 position in the board stack, config controller, function and device
62 numbers - see motherboard's TRM for more details. All configuration
63 controller accessible via this interface must reference the sysreg
64 node via "arm,vexpress,config-bridge" phandle and define appropriate
65 topology properties - see main vexpress node documentation for more
66 details. Each child of such node describes one function and must
67 define the following properties:
68 - compatible value : must be one of (corresponding to the TRM):
69         "arm,vexpress-amp"
70         "arm,vexpress-dvimode"
71         "arm,vexpress-energy"
72         "arm,vexpress-muxfpga"
73         "arm,vexpress-osc"
74         "arm,vexpress-power"
75         "arm,vexpress-reboot"
76         "arm,vexpress-reset"
77         "arm,vexpress-scc"
78         "arm,vexpress-shutdown"
79         "arm,vexpress-temp"
80         "arm,vexpress-volt"
81 - arm,vexpress-sysreg,func : must contain a set of two cells long groups:
82   - first cell of each group defines the function number
83     (eg. 1 for clock generator, 2 for voltage regulators etc.)
84   - second cell of each group defines device number (eg. osc 0,
85     osc 1 etc.)
86   - some functions (eg. energy meter, with its 64 bit long counter)
87     are using more than one function/device number pair
88
89 Example:
90         mcc {
91                 compatible = "arm,vexpress,config-bus";
92                 arm,vexpress,config-bridge = <&v2m_sysreg>;
93
94                 osc@0 {
95                         compatible = "arm,vexpress-osc";
96                         arm,vexpress-sysreg,func = <1 0>;
97                 };
98
99                 energy@0 {
100                         compatible = "arm,vexpress-energy";
101                         arm,vexpress-sysreg,func = <13 0>, <13 1>;
102                 };
103         };