Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / Documentation / devicetree / bindings / arm / vexpress-sysreg.txt
diff --git a/kernel/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt b/kernel/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt
new file mode 100644 (file)
index 0000000..00318d0
--- /dev/null
@@ -0,0 +1,103 @@
+ARM Versatile Express system registers
+--------------------------------------
+
+This is a system control registers block, providing multiple low level
+platform functions like board detection and identification, software
+interrupt generation, MMC and NOR Flash control etc.
+
+Required node properties:
+- compatible value : = "arm,vexpress,sysreg";
+- reg : physical base address and the size of the registers window
+
+Deprecated properties, replaced by GPIO subnodes (see below):
+- gpio-controller : specifies that the node is a GPIO controller
+- #gpio-cells : size of the GPIO specifier, should be 2:
+  - first cell is the pseudo-GPIO line number:
+    0 - MMC CARDIN
+    1 - MMC WPROT
+    2 - NOR FLASH WPn
+  - second cell can take standard GPIO flags (currently ignored).
+
+Control registers providing pseudo-GPIO lines must be represented
+by subnodes, each of them requiring the following properties:
+- compatible value : one of
+                       "arm,vexpress-sysreg,sys_led"
+                       "arm,vexpress-sysreg,sys_mci"
+                       "arm,vexpress-sysreg,sys_flash"
+- gpio-controller : makes the node a GPIO controller
+- #gpio-cells : size of the GPIO specifier, must be 2:
+  - first cell is the function number:
+    - for sys_led : 0..7 = LED 0..7
+    - for sys_mci : 0 = MMC CARDIN, 1 = MMC WPROT
+    - for sys_flash : 0 = NOR FLASH WPn
+  - second cell can take standard GPIO flags (currently ignored).
+
+Example:
+       v2m_sysreg: sysreg@10000000 {
+               compatible = "arm,vexpress-sysreg";
+               reg = <0x10000000 0x1000>;
+
+               v2m_led_gpios: sys_led@08 {
+                       compatible = "arm,vexpress-sysreg,sys_led";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+               };
+
+               v2m_mmc_gpios: sys_mci@48 {
+                       compatible = "arm,vexpress-sysreg,sys_mci";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+               };
+
+               v2m_flash_gpios: sys_flash@4c {
+                       compatible = "arm,vexpress-sysreg,sys_flash";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+               };
+       };
+
+This block also can also act a bridge to the platform's configuration
+bus via "system control" interface, addressing devices with site number,
+position in the board stack, config controller, function and device
+numbers - see motherboard's TRM for more details. All configuration
+controller accessible via this interface must reference the sysreg
+node via "arm,vexpress,config-bridge" phandle and define appropriate
+topology properties - see main vexpress node documentation for more
+details. Each child of such node describes one function and must
+define the following properties:
+- compatible value : must be one of (corresponding to the TRM):
+       "arm,vexpress-amp"
+       "arm,vexpress-dvimode"
+       "arm,vexpress-energy"
+       "arm,vexpress-muxfpga"
+       "arm,vexpress-osc"
+       "arm,vexpress-power"
+       "arm,vexpress-reboot"
+       "arm,vexpress-reset"
+       "arm,vexpress-scc"
+       "arm,vexpress-shutdown"
+       "arm,vexpress-temp"
+       "arm,vexpress-volt"
+- arm,vexpress-sysreg,func : must contain a set of two cells long groups:
+  - first cell of each group defines the function number
+    (eg. 1 for clock generator, 2 for voltage regulators etc.)
+  - second cell of each group defines device number (eg. osc 0,
+    osc 1 etc.)
+  - some functions (eg. energy meter, with its 64 bit long counter)
+    are using more than one function/device number pair
+
+Example:
+       mcc {
+               compatible = "arm,vexpress,config-bus";
+               arm,vexpress,config-bridge = <&v2m_sysreg>;
+
+               osc@0 {
+                       compatible = "arm,vexpress-osc";
+                       arm,vexpress-sysreg,func = <1 0>;
+               };
+
+               energy@0 {
+                       compatible = "arm,vexpress-energy";
+                       arm,vexpress-sysreg,func = <13 0>, <13 1>;
+               };
+       };