18c2ecf20Sopenharmony_ciSystem Control and Management Interface (SCMI) Message Protocol 28c2ecf20Sopenharmony_ci---------------------------------------------------------- 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ciThe SCMI is intended to allow agents such as OSPM to manage various functions 58c2ecf20Sopenharmony_cithat are provided by the hardware platform it is running on, including power 68c2ecf20Sopenharmony_ciand performance functions. 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ciThis binding is intended to define the interface the firmware implementing 98c2ecf20Sopenharmony_cithe SCMI as described in ARM document number ARM DEN 0056A ("ARM System Control 108c2ecf20Sopenharmony_ciand Management Interface Platform Design Document")[0] provide for OSPM in 118c2ecf20Sopenharmony_cithe device tree. 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ciRequired properties: 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ciThe scmi node with the following properties shall be under the /firmware/ node. 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci- compatible : shall be "arm,scmi" or "arm,scmi-smc" for smc/hvc transports 188c2ecf20Sopenharmony_ci- mboxes: List of phandle and mailbox channel specifiers. It should contain 198c2ecf20Sopenharmony_ci exactly one or two mailboxes, one for transmitting messages("tx") 208c2ecf20Sopenharmony_ci and another optional for receiving the notifications("rx") if 218c2ecf20Sopenharmony_ci supported. 228c2ecf20Sopenharmony_ci- shmem : List of phandle pointing to the shared memory(SHM) area as per 238c2ecf20Sopenharmony_ci generic mailbox client binding. 248c2ecf20Sopenharmony_ci- #address-cells : should be '1' if the device has sub-nodes, maps to 258c2ecf20Sopenharmony_ci protocol identifier for a given sub-node. 268c2ecf20Sopenharmony_ci- #size-cells : should be '0' as 'reg' property doesn't have any size 278c2ecf20Sopenharmony_ci associated with it. 288c2ecf20Sopenharmony_ci- arm,smc-id : SMC id required when using smc or hvc transports 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ciOptional properties: 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci- mbox-names: shall be "tx" or "rx" depending on mboxes entries. 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ciSee Documentation/devicetree/bindings/mailbox/mailbox.txt for more details 358c2ecf20Sopenharmony_ciabout the generic mailbox controller and client driver bindings. 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ciThe mailbox is the only permitted method of calling the SCMI firmware. 388c2ecf20Sopenharmony_ciMailbox doorbell is used as a mechanism to alert the presence of a 398c2ecf20Sopenharmony_cimessages and/or notification. 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ciEach protocol supported shall have a sub-node with corresponding compatible 428c2ecf20Sopenharmony_cias described in the following sections. If the platform supports dedicated 438c2ecf20Sopenharmony_cicommunication channel for a particular protocol, the 3 properties namely: 448c2ecf20Sopenharmony_cimboxes, mbox-names and shmem shall be present in the sub-node corresponding 458c2ecf20Sopenharmony_cito that protocol. 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ciClock/Performance bindings for the clocks/OPPs based on SCMI Message Protocol 488c2ecf20Sopenharmony_ci------------------------------------------------------------ 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ciThis binding uses the common clock binding[1]. 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ciRequired properties: 538c2ecf20Sopenharmony_ci- #clock-cells : Should be 1. Contains the Clock ID value used by SCMI commands. 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ciPower domain bindings for the power domains based on SCMI Message Protocol 568c2ecf20Sopenharmony_ci------------------------------------------------------------ 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ciThis binding for the SCMI power domain providers uses the generic power 598c2ecf20Sopenharmony_cidomain binding[2]. 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ciRequired properties: 628c2ecf20Sopenharmony_ci - #power-domain-cells : Should be 1. Contains the device or the power 638c2ecf20Sopenharmony_ci domain ID value used by SCMI commands. 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ciSensor bindings for the sensors based on SCMI Message Protocol 668c2ecf20Sopenharmony_ci-------------------------------------------------------------- 678c2ecf20Sopenharmony_ciSCMI provides an API to access the various sensors on the SoC. 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ciRequired properties: 708c2ecf20Sopenharmony_ci- #thermal-sensor-cells: should be set to 1. This property follows the 718c2ecf20Sopenharmony_ci thermal device tree bindings[3]. 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ci Valid cell values are raw identifiers (Sensor ID) 748c2ecf20Sopenharmony_ci as used by the firmware. Refer to platform details 758c2ecf20Sopenharmony_ci for your implementation for the IDs to use. 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ciReset signal bindings for the reset domains based on SCMI Message Protocol 788c2ecf20Sopenharmony_ci------------------------------------------------------------ 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ciThis binding for the SCMI reset domain providers uses the generic reset 818c2ecf20Sopenharmony_cisignal binding[5]. 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_ciRequired properties: 848c2ecf20Sopenharmony_ci - #reset-cells : Should be 1. Contains the reset domain ID value used 858c2ecf20Sopenharmony_ci by SCMI commands. 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_ciSRAM and Shared Memory for SCMI 888c2ecf20Sopenharmony_ci------------------------------- 898c2ecf20Sopenharmony_ci 908c2ecf20Sopenharmony_ciA small area of SRAM is reserved for SCMI communication between application 918c2ecf20Sopenharmony_ciprocessors and SCP. 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ciThe properties should follow the generic mmio-sram description found in [4] 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_ciEach sub-node represents the reserved area for SCMI. 968c2ecf20Sopenharmony_ci 978c2ecf20Sopenharmony_ciRequired sub-node properties: 988c2ecf20Sopenharmony_ci- reg : The base offset and size of the reserved area with the SRAM 998c2ecf20Sopenharmony_ci- compatible : should be "arm,scmi-shmem" for Non-secure SRAM based 1008c2ecf20Sopenharmony_ci shared memory 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_ci[0] http://infocenter.arm.com/help/topic/com.arm.doc.den0056a/index.html 1038c2ecf20Sopenharmony_ci[1] Documentation/devicetree/bindings/clock/clock-bindings.txt 1048c2ecf20Sopenharmony_ci[2] Documentation/devicetree/bindings/power/power-domain.yaml 1058c2ecf20Sopenharmony_ci[3] Documentation/devicetree/bindings/thermal/thermal*.yaml 1068c2ecf20Sopenharmony_ci[4] Documentation/devicetree/bindings/sram/sram.yaml 1078c2ecf20Sopenharmony_ci[5] Documentation/devicetree/bindings/reset/reset.txt 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_ciExample: 1108c2ecf20Sopenharmony_ci 1118c2ecf20Sopenharmony_cisram@50000000 { 1128c2ecf20Sopenharmony_ci compatible = "mmio-sram"; 1138c2ecf20Sopenharmony_ci reg = <0x0 0x50000000 0x0 0x10000>; 1148c2ecf20Sopenharmony_ci 1158c2ecf20Sopenharmony_ci #address-cells = <1>; 1168c2ecf20Sopenharmony_ci #size-cells = <1>; 1178c2ecf20Sopenharmony_ci ranges = <0 0x0 0x50000000 0x10000>; 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_ci cpu_scp_lpri: scp-shmem@0 { 1208c2ecf20Sopenharmony_ci compatible = "arm,scmi-shmem"; 1218c2ecf20Sopenharmony_ci reg = <0x0 0x200>; 1228c2ecf20Sopenharmony_ci }; 1238c2ecf20Sopenharmony_ci 1248c2ecf20Sopenharmony_ci cpu_scp_hpri: scp-shmem@200 { 1258c2ecf20Sopenharmony_ci compatible = "arm,scmi-shmem"; 1268c2ecf20Sopenharmony_ci reg = <0x200 0x200>; 1278c2ecf20Sopenharmony_ci }; 1288c2ecf20Sopenharmony_ci}; 1298c2ecf20Sopenharmony_ci 1308c2ecf20Sopenharmony_cimailbox@40000000 { 1318c2ecf20Sopenharmony_ci .... 1328c2ecf20Sopenharmony_ci #mbox-cells = <1>; 1338c2ecf20Sopenharmony_ci reg = <0x0 0x40000000 0x0 0x10000>; 1348c2ecf20Sopenharmony_ci}; 1358c2ecf20Sopenharmony_ci 1368c2ecf20Sopenharmony_cifirmware { 1378c2ecf20Sopenharmony_ci 1388c2ecf20Sopenharmony_ci ... 1398c2ecf20Sopenharmony_ci 1408c2ecf20Sopenharmony_ci scmi { 1418c2ecf20Sopenharmony_ci compatible = "arm,scmi"; 1428c2ecf20Sopenharmony_ci mboxes = <&mailbox 0 &mailbox 1>; 1438c2ecf20Sopenharmony_ci mbox-names = "tx", "rx"; 1448c2ecf20Sopenharmony_ci shmem = <&cpu_scp_lpri &cpu_scp_hpri>; 1458c2ecf20Sopenharmony_ci #address-cells = <1>; 1468c2ecf20Sopenharmony_ci #size-cells = <0>; 1478c2ecf20Sopenharmony_ci 1488c2ecf20Sopenharmony_ci scmi_devpd: protocol@11 { 1498c2ecf20Sopenharmony_ci reg = <0x11>; 1508c2ecf20Sopenharmony_ci #power-domain-cells = <1>; 1518c2ecf20Sopenharmony_ci }; 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_ci scmi_dvfs: protocol@13 { 1548c2ecf20Sopenharmony_ci reg = <0x13>; 1558c2ecf20Sopenharmony_ci #clock-cells = <1>; 1568c2ecf20Sopenharmony_ci }; 1578c2ecf20Sopenharmony_ci 1588c2ecf20Sopenharmony_ci scmi_clk: protocol@14 { 1598c2ecf20Sopenharmony_ci reg = <0x14>; 1608c2ecf20Sopenharmony_ci #clock-cells = <1>; 1618c2ecf20Sopenharmony_ci }; 1628c2ecf20Sopenharmony_ci 1638c2ecf20Sopenharmony_ci scmi_sensors0: protocol@15 { 1648c2ecf20Sopenharmony_ci reg = <0x15>; 1658c2ecf20Sopenharmony_ci #thermal-sensor-cells = <1>; 1668c2ecf20Sopenharmony_ci }; 1678c2ecf20Sopenharmony_ci 1688c2ecf20Sopenharmony_ci scmi_reset: protocol@16 { 1698c2ecf20Sopenharmony_ci reg = <0x16>; 1708c2ecf20Sopenharmony_ci #reset-cells = <1>; 1718c2ecf20Sopenharmony_ci }; 1728c2ecf20Sopenharmony_ci }; 1738c2ecf20Sopenharmony_ci}; 1748c2ecf20Sopenharmony_ci 1758c2ecf20Sopenharmony_cicpu@0 { 1768c2ecf20Sopenharmony_ci ... 1778c2ecf20Sopenharmony_ci reg = <0 0>; 1788c2ecf20Sopenharmony_ci clocks = <&scmi_dvfs 0>; 1798c2ecf20Sopenharmony_ci}; 1808c2ecf20Sopenharmony_ci 1818c2ecf20Sopenharmony_cihdlcd@7ff60000 { 1828c2ecf20Sopenharmony_ci ... 1838c2ecf20Sopenharmony_ci reg = <0 0x7ff60000 0 0x1000>; 1848c2ecf20Sopenharmony_ci clocks = <&scmi_clk 4>; 1858c2ecf20Sopenharmony_ci power-domains = <&scmi_devpd 1>; 1868c2ecf20Sopenharmony_ci resets = <&scmi_reset 10>; 1878c2ecf20Sopenharmony_ci}; 1888c2ecf20Sopenharmony_ci 1898c2ecf20Sopenharmony_cithermal-zones { 1908c2ecf20Sopenharmony_ci soc_thermal { 1918c2ecf20Sopenharmony_ci polling-delay-passive = <100>; 1928c2ecf20Sopenharmony_ci polling-delay = <1000>; 1938c2ecf20Sopenharmony_ci /* sensor ID */ 1948c2ecf20Sopenharmony_ci thermal-sensors = <&scmi_sensors0 3>; 1958c2ecf20Sopenharmony_ci ... 1968c2ecf20Sopenharmony_ci }; 1978c2ecf20Sopenharmony_ci}; 198