| 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>; |
| }; |
| }; |