Commit 5c480f1d authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
  ...
parents 7bc21c5e 38a0e38b
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ description:
properties:
  compatible:
    enum:
      - qcom,sdx75-mpss-pas
      - qcom,sm8550-adsp-pas
      - qcom,sm8550-cdsp-pas
      - qcom,sm8550-mpss-pas
@@ -113,6 +114,7 @@ allOf:
      properties:
        compatible:
          enum:
            - qcom,sdx75-mpss-pas
            - qcom,sm8650-mpss-pas
    then:
      properties:
@@ -146,6 +148,7 @@ allOf:
      properties:
        compatible:
          enum:
            - qcom,sdx75-mpss-pas
            - qcom,sm8550-mpss-pas
            - qcom,sm8650-mpss-pas
    then:
+125 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/remoteproc/ti,k3-m4f-rproc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: TI K3 M4F processor subsystems

maintainers:
  - Hari Nagalla <hnagalla@ti.com>
  - Mathieu Poirier <mathieu.poirier@linaro.org>

description: |
  Some K3 family SoCs have Arm Cortex M4F cores. AM64x is a SoC in K3
  family with a M4F core. Typically safety oriented applications may use
  the M4F core in isolation without an IPC. Where as some industrial and
  home automation applications, may use the M4F core as a remote processor
  with IPC communications.

$ref: /schemas/arm/keystone/ti,k3-sci-common.yaml#

properties:
  compatible:
    enum:
      - ti,am64-m4fss

  power-domains:
    maxItems: 1

  "#address-cells":
    const: 2

  "#size-cells":
    const: 2

  reg:
    items:
      - description: IRAM internal memory region
      - description: DRAM internal memory region

  reg-names:
    items:
      - const: iram
      - const: dram

  resets:
    maxItems: 1

  firmware-name:
    maxItems: 1
    description: Name of firmware to load for the M4F core

  mboxes:
    description:
      OMAP Mailbox specifier denoting the sub-mailbox, to be used for
      communication with the remote processor. This property should match
      with the sub-mailbox node used in the firmware image.
    maxItems: 1

  memory-region:
    description:
      phandle to the reserved memory nodes to be associated with the
      remoteproc device. Optional memory regions available for firmware
      specific purposes.
      (see reserved-memory/reserved-memory.yaml in dtschema project)
    maxItems: 8
    items:
      - description: regions used for DMA allocations like vrings, vring buffers
                     and memory dedicated to firmware's specific purposes.
    additionalItems: true

required:
  - compatible
  - reg
  - reg-names
  - ti,sci
  - ti,sci-dev-id
  - ti,sci-proc-ids
  - resets
  - firmware-name

unevaluatedProperties: false

examples:
  - |
    reserved-memory {
        #address-cells = <2>;
        #size-cells = <2>;

        mcu_m4fss_dma_memory_region: m4f-dma-memory@9cb00000 {
            compatible = "shared-dma-pool";
            reg = <0x00 0x9cb00000 0x00 0x100000>;
            no-map;
        };

        mcu_m4fss_memory_region: m4f-memory@9cc00000 {
            compatible = "shared-dma-pool";
            reg = <0x00 0x9cc00000 0x00 0xe00000>;
            no-map;
        };
    };

    soc {
        #address-cells = <2>;
        #size-cells = <2>;

        mailbox0_cluster0: mailbox-0 {
            #mbox-cells = <1>;
        };

        remoteproc@5000000 {
            compatible = "ti,am64-m4fss";
            reg = <0x00 0x5000000 0x00 0x30000>,
                  <0x00 0x5040000 0x00 0x10000>;
            reg-names = "iram", "dram";
            resets = <&k3_reset 9 1>;
            firmware-name = "am62-mcu-m4f0_0-fw";
            mboxes = <&mailbox0_cluster0>, <&mbox_m4_0>;
            memory-region = <&mcu_m4fss_dma_memory_region>,
                            <&mcu_m4fss_memory_region>;
            ti,sci = <&dmsc>;
            ti,sci-dev-id = <9>;
            ti,sci-proc-ids = <0x18 0xff>;
         };
    };
+1 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ properties:
patternProperties:
  "^r(.*)@[0-9a-f]+$":
    type: object
    additionalProperties: false
    description: |
      The RPU is located in the Low Power Domain of the Processor Subsystem.
      Each processor includes separate L1 instruction and data caches and
+13 −0
Original line number Diff line number Diff line
@@ -340,6 +340,19 @@ config TI_K3_DSP_REMOTEPROC
	  It's safe to say N here if you're not interested in utilizing
	  the DSP slave processors.

config TI_K3_M4_REMOTEPROC
	tristate "TI K3 M4 remoteproc support"
	depends on ARCH_K3 || COMPILE_TEST
	select MAILBOX
	select OMAP2PLUS_MBOX
	help
	  Say m here to support TI's M4 remote processor subsystems
	  on various TI K3 family of SoCs through the remote processor
	  framework.

	  It's safe to say N here if you're not interested in utilizing
	  a remote processor.

config TI_K3_R5_REMOTEPROC
	tristate "TI K3 R5 remoteproc support"
	depends on ARCH_K3
+1 −0
Original line number Diff line number Diff line
@@ -37,5 +37,6 @@ obj-$(CONFIG_ST_REMOTEPROC) += st_remoteproc.o
obj-$(CONFIG_ST_SLIM_REMOTEPROC)	+= st_slim_rproc.o
obj-$(CONFIG_STM32_RPROC)		+= stm32_rproc.o
obj-$(CONFIG_TI_K3_DSP_REMOTEPROC)	+= ti_k3_dsp_remoteproc.o
obj-$(CONFIG_TI_K3_M4_REMOTEPROC)	+= ti_k3_m4_remoteproc.o
obj-$(CONFIG_TI_K3_R5_REMOTEPROC)	+= ti_k3_r5_remoteproc.o
obj-$(CONFIG_XLNX_R5_REMOTEPROC)	+= xlnx_r5_remoteproc.o
Loading