Path: blob/main/sys/contrib/device-tree/Bindings/arm/arm,scmi.txt
48375 views
System Control and Management Interface (SCMI) Message Protocol1----------------------------------------------------------23The SCMI is intended to allow agents such as OSPM to manage various functions4that are provided by the hardware platform it is running on, including power5and performance functions.67This binding is intended to define the interface the firmware implementing8the SCMI as described in ARM document number ARM DEN 0056A ("ARM System Control9and Management Interface Platform Design Document")[0] provide for OSPM in10the device tree.1112Required properties:1314The scmi node with the following properties shall be under the /firmware/ node.1516- compatible : shall be "arm,scmi" or "arm,scmi-smc" for smc/hvc transports17- mboxes: List of phandle and mailbox channel specifiers. It should contain18exactly one or two mailboxes, one for transmitting messages("tx")19and another optional for receiving the notifications("rx") if20supported.21- shmem : List of phandle pointing to the shared memory(SHM) area as per22generic mailbox client binding.23- #address-cells : should be '1' if the device has sub-nodes, maps to24protocol identifier for a given sub-node.25- #size-cells : should be '0' as 'reg' property doesn't have any size26associated with it.27- arm,smc-id : SMC id required when using smc or hvc transports2829Optional properties:3031- mbox-names: shall be "tx" or "rx" depending on mboxes entries.3233- interrupts : when using smc or hvc transports, this optional34property indicates that msg completion by the platform is indicated35by an interrupt rather than by the return of the smc call. This36should not be used except when the platform requires such behavior.3738- interrupt-names : if "interrupts" is present, interrupt-names must also39be present and have the value "a2p".4041See Documentation/devicetree/bindings/mailbox/mailbox.txt for more details42about the generic mailbox controller and client driver bindings.4344The mailbox is the only permitted method of calling the SCMI firmware.45Mailbox doorbell is used as a mechanism to alert the presence of a46messages and/or notification.4748Each protocol supported shall have a sub-node with corresponding compatible49as described in the following sections. If the platform supports dedicated50communication channel for a particular protocol, the 3 properties namely:51mboxes, mbox-names and shmem shall be present in the sub-node corresponding52to that protocol.5354Clock/Performance bindings for the clocks/OPPs based on SCMI Message Protocol55------------------------------------------------------------5657This binding uses the common clock binding[1].5859Required properties:60- #clock-cells : Should be 1. Contains the Clock ID value used by SCMI commands.6162Power domain bindings for the power domains based on SCMI Message Protocol63------------------------------------------------------------6465This binding for the SCMI power domain providers uses the generic power66domain binding[2].6768Required properties:69- #power-domain-cells : Should be 1. Contains the device or the power70domain ID value used by SCMI commands.7172Regulator bindings for the SCMI Regulator based on SCMI Message Protocol73------------------------------------------------------------74An SCMI Regulator is permanently bound to a well defined SCMI Voltage Domain,75and should be always positioned as a root regulator.76It does not support any current operation.7778SCMI Regulators are grouped under a 'regulators' node which in turn is a child79of the SCMI Voltage protocol node inside the desired SCMI instance node.8081This binding uses the common regulator binding[6].8283Required properties:84- reg : shall identify an existent SCMI Voltage Domain.8586Sensor bindings for the sensors based on SCMI Message Protocol87--------------------------------------------------------------88SCMI provides an API to access the various sensors on the SoC.8990Required properties:91- #thermal-sensor-cells: should be set to 1. This property follows the92thermal device tree bindings[3].9394Valid cell values are raw identifiers (Sensor ID)95as used by the firmware. Refer to platform details96for your implementation for the IDs to use.9798Reset signal bindings for the reset domains based on SCMI Message Protocol99------------------------------------------------------------100101This binding for the SCMI reset domain providers uses the generic reset102signal binding[5].103104Required properties:105- #reset-cells : Should be 1. Contains the reset domain ID value used106by SCMI commands.107108SRAM and Shared Memory for SCMI109-------------------------------110111A small area of SRAM is reserved for SCMI communication between application112processors and SCP.113114The properties should follow the generic mmio-sram description found in [4]115116Each sub-node represents the reserved area for SCMI.117118Required sub-node properties:119- reg : The base offset and size of the reserved area with the SRAM120- compatible : should be "arm,scmi-shmem" for Non-secure SRAM based121shared memory122123[0] http://infocenter.arm.com/help/topic/com.arm.doc.den0056a/index.html124[1] Documentation/devicetree/bindings/clock/clock-bindings.txt125[2] Documentation/devicetree/bindings/power/power-domain.yaml126[3] Documentation/devicetree/bindings/thermal/thermal*.yaml127[4] Documentation/devicetree/bindings/sram/sram.yaml128[5] Documentation/devicetree/bindings/reset/reset.txt129[6] Documentation/devicetree/bindings/regulator/regulator.yaml130131Example:132133sram@50000000 {134compatible = "mmio-sram";135reg = <0x0 0x50000000 0x0 0x10000>;136137#address-cells = <1>;138#size-cells = <1>;139ranges = <0 0x0 0x50000000 0x10000>;140141cpu_scp_lpri: scp-shmem@0 {142compatible = "arm,scmi-shmem";143reg = <0x0 0x200>;144};145146cpu_scp_hpri: scp-shmem@200 {147compatible = "arm,scmi-shmem";148reg = <0x200 0x200>;149};150};151152mailbox@40000000 {153....154#mbox-cells = <1>;155reg = <0x0 0x40000000 0x0 0x10000>;156};157158firmware {159160...161162scmi {163compatible = "arm,scmi";164mboxes = <&mailbox 0 &mailbox 1>;165mbox-names = "tx", "rx";166shmem = <&cpu_scp_lpri &cpu_scp_hpri>;167#address-cells = <1>;168#size-cells = <0>;169170scmi_devpd: protocol@11 {171reg = <0x11>;172#power-domain-cells = <1>;173};174175scmi_dvfs: protocol@13 {176reg = <0x13>;177#clock-cells = <1>;178};179180scmi_clk: protocol@14 {181reg = <0x14>;182#clock-cells = <1>;183};184185scmi_sensors0: protocol@15 {186reg = <0x15>;187#thermal-sensor-cells = <1>;188};189190scmi_reset: protocol@16 {191reg = <0x16>;192#reset-cells = <1>;193};194195scmi_voltage: protocol@17 {196reg = <0x17>;197198regulators {199regulator_devX: regulator@0 {200reg = <0x0>;201regulator-max-microvolt = <3300000>;202};203204regulator_devY: regulator@9 {205reg = <0x9>;206regulator-min-microvolt = <500000>;207regulator-max-microvolt = <4200000>;208};209210...211};212};213};214};215216cpu@0 {217...218reg = <0 0>;219clocks = <&scmi_dvfs 0>;220};221222hdlcd@7ff60000 {223...224reg = <0 0x7ff60000 0 0x1000>;225clocks = <&scmi_clk 4>;226power-domains = <&scmi_devpd 1>;227resets = <&scmi_reset 10>;228};229230thermal-zones {231soc_thermal {232polling-delay-passive = <100>;233polling-delay = <1000>;234/* sensor ID */235thermal-sensors = <&scmi_sensors0 3>;236...237};238};239240241