mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
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 <[email protected]>. ELF loader was written by Mark Grosen <[email protected]>, based on msm's Peripheral Image Loader (PIL) by Stephen Boyd <[email protected]>. Designed with Brian Swetland <[email protected]>. Signed-off-by: Ohad Ben-Cohen <[email protected]> Acked-by: Grant Likely <[email protected]> Cc: Brian Swetland <[email protected]> Cc: Arnd Bergmann <[email protected]> Cc: Tony Lindgren <[email protected]> Cc: Russell King <[email protected]> Cc: Rusty Russell <[email protected]> Cc: Andrew Morton <[email protected]> Cc: Greg KH <[email protected]> Cc: Stephen Boyd <[email protected]>
This commit is contained in:
parent
dcd6c92267
commit
400e64df6b
9 changed files with 2062 additions and 0 deletions
3
drivers/remoteproc/Kconfig
Normal file
3
drivers/remoteproc/Kconfig
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# REMOTEPROC gets selected by whoever wants it
|
||||
config REMOTEPROC
|
||||
tristate
|
||||
6
drivers/remoteproc/Makefile
Normal file
6
drivers/remoteproc/Makefile
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#
|
||||
# Generic framework for controlling remote processors
|
||||
#
|
||||
|
||||
obj-$(CONFIG_REMOTEPROC) += remoteproc.o
|
||||
remoteproc-y := remoteproc_core.o
|
||||
1410
drivers/remoteproc/remoteproc_core.c
Normal file
1410
drivers/remoteproc/remoteproc_core.c
Normal file
File diff suppressed because it is too large
Load diff
44
drivers/remoteproc/remoteproc_internal.h
Normal file
44
drivers/remoteproc/remoteproc_internal.h
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Remote processor framework
|
||||
*
|
||||
* Copyright (C) 2011 Texas Instruments, Inc.
|
||||
* Copyright (C) 2011 Google, Inc.
|
||||
*
|
||||
* Ohad Ben-Cohen <ohad@wizery.com>
|
||||
* Brian Swetland <swetland@google.com>
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#ifndef REMOTEPROC_INTERNAL_H
|
||||
#define REMOTEPROC_INTERNAL_H
|
||||
|
||||
#include <linux/irqreturn.h>
|
||||
|
||||
struct rproc;
|
||||
|
||||
/* from remoteproc_core.c */
|
||||
void rproc_release(struct kref *kref);
|
||||
irqreturn_t rproc_vq_interrupt(struct rproc *rproc, int vq_id);
|
||||
|
||||
/* from remoteproc_rpmsg.c */
|
||||
int rproc_add_rpmsg_vdev(struct rproc *);
|
||||
void rproc_remove_rpmsg_vdev(struct rproc *rproc);
|
||||
|
||||
/* from remoteproc_debugfs.c */
|
||||
void rproc_remove_trace_file(struct dentry *tfile);
|
||||
struct dentry *rproc_create_trace_file(const char *name, struct rproc *rproc,
|
||||
struct rproc_mem_entry *trace);
|
||||
void rproc_delete_debug_dir(struct rproc *rproc);
|
||||
void rproc_create_debug_dir(struct rproc *rproc);
|
||||
void rproc_init_debugfs(void);
|
||||
void rproc_exit_debugfs(void);
|
||||
|
||||
#endif /* REMOTEPROC_INTERNAL_H */
|
||||
Loading…
Reference in a new issue