1d00004c4SKrzysztof Kozlowski# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2d00004c4SKrzysztof Kozlowski%YAML 1.2 3d00004c4SKrzysztof Kozlowski--- 4d00004c4SKrzysztof Kozlowski$id: http://devicetree.org/schemas/soc/qcom/qcom,smsm.yaml# 5d00004c4SKrzysztof Kozlowski$schema: http://devicetree.org/meta-schemas/core.yaml# 6d00004c4SKrzysztof Kozlowski 7d00004c4SKrzysztof Kozlowskititle: Qualcomm Shared Memory State Machine 8d00004c4SKrzysztof Kozlowski 9d00004c4SKrzysztof Kozlowskimaintainers: 10d00004c4SKrzysztof Kozlowski - Andy Gross <agross@kernel.org> 11d00004c4SKrzysztof Kozlowski - Bjorn Andersson <bjorn.andersson@linaro.org> 12d00004c4SKrzysztof Kozlowski - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> 13d00004c4SKrzysztof Kozlowski 14d00004c4SKrzysztof Kozlowskidescription: 15d00004c4SKrzysztof Kozlowski The Shared Memory State Machine facilitates broadcasting of single bit state 16d00004c4SKrzysztof Kozlowski information between the processors in a Qualcomm SoC. Each processor is 17d00004c4SKrzysztof Kozlowski assigned 32 bits of state that can be modified. A processor can through a 18d00004c4SKrzysztof Kozlowski matrix of bitmaps signal subscription of notifications upon changes to a 19d00004c4SKrzysztof Kozlowski certain bit owned by a certain remote processor. 20d00004c4SKrzysztof Kozlowski 21d00004c4SKrzysztof Kozlowskiproperties: 22d00004c4SKrzysztof Kozlowski compatible: 23d00004c4SKrzysztof Kozlowski const: qcom,smsm 24d00004c4SKrzysztof Kozlowski 25d00004c4SKrzysztof Kozlowski '#address-cells': 26d00004c4SKrzysztof Kozlowski const: 1 27d00004c4SKrzysztof Kozlowski 28d00004c4SKrzysztof Kozlowski qcom,local-host: 29d00004c4SKrzysztof Kozlowski $ref: /schemas/types.yaml#/definitions/uint32 30d00004c4SKrzysztof Kozlowski default: 0 31d00004c4SKrzysztof Kozlowski description: 32d00004c4SKrzysztof Kozlowski Identifier of the local processor in the list of hosts, or in other words 33d00004c4SKrzysztof Kozlowski specifier of the column in the subscription matrix representing the local 34d00004c4SKrzysztof Kozlowski processor. 35d00004c4SKrzysztof Kozlowski 36*5e66abcfSLuca Weiss mboxes: 37*5e66abcfSLuca Weiss minItems: 1 38*5e66abcfSLuca Weiss maxItems: 5 39*5e66abcfSLuca Weiss description: 40*5e66abcfSLuca Weiss Reference to the mailbox representing the outgoing doorbell in APCS for 41*5e66abcfSLuca Weiss this client. Each entry represents the N:th remote processor by index 42*5e66abcfSLuca Weiss (0-indexed). 43*5e66abcfSLuca Weiss 44d00004c4SKrzysztof Kozlowski '#size-cells': 45d00004c4SKrzysztof Kozlowski const: 0 46d00004c4SKrzysztof Kozlowski 47d00004c4SKrzysztof KozlowskipatternProperties: 48d00004c4SKrzysztof Kozlowski "^qcom,ipc-[1-4]$": 49d00004c4SKrzysztof Kozlowski $ref: /schemas/types.yaml#/definitions/phandle-array 50d00004c4SKrzysztof Kozlowski items: 51d00004c4SKrzysztof Kozlowski - items: 52d00004c4SKrzysztof Kozlowski - description: phandle to a syscon node representing the APCS registers 53d00004c4SKrzysztof Kozlowski - description: u32 representing offset to the register within the syscon 54d00004c4SKrzysztof Kozlowski - description: u32 representing the ipc bit within the register 55d00004c4SKrzysztof Kozlowski description: 56d00004c4SKrzysztof Kozlowski Three entries specifying the outgoing ipc bit used for signaling the N:th 57d00004c4SKrzysztof Kozlowski remote processor. 58*5e66abcfSLuca Weiss deprecated: true 59d00004c4SKrzysztof Kozlowski 60d00004c4SKrzysztof Kozlowski "@[0-9a-f]$": 61d00004c4SKrzysztof Kozlowski type: object 62d00004c4SKrzysztof Kozlowski description: 63d00004c4SKrzysztof Kozlowski Each processor's state bits are described by a subnode of the SMSM device 64d00004c4SKrzysztof Kozlowski node. Nodes can either be flagged as an interrupt-controller to denote a 65d00004c4SKrzysztof Kozlowski remote processor's state bits or the local processors bits. The node 66d00004c4SKrzysztof Kozlowski names are not important. 67d00004c4SKrzysztof Kozlowski 68d00004c4SKrzysztof Kozlowski properties: 69d00004c4SKrzysztof Kozlowski reg: 70d00004c4SKrzysztof Kozlowski maxItems: 1 71d00004c4SKrzysztof Kozlowski 72d00004c4SKrzysztof Kozlowski interrupt-controller: 73d00004c4SKrzysztof Kozlowski description: 74d00004c4SKrzysztof Kozlowski Marks the entry as a interrupt-controller and the state bits to 75d00004c4SKrzysztof Kozlowski belong to a remote processor. 76d00004c4SKrzysztof Kozlowski 77d00004c4SKrzysztof Kozlowski '#interrupt-cells': 78d00004c4SKrzysztof Kozlowski const: 2 79d00004c4SKrzysztof Kozlowski 80d00004c4SKrzysztof Kozlowski interrupts: 81d00004c4SKrzysztof Kozlowski maxItems: 1 82d00004c4SKrzysztof Kozlowski description: 83d00004c4SKrzysztof Kozlowski One entry specifying remote IRQ used by the remote processor to 84d00004c4SKrzysztof Kozlowski signal changes of its state bits. 85d00004c4SKrzysztof Kozlowski 86d00004c4SKrzysztof Kozlowski '#qcom,smem-state-cells': 87d00004c4SKrzysztof Kozlowski $ref: /schemas/types.yaml#/definitions/uint32 88d00004c4SKrzysztof Kozlowski const: 1 89d00004c4SKrzysztof Kozlowski description: 90d00004c4SKrzysztof Kozlowski Required for local entry. Denotes bit number. 91d00004c4SKrzysztof Kozlowski 92d00004c4SKrzysztof Kozlowski required: 93d00004c4SKrzysztof Kozlowski - reg 94d00004c4SKrzysztof Kozlowski 95d00004c4SKrzysztof Kozlowski oneOf: 96d00004c4SKrzysztof Kozlowski - required: 97d00004c4SKrzysztof Kozlowski - '#qcom,smem-state-cells' 98d00004c4SKrzysztof Kozlowski - required: 99d00004c4SKrzysztof Kozlowski - interrupt-controller 100d00004c4SKrzysztof Kozlowski - '#interrupt-cells' 101d00004c4SKrzysztof Kozlowski - interrupts 102d00004c4SKrzysztof Kozlowski 103d00004c4SKrzysztof Kozlowski additionalProperties: false 104d00004c4SKrzysztof Kozlowski 105d00004c4SKrzysztof Kozlowskirequired: 106d00004c4SKrzysztof Kozlowski - compatible 107d00004c4SKrzysztof Kozlowski - '#address-cells' 108d00004c4SKrzysztof Kozlowski - '#size-cells' 109d00004c4SKrzysztof Kozlowski 110*5e66abcfSLuca WeissoneOf: 111*5e66abcfSLuca Weiss - required: 112*5e66abcfSLuca Weiss - mboxes 113*5e66abcfSLuca Weiss - anyOf: 114d00004c4SKrzysztof Kozlowski - required: 115d00004c4SKrzysztof Kozlowski - qcom,ipc-1 116d00004c4SKrzysztof Kozlowski - required: 117d00004c4SKrzysztof Kozlowski - qcom,ipc-2 118d00004c4SKrzysztof Kozlowski - required: 119d00004c4SKrzysztof Kozlowski - qcom,ipc-3 120d00004c4SKrzysztof Kozlowski - required: 121d00004c4SKrzysztof Kozlowski - qcom,ipc-4 122d00004c4SKrzysztof Kozlowski 123d00004c4SKrzysztof KozlowskiadditionalProperties: false 124d00004c4SKrzysztof Kozlowski 125d00004c4SKrzysztof Kozlowskiexamples: 126d00004c4SKrzysztof Kozlowski # The following example shows the SMEM setup for controlling properties of 127d00004c4SKrzysztof Kozlowski # the wireless processor, defined from the 8974 apps processor's 128d00004c4SKrzysztof Kozlowski # point-of-view. It encompasses one outbound entry and the outgoing interrupt 129d00004c4SKrzysztof Kozlowski # for the wireless processor. 130d00004c4SKrzysztof Kozlowski - | 131d00004c4SKrzysztof Kozlowski #include <dt-bindings/interrupt-controller/arm-gic.h> 132d00004c4SKrzysztof Kozlowski 133d00004c4SKrzysztof Kozlowski shared-memory { 134d00004c4SKrzysztof Kozlowski compatible = "qcom,smsm"; 135d00004c4SKrzysztof Kozlowski #address-cells = <1>; 136d00004c4SKrzysztof Kozlowski #size-cells = <0>; 137*5e66abcfSLuca Weiss mboxes = <0>, <0>, <0>, <&apcs 19>; 138d00004c4SKrzysztof Kozlowski 139d00004c4SKrzysztof Kozlowski apps_smsm: apps@0 { 140d00004c4SKrzysztof Kozlowski reg = <0>; 141d00004c4SKrzysztof Kozlowski #qcom,smem-state-cells = <1>; 142d00004c4SKrzysztof Kozlowski }; 143d00004c4SKrzysztof Kozlowski 144d00004c4SKrzysztof Kozlowski wcnss_smsm: wcnss@7 { 145d00004c4SKrzysztof Kozlowski reg = <7>; 146d00004c4SKrzysztof Kozlowski interrupts = <GIC_SPI 144 IRQ_TYPE_EDGE_RISING>; 147d00004c4SKrzysztof Kozlowski interrupt-controller; 148d00004c4SKrzysztof Kozlowski #interrupt-cells = <2>; 149d00004c4SKrzysztof Kozlowski }; 150d00004c4SKrzysztof Kozlowski }; 151