Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

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