162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/soc/qcom/qcom,smp2p.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Qualcomm Shared Memory Point 2 Point 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Andy Gross <agross@kernel.org> 1162306a36Sopenharmony_ci - Bjorn Andersson <bjorn.andersson@linaro.org> 1262306a36Sopenharmony_ci - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_cidescription: 1562306a36Sopenharmony_ci The Shared Memory Point to Point (SMP2P) protocol facilitates communication 1662306a36Sopenharmony_ci of a single 32-bit value between two processors. Each value has a single 1762306a36Sopenharmony_ci writer (the local side) and a single reader (the remote side). Values are 1862306a36Sopenharmony_ci uniquely identified in the system by the directed edge (local processor ID to 1962306a36Sopenharmony_ci remote processor ID) and a string identifier. 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ciproperties: 2262306a36Sopenharmony_ci compatible: 2362306a36Sopenharmony_ci const: qcom,smp2p 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci interrupts: 2662306a36Sopenharmony_ci maxItems: 1 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci mboxes: 2962306a36Sopenharmony_ci maxItems: 1 3062306a36Sopenharmony_ci description: 3162306a36Sopenharmony_ci Reference to the mailbox representing the outgoing doorbell in APCS for 3262306a36Sopenharmony_ci this client. 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci qcom,ipc: 3562306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle-array 3662306a36Sopenharmony_ci items: 3762306a36Sopenharmony_ci - items: 3862306a36Sopenharmony_ci - description: phandle to a syscon node representing the APCS registers 3962306a36Sopenharmony_ci - description: u32 representing offset to the register within the syscon 4062306a36Sopenharmony_ci - description: u32 representing the ipc bit within the register 4162306a36Sopenharmony_ci description: 4262306a36Sopenharmony_ci Three entries specifying the outgoing ipc bit used for signaling the 4362306a36Sopenharmony_ci remote end of the smp2p edge. 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci qcom,local-pid: 4662306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 4762306a36Sopenharmony_ci description: 4862306a36Sopenharmony_ci The identifier of the local endpoint of this edge. 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci qcom,remote-pid: 5162306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 5262306a36Sopenharmony_ci description: 5362306a36Sopenharmony_ci The identifier of the remote endpoint of this edge. 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci qcom,smem: 5662306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32-array 5762306a36Sopenharmony_ci items: 5862306a36Sopenharmony_ci maxItems: 2 5962306a36Sopenharmony_ci description: 6062306a36Sopenharmony_ci Two identifiers of the inbound and outbound smem items used for this edge. 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_cipatternProperties: 6362306a36Sopenharmony_ci "^master-kernel|slave-kernel|ipa-ap-to-modem|ipa-modem-to-ap|wlan-ap-to-wpss|wlan-wpss-to-ap$": 6462306a36Sopenharmony_ci type: object 6562306a36Sopenharmony_ci description: 6662306a36Sopenharmony_ci Each SMP2P pair contain a set of inbound and outbound entries, these are 6762306a36Sopenharmony_ci described in subnodes of the smp2p device node. The node names are not 6862306a36Sopenharmony_ci important. 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci properties: 7162306a36Sopenharmony_ci interrupt-controller: 7262306a36Sopenharmony_ci description: 7362306a36Sopenharmony_ci Marks the entry as inbound; the node should be specified as a two 7462306a36Sopenharmony_ci cell interrupt-controller. If not specified this node will denote 7562306a36Sopenharmony_ci the outgoing entry. 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci '#interrupt-cells': 7862306a36Sopenharmony_ci const: 2 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci qcom,entry-name: 8162306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/string 8262306a36Sopenharmony_ci description: 8362306a36Sopenharmony_ci The name of this entry, for inbound entries this will be used to 8462306a36Sopenharmony_ci match against the remotely allocated entry and for outbound entries 8562306a36Sopenharmony_ci this name is used for allocating entries. 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci '#qcom,smem-state-cells': 8862306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 8962306a36Sopenharmony_ci const: 1 9062306a36Sopenharmony_ci description: 9162306a36Sopenharmony_ci Required for outgoing entries. 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci required: 9462306a36Sopenharmony_ci - qcom,entry-name 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_ci oneOf: 9762306a36Sopenharmony_ci - required: 9862306a36Sopenharmony_ci - interrupt-controller 9962306a36Sopenharmony_ci - '#interrupt-cells' 10062306a36Sopenharmony_ci - required: 10162306a36Sopenharmony_ci - '#qcom,smem-state-cells' 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci additionalProperties: false 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_cirequired: 10662306a36Sopenharmony_ci - compatible 10762306a36Sopenharmony_ci - interrupts 10862306a36Sopenharmony_ci - qcom,local-pid 10962306a36Sopenharmony_ci - qcom,remote-pid 11062306a36Sopenharmony_ci - qcom,smem 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_cioneOf: 11362306a36Sopenharmony_ci - required: 11462306a36Sopenharmony_ci - mboxes 11562306a36Sopenharmony_ci - required: 11662306a36Sopenharmony_ci - qcom,ipc 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ciadditionalProperties: false 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ciexamples: 12162306a36Sopenharmony_ci # The following example shows the SMP2P setup with the wireless processor, 12262306a36Sopenharmony_ci # defined from the 8974 apps processor's point-of-view. It encompasses one 12362306a36Sopenharmony_ci # inbound and one outbound entry. 12462306a36Sopenharmony_ci - | 12562306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/arm-gic.h> 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci shared-memory { 12862306a36Sopenharmony_ci compatible = "qcom,smp2p"; 12962306a36Sopenharmony_ci qcom,smem = <431>, <451>; 13062306a36Sopenharmony_ci interrupts = <GIC_SPI 143 IRQ_TYPE_EDGE_RISING>; 13162306a36Sopenharmony_ci qcom,ipc = <&apcs 8 18>; 13262306a36Sopenharmony_ci qcom,local-pid = <0>; 13362306a36Sopenharmony_ci qcom,remote-pid = <4>; 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci wcnss_smp2p_out: master-kernel { 13662306a36Sopenharmony_ci qcom,entry-name = "master-kernel"; 13762306a36Sopenharmony_ci #qcom,smem-state-cells = <1>; 13862306a36Sopenharmony_ci }; 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_ci wcnss_smp2p_in: slave-kernel { 14162306a36Sopenharmony_ci qcom,entry-name = "slave-kernel"; 14262306a36Sopenharmony_ci interrupt-controller; 14362306a36Sopenharmony_ci #interrupt-cells = <2>; 14462306a36Sopenharmony_ci }; 14562306a36Sopenharmony_ci }; 146