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 81496be71SSudeep Hollatitle: System Control and Power Interface (SCPI) Message Protocol bindings 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 461496be71SSudeep Holla 471496be71SSudeep Holla shmem: 481496be71SSudeep Holla description: 491496be71SSudeep Holla List of phandle pointing to the shared memory(SHM) area between the 501496be71SSudeep Holla processors using these mailboxes for IPC, one for each mailbox SHM can 511496be71SSudeep Holla be any memory reserved for the purpose of this communication between the 521496be71SSudeep Holla processors. 531496be71SSudeep Holla minItems: 1 541496be71SSudeep Holla 551496be71SSudeep Holla power-controller: 561496be71SSudeep Holla type: object 571496be71SSudeep Holla description: 581496be71SSudeep Holla This sub-node represents SCPI power domain controller. 591496be71SSudeep Holla 601496be71SSudeep Holla properties: 611496be71SSudeep Holla compatible: 621496be71SSudeep Holla const: arm,scpi-power-domains 631496be71SSudeep Holla 641496be71SSudeep Holla '#power-domain-cells': 651496be71SSudeep Holla const: 1 661496be71SSudeep Holla 671496be71SSudeep Holla num-domains: 681496be71SSudeep Holla $ref: /schemas/types.yaml#/definitions/uint32 691496be71SSudeep Holla description: 701496be71SSudeep Holla Total number of power domains provided by SCPI. This is needed as 711496be71SSudeep Holla the SCPI message protocol lacks a mechanism to query this 721496be71SSudeep Holla information at runtime. 731496be71SSudeep Holla 741496be71SSudeep Holla required: 751496be71SSudeep Holla - compatible 761496be71SSudeep Holla - '#power-domain-cells' 771496be71SSudeep Holla - num-domains 781496be71SSudeep Holla 791496be71SSudeep Holla additionalProperties: false 801496be71SSudeep Holla 811496be71SSudeep Holla sensors: 821496be71SSudeep Holla type: object 831496be71SSudeep Holla description: | 841496be71SSudeep Holla This sub-node represents SCPI sensors controller. 851496be71SSudeep Holla 861496be71SSudeep Holla properties: 871496be71SSudeep Holla compatible: 8801c70dfaSSudeep Holla oneOf: 8901c70dfaSSudeep Holla - const: arm,scpi-sensors 9001c70dfaSSudeep Holla - items: 9101c70dfaSSudeep Holla - enum: 9201c70dfaSSudeep Holla - amlogic,meson-gxbb-scpi-sensors 9301c70dfaSSudeep Holla - const: arm,scpi-sensors 941496be71SSudeep Holla 951496be71SSudeep Holla '#thermal-sensor-cells': 961496be71SSudeep Holla const: 1 971496be71SSudeep Holla 981496be71SSudeep Holla required: 991496be71SSudeep Holla - compatible 1001496be71SSudeep Holla - '#thermal-sensor-cells' 1011496be71SSudeep Holla 1021496be71SSudeep Holla additionalProperties: false 1031496be71SSudeep Holla 1041496be71SSudeep Holla clocks: 1051496be71SSudeep Holla type: object 1061496be71SSudeep Holla description: 1071496be71SSudeep Holla This is the container node. Each sub-node represents one of the types 1081496be71SSudeep Holla of clock controller - indexed or full range. 1091496be71SSudeep Holla 1101496be71SSudeep Holla properties: 1111496be71SSudeep Holla compatible: 1121496be71SSudeep Holla const: arm,scpi-clocks 1131496be71SSudeep Holla 1141496be71SSudeep Holla patternProperties: 1151496be71SSudeep Holla "^clocks-[0-9a-f]+$": 1161496be71SSudeep Holla type: object 1171496be71SSudeep Holla description: | 1181496be71SSudeep Holla This sub-node represents one of the types of clock controller 1191496be71SSudeep Holla - indexed or full range. 1201496be71SSudeep Holla 1211496be71SSudeep Holla "arm,scpi-dvfs-clocks" - all the clocks that are variable and index 1221496be71SSudeep Holla based. These clocks don't provide an entire range of values between 1231496be71SSudeep Holla the limits but only discrete points within the range. The firmware 1241496be71SSudeep Holla provides the mapping for each such operating frequency and the index 1251496be71SSudeep Holla associated with it. The firmware also manages the voltage scaling 1261496be71SSudeep Holla appropriately with the clock scaling. 1271496be71SSudeep Holla 1281496be71SSudeep Holla "arm,scpi-variable-clocks" - all the clocks that are variable and 1291496be71SSudeep Holla provide full range within the specified range. The firmware provides 1301496be71SSudeep Holla the range of values within a specified range. 1311496be71SSudeep Holla 1321496be71SSudeep Holla properties: 1331496be71SSudeep Holla compatible: 134*1c3ac086SRob Herring enum: 135*1c3ac086SRob Herring - arm,scpi-dvfs-clocks 136*1c3ac086SRob Herring - arm,scpi-variable-clocks 1371496be71SSudeep Holla 1381496be71SSudeep Holla '#clock-cells': 1391496be71SSudeep Holla const: 1 1401496be71SSudeep Holla 1411496be71SSudeep Holla clock-output-names: true 1421496be71SSudeep Holla 1431496be71SSudeep Holla clock-indices: 1441496be71SSudeep Holla $ref: /schemas/types.yaml#/definitions/uint32-array 1451496be71SSudeep Holla description: 1461496be71SSudeep Holla The identifying number for the clocks(i.e.clock_id) in the node. 1471496be71SSudeep Holla It can be non linear and hence provide the mapping of identifiers 1481496be71SSudeep Holla into the clock-output-names array. 1491496be71SSudeep Holla 1501496be71SSudeep Holla required: 1511496be71SSudeep Holla - compatible 1521496be71SSudeep Holla - '#clock-cells' 1531496be71SSudeep Holla - clock-output-names 1541496be71SSudeep Holla - clock-indices 1551496be71SSudeep Holla 1561496be71SSudeep Holla additionalProperties: false 1571496be71SSudeep Holla 1581496be71SSudeep Holla required: 1591496be71SSudeep Holla - compatible 1601496be71SSudeep Holla 1611496be71SSudeep Holla additionalProperties: false 1621496be71SSudeep Holla 1631496be71SSudeep HollaadditionalProperties: false 1641496be71SSudeep Holla 1651496be71SSudeep Hollarequired: 1661496be71SSudeep Holla - compatible 1671496be71SSudeep Holla - mboxes 1681496be71SSudeep Holla - shmem 1691496be71SSudeep Holla 1701496be71SSudeep Hollaexamples: 1711496be71SSudeep Holla - | 1721496be71SSudeep Holla firmware { 1731496be71SSudeep Holla scpi { 1741496be71SSudeep Holla compatible = "arm,scpi"; 1751496be71SSudeep Holla mboxes = <&mhuA 1>; 1761496be71SSudeep Holla shmem = <&cpu_scp_hpri>; /* HP-NonSecure */ 1771496be71SSudeep Holla 1781496be71SSudeep Holla scpi_devpd: power-controller { 1791496be71SSudeep Holla compatible = "arm,scpi-power-domains"; 1801496be71SSudeep Holla num-domains = <2>; 1811496be71SSudeep Holla #power-domain-cells = <1>; 1821496be71SSudeep Holla }; 1831496be71SSudeep Holla 1841496be71SSudeep Holla clocks { 1851496be71SSudeep Holla compatible = "arm,scpi-clocks"; 1861496be71SSudeep Holla 1871496be71SSudeep Holla scpi_dvfs: clocks-0 { 1881496be71SSudeep Holla compatible = "arm,scpi-dvfs-clocks"; 1891496be71SSudeep Holla #clock-cells = <1>; 1901496be71SSudeep Holla clock-indices = <0>, <1>, <2>; 1911496be71SSudeep Holla clock-output-names = "atlclk", "aplclk","gpuclk"; 1921496be71SSudeep Holla }; 1931496be71SSudeep Holla 1941496be71SSudeep Holla scpi_clk: clocks-1 { 1951496be71SSudeep Holla compatible = "arm,scpi-variable-clocks"; 1961496be71SSudeep Holla #clock-cells = <1>; 1971496be71SSudeep Holla clock-indices = <3>, <4>; 1981496be71SSudeep Holla clock-output-names = "pxlclk0", "pxlclk1"; 1991496be71SSudeep Holla }; 2001496be71SSudeep Holla }; 2011496be71SSudeep Holla 2021496be71SSudeep Holla scpi_sensors: sensors { 2031496be71SSudeep Holla compatible = "arm,scpi-sensors"; 2041496be71SSudeep Holla #thermal-sensor-cells = <1>; 2051496be71SSudeep Holla }; 2061496be71SSudeep Holla 2071496be71SSudeep Holla }; 2081496be71SSudeep Holla }; 2091496be71SSudeep Holla 2101496be71SSudeep Holla soc { 2111496be71SSudeep Holla #address-cells = <2>; 2121496be71SSudeep Holla #size-cells = <2>; 2131496be71SSudeep Holla 2141496be71SSudeep Holla sram@50000000 { 2151496be71SSudeep Holla compatible = "mmio-sram"; 2161496be71SSudeep Holla reg = <0x0 0x50000000 0x0 0x10000>; 2171496be71SSudeep Holla 2181496be71SSudeep Holla #address-cells = <1>; 2191496be71SSudeep Holla #size-cells = <1>; 2201496be71SSudeep Holla ranges = <0 0x0 0x50000000 0x10000>; 2211496be71SSudeep Holla 2221496be71SSudeep Holla cpu_scp_lpri: scp-sram-section@0 { 2231496be71SSudeep Holla compatible = "arm,scp-shmem"; 2241496be71SSudeep Holla reg = <0x0 0x200>; 2251496be71SSudeep Holla }; 2261496be71SSudeep Holla 2271496be71SSudeep Holla cpu_scp_hpri: scp-sram-section@200 { 2281496be71SSudeep Holla compatible = "arm,scp-shmem"; 2291496be71SSudeep Holla reg = <0x200 0x200>; 2301496be71SSudeep Holla }; 2311496be71SSudeep Holla }; 2321496be71SSudeep Holla }; 2331496be71SSudeep Holla 23401c70dfaSSudeep Holla - | 23501c70dfaSSudeep Holla firmware { 23601c70dfaSSudeep Holla scpi { 23701c70dfaSSudeep Holla compatible = "amlogic,meson-gxbb-scpi", "arm,scpi-pre-1.0"; 23801c70dfaSSudeep Holla mboxes = <&mailbox 1 &mailbox 2>; 23901c70dfaSSudeep Holla shmem = <&cpu_scp_lpri &cpu_scp_hpri>; 24001c70dfaSSudeep Holla 24101c70dfaSSudeep Holla scpi_sensors1: sensors { 24201c70dfaSSudeep Holla compatible = "amlogic,meson-gxbb-scpi-sensors", "arm,scpi-sensors"; 24301c70dfaSSudeep Holla #thermal-sensor-cells = <1>; 24401c70dfaSSudeep Holla }; 24501c70dfaSSudeep Holla }; 24601c70dfaSSudeep Holla }; 2471496be71SSudeep Holla... 248