| # 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. |
| |
| mboxes: |
| minItems: 1 |
| maxItems: 5 |
| description: |
| Reference to the mailbox representing the outgoing doorbell in APCS for |
| this client. Each entry represents the N:th remote processor by index |
| (0-indexed). |
| |
| '#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. |
| deprecated: true |
| |
| "@[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' |
| |
| oneOf: |
| - required: |
| - mboxes |
| - 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>; |
| mboxes = <0>, <0>, <0>, <&apcs 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>; |
| }; |
| }; |