1*1496be71SSudeep Holla# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2*1496be71SSudeep Holla# Copyright 2021 ARM Ltd. 3*1496be71SSudeep Holla%YAML 1.2 4*1496be71SSudeep Holla--- 5*1496be71SSudeep Holla$id: http://devicetree.org/schemas/firmware/arm,scpi.yaml# 6*1496be71SSudeep Holla$schema: http://devicetree.org/meta-schemas/core.yaml# 7*1496be71SSudeep Holla 8*1496be71SSudeep Hollatitle: System Control and Power Interface (SCPI) Message Protocol bindings 9*1496be71SSudeep Holla 10*1496be71SSudeep Hollamaintainers: 11*1496be71SSudeep Holla - Sudeep Holla <sudeep.holla@arm.com> 12*1496be71SSudeep Holla 13*1496be71SSudeep Holladescription: | 14*1496be71SSudeep Holla Firmware implementing the SCPI described in ARM document number ARM DUI 15*1496be71SSudeep Holla 0922B ("ARM Compute Subsystem SCP: Message Interface Protocols")[0] can be 16*1496be71SSudeep Holla used by Linux to initiate various system control and power operations. 17*1496be71SSudeep Holla 18*1496be71SSudeep Holla This binding is intended to define the interface the firmware implementing 19*1496be71SSudeep Holla the SCPI provide for OSPM in the device tree. 20*1496be71SSudeep Holla 21*1496be71SSudeep Holla [0] http://infocenter.arm.com/help/topic/com.arm.doc.dui0922b/index.html 22*1496be71SSudeep Holla 23*1496be71SSudeep Hollaproperties: 24*1496be71SSudeep Holla $nodename: 25*1496be71SSudeep Holla const: scpi 26*1496be71SSudeep Holla 27*1496be71SSudeep Holla compatible: 28*1496be71SSudeep Holla description: 29*1496be71SSudeep Holla SCPI compliant firmware complying to SCPI v1.0 and above OR 30*1496be71SSudeep Holla SCPI compliant firmware complying to all unversioned releases 31*1496be71SSudeep Holla prior to SCPI v1.0 32*1496be71SSudeep Holla oneOf: 33*1496be71SSudeep Holla - const: arm,scpi # SCPI v1.0 and above 34*1496be71SSudeep Holla - const: arm,scpi-pre-1.0 # Unversioned SCPI before v1.0 35*1496be71SSudeep Holla 36*1496be71SSudeep Holla mboxes: 37*1496be71SSudeep Holla description: 38*1496be71SSudeep Holla List of phandle and mailbox channel specifiers. All the channels reserved 39*1496be71SSudeep Holla by remote SCP firmware for use by SCPI message protocol should be 40*1496be71SSudeep Holla specified in any order. 41*1496be71SSudeep Holla minItems: 1 42*1496be71SSudeep Holla 43*1496be71SSudeep Holla shmem: 44*1496be71SSudeep Holla description: 45*1496be71SSudeep Holla List of phandle pointing to the shared memory(SHM) area between the 46*1496be71SSudeep Holla processors using these mailboxes for IPC, one for each mailbox SHM can 47*1496be71SSudeep Holla be any memory reserved for the purpose of this communication between the 48*1496be71SSudeep Holla processors. 49*1496be71SSudeep Holla minItems: 1 50*1496be71SSudeep Holla 51*1496be71SSudeep Holla power-controller: 52*1496be71SSudeep Holla type: object 53*1496be71SSudeep Holla description: 54*1496be71SSudeep Holla This sub-node represents SCPI power domain controller. 55*1496be71SSudeep Holla 56*1496be71SSudeep Holla properties: 57*1496be71SSudeep Holla compatible: 58*1496be71SSudeep Holla const: arm,scpi-power-domains 59*1496be71SSudeep Holla 60*1496be71SSudeep Holla '#power-domain-cells': 61*1496be71SSudeep Holla const: 1 62*1496be71SSudeep Holla 63*1496be71SSudeep Holla num-domains: 64*1496be71SSudeep Holla $ref: /schemas/types.yaml#/definitions/uint32 65*1496be71SSudeep Holla description: 66*1496be71SSudeep Holla Total number of power domains provided by SCPI. This is needed as 67*1496be71SSudeep Holla the SCPI message protocol lacks a mechanism to query this 68*1496be71SSudeep Holla information at runtime. 69*1496be71SSudeep Holla 70*1496be71SSudeep Holla required: 71*1496be71SSudeep Holla - compatible 72*1496be71SSudeep Holla - '#power-domain-cells' 73*1496be71SSudeep Holla - num-domains 74*1496be71SSudeep Holla 75*1496be71SSudeep Holla additionalProperties: false 76*1496be71SSudeep Holla 77*1496be71SSudeep Holla sensors: 78*1496be71SSudeep Holla type: object 79*1496be71SSudeep Holla description: | 80*1496be71SSudeep Holla This sub-node represents SCPI sensors controller. 81*1496be71SSudeep Holla 82*1496be71SSudeep Holla properties: 83*1496be71SSudeep Holla compatible: 84*1496be71SSudeep Holla const: arm,scpi-sensors 85*1496be71SSudeep Holla 86*1496be71SSudeep Holla '#thermal-sensor-cells': 87*1496be71SSudeep Holla const: 1 88*1496be71SSudeep Holla 89*1496be71SSudeep Holla required: 90*1496be71SSudeep Holla - compatible 91*1496be71SSudeep Holla - '#thermal-sensor-cells' 92*1496be71SSudeep Holla 93*1496be71SSudeep Holla additionalProperties: false 94*1496be71SSudeep Holla 95*1496be71SSudeep Holla clocks: 96*1496be71SSudeep Holla type: object 97*1496be71SSudeep Holla description: 98*1496be71SSudeep Holla This is the container node. Each sub-node represents one of the types 99*1496be71SSudeep Holla of clock controller - indexed or full range. 100*1496be71SSudeep Holla 101*1496be71SSudeep Holla properties: 102*1496be71SSudeep Holla compatible: 103*1496be71SSudeep Holla const: arm,scpi-clocks 104*1496be71SSudeep Holla 105*1496be71SSudeep Holla patternProperties: 106*1496be71SSudeep Holla "^clocks-[0-9a-f]+$": 107*1496be71SSudeep Holla type: object 108*1496be71SSudeep Holla description: | 109*1496be71SSudeep Holla This sub-node represents one of the types of clock controller 110*1496be71SSudeep Holla - indexed or full range. 111*1496be71SSudeep Holla 112*1496be71SSudeep Holla "arm,scpi-dvfs-clocks" - all the clocks that are variable and index 113*1496be71SSudeep Holla based. These clocks don't provide an entire range of values between 114*1496be71SSudeep Holla the limits but only discrete points within the range. The firmware 115*1496be71SSudeep Holla provides the mapping for each such operating frequency and the index 116*1496be71SSudeep Holla associated with it. The firmware also manages the voltage scaling 117*1496be71SSudeep Holla appropriately with the clock scaling. 118*1496be71SSudeep Holla 119*1496be71SSudeep Holla "arm,scpi-variable-clocks" - all the clocks that are variable and 120*1496be71SSudeep Holla provide full range within the specified range. The firmware provides 121*1496be71SSudeep Holla the range of values within a specified range. 122*1496be71SSudeep Holla 123*1496be71SSudeep Holla properties: 124*1496be71SSudeep Holla compatible: 125*1496be71SSudeep Holla oneOf: 126*1496be71SSudeep Holla - const: arm,scpi-dvfs-clocks 127*1496be71SSudeep Holla - const: arm,scpi-variable-clocks 128*1496be71SSudeep Holla 129*1496be71SSudeep Holla '#clock-cells': 130*1496be71SSudeep Holla const: 1 131*1496be71SSudeep Holla 132*1496be71SSudeep Holla clock-output-names: true 133*1496be71SSudeep Holla 134*1496be71SSudeep Holla clock-indices: 135*1496be71SSudeep Holla $ref: /schemas/types.yaml#/definitions/uint32-array 136*1496be71SSudeep Holla description: 137*1496be71SSudeep Holla The identifying number for the clocks(i.e.clock_id) in the node. 138*1496be71SSudeep Holla It can be non linear and hence provide the mapping of identifiers 139*1496be71SSudeep Holla into the clock-output-names array. 140*1496be71SSudeep Holla 141*1496be71SSudeep Holla required: 142*1496be71SSudeep Holla - compatible 143*1496be71SSudeep Holla - '#clock-cells' 144*1496be71SSudeep Holla - clock-output-names 145*1496be71SSudeep Holla - clock-indices 146*1496be71SSudeep Holla 147*1496be71SSudeep Holla additionalProperties: false 148*1496be71SSudeep Holla 149*1496be71SSudeep Holla required: 150*1496be71SSudeep Holla - compatible 151*1496be71SSudeep Holla 152*1496be71SSudeep Holla additionalProperties: false 153*1496be71SSudeep Holla 154*1496be71SSudeep HollaadditionalProperties: false 155*1496be71SSudeep Holla 156*1496be71SSudeep Hollarequired: 157*1496be71SSudeep Holla - compatible 158*1496be71SSudeep Holla - mboxes 159*1496be71SSudeep Holla - shmem 160*1496be71SSudeep Holla 161*1496be71SSudeep Hollaexamples: 162*1496be71SSudeep Holla - | 163*1496be71SSudeep Holla firmware { 164*1496be71SSudeep Holla scpi { 165*1496be71SSudeep Holla compatible = "arm,scpi"; 166*1496be71SSudeep Holla mboxes = <&mhuA 1>; 167*1496be71SSudeep Holla shmem = <&cpu_scp_hpri>; /* HP-NonSecure */ 168*1496be71SSudeep Holla 169*1496be71SSudeep Holla scpi_devpd: power-controller { 170*1496be71SSudeep Holla compatible = "arm,scpi-power-domains"; 171*1496be71SSudeep Holla num-domains = <2>; 172*1496be71SSudeep Holla #power-domain-cells = <1>; 173*1496be71SSudeep Holla }; 174*1496be71SSudeep Holla 175*1496be71SSudeep Holla clocks { 176*1496be71SSudeep Holla compatible = "arm,scpi-clocks"; 177*1496be71SSudeep Holla 178*1496be71SSudeep Holla scpi_dvfs: clocks-0 { 179*1496be71SSudeep Holla compatible = "arm,scpi-dvfs-clocks"; 180*1496be71SSudeep Holla #clock-cells = <1>; 181*1496be71SSudeep Holla clock-indices = <0>, <1>, <2>; 182*1496be71SSudeep Holla clock-output-names = "atlclk", "aplclk","gpuclk"; 183*1496be71SSudeep Holla }; 184*1496be71SSudeep Holla 185*1496be71SSudeep Holla scpi_clk: clocks-1 { 186*1496be71SSudeep Holla compatible = "arm,scpi-variable-clocks"; 187*1496be71SSudeep Holla #clock-cells = <1>; 188*1496be71SSudeep Holla clock-indices = <3>, <4>; 189*1496be71SSudeep Holla clock-output-names = "pxlclk0", "pxlclk1"; 190*1496be71SSudeep Holla }; 191*1496be71SSudeep Holla }; 192*1496be71SSudeep Holla 193*1496be71SSudeep Holla scpi_sensors: sensors { 194*1496be71SSudeep Holla compatible = "arm,scpi-sensors"; 195*1496be71SSudeep Holla #thermal-sensor-cells = <1>; 196*1496be71SSudeep Holla }; 197*1496be71SSudeep Holla 198*1496be71SSudeep Holla }; 199*1496be71SSudeep Holla }; 200*1496be71SSudeep Holla 201*1496be71SSudeep Holla soc { 202*1496be71SSudeep Holla #address-cells = <2>; 203*1496be71SSudeep Holla #size-cells = <2>; 204*1496be71SSudeep Holla 205*1496be71SSudeep Holla sram@50000000 { 206*1496be71SSudeep Holla compatible = "mmio-sram"; 207*1496be71SSudeep Holla reg = <0x0 0x50000000 0x0 0x10000>; 208*1496be71SSudeep Holla 209*1496be71SSudeep Holla #address-cells = <1>; 210*1496be71SSudeep Holla #size-cells = <1>; 211*1496be71SSudeep Holla ranges = <0 0x0 0x50000000 0x10000>; 212*1496be71SSudeep Holla 213*1496be71SSudeep Holla cpu_scp_lpri: scp-sram-section@0 { 214*1496be71SSudeep Holla compatible = "arm,scp-shmem"; 215*1496be71SSudeep Holla reg = <0x0 0x200>; 216*1496be71SSudeep Holla }; 217*1496be71SSudeep Holla 218*1496be71SSudeep Holla cpu_scp_hpri: scp-sram-section@200 { 219*1496be71SSudeep Holla compatible = "arm,scp-shmem"; 220*1496be71SSudeep Holla reg = <0x200 0x200>; 221*1496be71SSudeep Holla }; 222*1496be71SSudeep Holla }; 223*1496be71SSudeep Holla }; 224*1496be71SSudeep Holla 225*1496be71SSudeep Holla... 226