Skip to content

Commit 5c480f1

Browse files
committed
Merge tag 'rproc-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux
Pull remoteproc updates from Bjorn Andersson: - Add remoteproc support for the Cortex M4F found in AM62x and AM64x of the TI K3 family, support for the modem remoteproc in the Qualcomm SDX75, and audio, compute and general-purpose DSPs of the Qualcomm SA8775P. - Add support for blocking and non-blocking mailbox transmissions to the i.MX remoteproc driver, and implement poweroff and reboot mechanisms using them. Plus a few bug fixes and minor improvements. - Cleanups and bug fixes for the TI K3 DSP and R5F drivers - Support mapping SRAM regions into the AMD-Xilinx Zynqmp R5 cores - Use devres helpers for various allocations in the Ingenic, TI DA8xx, TI Keystone, TI K3, ST slim drivers - Replace uses of of_{find,get}_property() with of_property_present() where possible * tag 'rproc-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux: (25 commits) remoteporc: ingenic: Use devm_platform_ioremap_resource_byname() remoteproc: da8xx: Use devm_platform_ioremap_resource_byname() remoteproc: st_slim: Use devm_platform_ioremap_resource_byname() remoteproc: xlnx: Add sram support remoteproc: k3-r5: Fix error handling when power-up failed remoteproc: imx_rproc: Add support for poweroff and reboot remoteproc: imx_rproc: Allow setting of the mailbox transmit mode remoteproc: k3-r5: Delay notification of wakeup event remoteproc: k3-m4: Add a remoteproc driver for M4F subsystem remoteproc: k3: Factor out TI-SCI processor control OF get function dt-bindings: remoteproc: k3-m4f: Add K3 AM64x SoCs remoteproc: k3-dsp: Acquire mailbox handle during probe routine remoteproc: k3-r5: Acquire mailbox handle during probe routine remoteproc: k3-r5: Use devm_rproc_alloc() helper remoteproc: qcom: pas: Add support for SA8775p ADSP, CDSP and GPDSP remoteproc: qcom: pas: Add SDX75 remoteproc support dt-bindings: remoteproc: qcom,sm8550-pas: document the SDX75 PAS remoteproc: keystone: Use devm_rproc_alloc() helper remoteproc: keystone: Use devm_kasprintf() to build name string dt-bindings: remoteproc: xlnx,zynqmp-r5fss: Add missing "additionalProperties" on child nodes ...
2 parents 7bc21c5 + 38a0e38 commit 5c480f1

18 files changed

+1225
-222
lines changed

Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ description:
1616
properties:
1717
compatible:
1818
enum:
19+
- qcom,sdx75-mpss-pas
1920
- qcom,sm8550-adsp-pas
2021
- qcom,sm8550-cdsp-pas
2122
- qcom,sm8550-mpss-pas
@@ -113,6 +114,7 @@ allOf:
113114
properties:
114115
compatible:
115116
enum:
117+
- qcom,sdx75-mpss-pas
116118
- qcom,sm8650-mpss-pas
117119
then:
118120
properties:
@@ -146,6 +148,7 @@ allOf:
146148
properties:
147149
compatible:
148150
enum:
151+
- qcom,sdx75-mpss-pas
149152
- qcom,sm8550-mpss-pas
150153
- qcom,sm8650-mpss-pas
151154
then:
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/remoteproc/ti,k3-m4f-rproc.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: TI K3 M4F processor subsystems
8+
9+
maintainers:
10+
- Hari Nagalla <hnagalla@ti.com>
11+
- Mathieu Poirier <mathieu.poirier@linaro.org>
12+
13+
description: |
14+
Some K3 family SoCs have Arm Cortex M4F cores. AM64x is a SoC in K3
15+
family with a M4F core. Typically safety oriented applications may use
16+
the M4F core in isolation without an IPC. Where as some industrial and
17+
home automation applications, may use the M4F core as a remote processor
18+
with IPC communications.
19+
20+
$ref: /schemas/arm/keystone/ti,k3-sci-common.yaml#
21+
22+
properties:
23+
compatible:
24+
enum:
25+
- ti,am64-m4fss
26+
27+
power-domains:
28+
maxItems: 1
29+
30+
"#address-cells":
31+
const: 2
32+
33+
"#size-cells":
34+
const: 2
35+
36+
reg:
37+
items:
38+
- description: IRAM internal memory region
39+
- description: DRAM internal memory region
40+
41+
reg-names:
42+
items:
43+
- const: iram
44+
- const: dram
45+
46+
resets:
47+
maxItems: 1
48+
49+
firmware-name:
50+
maxItems: 1
51+
description: Name of firmware to load for the M4F core
52+
53+
mboxes:
54+
description:
55+
OMAP Mailbox specifier denoting the sub-mailbox, to be used for
56+
communication with the remote processor. This property should match
57+
with the sub-mailbox node used in the firmware image.
58+
maxItems: 1
59+
60+
memory-region:
61+
description:
62+
phandle to the reserved memory nodes to be associated with the
63+
remoteproc device. Optional memory regions available for firmware
64+
specific purposes.
65+
(see reserved-memory/reserved-memory.yaml in dtschema project)
66+
maxItems: 8
67+
items:
68+
- description: regions used for DMA allocations like vrings, vring buffers
69+
and memory dedicated to firmware's specific purposes.
70+
additionalItems: true
71+
72+
required:
73+
- compatible
74+
- reg
75+
- reg-names
76+
- ti,sci
77+
- ti,sci-dev-id
78+
- ti,sci-proc-ids
79+
- resets
80+
- firmware-name
81+
82+
unevaluatedProperties: false
83+
84+
examples:
85+
- |
86+
reserved-memory {
87+
#address-cells = <2>;
88+
#size-cells = <2>;
89+
90+
mcu_m4fss_dma_memory_region: m4f-dma-memory@9cb00000 {
91+
compatible = "shared-dma-pool";
92+
reg = <0x00 0x9cb00000 0x00 0x100000>;
93+
no-map;
94+
};
95+
96+
mcu_m4fss_memory_region: m4f-memory@9cc00000 {
97+
compatible = "shared-dma-pool";
98+
reg = <0x00 0x9cc00000 0x00 0xe00000>;
99+
no-map;
100+
};
101+
};
102+
103+
soc {
104+
#address-cells = <2>;
105+
#size-cells = <2>;
106+
107+
mailbox0_cluster0: mailbox-0 {
108+
#mbox-cells = <1>;
109+
};
110+
111+
remoteproc@5000000 {
112+
compatible = "ti,am64-m4fss";
113+
reg = <0x00 0x5000000 0x00 0x30000>,
114+
<0x00 0x5040000 0x00 0x10000>;
115+
reg-names = "iram", "dram";
116+
resets = <&k3_reset 9 1>;
117+
firmware-name = "am62-mcu-m4f0_0-fw";
118+
mboxes = <&mailbox0_cluster0>, <&mbox_m4_0>;
119+
memory-region = <&mcu_m4fss_dma_memory_region>,
120+
<&mcu_m4fss_memory_region>;
121+
ti,sci = <&dmsc>;
122+
ti,sci-dev-id = <9>;
123+
ti,sci-proc-ids = <0x18 0xff>;
124+
};
125+
};

Documentation/devicetree/bindings/remoteproc/xlnx,zynqmp-r5fss.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ properties:
6262
patternProperties:
6363
"^r(.*)@[0-9a-f]+$":
6464
type: object
65+
additionalProperties: false
6566
description: |
6667
The RPU is located in the Low Power Domain of the Processor Subsystem.
6768
Each processor includes separate L1 instruction and data caches and

drivers/remoteproc/Kconfig

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,19 @@ config TI_K3_DSP_REMOTEPROC
340340
It's safe to say N here if you're not interested in utilizing
341341
the DSP slave processors.
342342

343+
config TI_K3_M4_REMOTEPROC
344+
tristate "TI K3 M4 remoteproc support"
345+
depends on ARCH_K3 || COMPILE_TEST
346+
select MAILBOX
347+
select OMAP2PLUS_MBOX
348+
help
349+
Say m here to support TI's M4 remote processor subsystems
350+
on various TI K3 family of SoCs through the remote processor
351+
framework.
352+
353+
It's safe to say N here if you're not interested in utilizing
354+
a remote processor.
355+
343356
config TI_K3_R5_REMOTEPROC
344357
tristate "TI K3 R5 remoteproc support"
345358
depends on ARCH_K3

drivers/remoteproc/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,6 @@ obj-$(CONFIG_ST_REMOTEPROC) += st_remoteproc.o
3737
obj-$(CONFIG_ST_SLIM_REMOTEPROC) += st_slim_rproc.o
3838
obj-$(CONFIG_STM32_RPROC) += stm32_rproc.o
3939
obj-$(CONFIG_TI_K3_DSP_REMOTEPROC) += ti_k3_dsp_remoteproc.o
40+
obj-$(CONFIG_TI_K3_M4_REMOTEPROC) += ti_k3_m4_remoteproc.o
4041
obj-$(CONFIG_TI_K3_R5_REMOTEPROC) += ti_k3_r5_remoteproc.o
4142
obj-$(CONFIG_XLNX_R5_REMOTEPROC) += xlnx_r5_remoteproc.o

drivers/remoteproc/da8xx_remoteproc.c

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,6 @@ static int da8xx_rproc_probe(struct platform_device *pdev)
239239
struct da8xx_rproc *drproc;
240240
struct rproc *rproc;
241241
struct irq_data *irq_data;
242-
struct resource *bootreg_res;
243-
struct resource *chipsig_res;
244242
struct clk *dsp_clk;
245243
struct reset_control *dsp_reset;
246244
void __iomem *chipsig;
@@ -258,15 +256,11 @@ static int da8xx_rproc_probe(struct platform_device *pdev)
258256
return -EINVAL;
259257
}
260258

261-
bootreg_res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
262-
"host1cfg");
263-
bootreg = devm_ioremap_resource(dev, bootreg_res);
259+
bootreg = devm_platform_ioremap_resource_byname(pdev, "host1cfg");
264260
if (IS_ERR(bootreg))
265261
return PTR_ERR(bootreg);
266262

267-
chipsig_res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
268-
"chipsig");
269-
chipsig = devm_ioremap_resource(dev, chipsig_res);
263+
chipsig = devm_platform_ioremap_resource_byname(pdev, "chipsig");
270264
if (IS_ERR(chipsig))
271265
return PTR_ERR(chipsig);
272266

drivers/remoteproc/imx_dsp_rproc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ static int imx_dsp_rproc_mbox_alloc(struct imx_dsp_rproc *priv)
509509
struct mbox_client *cl;
510510
int ret;
511511

512-
if (!of_get_property(dev->of_node, "mbox-names", NULL))
512+
if (!of_property_present(dev->of_node, "mbox-names"))
513513
return 0;
514514

515515
cl = &priv->cl;

0 commit comments

Comments
 (0)