mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
974cc7b934
This patch - finally, after over 6 months! :-( - addresses Samuel's request to split the vexpress-sysreg driver into smaller portions and define the device in a form of MFD cells: * LEDs code has been completely removed and replaced with "gpio-leds" nodes in the tree (referencing dedicated GPIO subnodes in sysreg - bindings documentation updated); this also better fits the reality as some variants of the motherboard don't have all the LEDs populated * syscfg bridge code has been extracted into a separate driver (placed in drivers/misc for no better place) * all the ID & MISC registers are defined as sysconf making them available for other drivers should they need to use them (and also to the user via /sys/kernel/debug/regmap which can be helpful in platform debugging) Signed-off-by: Pawel Moll <pawel.moll@arm.com> Acked-by: Lee Jones <lee.jones@linaro.org>
104 lines
3.4 KiB
Plaintext
104 lines
3.4 KiB
Plaintext
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>;
|
|
};
|
|
};
|