Kernel-4.18.0-80.el8_vexpress-sysreg

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@8 {
        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>;
    };
};