remoteproc: add framework for controlling remote processors
authorOhad Ben-Cohen <ohad@wizery.com>
Thu, 20 Oct 2011 14:52:46 +0000 (16:52 +0200)
committerOhad Ben-Cohen <ohad@wizery.com>
Wed, 8 Feb 2012 20:52:56 +0000 (22:52 +0200)
commit400e64df6b237eb36b127efd72000a2794f9eec1
treecdc007e406c3305d4ac2356e5b402b9c1ca82a6a
parentdcd6c92267155e70a94b3927bce681ce74b80d1f
remoteproc: add framework for controlling remote processors

Modern SoCs typically employ a central symmetric multiprocessing (SMP)
application processor running Linux, with several other asymmetric
multiprocessing (AMP) heterogeneous processors running different instances
of operating system, whether Linux or any other flavor of real-time OS.

Booting a remote processor in an AMP configuration typically involves:
- Loading a firmware which contains the OS image
- Allocating and providing it required system resources (e.g. memory)
- Programming an IOMMU (when relevant)
- Powering on the device

This patch introduces a generic framework that allows drivers to do
that. In the future, this framework will also include runtime power
management and error recovery.

Based on (but now quite far from) work done by Fernando Guzman Lugo
<fernando.lugo@ti.com>.

ELF loader was written by Mark Grosen <mgrosen@ti.com>, based on
msm's Peripheral Image Loader (PIL) by Stephen Boyd <sboyd@codeaurora.org>.

Designed with Brian Swetland <swetland@google.com>.

Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Cc: Brian Swetland <swetland@google.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Tony Lindgren <tony@atomide.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Greg KH <greg@kroah.com>
Cc: Stephen Boyd <sboyd@codeaurora.org>
Documentation/remoteproc.txt [new file with mode: 0644]
MAINTAINERS
drivers/Kconfig
drivers/Makefile
drivers/remoteproc/Kconfig [new file with mode: 0644]
drivers/remoteproc/Makefile [new file with mode: 0644]
drivers/remoteproc/remoteproc_core.c [new file with mode: 0644]
drivers/remoteproc/remoteproc_internal.h [new file with mode: 0644]
include/linux/remoteproc.h [new file with mode: 0644]