1. 05 8月, 2020 1 次提交
  2. 29 7月, 2020 2 次提交
    • A
      remoteproc: kill IPA notify code · 2f3ee5e4
      Alex Elder 提交于
      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 d7f5f3c8 ("remoteproc:
      add IPA notification to q6v5 driver").
      Reviewed-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      Signed-off-by: NAlex Elder <elder@linaro.org>
      Link: https://lore.kernel.org/r/20200724181142.13581-3-elder@linaro.orgSigned-off-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      2f3ee5e4
    • S
      remoteproc: k3-dsp: Add a remoteproc driver of K3 C66x DSPs · 6edbe024
      Suman Anna 提交于
      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: NSuman Anna <s-anna@ti.com>
      Reviewed-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      Reviewed-by: NMathieu Poirier <mathieu.poirier@linaro.org>
      Link: https://lore.kernel.org/r/20200721223617.20312-6-s-anna@ti.comSigned-off-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      6edbe024
  3. 02 7月, 2020 2 次提交
  4. 19 5月, 2020 1 次提交
  5. 26 3月, 2020 2 次提交
    • S
      remoteproc/omap: Add watchdog functionality for remote processors · 69591e4a
      Suman Anna 提交于
      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: NMathieu Poirier <mathieu.poirier@linaro.org>
      Signed-off-by: NSuman Anna <s-anna@ti.com>
      Signed-off-by: NTero Kristo <t-kristo@ti.com>
      Reviewed-by: NAndrew F. Davis <afd@ti.com>
      Link: https://lore.kernel.org/r/20200324110035.29907-15-t-kristo@ti.comSigned-off-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      69591e4a
    • S
      remoteproc/omap: Add support for DRA7xx remote processors · 0aaf1913
      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: NSuman Anna <s-anna@ti.com>
      [t-kristo@ti.com: moved address translation quirks to pdata]
      Signed-off-by: NTero Kristo <t-kristo@ti.com>
      Reviewed-by: NAndrew F. Davis <afd@ti.com>
      Acked-by: NMathieu Poirier <mathieu.poirier@linaro.org>
      Link: https://lore.kernel.org/r/20200324110035.29907-8-t-kristo@ti.comSigned-off-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      0aaf1913
  6. 17 3月, 2020 1 次提交
    • A
      remoteproc: clean up notification config · 5e0ef51b
      Alex Elder 提交于
      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: NAlex Elder <elder@linaro.org>
      Reviewed-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5e0ef51b
  7. 09 3月, 2020 1 次提交
    • A
      remoteproc: add IPA notification to q6v5 driver · d7f5f3c8
      Alex Elder 提交于
      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: NAlex Elder <elder@linaro.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d7f5f3c8
  8. 21 1月, 2020 2 次提交
  9. 04 9月, 2019 1 次提交
    • C
      remoteproc: don't allow modular build · 6334150e
      Christoph Hellwig 提交于
      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: NChristoph Hellwig <hch@lst.de>
      Reviewed-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      6334150e
  10. 05 7月, 2019 1 次提交
  11. 30 6月, 2019 1 次提交
  12. 04 6月, 2019 1 次提交
  13. 21 5月, 2019 1 次提交
  14. 06 10月, 2018 1 次提交
  15. 27 9月, 2018 2 次提交
  16. 31 7月, 2018 1 次提交
  17. 19 6月, 2018 4 次提交
  18. 26 4月, 2018 1 次提交
  19. 28 3月, 2018 1 次提交
    • A
      soc: qcom: qmi: add CONFIG_NET dependency · dea4bd19
      Arnd Bergmann 提交于
      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: 9b8a11e8 ("soc: qcom: Introduce QMI encoder/decoder")
      Acked-by: NAndy Gross <andy.gross@linaro.org>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      dea4bd19
  20. 13 2月, 2018 2 次提交
  21. 26 10月, 2017 1 次提交
  22. 11 10月, 2017 1 次提交
    • A
      remoteproc: qcom: fix RPMSG_QCOM_GLINK_SMEM dependencies · ab759b97
      Arnd Bergmann 提交于
      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: eea07023 ("remoteproc: qcom: adsp: Allow defining GLINK edge")
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      ab759b97
  23. 02 9月, 2017 1 次提交
  24. 31 8月, 2017 1 次提交
  25. 28 6月, 2017 3 次提交
  26. 27 6月, 2017 1 次提交
    • S
      remoteproc/keystone: Add a remoteproc driver for Keystone 2 DSPs · e88bb8f7
      Suman Anna 提交于
      The Texas Instrument's Keystone 2 family of SoCs has 1 or more
      TMS320C66x DSP Core Subsystems (C66x CorePacs). Each subsystem has
      a C66x Fixed/Floating-Point DSP Core, with 32KB of L1P and L1D SRAMs,
      that can be configured and partitioned as either RAM and/or Cache,
      and 1 MB of L2 SRAM. The CorePac also includes an Internal DMA (IDMA),
      External Memory Controller (EMC), Extended Memory Controller (XMC)
      with a Memory Protection and Address Extension (MPAX) unit, a Bandwidth
      Management (BWM) unit, 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 driver expects the firmware names to be of the
      form "keystone-dsp<X>-fw", where X is the corresponding DSP number, and
      uses the standard remoteproc core ELF loader. The support is limited
      to images only using the DSP internal memories at the moment. This
      remoteproc driver is also designed to work with virtio, and uses the
      IPC Generation registers for performing the virtio signalling and
      getting notified of exceptions.
      
      The driver currently supports the 66AK2H/66AK2K, 66AK2L and 66AK2E
      SoCs.
      Signed-off-by: NSuman Anna <s-anna@ti.com>
      Signed-off-by: NSam Nelson <sam.nelson@ti.com>
      Signed-off-by: NAndrew F. Davis <afd@ti.com>
      Acked-by: NSantosh Shilimkar <ssantosh@kernel.org>
      Signed-off-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      e88bb8f7
  27. 26 6月, 2017 1 次提交
    • S
      remoteproc/davinci: Update Kconfig to depend on DMA_CMA · c51e882c
      Suman Anna 提交于
      The davinci remoteproc driver requires a CMA pool for allocating
      memory for virtio vrings/buffers and other sections of the firmware
      image. The allocations are done using the DMA API. The CMA option is
      currently selected automatically on systems with MMU when davinci
      remoteproc is enabled, switch this to a saner depends on dependency
      convention. The dependency is also updated to use the DMA_CMA kconfig
      symbol that is used for CMA allocations using the DMA API, the CMA
      dependency is inherited implicitly.
      
      Cc: Arnd Bergmann <arnd@arndb.de>
      Signed-off-by: NSuman Anna <s-anna@ti.com>
      Signed-off-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      c51e882c
  28. 29 3月, 2017 1 次提交
  29. 21 3月, 2017 1 次提交
    • A
      remoteproc: qcom: fix QCOM_SMD dependencies · c3104aae
      Arnd Bergmann 提交于
      qcom_smd_register_edge() is provided by either QCOM_SMD or RPMSG_QCOM_SMD,
      and if both of them are disabled, it does nothing.
      
      The check for the PIL drivers however only checks for QCOM_SMD, so it breaks
      with QCOM_SMD=n && RPMSG_QCOM_SMD=m:
      
      drivers/remoteproc/built-in.o: In function `smd_subdev_remove':
      qcom_wcnss_iris.c:(.text+0x231c): undefined reference to `qcom_smd_unregister_edge'
      drivers/remoteproc/built-in.o: In function `smd_subdev_probe':
      qcom_wcnss_iris.c:(.text+0x2344): undefined reference to `qcom_smd_register_edge'
      drivers/remoteproc/built-in.o: In function `smd_subdev_probe':
      qcom_q6v5_pil.c:(.text+0x3538): undefined reference to `qcom_smd_register_edge'
      qcom_q6v5_pil.c:(.text+0x3538): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `qcom_smd_register_edge'
      
      This clarifies the Kconfig dependency.
      
      Fixes: 4b48921a ("remoteproc: qcom: Use common SMD edge handler")
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      c3104aae