mirror of
https://github.com/torvalds/linux.git
synced 2026-04-19 15:24:02 -04:00
WLAN firmware uses SMP2P protocol in order to talk to the application processor (AP) in certain cases like WoW (Wake on Wireless). WLAN firmware runs on the WPSS Q6 processor (Wireless Processor SubSystem). Therefore it is required to have sub nodes pertaining to the WPSS Q6 processor and the application processor in the SMP2P node. Add WPSS Q6 (Wireless Processor SubSystem) node names to the pattern property required for WPSS Q6 processor to communicate to the application processor and vice versa over SMP2P protocol. Signed-off-by: Manikanta Pubbisetty <quic_mpubbise@quicinc.com> Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Signed-off-by: Bjorn Andersson <andersson@kernel.org> Link: https://lore.kernel.org/r/20221017125346.3691-2-quic_mpubbise@quicinc.com
146 lines
4.2 KiB
YAML
146 lines
4.2 KiB
YAML
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/soc/qcom/qcom,smp2p.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Qualcomm Shared Memory Point 2 Point
|
|
|
|
maintainers:
|
|
- Andy Gross <agross@kernel.org>
|
|
- Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
- Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
|
|
|
|
description:
|
|
The Shared Memory Point to Point (SMP2P) protocol facilitates communication
|
|
of a single 32-bit value between two processors. Each value has a single
|
|
writer (the local side) and a single reader (the remote side). Values are
|
|
uniquely identified in the system by the directed edge (local processor ID to
|
|
remote processor ID) and a string identifier.
|
|
|
|
properties:
|
|
compatible:
|
|
const: qcom,smp2p
|
|
|
|
interrupts:
|
|
maxItems: 1
|
|
|
|
mboxes:
|
|
maxItems: 1
|
|
description:
|
|
Reference to the mailbox representing the outgoing doorbell in APCS for
|
|
this client.
|
|
|
|
qcom,ipc:
|
|
$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
|
|
remote end of the smp2p edge.
|
|
|
|
qcom,local-pid:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
The identifier of the local endpoint of this edge.
|
|
|
|
qcom,remote-pid:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
The identifier of the remote endpoint of this edge.
|
|
|
|
qcom,smem:
|
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
|
items:
|
|
maxItems: 2
|
|
description:
|
|
Two identifiers of the inbound and outbound smem items used for this edge.
|
|
|
|
patternProperties:
|
|
"^master-kernel|slave-kernel|ipa-ap-to-modem|ipa-modem-to-ap|wlan-ap-to-wpss|wlan-wpss-to-ap$":
|
|
type: object
|
|
description:
|
|
Each SMP2P pair contain a set of inbound and outbound entries, these are
|
|
described in subnodes of the smp2p device node. The node names are not
|
|
important.
|
|
|
|
properties:
|
|
interrupt-controller:
|
|
description:
|
|
Marks the entry as inbound; the node should be specified as a two
|
|
cell interrupt-controller. If not specified this node will denote
|
|
the outgoing entry.
|
|
|
|
'#interrupt-cells':
|
|
const: 2
|
|
|
|
qcom,entry-name:
|
|
$ref: /schemas/types.yaml#/definitions/string
|
|
description:
|
|
The name of this entry, for inbound entries this will be used to
|
|
match against the remotely allocated entry and for outbound entries
|
|
this name is used for allocating entries.
|
|
|
|
'#qcom,smem-state-cells':
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
const: 1
|
|
description:
|
|
Required for outgoing entries.
|
|
|
|
required:
|
|
- qcom,entry-name
|
|
|
|
oneOf:
|
|
- required:
|
|
- interrupt-controller
|
|
- '#interrupt-cells'
|
|
- required:
|
|
- '#qcom,smem-state-cells'
|
|
|
|
additionalProperties: false
|
|
|
|
required:
|
|
- compatible
|
|
- interrupts
|
|
- qcom,local-pid
|
|
- qcom,remote-pid
|
|
- qcom,smem
|
|
|
|
oneOf:
|
|
- required:
|
|
- mboxes
|
|
- required:
|
|
- qcom,ipc
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
# The following example shows the SMP2P setup with the wireless processor,
|
|
# defined from the 8974 apps processor's point-of-view. It encompasses one
|
|
# inbound and one outbound entry.
|
|
- |
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
|
|
shared-memory {
|
|
compatible = "qcom,smp2p";
|
|
qcom,smem = <431>, <451>;
|
|
interrupts = <GIC_SPI 143 IRQ_TYPE_EDGE_RISING>;
|
|
qcom,ipc = <&apcs 8 18>;
|
|
qcom,local-pid = <0>;
|
|
qcom,remote-pid = <4>;
|
|
|
|
wcnss_smp2p_out: master-kernel {
|
|
qcom,entry-name = "master-kernel";
|
|
#qcom,smem-state-cells = <1>;
|
|
};
|
|
|
|
wcnss_smp2p_in: slave-kernel {
|
|
qcom,entry-name = "slave-kernel";
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
};
|
|
};
|