# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause %YAML 1.2 --- $id: http://devicetree.org/schemas/soc/qcom/qcom,smsm.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Qualcomm Shared Memory State Machine maintainers: - Andy Gross - Bjorn Andersson - Krzysztof Kozlowski description: The Shared Memory State Machine facilitates broadcasting of single bit state information between the processors in a Qualcomm SoC. Each processor is assigned 32 bits of state that can be modified. A processor can through a matrix of bitmaps signal subscription of notifications upon changes to a certain bit owned by a certain remote processor. properties: compatible: const: qcom,smsm '#address-cells': const: 1 qcom,local-host: $ref: /schemas/types.yaml#/definitions/uint32 default: 0 description: Identifier of the local processor in the list of hosts, or in other words specifier of the column in the subscription matrix representing the local processor. '#size-cells': const: 0 patternProperties: "^qcom,ipc-[1-4]$": $ref: /schemas/types.yaml#/definitions/phandle-array items: - items: - description: phandle to a syscon node representing the APCS registers - description: u32 representing offset to the register within the syscon - description: u32 representing the ipc bit within the register description: Three entries specifying the outgoing ipc bit used for signaling the N:th remote processor. "@[0-9a-f]$": type: object description: Each processor's state bits are described by a subnode of the SMSM device node. Nodes can either be flagged as an interrupt-controller to denote a remote processor's state bits or the local processors bits. The node names are not important. properties: reg: maxItems: 1 interrupt-controller: description: Marks the entry as a interrupt-controller and the state bits to belong to a remote processor. '#interrupt-cells': const: 2 interrupts: maxItems: 1 description: One entry specifying remote IRQ used by the remote processor to signal changes of its state bits. '#qcom,smem-state-cells': $ref: /schemas/types.yaml#/definitions/uint32 const: 1 description: Required for local entry. Denotes bit number. required: - reg oneOf: - required: - '#qcom,smem-state-cells' - required: - interrupt-controller - '#interrupt-cells' - interrupts additionalProperties: false required: - compatible - '#address-cells' - '#size-cells' anyOf: - required: - qcom,ipc-1 - required: - qcom,ipc-2 - required: - qcom,ipc-3 - required: - qcom,ipc-4 additionalProperties: false examples: # The following example shows the SMEM setup for controlling properties of # the wireless processor, defined from the 8974 apps processor's # point-of-view. It encompasses one outbound entry and the outgoing interrupt # for the wireless processor. - | #include shared-memory { compatible = "qcom,smsm"; #address-cells = <1>; #size-cells = <0>; qcom,ipc-3 = <&apcs 8 19>; apps_smsm: apps@0 { reg = <0>; #qcom,smem-state-cells = <1>; }; wcnss_smsm: wcnss@7 { reg = <7>; interrupts = ; interrupt-controller; #interrupt-cells = <2>; }; };