Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2fee94b7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull remoteproc updates from Ohad Ben-Cohen:

 - remoteproc fixes/cleanups from Suman Anna

 - new remoteproc TI Wakeup M3 driver from Dave Gerlach

 - remoteproc core support for TI's Wakeup M3 driver from both Dave and Suman

 - tiny remoteproc build fix from myself

* tag 'remoteproc-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/ohad/remoteproc:
  remoteproc: fix !CONFIG_OF build breakage
  remoteproc/wkup_m3: add a remoteproc driver for TI Wakeup M3
  Documentation: dt: add bindings for TI Wakeup M3 processor
  remoteproc: add a rproc ops for performing address translation
  remoteproc: introduce rproc_get_by_phandle API
  remoteproc: fix various checkpatch warnings
  remoteproc/davinci: fix quoted split string checkpatch warning
  remoteproc/ste: add blank lines after declarations
parents d033ed9e 8de3dbd0
Loading
Loading
Loading
Loading
+52 −0
Original line number Diff line number Diff line
TI Wakeup M3 Remoteproc Driver
==============================

The TI AM33xx and AM43xx family of devices use a small Cortex M3 co-processor
(commonly referred to as Wakeup M3 or CM3) to help with various low power tasks
that cannot be controlled from the MPU. This CM3 processor requires a firmware
binary to accomplish this. The wkup_m3 remoteproc driver handles the loading of
the firmware and booting of the CM3.

Wkup M3 Device Node:
====================
A wkup_m3 device node is used to represent the Wakeup M3 processor instance
within the SoC. It is added as a child node of the parent interconnect bus
(l4_wkup) through which it is accessible to the MPU.

Required properties:
--------------------
- compatible:		Should be one of,
				"ti,am3352-wkup-m3" for AM33xx SoCs
				"ti,am4372-wkup-m3" for AM43xx SoCs
- reg:			Should contain the address ranges for the two internal
			memory regions, UMEM and DMEM. The parent node should
			provide an appropriate ranges property for properly
			translating these into bus addresses.
- reg-names:		Contains the corresponding names for the two memory
			regions. These should be named "umem" & "dmem".
- ti,hwmods:		Name of the hwmod associated with the wkupm3 device.
- ti,pm-firmware:	Name of firmware file to be used for loading and
			booting the wkup_m3 remote processor.

Example:
--------
/* AM33xx */
ocp {
	 l4_wkup: l4_wkup@44c00000 {
		compatible = "am335-l4-wkup", "simple-bus";
		ranges = <0 0x44c00000 0x400000>;
		#address-cells = <1>;
		#size-cells = <1>;

		wkup_m3: wkup_m3@100000 {
			compatible = "ti,am3352-wkup-m3";
			reg = <0x100000 0x4000>,
			      <0x180000 0x2000>;
			reg-names = "umem", "dmem";
			ti,hwmods = "wkup_m3";
			ti,pm-firmware = "am335x-pm-firmware.elf";
		};
	};

	...
};
+6 −0
Original line number Diff line number Diff line
@@ -51,6 +51,12 @@ cost.
        rproc_shutdown() returns, and users can still use it with a subsequent
        rproc_boot(), if needed.

  struct rproc *rproc_get_by_phandle(phandle phandle)
    - Find an rproc handle using a device tree phandle. Returns the rproc
      handle on success, and NULL on failure. This function increments
      the remote processor's refcount, so always use rproc_put() to
      decrement it back once rproc isn't needed anymore.

3. Typical usage

#include <linux/remoteproc.h>
+13 −0
Original line number Diff line number Diff line
@@ -41,6 +41,19 @@ config STE_MODEM_RPROC
	  This can be either built-in or a loadable module.
	  If unsure say N.

config WKUP_M3_RPROC
	tristate "AMx3xx Wakeup M3 remoteproc support"
	depends on SOC_AM33XX || SOC_AM43XX
	select REMOTEPROC
	help
	  Say y here to support Wakeup M3 remote processor on TI AM33xx
	  and AM43xx family of SoCs.

	  Required for Suspend-to-RAM on AM33xx and AM43xx SoCs. Also needed
	  for deep CPUIdle states on AM33xx SoCs. Allows for loading of the
	  firmware onto these remote processors.
	  If unsure say N.

config DA8XX_REMOTEPROC
	tristate "DA8xx/OMAP-L13x remoteproc support"
	depends on ARCH_DAVINCI_DA8XX
+1 −0
Original line number Diff line number Diff line
@@ -9,4 +9,5 @@ remoteproc-y += remoteproc_virtio.o
remoteproc-y				+= remoteproc_elf_loader.o
obj-$(CONFIG_OMAP_REMOTEPROC)		+= omap_remoteproc.o
obj-$(CONFIG_STE_MODEM_RPROC)	 	+= ste_modem_rproc.o
obj-$(CONFIG_WKUP_M3_RPROC)		+= wkup_m3_rproc.o
obj-$(CONFIG_DA8XX_REMOTEPROC)		+= da8xx_remoteproc.o
+1 −2
Original line number Diff line number Diff line
@@ -26,8 +26,7 @@
static char *da8xx_fw_name;
module_param(da8xx_fw_name, charp, S_IRUGO);
MODULE_PARM_DESC(da8xx_fw_name,
		 "\n\t\tName of DSP firmware file in /lib/firmware"
		 " (if not specified defaults to 'rproc-dsp-fw')");
		 "Name of DSP firmware file in /lib/firmware (if not specified defaults to 'rproc-dsp-fw')");

/*
 * OMAP-L138 Technical References:
Loading