[U-Boot] [PATCH 0/3] drivers/sandbox: Introduce a simplified remoteproc framework
Nishanth Menon
nm at ti.com
Mon Aug 24 19:28:34 CEST 2015
Hi,
Many System on Chip(SoC) solutions are complex with multiple
processors on the same die dedicated to either general purpose of
specialized functions. Many examples do exist in today's SoCs from
various vendors. Typical examples are micro controllers such as an ARM
M3/M0 doing a offload of specific function such as event integration
or power management or controlling camera etc.
Traditionally, the responsibility of loading up such a processor with
a firmware and communication has been with a High Level Operating
System(HLOS) such as Linux. However, there exists classes of products
where Linux would need to expect services from such a processor or
the delay of Linux and operating system being able to load up such a
firmware is unacceptable.
The intent here is to introduce a simplified remoteproc framework
which can then be used to provide basic services to these remote
processors.
Nishanth Menon (3):
drivers: Introduce a simplified remoteproc framework
remoteproc: Introduce a sandbox dummy driver
sandbox: Introduce dummy remoteproc nodes
arch/sandbox/dts/test.dts | 13 +
common/Kconfig | 5 +
common/Makefile | 1 +
common/cmd_remoteproc.c | 224 ++++++++++++
configs/sandbox_defconfig | 2 +
doc/device-tree-bindings/remoteproc/remoteproc.txt | 14 +
doc/driver-model/remoteproc-framework.txt | 163 +++++++++
drivers/Kconfig | 2 +
drivers/Makefile | 1 +
drivers/remoteproc/Kconfig | 24 ++
drivers/remoteproc/Makefile | 10 +
drivers/remoteproc/rproc-uclass.c | 406 +++++++++++++++++++++
drivers/remoteproc/sandbox_testproc.c | 243 ++++++++++++
include/dm/uclass-id.h | 1 +
include/remoteproc.h | 81 ++++
15 files changed, 1190 insertions(+)
create mode 100644 common/cmd_remoteproc.c
create mode 100644 doc/device-tree-bindings/remoteproc/remoteproc.txt
create mode 100644 doc/driver-model/remoteproc-framework.txt
create mode 100644 drivers/remoteproc/Kconfig
create mode 100644 drivers/remoteproc/Makefile
create mode 100644 drivers/remoteproc/rproc-uclass.c
create mode 100644 drivers/remoteproc/sandbox_testproc.c
create mode 100644 include/remoteproc.h
Simple test with test.dtb:
u-boot$ ./u-boot -d ./arch/sandbox/dts/test.dtb
U-Boot 2015.10-rc2-00067-g05997426fef2 (Aug 24 2015 - 17:23:58 +0000)
DRAM: 128 MiB
Using default environment
In: serial
Out: lcd
Err: lcd
Net: Net Initialization Skipped
eth0: eth at 10002000, eth5: eth at 10003000, eth1: eth at 10004000
=> help rproc
rproc - Control operation of remote processors in an SoC
Usage:
rproc [init|list|load|start|stop|reset|ping]
Where:
[addr] is a memory address
<id> is a numerical identifier for the remote processor
provided by 'list' command.
Note: Remote processors must be initalized prior to usage
Note: Services are dependent on the driver capability
'list' command shows the capability of each device
Subcommands:
init - Enumerate and initalize the remote processors
list - list available remote processors
load <id> [addr] [size]- Load the remote processor with binary
image stored at address [addr] in memory
start <id> - Start the remote processor(must be loaded)
stop <id> - Stop the remote processor
reset <id> - Reset the remote processor
is_running <id> - Reports if the remote processor is running
ping <id> - Ping the remote processor for communication
=> rproc init
=> rproc list
0 - Name:'proc_3_legacy' type:'internal memory mapped' supports: load start stop reset is_running ping
1 - Name:'remoteproc-test-dev1' type:'internal memory mapped' supports: load start stop reset is_running ping
2 - Name:'remoteproc-test-dev2' type:'internal memory mapped' supports: load start stop reset is_running ping
=> rproc load 0 1 2
Loading to 'proc_3_legacy' from address 0x00000001 size of 2 bytes
=> rproc ping 0
Pinging proc_3_legacy...
proc_3_legacy: No response.(Not started?)
=> rproc start 0
Starting proc_3_legacy...
=> rproc is_running 0
Checking if running: proc_3_legacy...
Remote processor is Running
=> rproc ping 0
Pinging proc_3_legacy...
Remote processor responds 'Pong'
=> rproc ping 1
Pinging remoteproc-test-dev1...
remoteproc-test-dev1: No response.(Not started?)
=> rproc is_running 1
Checking if running: remoteproc-test-dev1...
Remote processor is NOT Running
=>
--
2.1.4
More information about the U-Boot
mailing list