remoteproc: st_slim_rproc: add a slimcore rproc driver
authorPeter Griffin <peter.griffin@linaro.org>
Tue, 18 Oct 2016 09:39:06 +0000 (10:39 +0100)
committerVinod Koul <vinod.koul@intel.com>
Tue, 18 Oct 2016 14:42:05 +0000 (20:12 +0530)
commitbb6869b2147817385e0261f928b942f466f74a63
tree17b5d6383bd6c1bfed5b64b01450fa59ca0ce00a
parent1001354ca34179f3db924eb66672442a173147dc
remoteproc: st_slim_rproc: add a slimcore rproc driver

slim core is used as a basis for many IPs in the STi
chipsets such as fdma and demux. To avoid duplicating
the elf loading code in each device driver a slim
rproc driver has been created.

This driver is designed to be used by other device drivers
such as fdma, or demux whose IP is based around a slim core.
The device driver can call slim_rproc_alloc() to allocate
a slim rproc and slim_rproc_put() when finished.

This driver takes care of ioremapping the slim
registers (dmem, imem, slimcore, peripherals), whose offsets
and sizes can change between IP's. It also obtains and enables
any clocks used by the device. This approach avoids having
a double mapping of the registers as slim_rproc does not register
its own platform device. It also maps well to device tree
abstraction as it allows us to have one dt node for the whole
device.

All of the generic rproc elf loading code can be reused, and
we provide start() stop() hooks to start and stop the slim
core once the firmware has been loaded. This has been tested
successfully with fdma driver.

Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/remoteproc/Kconfig
drivers/remoteproc/Makefile
drivers/remoteproc/st_slim_rproc.c [new file with mode: 0644]
include/linux/remoteproc/st_slim_rproc.h [new file with mode: 0644]