| # 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 <agross@kernel.org> | |
| - Bjorn Andersson <bjorn.andersson@linaro.org> | |
| - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> | |
| 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 <dt-bindings/interrupt-controller/arm-gic.h> | |
| 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 = <GIC_SPI 144 IRQ_TYPE_EDGE_RISING>; | |
| interrupt-controller; | |
| #interrupt-cells = <2>; | |
| }; | |
| }; |