146 lines
4.1 KiB
YAML
146 lines
4.1 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$":
|
|
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>;
|
|
};
|
|
};
|