mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-31 11:47:42 +08:00
Merge tag 'mailbox-v6.3' of git://git.linaro.org/landing-teams/working/fujitsu/integration
Pull mailbox updates from Jassi Brar: - qcom: misc changes to bindings for sa8775p, QDU1000/QRU1000, IPQ5332, SDX55, msm8976, glink-rpm-edge - sti: convert to DT schema - zynq: switch to flexible array to simplify code * tag 'mailbox-v6.3' of git://git.linaro.org/landing-teams/working/fujitsu/integration: dt-bindings: mailbox: qcom-ipcc: Add compatible for QDU1000/QRU1000 mailbox: qcom-apcs-ipc: add IPQ5332 APSS clock support dt-bindings: mailbox: qcom: add compatible for the IPQ5332 SoC dt-bindings: remoteproc: qcom,glink-rpm-edge: convert to DT schema mailbox: qcom-apcs-ipc: enable APCS clock device for MSM8996 dt-bindings: mailbox: qcom: add #clock-cells to msm8996 example dt-bindings: mailbox: qcom: add missing platforms to conditional clauses dt-bindings: mailbox: qcom: correct the list of platforms using clocks dt-bindings: mailbox: qcom: enable syscon compatible for msm8976 dt-bindings: mailbox: qcom: add SDX55 compatible dt-bindings: mailbox: qcom-ipcc: document the sa8775p platform dt-bindings: mailbox: sti-mailbox: convert to DT schema mailbox: zynq: Switch to flexible array to simplify code
This commit is contained in:
@@ -16,11 +16,14 @@ maintainers:
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- qcom,ipq5332-apcs-apps-global
|
||||
- const: qcom,ipq6018-apcs-apps-global
|
||||
- items:
|
||||
- enum:
|
||||
- qcom,ipq6018-apcs-apps-global
|
||||
- qcom,ipq8074-apcs-apps-global
|
||||
- qcom,msm8976-apcs-kpss-global
|
||||
- qcom,msm8996-apcs-hmss-global
|
||||
- qcom,msm8998-apcs-hmss-global
|
||||
- qcom,qcm2290-apcs-hmss-global
|
||||
@@ -37,8 +40,10 @@ properties:
|
||||
- qcom,msm8916-apcs-kpss-global
|
||||
- qcom,msm8939-apcs-kpss-global
|
||||
- qcom,msm8953-apcs-kpss-global
|
||||
- qcom,msm8976-apcs-kpss-global
|
||||
- qcom,msm8994-apcs-kpss-global
|
||||
- qcom,qcs404-apcs-apps-global
|
||||
- qcom,sdx55-apcs-gcc
|
||||
- const: syscon
|
||||
reg:
|
||||
maxItems: 1
|
||||
@@ -71,15 +76,8 @@ allOf:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,msm8916-apcs-kpss-global
|
||||
- qcom,msm8994-apcs-kpss-global
|
||||
- qcom,msm8996-apcs-hmss-global
|
||||
- qcom,msm8998-apcs-hmss-global
|
||||
- qcom,msm8939-apcs-kpss-global
|
||||
- qcom,qcs404-apcs-apps-global
|
||||
- qcom,sc7180-apss-shared
|
||||
- qcom,sdm660-apcs-hmss-global
|
||||
- qcom,sdm845-apss-shared
|
||||
- qcom,sm6125-apcs-hmss-global
|
||||
- qcom,sm8150-apss-shared
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
@@ -110,9 +108,10 @@ allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,ipq6018-apcs-apps-global
|
||||
- qcom,ipq8074-apcs-apps-global
|
||||
contains:
|
||||
enum:
|
||||
- qcom,ipq6018-apcs-apps-global
|
||||
- qcom,ipq8074-apcs-apps-global
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
@@ -123,12 +122,37 @@ allOf:
|
||||
items:
|
||||
- const: pll
|
||||
- const: xo
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,ipq6018-apcs-apps-global
|
||||
- qcom,ipq8074-apcs-apps-global
|
||||
- qcom,msm8953-apcs-kpss-global
|
||||
- qcom,msm8976-apcs-kpss-global
|
||||
- qcom,msm8994-apcs-kpss-global
|
||||
- qcom,msm8996-apcs-hmss-global
|
||||
- qcom,msm8998-apcs-hmss-global
|
||||
- qcom,qcm2290-apcs-hmss-global
|
||||
- qcom,sc7180-apss-shared
|
||||
- qcom,sc8180x-apss-shared
|
||||
- qcom,sdm660-apcs-hmss-global
|
||||
- qcom,sdm845-apss-shared
|
||||
- qcom,sm4250-apcs-hmss-global
|
||||
- qcom,sm6115-apcs-hmss-global
|
||||
- qcom,sm6125-apcs-hmss-global
|
||||
- qcom,sm8150-apss-shared
|
||||
then:
|
||||
properties:
|
||||
clocks: false
|
||||
clock-names: false
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,ipq6018-apcs-apps-global
|
||||
- qcom,ipq8074-apcs-apps-global
|
||||
then:
|
||||
properties:
|
||||
'#clock-cells':
|
||||
@@ -148,6 +172,7 @@ examples:
|
||||
reg = <0x9820000 0x1000>;
|
||||
|
||||
#mbox-cells = <1>;
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
|
||||
rpm-glink {
|
||||
|
||||
@@ -24,6 +24,8 @@ properties:
|
||||
compatible:
|
||||
items:
|
||||
- enum:
|
||||
- qcom,qdu1000-ipcc
|
||||
- qcom,sa8775p-ipcc
|
||||
- qcom,sc7280-ipcc
|
||||
- qcom,sc8280xp-ipcc
|
||||
- qcom,sm6350-ipcc
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/mailbox/st,sti-mailbox.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: STMicroelectronics Mailbox Driver for STi platform
|
||||
|
||||
description:
|
||||
Each ST Mailbox IP currently consists of 4 instances of 32 channels.
|
||||
Messages are passed between Application and Remote processors using
|
||||
shared memory.
|
||||
|
||||
maintainers:
|
||||
- Patrice Chotard <patrice.chotard@foss.st.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: st,stih407-mailbox
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
mbox-name:
|
||||
$ref: /schemas/types.yaml#/definitions/string
|
||||
description: name of the mailbox IP
|
||||
|
||||
interrupts:
|
||||
description: the irq line for the RX mailbox
|
||||
maxItems: 1
|
||||
|
||||
"#mbox-cells":
|
||||
const: 2
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- "#mbox-cells"
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
mailbox0: mailbox@8f00000 {
|
||||
compatible = "st,stih407-mailbox";
|
||||
reg = <0x8f00000 0x1000>;
|
||||
interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#mbox-cells = <2>;
|
||||
mbox-name = "a9";
|
||||
};
|
||||
|
||||
...
|
||||
@@ -1,51 +0,0 @@
|
||||
ST Microelectronics Mailbox Driver
|
||||
|
||||
Each ST Mailbox IP currently consists of 4 instances of 32 channels. Messages
|
||||
are passed between Application and Remote processors using shared memory.
|
||||
|
||||
Controller
|
||||
----------
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "st,stih407-mailbox"
|
||||
- reg : Offset and length of the device's register set
|
||||
- mbox-name : Name of the mailbox
|
||||
- #mbox-cells: : Must be 2
|
||||
<&phandle instance channel direction>
|
||||
phandle : Label name of controller
|
||||
instance : Instance number
|
||||
channel : Channel number
|
||||
|
||||
Optional properties
|
||||
- interrupts : Contains the IRQ line for a Rx mailbox
|
||||
|
||||
Example:
|
||||
|
||||
mailbox0: mailbox@0 {
|
||||
compatible = "st,stih407-mailbox";
|
||||
reg = <0x08f00000 0x1000>;
|
||||
interrupts = <GIC_SPI 1 IRQ_TYPE_NONE>;
|
||||
#mbox-cells = <2>;
|
||||
mbox-name = "a9";
|
||||
};
|
||||
|
||||
Client
|
||||
------
|
||||
|
||||
Required properties:
|
||||
- compatible : Many (See the client docs)
|
||||
- reg : Shared (between Application and Remote) memory address
|
||||
- mboxes : Standard property to specify a Mailbox (See ./mailbox.txt)
|
||||
Cells must match 'mbox-cells' (See Controller docs above)
|
||||
|
||||
Optional properties
|
||||
- mbox-names : Name given to channels seen in the 'mboxes' property.
|
||||
|
||||
Example:
|
||||
|
||||
mailbox_test {
|
||||
compatible = "mailbox-test";
|
||||
reg = <0x[shared_memory_address], [shared_memory_size]>;
|
||||
mboxes = <&mailbox2 0 1>, <&mailbox0 2 1>;
|
||||
mbox-names = "tx", "rx";
|
||||
};
|
||||
@@ -0,0 +1,99 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/remoteproc/qcom,glink-rpm-edge.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm G-Link RPM edge
|
||||
|
||||
description: |
|
||||
Qualcomm G-Link edge, a FIFO based mechanism for communication with Resource
|
||||
Power Manager (RPM) on various Qualcomm platforms.
|
||||
|
||||
maintainers:
|
||||
- Bjorn Andersson <andersson@kernel.org>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: qcom,glink-rpm
|
||||
|
||||
label:
|
||||
$ref: /schemas/types.yaml#/definitions/string
|
||||
description:
|
||||
Name of the edge, used for debugging and identification purposes. The
|
||||
node name will be used if this is not present.
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
mboxes:
|
||||
items:
|
||||
- description: rpm_hlos mailbox in APCS
|
||||
|
||||
qcom,remote-pid:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description:
|
||||
The identifier for the remote processor as known by the rest of the
|
||||
system.
|
||||
|
||||
qcom,rpm-msg-ram:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
description: |
|
||||
RPM message memory resource (compatible: qcom,rpm-msg-ram).
|
||||
|
||||
rpm-requests:
|
||||
type: object
|
||||
$ref: /schemas/soc/qcom/qcom,smd-rpm.yaml#
|
||||
unevaluatedProperties: false
|
||||
description:
|
||||
Qualcomm Resource Power Manager (RPM) over G-Link
|
||||
|
||||
properties:
|
||||
qcom,intents:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-matrix
|
||||
minItems: 1
|
||||
maxItems: 32
|
||||
items:
|
||||
items:
|
||||
- description: size of each intent to preallocate
|
||||
- description: amount of intents to preallocate
|
||||
minimum: 1
|
||||
description:
|
||||
List of (size, amount) pairs describing what intents should be
|
||||
preallocated for this virtual channel. This can be used to tweak the
|
||||
default intents available for the channel to meet expectations of the
|
||||
remote.
|
||||
|
||||
required:
|
||||
- qcom,glink-channels
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- interrupts
|
||||
- mboxes
|
||||
|
||||
anyOf:
|
||||
- required:
|
||||
- qcom,remote-pid
|
||||
- required:
|
||||
- qcom,rpm-msg-ram
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
rpm-glink {
|
||||
compatible = "qcom,glink-rpm";
|
||||
interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
|
||||
mboxes = <&apcs_glb 0>;
|
||||
qcom,rpm-msg-ram = <&rpm_msg_ram>;
|
||||
|
||||
rpm-requests {
|
||||
compatible = "qcom,rpm-msm8996";
|
||||
qcom,glink-channels = "rpm_requests";
|
||||
|
||||
/* ... */
|
||||
};
|
||||
};
|
||||
@@ -1,94 +0,0 @@
|
||||
Qualcomm GLINK edge binding
|
||||
|
||||
This binding describes a Qualcomm GLINK edge, a fifo based mechanism for
|
||||
communication between subsystem-pairs on various Qualcomm platforms. Two types
|
||||
of edges can be described by the binding; the GLINK RPM edge and a SMEM based
|
||||
edge.
|
||||
|
||||
- compatible:
|
||||
Usage: required for glink-rpm
|
||||
Value type: <stringlist>
|
||||
Definition: must be "qcom,glink-rpm"
|
||||
|
||||
- label:
|
||||
Usage: optional
|
||||
Value type: <string>
|
||||
Definition: should specify the subsystem name this edge corresponds to.
|
||||
|
||||
- interrupts:
|
||||
Usage: required
|
||||
Value type: <prop-encoded-array>
|
||||
Definition: should specify the IRQ used by the remote processor to
|
||||
signal this processor about communication related events
|
||||
|
||||
- qcom,remote-pid:
|
||||
Usage: required for glink-smem
|
||||
Value type: <u32>
|
||||
Definition: specifies the identifier of the remote endpoint of this edge
|
||||
|
||||
- qcom,rpm-msg-ram:
|
||||
Usage: required for glink-rpm
|
||||
Value type: <prop-encoded-array>
|
||||
Definition: handle to RPM message memory resource
|
||||
|
||||
- mboxes:
|
||||
Usage: required
|
||||
Value type: <prop-encoded-array>
|
||||
Definition: reference to the "rpm_hlos" mailbox in APCS, as described
|
||||
in mailbox/mailbox.txt
|
||||
|
||||
= GLINK DEVICES
|
||||
Each subnode of the GLINK node represent function tied to a virtual
|
||||
communication channel. The name of the nodes are not important. The properties
|
||||
of these nodes are defined by the individual bindings for the specific function
|
||||
- but must contain the following property:
|
||||
|
||||
- qcom,glink-channels:
|
||||
Usage: required
|
||||
Value type: <stringlist>
|
||||
Definition: a list of channels tied to this function, used for matching
|
||||
the function to a set of virtual channels
|
||||
|
||||
- qcom,intents:
|
||||
Usage: optional
|
||||
Value type: <prop-encoded-array>
|
||||
Definition: a list of size,amount pairs describing what intents should
|
||||
be preallocated for this virtual channel. This can be used
|
||||
to tweak the default intents available for the channel to
|
||||
meet expectations of the remote.
|
||||
|
||||
= EXAMPLE
|
||||
The following example represents the GLINK RPM node on a MSM8996 device, with
|
||||
the function for the "rpm_request" channel defined, which is used for
|
||||
regulators and root clocks.
|
||||
|
||||
apcs_glb: mailbox@9820000 {
|
||||
compatible = "qcom,msm8996-apcs-hmss-global";
|
||||
reg = <0x9820000 0x1000>;
|
||||
|
||||
#mbox-cells = <1>;
|
||||
};
|
||||
|
||||
rpm_msg_ram: memory@68000 {
|
||||
compatible = "qcom,rpm-msg-ram";
|
||||
reg = <0x68000 0x6000>;
|
||||
};
|
||||
|
||||
rpm-glink {
|
||||
compatible = "qcom,glink-rpm";
|
||||
|
||||
interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
|
||||
|
||||
qcom,rpm-msg-ram = <&rpm_msg_ram>;
|
||||
|
||||
mboxes = <&apcs_glb 0>;
|
||||
|
||||
rpm-requests {
|
||||
compatible = "qcom,rpm-msm8996";
|
||||
qcom,glink-channels = "rpm_requests";
|
||||
|
||||
qcom,intents = <0x400 5
|
||||
0x800 1>;
|
||||
...
|
||||
};
|
||||
};
|
||||
@@ -42,7 +42,7 @@ static const struct qcom_apcs_ipc_data msm8994_apcs_data = {
|
||||
};
|
||||
|
||||
static const struct qcom_apcs_ipc_data msm8996_apcs_data = {
|
||||
.offset = 16, .clk_name = NULL
|
||||
.offset = 16, .clk_name = "qcom-apcs-msm8996-clk"
|
||||
};
|
||||
|
||||
static const struct qcom_apcs_ipc_data apps_shared_apcs_data = {
|
||||
@@ -141,6 +141,7 @@ static int qcom_apcs_ipc_remove(struct platform_device *pdev)
|
||||
|
||||
/* .data is the offset of the ipc register within the global block */
|
||||
static const struct of_device_id qcom_apcs_ipc_of_match[] = {
|
||||
{ .compatible = "qcom,ipq5332-apcs-apps-global", .data = &ipq6018_apcs_data },
|
||||
{ .compatible = "qcom,ipq6018-apcs-apps-global", .data = &ipq6018_apcs_data },
|
||||
{ .compatible = "qcom,ipq8074-apcs-apps-global", .data = &ipq6018_apcs_data },
|
||||
{ .compatible = "qcom,msm8916-apcs-kpss-global", .data = &msm8916_apcs_data },
|
||||
|
||||
@@ -110,7 +110,7 @@ struct zynqmp_ipi_pdata {
|
||||
unsigned int method;
|
||||
u32 local_id;
|
||||
int num_mboxes;
|
||||
struct zynqmp_ipi_mbox *ipi_mboxes;
|
||||
struct zynqmp_ipi_mbox ipi_mboxes[];
|
||||
};
|
||||
|
||||
static struct device_driver zynqmp_ipi_mbox_driver = {
|
||||
@@ -635,7 +635,7 @@ static int zynqmp_ipi_probe(struct platform_device *pdev)
|
||||
int num_mboxes, ret = -EINVAL;
|
||||
|
||||
num_mboxes = of_get_child_count(np);
|
||||
pdata = devm_kzalloc(dev, sizeof(*pdata) + (num_mboxes * sizeof(*mbox)),
|
||||
pdata = devm_kzalloc(dev, struct_size(pdata, ipi_mboxes, num_mboxes),
|
||||
GFP_KERNEL);
|
||||
if (!pdata)
|
||||
return -ENOMEM;
|
||||
@@ -649,8 +649,6 @@ static int zynqmp_ipi_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
pdata->num_mboxes = num_mboxes;
|
||||
pdata->ipi_mboxes = (struct zynqmp_ipi_mbox *)
|
||||
((char *)pdata + sizeof(*pdata));
|
||||
|
||||
mbox = pdata->ipi_mboxes;
|
||||
for_each_available_child_of_node(np, nc) {
|
||||
|
||||
Reference in New Issue
Block a user