14 Oct, 2020

1 commit

  • The TI K3 family of SoCs typically have one or more dual-core Arm Cortex
    R5F processor clusters/subsystems (R5FSS). This R5F subsystem/cluster
    can be configured at boot time to be either run in a LockStep mode or in
    an Asymmetric Multi Processing (AMP) fashion in Split-mode. This subsystem
    has 64 KB each Tightly-Coupled Memory (TCM) internal memories for each
    core split between two banks - TCMA and TCMB (further interleaved into
    two banks). The subsystem does not have an MMU, but has a Region Address
    Translater (RAT) module that is accessible only from the R5Fs for providing
    translations between 32-bit CPU addresses into larger system bus addresses.

    Add a remoteproc driver to support this subsystem to be able to load and
    boot the R5F cores primarily in LockStep mode. The code also includes the
    base support for Split mode. Error Recovery and Power Management features
    are not currently supported. Loading support includes the internal TCMs
    and DDR. RAT support is left for a future patch, and as such the reserved
    memory carveout regions are all expected to be using memory regions within
    the first 2 GB.

    The R5F remote processors do not have an MMU, and so require fixed memory
    carveout regions matching the firmware image addresses. Support for this
    is provided by mandating multiple memory regions to be attached to the
    remoteproc device. The first memory region will be used to serve as the
    DMA pool for all dynamic allocations like the vrings and vring buffers.
    The remaining memory regions are mapped into the kernel at device probe
    time, and are used to provide address translations for firmware image
    segments without the need for any RSC_CARVEOUT entries. Any firmware
    image using memory outside of the supplied reserved memory carveout
    regions will be errored out.

    The R5F processors on TI K3 SoCs require a specific sequence for booting
    and shutting down the processors. This sequence is also dependent on the
    mode (LockStep or Split) the R5F cluster is configured for. The R5F cores
    have a Memory Protection Unit (MPU) that has a default configuration that
    does not allow the cores to run out of DDR out of reset. This is resolved
    by using the TCMs for boot-strapping code that applies the appropriate
    executable permissions on desired DDR memory. The loading into the TCMs
    requires that the resets be released first with the cores in halted state.
    The Power Sleep Controller (PSC) module on K3 SoCs requires that the cores
    be in WFI/WFE states with no active bus transactions before the cores can
    be put back into reset. Support for this is provided by using the newly
    introduced .prepare() and .unprepare() ops in the remoteproc core. The
    .prepare() ops is invoked before any loading, and the .unprepare() ops
    is invoked after the remoteproc resource cleanup. The R5F core resets
    are deasserted in .prepare() and asserted in .unprepare(), and the cores
    themselves are started and halted in .start() and .stop() ops. This
    ensures symmetric usage and allows the R5F cores state machine to be
    maintained properly between using the sysfs 'state' variable, bind/unbind
    and regular module load/unload flows.

    The subsystem is represented as a single remoteproc in LockStep mode, and
    as two remoteprocs in Split mode. The driver uses various TI-SCI interfaces
    to talk to the System Controller (DMSC) for managing configuration, power
    and reset management of these cores. IPC between the A53 cores and the R5
    cores is supported through the virtio rpmsg stack using shared memory and
    OMAP Mailboxes.

    The AM65x SoCs typically have a single R5FSS in the MCU voltage domain. The
    J721E SoCs uses a slightly revised IP and typically have three R5FSSs, with
    one cluster present within the MCU voltage domain (MCU_R5FSS0), and the
    remaining two clusters present in the MAIN voltage domain (MAIN_R5FSS0 and
    MAIN_R5FSS1). The integration of these clusters on J721E SoC is also
    slightly different in that these IPs do support an actual local reset line,
    while they are a no-op on AM65x SoCs.

    Signed-off-by: Suman Anna
    Reviewed-by: Mathieu Poirier
    Link: https://lore.kernel.org/r/20201002234234.20704-3-s-anna@ti.com
    Signed-off-by: Bjorn Andersson

    Suman Anna
     

15 Sep, 2020

1 commit


05 Aug, 2020

1 commit

  • Add the character device interface into remoteproc framework.
    This interface can be used in order to boot/shutdown remote
    subsystems and provides a basic ioctl based interface to implement
    supplementary functionality. An ioctl call is implemented to enable
    the shutdown on release feature which will allow remote processors to
    be shutdown when the controlling userspace application crashes or hangs.

    Reviewed-by: Bjorn Andersson
    Reviewed-by: Mathieu Poirier
    Signed-off-by: Rishabh Bhatnagar
    Signed-off-by: Siddharth Gupta
    Link: https://lore.kernel.org/r/1596044401-22083-2-git-send-email-sidgup@codeaurora.org
    [bjorn: s/int32_t/s32/ per checkpatch]
    Signed-off-by: Bjorn Andersson

    Siddharth Gupta
     

29 Jul, 2020

2 commits

  • The IPA code now uses the generic remoteproc SSR notification
    mechanism. This makes the original IPA notification code unused
    and unnecessary, so get rid of it.

    This is effectively a revert of commit d7f5f3c89c1a ("remoteproc:
    add IPA notification to q6v5 driver").

    Reviewed-by: Bjorn Andersson
    Signed-off-by: Alex Elder
    Link: https://lore.kernel.org/r/20200724181142.13581-3-elder@linaro.org
    Signed-off-by: Bjorn Andersson

    Alex Elder
     
  • The Texas Instrument's K3 J721E SoCs have two C66x DSP Subsystems in MAIN
    voltage domain that are based on the TI's standard TMS320C66x DSP CorePac
    module. Each subsystem has a Fixed/Floating-Point DSP CPU, with 32 KB each
    of L1P & L1D SRAMs that can be configured and partitioned as either RAM
    and/or Cache, and 288 KB of L2 SRAM with 256 KB of memory configurable as
    either RAM and/or Cache. The CorePac also includes an Internal DMA (IDMA),
    External Memory Controller (EMC), Extended Memory Controller (XMC) with a
    Region Address Translator (RAT) unit for 32-bit to 48-bit address
    extension/translations, an Interrupt Controller (INTC) and a Powerdown
    Controller (PDC).

    A new remoteproc module is added to perform the device management of
    these DSP devices. The support is limited to images using only external
    DDR memory at the moment, the loading support to internal memories and
    any on-chip RAM memories will be added in a subsequent patch. RAT support
    is also left for a future patch, and as such the reserved memory carveout
    regions are all expected to be using memory regions within the first 2 GB.
    Error Recovery and Power Management features are not currently supported.

    The C66x remote processors do not have an MMU, and so require fixed memory
    carveout regions matching the firmware image addresses. Support for this
    is provided by mandating multiple memory regions to be attached to the
    remoteproc device. The first memory region will be used to serve as the
    DMA pool for all dynamic allocations like the vrings and vring buffers.
    The remaining memory regions are mapped into the kernel at device probe
    time, and are used to provide address translations for firmware image
    segments without the need for any RSC_CARVEOUT entries. Any firmware
    image using memory outside of the supplied reserved memory carveout
    regions will be errored out.

    The driver uses various TI-SCI interfaces to talk to the System Controller
    (DMSC) for managing configuration, power and reset management of these
    cores. IPC between the A72 cores and the DSP cores is supported through
    the virtio rpmsg stack using shared memory and OMAP Mailboxes.

    Signed-off-by: Suman Anna
    Reviewed-by: Bjorn Andersson
    Reviewed-by: Mathieu Poirier
    Link: https://lore.kernel.org/r/20200721223617.20312-6-s-anna@ti.com
    Signed-off-by: Bjorn Andersson

    Suman Anna
     

02 Jul, 2020

2 commits

  • Update the PIL relocation information in IMEM with information about
    where the firmware for various remoteprocs are loaded.

    Reviewed-by: Vinod Koul
    Reviewed-by: Stephen Boyd
    Signed-off-by: Bjorn Andersson
    Link: https://lore.kernel.org/r/20200622191942.255460-4-bjorn.andersson@linaro.org
    Signed-off-by: Bjorn Andersson

    Bjorn Andersson
     
  • A region in IMEM is used to communicate load addresses of remoteproc to
    post mortem debug tools. Implement a helper function that can be used to
    store this information in order to enable these tools to process
    collected ramdumps.

    Reviewed-by: Mathieu Poirier
    Reviewed-by: Vinod Koul
    Signed-off-by: Bjorn Andersson
    Link: https://lore.kernel.org/r/20200622191942.255460-3-bjorn.andersson@linaro.org
    Signed-off-by: Bjorn Andersson

    Bjorn Andersson
     

19 May, 2020

1 commit

  • This driver is used to boot, communicate with and load firmwares to the
    MIPS co-processor found in the VPU hardware of the JZ47xx SoCs from
    Ingenic.

    Signed-off-by: Paul Cercueil
    Acked-by: Mathieu Poirier
    Link: https://lore.kernel.org/r/20200515104340.10473-4-paul@crapouillou.net
    Signed-off-by: Bjorn Andersson

    Paul Cercueil
     

03 Apr, 2020

1 commit

  • Pull remoteproc updates from Bjorn Andersson:

    - a range of improvements to the OMAP remoeteproc driver; among other
    things adding devicetree, suspend/resume and watchdog support, and
    adds support the remoteprocs in the DRA7xx SoC

    - support for 64-bit firmware, extends the ELF loader to support this
    and fixes for a number of race conditions in the recovery handling

    - a generic mechanism to allow remoteproc drivers to sync state with
    remote processors during a panic, and uses this to prepare Qualcomm
    remote processors for post mortem analysis

    - fixes to cleanly recover from crashes in the modem firmware on
    production Qualcomm devices

    * tag 'rproc-v5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc: (37 commits)
    remoteproc/omap: Switch to SPDX license identifiers
    remoteproc/omap: Add watchdog functionality for remote processors
    remoteproc/omap: Report device exceptions and trigger recovery
    remoteproc/omap: Add support for runtime auto-suspend/resume
    remoteproc/omap: Add support for system suspend/resume
    remoteproc/omap: Request a timer(s) for remoteproc usage
    remoteproc/omap: Check for undefined mailbox messages
    remoteproc/omap: Remove the platform_data header
    remoteproc/omap: Add support for DRA7xx remote processors
    remoteproc/omap: Initialize and assign reserved memory node
    remoteproc/omap: Add the rproc ops .da_to_va() implementation
    remoteproc/omap: Add support to parse internal memories from DT
    remoteproc/omap: Add a sanity check for DSP boot address alignment
    remoteproc/omap: Add device tree support
    dt-bindings: remoteproc: Add OMAP remoteproc bindings
    remoteproc: qcom: Introduce panic handler for PAS and ADSP
    remoteproc: qcom: q6v5: Add common panic handler
    remoteproc: Introduce "panic" callback in ops
    remoteproc: Traverse rproc_list under RCU read lock
    remoteproc: Fix NULL pointer dereference in rproc_virtio_notify
    ...

    Linus Torvalds
     

26 Mar, 2020

2 commits

  • Remote processors can be stuck in a loop, and may not be recoverable
    if they do not have a built-in watchdog. The watchdog implementation
    for OMAP remote processors uses external gptimers that can be used
    to interrupt both the Linux host as well as the remote processor.

    Each remote processor is responsible for refreshing the timer during
    normal behavior - during OS task scheduling or entering the idle loop
    properly. During a watchdog condition (executing a tight loop causing
    no scheduling), the host processor gets interrupts and schedules a
    recovery for the corresponding remote processor. The remote processor
    may also get interrupted to be able to print a back trace.

    A menuconfig option has also been added to enable/disable the Watchdog
    functionality, with the default as disabled.

    Acked-by: Mathieu Poirier
    Signed-off-by: Suman Anna
    Signed-off-by: Tero Kristo
    Reviewed-by: Andrew F. Davis
    Link: https://lore.kernel.org/r/20200324110035.29907-15-t-kristo@ti.com
    Signed-off-by: Bjorn Andersson

    Suman Anna
     
  • DRA7xx/AM57xx SoCs have two IPU and up to two DSP processor subsystems
    for offloading different computation algorithms. The IPU processor
    subsystem contains dual-core ARM Cortex-M4 processors, and is very
    similar to those on OMAP5. The DSP processor subsystem is based on
    the TI's standard TMS320C66x DSP CorePac core.

    Support has been added to the OMAP remoteproc driver through new
    DRA7xx specific compatibles for properly probing and booting all
    the different processor subsystem instances on DRA7xx/AM57xx
    SoCs - IPU1, IPU2, DSP1 & DSP2. A build dependency with SOC_DRA7XX
    is added to enable the driver to be built in DRA7xx-only configuration.

    The DSP boot address programming needed enhancement for DRA7xx as the
    boot register fields are different on DRA7 compared to OMAP4 and OMAP5
    SoCs. The register on DRA7xx contains additional fields within the
    register and the boot address bit-field is right-shifted by 10 bits.
    The internal memory parsing logic has also been updated to compute
    the device addresses for the L2 RAM for DSP devices using relative
    addressing logic, and to parse two additional RAMs at L1 level - L1P
    and L1D. This allows the remoteproc driver to support loading into
    these regions for a small subset of firmware images requiring as
    such. The most common usage would be to use the L1 programmable
    RAMs as L1 Caches.

    The firmware lookup logic also has to be adjusted for DRA7xx as
    there are (can be) more than one instance of both the IPU and DSP
    remote processors for the first time in OMAP4+ SoCs.

    Signed-off-by: Suman Anna
    [t-kristo@ti.com: moved address translation quirks to pdata]
    Signed-off-by: Tero Kristo
    Reviewed-by: Andrew F. Davis
    Acked-by: Mathieu Poirier
    Link: https://lore.kernel.org/r/20200324110035.29907-8-t-kristo@ti.com
    Signed-off-by: Bjorn Andersson

    Suman Anna
     

17 Mar, 2020

1 commit

  • Rearrange the config files for remoteproc and IPA to fix their
    interdependencies.

    First, have CONFIG_QCOM_Q6V5_MSS select QCOM_Q6V5_IPA_NOTIFY so the
    notification code is built regardless of whether IPA needs it.

    Next, represent QCOM_IPA as being dependent on QCOM_Q6V5_MSS rather
    than setting its value to match QCOM_Q6V5_COMMON (which is selected
    by QCOM_Q6V5_MSS).

    Drop all dependencies from QCOM_Q6V5_IPA_NOTIFY. The notification
    code will be built whenever QCOM_Q6V5_MSS is set, and it has no other
    dependencies.

    Signed-off-by: Alex Elder
    Reviewed-by: Bjorn Andersson
    Signed-off-by: David S. Miller

    Alex Elder
     

09 Mar, 2020

1 commit

  • Set up a subdev in the q6v5 modem remoteproc driver that generates
    event notifications for the IPA driver to use for initialization and
    recovery following a modem shutdown or crash.

    A pair of new functions provides a way for the IPA driver to register
    and deregister a notification callback function that will be called
    whenever modem events (about to boot, running, about to shut down,
    etc.) occur. A void pointer value (provided by the IPA driver at
    registration time) and an event type are supplied to the callback
    function.

    One event, MODEM_REMOVING, is signaled whenever the q6v5 driver is
    about to remove the notification subdevice. It requires the IPA
    driver de-register its callback.

    This sub-device is only used by the modem subsystem (MSS) driver,
    so the code that adds the new subdev and allows registration and
    deregistration of the notifier is found in "qcom_q6v6_mss.c".

    Signed-off-by: Alex Elder
    Signed-off-by: David S. Miller

    Alex Elder
     

21 Jan, 2020

2 commits


04 Sep, 2019

1 commit

  • Remoteproc started using dma_declare_coherent_memory recently, which is
    a bad idea from drivers, and the maintainers agreed to fix that. But
    until that is fixed only allow building the driver built in so that we
    can remove the dma_declare_coherent_memory export and prevent other
    drivers from "accidentally" using it like remoteproc. Note that the
    driver would also leak the declared coherent memory on unload if it
    actually was built as a module at the moment.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Bjorn Andersson

    Christoph Hellwig
     

18 Jul, 2019

1 commit

  • Pull remoteproc updates from Bjorn Andersson:
    "This adds support for the STM32 remoteproc, additional i.MX platforms
    with Cortex M4 remoteprocs and Qualcomm's QCS404 Compute DSP.

    Also initial support for vendor specific resource table entries and
    support for unprocessed Qualcomm firmware files"

    * tag 'rproc-v5.3' of git://github.com/andersson/remoteproc:
    remoteproc: stm32: fix building without ARM SMCC
    remoteproc: qcom: q6v5-mss: Fix build error without QCOM_MDT_LOADER
    remoteproc: copy parent dma_pfn_offset for vdev
    remoteproc: qcom: q6v5-mss: Support loading non-split images
    soc: qcom: mdt_loader: Support loading non-split images
    remoteproc: stm32: add an ST stm32_rproc driver
    dt-bindings: remoteproc: add bindings for stm32 remote processor driver
    dt-bindings: stm32: add bindings for ML-AHB interconnect
    remoteproc: Use struct_size() helper
    remoteproc: add vendor resources handling
    remoteproc: imx: Fix typo in "failed"
    remoteproc: imx: Broaden the Kconfig selection logic
    remoteproc,rpmsg: add missing MAINTAINERS file entries
    remoteproc: qcom: qdsp6-adsp: Add support for QCS404 CDSP
    dt-bindings: remoteproc: Rename and amend Hexagon v56 binding

    Linus Torvalds
     

05 Jul, 2019

1 commit

  • If QCOM_Q6V5_MSS is set but QCOM_MDT_LOADER is not,
    building will fails:

    drivers/remoteproc/qcom_q6v5_mss.o: In function `q6v5_start':
    qcom_q6v5_mss.c:(.text+0x3260): undefined reference to `qcom_mdt_read_metadata'

    Add QCOM_MDT_LOADER dependency for QCOM_Q6V5_MSS.

    Reported-by: Hulk Robot
    Fixes: f04b91383456 ("remoteproc: qcom: q6v5-mss: Support loading non-split images")
    Signed-off-by: YueHaibing
    Signed-off-by: Bjorn Andersson

    YueHaibing
     

30 Jun, 2019

1 commit

  • This patch introduces a new remoteproc driver to control Cortex-M4
    co-processor of the STM32 family.
    It provides with the following features:
    - start and stop
    - dedicated co-processor memory regions registration
    - coredump and recovery

    Signed-off-by: Fabien Dessenne
    Signed-off-by: Ludovic Barre
    Signed-off-by: Loic Pallardy
    Signed-off-by: Arnaud Pouliquen
    [bjorn: Fixup of dev_dbg types and cast of int to pointer in mbox send]
    Signed-off-by: Bjorn Andersson

    Fabien Dessenne
     

04 Jun, 2019

1 commit

  • Besides i.MX6SX and i.MX7D, there are other i.MX devices that contain
    Cortex M4 and could make use of the imx remoteproc driver, such as
    i.MX7ULP, i.MX8M, etc.

    Instead of adding new SoC entries in the Kconfig logic, make it
    broader by using the more generic ARCH_MXC, which encompasses
    all the 32-bit and 64-bit i.MX devices.

    Reviewed-by: Oleksij Rempel
    Signed-off-by: Fabio Estevam
    Signed-off-by: Bjorn Andersson

    Fabio Estevam
     

21 May, 2019

1 commit


06 Oct, 2018

1 commit

  • This adds Non PAS ADSP PIL driver for Qualcomm Technologies Inc SoCs.

    Added initial support for SDM845 with ADSP bootup and shutdown operation
    handled from Application Processor SubSystem(APSS).

    Reviewed-by: Sibi Sankar
    Tested-by: Sibi Sankar
    Signed-off-by: Rohit kumar
    [bjorn: Renamed driver and Kconfig from qcom_adsp_pil to qcom_q6v5_adsp]
    Signed-off-by: Bjorn Andersson

    Rohit kumar
     

27 Sep, 2018

2 commits

  • The qcom_q6v5_pil implements support for the self-authenticating modem
    subsystem. With the introduction of other q6v5 based non-TZ based
    remoteproc driver the current name is cause for confusion, so rename it
    to be more specific.

    No functional change.

    Reviewed-by: Niklas Cassel
    Signed-off-by: Bjorn Andersson

    Bjorn Andersson
     
  • The Hexagon v5 ADSP driver is used for more than only the ADSP and
    there's an upcoming non-PAS ADSP PIL for SDM845, so rename the driver to
    qcom_q6v5_pas in order to better suite this.

    Cc: Rohit kumar
    Reviewed-by: Niklas Cassel
    Signed-off-by: Bjorn Andersson

    Bjorn Andersson
     

31 Jul, 2018

1 commit

  • A new driver got added that depends on QCOM_SMD and fails to link
    as built-in with CONFIG_QCOM_SMD=m:

    drivers/remoteproc/qcom_common.o: In function `smd_subdev_stop':
    qcom_common.c:(.text+0x674): undefined reference to `qcom_smd_unregister_edge'
    drivers/remoteproc/qcom_common.o: In function `smd_subdev_start':
    qcom_common.c:(.text+0x700): undefined reference to `qcom_smd_register_edge'

    We've fixed the same thing several times before, so use the same
    dependency here.

    Fixes: 3a3d4163e0bf ("remoteproc: qcom: Introduce Hexagon V5 based WCSS driver")
    Acked-by: Sricharan R
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Bjorn Andersson

    Arnd Bergmann
     

19 Jun, 2018

4 commits


26 Apr, 2018

1 commit

  • Remove dependencies on HAS_DMA where a Kconfig symbol depends on another
    symbol that implies HAS_DMA, and, optionally, on "|| COMPILE_TEST".
    In most cases this other symbol is an architecture or platform specific
    symbol, or PCI.

    Generic symbols and drivers without platform dependencies keep their
    dependencies on HAS_DMA, to prevent compiling subsystems or drivers that
    cannot work anyway.

    This simplifies the dependencies, and allows to improve compile-testing.

    Signed-off-by: Geert Uytterhoeven
    Reviewed-by: Mark Brown
    Acked-by: Robin Murphy
    Acked-by: Bjorn Andersson
    Signed-off-by: Bjorn Andersson

    Geert Uytterhoeven
     

28 Mar, 2018

1 commit

  • Access to the socket API and the root network namespace is only available
    when networking is enabled:

    ERROR: "kernel_sendmsg" [drivers/soc/qcom/qmi_helpers.ko] undefined!
    ERROR: "sock_release" [drivers/soc/qcom/qmi_helpers.ko] undefined!
    ERROR: "sock_create_kern" [drivers/soc/qcom/qmi_helpers.ko] undefined!
    ERROR: "kernel_getsockname" [drivers/soc/qcom/qmi_helpers.ko] undefined!
    ERROR: "init_net" [drivers/soc/qcom/qmi_helpers.ko] undefined!
    ERROR: "kernel_recvmsg" [drivers/soc/qcom/qmi_helpers.ko] undefined!

    Adding a dependency on CONFIG_NET lets us build it in all randconfig
    builds.

    Fixes: 9b8a11e82615 ("soc: qcom: Introduce QMI encoder/decoder")
    Acked-by: Andy Gross
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Bjorn Andersson

    Arnd Bergmann
     

13 Feb, 2018

2 commits

  • The sysmon client communicates either via a dedicated SMD/GLINK channel
    or via QMI encoded messages over IPCROUTER with remote processors in
    order to perform graceful shutdown and inform about other remote
    processors shutting down.

    Acked-By: Chris Lew
    Signed-off-by: Bjorn Andersson

    Bjorn Andersson
     
  • As the remoteproc framework restarts the remote processor after a fatal
    event, it's useful to be able to acquire a coredump of the remote
    processor's state, for post mortem debugging.

    This patch introduces a mechanism for extracting the memory contents
    after the remote has stopped and before the restart sequence has begun
    in the recovery path. The remoteproc framework builds the core dump in
    memory and use devcoredump to expose this to user space.

    Signed-off-by: Sarangdhar Joshi
    [bjorn: Use vmalloc instead of composing the ELF on the fly]
    Signed-off-by: Bjorn Andersson

    Sarangdhar Joshi
     

26 Oct, 2017

1 commit

  • Currently, RPMSG_VIRTIO can only be enabled if some other kconfig
    option selects it. This does not allow it to be enabled for
    virtualized systems where Virtio RPMSG is available over Virtio
    MMIO or PCI transport.

    This patch updates RPMSG_VIRTIO kconfig option so that we can
    enable the VirtIO RPMSG driver via menuconfig or defconfig. The
    patch also removes "select RPMSG_VIRTIO" from various remoteproc
    kconfig options because it is now user selectable.

    Signed-off-by: Anup Patel
    Signed-off-by: Bjorn Andersson

    Anup Patel
     

11 Oct, 2017

1 commit

  • When RPMSG_QCOM_GLINK_SMEM=m and one driver causes the qcom_common.c file
    to be compiled as built-in, we get a link error:

    drivers/remoteproc/qcom_common.o: In function `glink_subdev_remove':
    qcom_common.c:(.text+0x130): undefined reference to `qcom_glink_smem_unregister'
    qcom_common.c:(.text+0x130): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `qcom_glink_smem_unregister'
    drivers/remoteproc/qcom_common.o: In function `glink_subdev_probe':
    qcom_common.c:(.text+0x160): undefined reference to `qcom_glink_smem_register'
    qcom_common.c:(.text+0x160): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `qcom_glink_smem_register'

    Out of the three PIL driver instances, QCOM_ADSP_PIL already has a
    Kconfig dependency to prevent this from happening, but the other two
    do not. This adds the same dependency there.

    Fixes: eea07023e6d9 ("remoteproc: qcom: adsp: Allow defining GLINK edge")
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Bjorn Andersson

    Arnd Bergmann
     

10 Sep, 2017

1 commit

  • Pull rpmsg updates from Bjorn Andersson:
    "This extends the Qualcomm GLINK implementation to support the
    additional features used for communicating with modem and DSP
    coprocessors in modern Qualcomm platforms.

    In addition to this there's support for placing virtio RPMSG buffers
    in non-System RAM"

    * tag 'rpmsg-v4.14' of git://github.com/andersson/remoteproc: (29 commits)
    rpmsg: glink: initialize ret to zero to ensure error status check is correct
    rpmsg: glink: fix null pointer dereference on a null intent
    dt-bindings: soc: qcom: Extend GLINK to cover SMEM
    remoteproc: qcom: adsp: Allow defining GLINK edge
    rpmsg: glink: Export symbols from common code
    rpmsg: glink: Release idr lock before returning on error
    rpmsg: glink: Handle remote rx done command
    rpmsg: glink: Request for intents when unavailable
    rpmsg: glink: Use the intents passed by remote
    rpmsg: glink: Receive and store the remote intent buffers
    rpmsg: glink: Add announce_create ops and preallocate intents
    rpmsg: glink: Add rx done command
    rpmsg: glink: Make RX FIFO peak accessor to take an offset
    rpmsg: glink: Use the local intents when receiving data
    rpmsg: glink: Add support for TX intents
    rpmsg: glink: Fix idr_lock from mutex to spinlock
    rpmsg: glink: Add support for transport version negotiation
    rpmsg: glink: Introduce glink smem based transport
    rpmsg: glink: Do a mbox_free_channel in remove
    rpmsg: glink: Return -EAGAIN when there is no FIFO space
    ...

    Linus Torvalds
     

02 Sep, 2017

1 commit


31 Aug, 2017

1 commit

  • Provide a basic driver to control Cortex M4 co-processor found
    on NXP i.MX7D and i.MX6SX.
    Currently it is able to resolve addresses between M4 and main CPU,
    start and stop the co-processor. Other functionality is not provided
    or test.

    This driver was tested on NXP i.MX7D and expected to work on
    i.MX6SX as well.

    Signed-off-by: Oleksij Rempel
    Signed-off-by: Bjorn Andersson

    Oleksij Rempel
     

28 Jun, 2017

2 commits