11496be71SSudeep Holla# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 21496be71SSudeep Holla# Copyright 2021 ARM Ltd. 31496be71SSudeep Holla%YAML 1.2 41496be71SSudeep Holla--- 51496be71SSudeep Holla$id: http://devicetree.org/schemas/firmware/arm,scpi.yaml# 61496be71SSudeep Holla$schema: http://devicetree.org/meta-schemas/core.yaml# 71496be71SSudeep Holla 8*84e85359SKrzysztof Kozlowskititle: System Control and Power Interface (SCPI) Message Protocol 91496be71SSudeep Holla 101496be71SSudeep Hollamaintainers: 111496be71SSudeep Holla - Sudeep Holla <sudeep.holla@arm.com> 121496be71SSudeep Holla 131496be71SSudeep Holladescription: | 141496be71SSudeep Holla Firmware implementing the SCPI described in ARM document number ARM DUI 151496be71SSudeep Holla 0922B ("ARM Compute Subsystem SCP: Message Interface Protocols")[0] can be 161496be71SSudeep Holla used by Linux to initiate various system control and power operations. 171496be71SSudeep Holla 181496be71SSudeep Holla This binding is intended to define the interface the firmware implementing 191496be71SSudeep Holla the SCPI provide for OSPM in the device tree. 201496be71SSudeep Holla 211496be71SSudeep Holla [0] http://infocenter.arm.com/help/topic/com.arm.doc.dui0922b/index.html 221496be71SSudeep Holla 231496be71SSudeep Hollaproperties: 241496be71SSudeep Holla $nodename: 251496be71SSudeep Holla const: scpi 261496be71SSudeep Holla 271496be71SSudeep Holla compatible: 281496be71SSudeep Holla description: 291496be71SSudeep Holla SCPI compliant firmware complying to SCPI v1.0 and above OR 301496be71SSudeep Holla SCPI compliant firmware complying to all unversioned releases 311496be71SSudeep Holla prior to SCPI v1.0 321496be71SSudeep Holla oneOf: 331496be71SSudeep Holla - const: arm,scpi # SCPI v1.0 and above 341496be71SSudeep Holla - const: arm,scpi-pre-1.0 # Unversioned SCPI before v1.0 3501c70dfaSSudeep Holla - items: 3601c70dfaSSudeep Holla - enum: 3701c70dfaSSudeep Holla - amlogic,meson-gxbb-scpi 3801c70dfaSSudeep Holla - const: arm,scpi-pre-1.0 391496be71SSudeep Holla 401496be71SSudeep Holla mboxes: 411496be71SSudeep Holla description: 421496be71SSudeep Holla List of phandle and mailbox channel specifiers. All the channels reserved 431496be71SSudeep Holla by remote SCP firmware for use by SCPI message protocol should be 441496be71SSudeep Holla specified in any order. 451496be71SSudeep Holla minItems: 1 4617bf6b7cSGeert Uytterhoeven maxItems: 4 471496be71SSudeep Holla 481496be71SSudeep Holla shmem: 491496be71SSudeep Holla description: 501496be71SSudeep Holla List of phandle pointing to the shared memory(SHM) area between the 511496be71SSudeep Holla processors using these mailboxes for IPC, one for each mailbox SHM can 521496be71SSudeep Holla be any memory reserved for the purpose of this communication between the 531496be71SSudeep Holla processors. 541496be71SSudeep Holla minItems: 1 5517bf6b7cSGeert Uytterhoeven maxItems: 4 561496be71SSudeep Holla 571496be71SSudeep Holla power-controller: 581496be71SSudeep Holla type: object 591496be71SSudeep Holla description: 601496be71SSudeep Holla This sub-node represents SCPI power domain controller. 611496be71SSudeep Holla 621496be71SSudeep Holla properties: 631496be71SSudeep Holla compatible: 641496be71SSudeep Holla const: arm,scpi-power-domains 651496be71SSudeep Holla 661496be71SSudeep Holla '#power-domain-cells': 671496be71SSudeep Holla const: 1 681496be71SSudeep Holla 691496be71SSudeep Holla num-domains: 701496be71SSudeep Holla $ref: /schemas/types.yaml#/definitions/uint32 711496be71SSudeep Holla description: 721496be71SSudeep Holla Total number of power domains provided by SCPI. This is needed as 731496be71SSudeep Holla the SCPI message protocol lacks a mechanism to query this 741496be71SSudeep Holla information at runtime. 751496be71SSudeep Holla 761496be71SSudeep Holla required: 771496be71SSudeep Holla - compatible 781496be71SSudeep Holla - '#power-domain-cells' 791496be71SSudeep Holla - num-domains 801496be71SSudeep Holla 811496be71SSudeep Holla additionalProperties: false 821496be71SSudeep Holla 831496be71SSudeep Holla sensors: 841496be71SSudeep Holla type: object 851496be71SSudeep Holla description: | 861496be71SSudeep Holla This sub-node represents SCPI sensors controller. 871496be71SSudeep Holla 881496be71SSudeep Holla properties: 891496be71SSudeep Holla compatible: 9001c70dfaSSudeep Holla oneOf: 9101c70dfaSSudeep Holla - const: arm,scpi-sensors 9201c70dfaSSudeep Holla - items: 9301c70dfaSSudeep Holla - enum: 9401c70dfaSSudeep Holla - amlogic,meson-gxbb-scpi-sensors 9501c70dfaSSudeep Holla - const: arm,scpi-sensors 961496be71SSudeep Holla 971496be71SSudeep Holla '#thermal-sensor-cells': 981496be71SSudeep Holla const: 1 991496be71SSudeep Holla 1001496be71SSudeep Holla required: 1011496be71SSudeep Holla - compatible 1021496be71SSudeep Holla - '#thermal-sensor-cells' 1031496be71SSudeep Holla 1041496be71SSudeep Holla additionalProperties: false 1051496be71SSudeep Holla 1061496be71SSudeep Holla clocks: 1071496be71SSudeep Holla type: object 1081496be71SSudeep Holla description: 1091496be71SSudeep Holla This is the container node. Each sub-node represents one of the types 1101496be71SSudeep Holla of clock controller - indexed or full range. 1111496be71SSudeep Holla 1121496be71SSudeep Holla properties: 1131496be71SSudeep Holla compatible: 1141496be71SSudeep Holla const: arm,scpi-clocks 1151496be71SSudeep Holla 1161496be71SSudeep Holla patternProperties: 1171496be71SSudeep Holla "^clocks-[0-9a-f]+$": 1181496be71SSudeep Holla type: object 1191496be71SSudeep Holla description: | 1201496be71SSudeep Holla This sub-node represents one of the types of clock controller 1211496be71SSudeep Holla - indexed or full range. 1221496be71SSudeep Holla 1231496be71SSudeep Holla "arm,scpi-dvfs-clocks" - all the clocks that are variable and index 1241496be71SSudeep Holla based. These clocks don't provide an entire range of values between 1251496be71SSudeep Holla the limits but only discrete points within the range. The firmware 1261496be71SSudeep Holla provides the mapping for each such operating frequency and the index 1271496be71SSudeep Holla associated with it. The firmware also manages the voltage scaling 1281496be71SSudeep Holla appropriately with the clock scaling. 1291496be71SSudeep Holla 1301496be71SSudeep Holla "arm,scpi-variable-clocks" - all the clocks that are variable and 1311496be71SSudeep Holla provide full range within the specified range. The firmware provides 1321496be71SSudeep Holla the range of values within a specified range. 1331496be71SSudeep Holla 1341496be71SSudeep Holla properties: 1351496be71SSudeep Holla compatible: 1361c3ac086SRob Herring enum: 1371c3ac086SRob Herring - arm,scpi-dvfs-clocks 1381c3ac086SRob Herring - arm,scpi-variable-clocks 1391496be71SSudeep Holla 1401496be71SSudeep Holla '#clock-cells': 1411496be71SSudeep Holla const: 1 1421496be71SSudeep Holla 1431496be71SSudeep Holla clock-output-names: true 1441496be71SSudeep Holla 1451496be71SSudeep Holla clock-indices: 1461496be71SSudeep Holla $ref: /schemas/types.yaml#/definitions/uint32-array 1471496be71SSudeep Holla description: 1481496be71SSudeep Holla The identifying number for the clocks(i.e.clock_id) in the node. 1491496be71SSudeep Holla It can be non linear and hence provide the mapping of identifiers 1501496be71SSudeep Holla into the clock-output-names array. 1511496be71SSudeep Holla 1521496be71SSudeep Holla required: 1531496be71SSudeep Holla - compatible 1541496be71SSudeep Holla - '#clock-cells' 1551496be71SSudeep Holla - clock-output-names 1561496be71SSudeep Holla - clock-indices 1571496be71SSudeep Holla 1581496be71SSudeep Holla additionalProperties: false 1591496be71SSudeep Holla 1601496be71SSudeep Holla required: 1611496be71SSudeep Holla - compatible 1621496be71SSudeep Holla 1631496be71SSudeep Holla additionalProperties: false 1641496be71SSudeep Holla 1651496be71SSudeep HollaadditionalProperties: false 1661496be71SSudeep Holla 1671496be71SSudeep Hollarequired: 1681496be71SSudeep Holla - compatible 1691496be71SSudeep Holla - mboxes 1701496be71SSudeep Holla - shmem 1711496be71SSudeep Holla 1721496be71SSudeep Hollaexamples: 1731496be71SSudeep Holla - | 1741496be71SSudeep Holla firmware { 1751496be71SSudeep Holla scpi { 1761496be71SSudeep Holla compatible = "arm,scpi"; 1771496be71SSudeep Holla mboxes = <&mhuA 1>; 1781496be71SSudeep Holla shmem = <&cpu_scp_hpri>; /* HP-NonSecure */ 1791496be71SSudeep Holla 1801496be71SSudeep Holla scpi_devpd: power-controller { 1811496be71SSudeep Holla compatible = "arm,scpi-power-domains"; 1821496be71SSudeep Holla num-domains = <2>; 1831496be71SSudeep Holla #power-domain-cells = <1>; 1841496be71SSudeep Holla }; 1851496be71SSudeep Holla 1861496be71SSudeep Holla clocks { 1871496be71SSudeep Holla compatible = "arm,scpi-clocks"; 1881496be71SSudeep Holla 1891496be71SSudeep Holla scpi_dvfs: clocks-0 { 1901496be71SSudeep Holla compatible = "arm,scpi-dvfs-clocks"; 1911496be71SSudeep Holla #clock-cells = <1>; 1921496be71SSudeep Holla clock-indices = <0>, <1>, <2>; 1931496be71SSudeep Holla clock-output-names = "atlclk", "aplclk","gpuclk"; 1941496be71SSudeep Holla }; 1951496be71SSudeep Holla 1961496be71SSudeep Holla scpi_clk: clocks-1 { 1971496be71SSudeep Holla compatible = "arm,scpi-variable-clocks"; 1981496be71SSudeep Holla #clock-cells = <1>; 1991496be71SSudeep Holla clock-indices = <3>, <4>; 2001496be71SSudeep Holla clock-output-names = "pxlclk0", "pxlclk1"; 2011496be71SSudeep Holla }; 2021496be71SSudeep Holla }; 2031496be71SSudeep Holla 2041496be71SSudeep Holla scpi_sensors: sensors { 2051496be71SSudeep Holla compatible = "arm,scpi-sensors"; 2061496be71SSudeep Holla #thermal-sensor-cells = <1>; 2071496be71SSudeep Holla }; 2081496be71SSudeep Holla 2091496be71SSudeep Holla }; 2101496be71SSudeep Holla }; 2111496be71SSudeep Holla 2121496be71SSudeep Holla soc { 2131496be71SSudeep Holla #address-cells = <2>; 2141496be71SSudeep Holla #size-cells = <2>; 2151496be71SSudeep Holla 2161496be71SSudeep Holla sram@50000000 { 2171496be71SSudeep Holla compatible = "mmio-sram"; 2181496be71SSudeep Holla reg = <0x0 0x50000000 0x0 0x10000>; 2191496be71SSudeep Holla 2201496be71SSudeep Holla #address-cells = <1>; 2211496be71SSudeep Holla #size-cells = <1>; 2221496be71SSudeep Holla ranges = <0 0x0 0x50000000 0x10000>; 2231496be71SSudeep Holla 2241496be71SSudeep Holla cpu_scp_lpri: scp-sram-section@0 { 2251496be71SSudeep Holla compatible = "arm,scp-shmem"; 2261496be71SSudeep Holla reg = <0x0 0x200>; 2271496be71SSudeep Holla }; 2281496be71SSudeep Holla 2291496be71SSudeep Holla cpu_scp_hpri: scp-sram-section@200 { 2301496be71SSudeep Holla compatible = "arm,scp-shmem"; 2311496be71SSudeep Holla reg = <0x200 0x200>; 2321496be71SSudeep Holla }; 2331496be71SSudeep Holla }; 2341496be71SSudeep Holla }; 2351496be71SSudeep Holla 23601c70dfaSSudeep Holla - | 23701c70dfaSSudeep Holla firmware { 23801c70dfaSSudeep Holla scpi { 23901c70dfaSSudeep Holla compatible = "amlogic,meson-gxbb-scpi", "arm,scpi-pre-1.0"; 24017bf6b7cSGeert Uytterhoeven mboxes = <&mailbox 1>, <&mailbox 2>; 24139bd2b6aSRob Herring shmem = <&cpu_scp_lpri>, <&cpu_scp_hpri>; 24201c70dfaSSudeep Holla 24301c70dfaSSudeep Holla scpi_sensors1: sensors { 24401c70dfaSSudeep Holla compatible = "amlogic,meson-gxbb-scpi-sensors", "arm,scpi-sensors"; 24501c70dfaSSudeep Holla #thermal-sensor-cells = <1>; 24601c70dfaSSudeep Holla }; 24701c70dfaSSudeep Holla }; 24801c70dfaSSudeep Holla }; 2491496be71SSudeep Holla... 250