Commit Graph

633296 Commits

Author SHA1 Message Date
Bjorn Andersson 2bfc311a57 remoteproc: Drop wait in __rproc_boot()
In the event that rproc_boot() is called before the firmware loaded
completion has been flagged it will wait with the mutex held,
obstructing the request_firmware_nowait() callback from completing the
wait.

As rproc_fw_config_virtio() has been reduced to only triggering
auto-boot there is no longer a reason for waiting in rproc_boot(), so
drop this.

Cc: Sarangdhar Joshi <spjoshi@codeaurora.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-12-09 16:16:55 -08:00
Jean Delvare 394c62000a remoteproc/ste: Delete unused driver
Back in July 2014 I asked around what was the intended target
platform for the STE Modem remoteproc driver, so that I could add the
proper hardware dependency to its config option. The answer I got was
that there was no known publicly available hardware needing it and it
was unlikely that there ever would.

So I think it's time to delete this driver to lower the maintenance
burden.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Ohad Ben-Cohen <ohad@wizery.com>
Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
Cc: Suman Anna <s-anna@ti.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Loic Pallardy <loic.pallardy@st.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-12-09 16:16:54 -08:00
Bjorn Andersson a4ff18e9ed remoteproc: Remove "experimental" warning
Warning users that remoteproc and it's binary format are under
development doesn't serve much of a purpose. Different drivers support
different image formats and the resource table has a version field that
would need to be bumped when incompatible changes are introduced.

So lets drop this warning to clean up the kernel log.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-12-09 16:13:19 -08:00
Arnd Bergmann 8af1d63e63 remoteproc: qcom_adsp_pil: select qcom_scm
The adsp-pil driver relies on SCM and causes a build error without it:

ERROR: "qcom_scm_pas_supported" [drivers/remoteproc/qcom_adsp_pil.ko] undefined!
ERROR: "qcom_scm_is_available" [drivers/remoteproc/qcom_adsp_pil.ko] undefined!
ERROR: "qcom_scm_pas_auth_and_reset" [drivers/remoteproc/qcom_adsp_pil.ko] undefined!
ERROR: "qcom_scm_pas_shutdown" [drivers/remoteproc/qcom_adsp_pil.ko] undefined!
ERROR: "qcom_scm_pas_mem_setup" [drivers/remoteproc/qcom_adsp_pil.ko] undefined!
ERROR: "qcom_scm_pas_init_image" [drivers/remoteproc/qcom_adsp_pil.ko] undefined!

This adds a 'select', as SCM is a silent Kconfig symbol that gets
enabled implicitly by all its users.

Fixes: b9e718e950 ("remoteproc: Introduce Qualcomm ADSP PIL")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-12-09 10:55:00 -08:00
Bjorn Andersson dd29908b87 dt-binding: soc: qcom: smd: Add label property
The label property can be used to specify a name of the edge, for
consistent naming purposes.

Acked-by: Rob Herring <robh@kernel.org>
Acked-by: Andy Gross <andy.gross@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-12-04 20:57:50 -08:00
Stanimir Varbanov e67af182c2 remoteproc: qcom: mdt_loader: add include for sizes
Add linux/sizes.h to prevent build failure on non ARM architectures
as:

CC [M]  drivers/remoteproc/qcom_mdt_loader.o
In file included from include/linux/cache.h:4:0,
                 from include/linux/printk.h:8,
                 from include/linux/kernel.h:13,
                 from include/asm-generic/bug.h:13,
                 from arch/x86/include/asm/bug.h:35,
                 from include/linux/bug.h:4,
                 from include/linux/thread_info.h:11,
                 from arch/x86/include/asm/elf.h:7,
                 from include/linux/elf.h:4,
                 from drivers/remoteproc/qcom_mdt_loader.c:18:
drivers/remoteproc/qcom_mdt_loader.c: In function ‘qcom_mdt_parse’:
drivers/remoteproc/qcom_mdt_loader.c:90:52: error: ‘SZ_4K’ undeclared
(first use in this function)

Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-12-02 14:41:54 -08:00
Bjorn Andersson 90a80d88d2 remoteproc: Update last rproc_put users to rproc_free
The transition from rproc_put to rproc_free raced with the review of the
Qualcomm ADSP and ST SLIMproc drivers and these where not updated
accordingly.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-19 22:47:36 -08:00
Bjorn Andersson 6242347226 remoteproc: qcom: adsp: Add missing MODULE_DEVICE_TABLE
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-19 22:47:36 -08:00
Arnd Bergmann c496f6762b remoteproc: wcnss-pil: add QCOM_SMD dependency
When qcom_smd is a loadable module and wcnss-pil is built-in,
we get a link error:

drivers/remoteproc/qcom_wcnss_pil.o: In function `wcnss_smd_remove':
qcom_wcnss_iris.c:(.text.wcnss_smd_remove+0x10): undefined reference to `qcom_smd_unregister_edge'
drivers/remoteproc/qcom_wcnss_pil.o: In function `wcnss_smd_probe':
qcom_wcnss_iris.c:(.text.wcnss_smd_probe+0x12): undefined reference to `qcom_smd_register_edge'

This adds a Kconfig dependency to avoid this. We can still allow
build-testing with SMD disabled.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-18 09:03:43 -08:00
Bjorn Andersson 1a494c20d1 Merge branch 'topic/st_fdma' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/slave-dma into rproc-next
* 'topic/st_fdma' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/slave-dma:
  dmaengine: st_fdma: Revert: "Revert: Update st_fdma to 'depends on REMOTEPROC'"
2016-11-18 08:13:56 -08:00
Vinod Koul 3d6b3715fb dmaengine: st_fdma: Revert: "Revert: Update st_fdma to 'depends on REMOTEPROC'"
This reverts commit 6d066389d5 "(dmaengine:
st_fdma: Revert: Update st_fdma to 'depends on REMOTEPROC')" as the commit
it reverted was fine.

Reported-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-11-17 15:24:27 +05:30
Sarangdhar Joshi f33a73586f remoteproc: Add support for xo clock
Add xo clock support required to boot up Qualcomm ADSP processor.
The ADSP remoteproc driver keeps xo clock enabled until the
driver receives "handover" irq, in order to allow ADSP processor
to vote for xo clock with rpm.

Signed-off-by: Sarangdhar Joshi <spjoshi@codeaurora.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-16 22:32:24 -08:00
Arnd Bergmann cc7d54b050 remoteproc: adsp-pil: fix recursive dependency
The newly added driver tries to 'select' a symbol that it has an
implicit dependency on, which confuses Kconfig:

subsection "Kconfig recursive dependency limitations"
drivers/remoteproc/Kconfig:3:	symbol REMOTEPROC is selected by QCOM_ADSP_PIL

As REMOTEPROC is itself user-visible, we clearly should not select
it from a driver, removing the line fixes the problem.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-16 22:20:35 -08:00
Bjorn Andersson f88536f1a5 Merge branch 'topic/st_fdma' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/slave-dma into rproc-next 2016-11-16 22:19:47 -08:00
Bjorn Andersson b9e718e950 remoteproc: Introduce Qualcomm ADSP PIL
The Qualcomm ADSP Peripheral Image Loader is used on a variety of
different Qualcomm platforms for loading firmware into and controlling
the Hexagon based ADSP.

Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-15 18:44:53 -08:00
Bjorn Andersson f904e7245b dt-binding: remoteproc: Introduce ADSP loader binding
This document defines the binding for a component that loads firmware
and control the life cycle of the Qualcomm ADSP Hexagon core.

Acked-by: Rob Herring <robh@kernel.org>
Cc: Sarangdhar Joshi <spjoshi@codeaurora.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-15 18:43:12 -08:00
Bjorn Andersson 6de1a507c4 remoteproc: qcom_wcnss: Fix circular module dependency
The tie between the main WCNSS driver and the IRIS driver causes a
circular dependency between the two modules. Neither part makes sense to
have on their own so lets merge them into one module.

For the sake of picking up the clock and regulator resources described
in the iris of_node we need an associated struct device. But, to keep
the size of the patch down we continue to represent the IRIS part as its
own platform_driver, within the same module, rather than setting up a
dummy device.

Fixes: aed361adca ("remoteproc: qcom: Introduce WCNSS peripheral image loader")
Reported-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-14 21:52:19 -08:00
Bjorn Andersson cda8529346 remoteproc: Merge table_ptr and cached_table pointers
As all vdev resources are allocated before we boot the remote processor
we no longer need to support modifying the resource table while the
remote is running.

This saves us from the table_ptr dance, but more importantly allow the
remote processor to enable security lock down of the loaded table memory
region.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-14 21:52:18 -08:00
Bjorn Andersson 2ca7d866ca remoteproc: Remove custom vdev handler list
The vdev handler is now just another resource allocator, so handle all
resource types in a single pass.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-14 21:52:18 -08:00
Bjorn Andersson 48f18f8989 remoteproc: Update max_notifyid as we allocate vrings
Vrings are now allocated as we parse the resource table, before we
boot the rproc or register any virtio devices, so it's safe to bump
max_notifyid as part of this process.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-14 21:52:17 -08:00
Bjorn Andersson f5bcb35387 remoteproc: Decouple vdev resources and devices
Represent the virtio device part of the vdev resources as remoteproc
subdevices to finalize the decoupling of the virtio resource and device
handling.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-14 21:52:17 -08:00
Bjorn Andersson 2b45cef586 remoteproc: Further extend the vdev life cycle
Tie the vdev (and hence vring) life cycle to the resource parsing and
resource cleanup operations, allowing us to safely register and
unregister virtio devices on the go.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-14 21:52:16 -08:00
Bjorn Andersson a863af5d41 remoteproc: virtio: Anchor vring life cycle in vdev
Instead of having the vrings being allocated and freed as they are
requested by the virtio device tie their life cycle to the vdev
resource. This allows us to decouple the vdev resource management from
the virtio device management.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-14 21:52:16 -08:00
Bjorn Andersson aab8d80223 remoteproc: Assign kref to rproc_vdev
No functional change

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-14 21:52:15 -08:00
Bjorn Andersson be33c28fad dt-binding: remoteproc: wcnss: Allow describing smd edge
Allow the associated smd edge to be described within the wcnss
remoteproc node. This creates a bond between the remoteproc and the
associated smd channels and devices, showing the interaction between the
two parts and provides both a natural reference to the other.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
2016-11-14 21:52:15 -08:00
Bjorn Andersson 5a856bc63c remoteproc: wcnss: Bond SMD edge to remoteproc
Allow the wcnss smd edge to be described as a child of the wcnss
remoteproc node and make the edge life cycle follow the running state of
the remoteproc.

This bond is necessary to clean up the smd state when the remote
processor is suddenly removed, and in some cases even when it shut down
in a controlled fasion.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-14 21:52:14 -08:00
Bjorn Andersson 8fc947230f rpmsg: smd: Expose edge registration functions
The edge registration functions is to be used from a remoteproc driver
to register and unregister an edge as the remote processor comes and
goes.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-14 21:52:14 -08:00
Vinod Koul 6d066389d5 dmaengine: st_fdma: Revert: Update st_fdma to 'depends on REMOTEPROC'
This reverts commit 184e13969f ("dmaengine:
st_fdma: Update st_fdma to 'depends on REMOTEPROC'") due to objection from
Bjorn.

Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-11-14 10:43:58 +05:30
Bjorn Andersson 7bdc9650f0 remoteproc: Introduce subdevices
A subdevice is an abstract entity that can be used to tie actions to the
booting and shutting down of a remote processor. The subdevice object is
expected to be embedded in concrete implementations, allowing for a
variety of use cases to be implemented.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-11-09 21:17:08 -08:00
Peter Griffin 184e13969f dmaengine: st_fdma: Update st_fdma to 'depends on REMOTEPROC'.
During randconfig builds you can get the following warning
"warning: (ST_FDMA) selects ST_SLIM_REMOTEPROC which has unmet direct
 dependencies (REMOTEPROC)"

randconfig builds should always build without any warnings so
update fdma to depend on REMOTEPROC so this can not happen.

Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Reported-by: Arnd Bergmann <arnd@arndb.de>
Tested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-11-03 18:53:25 +05:30
Wei Yongjun 1d701d3dd8 remoteproc: st: Fix error return code in st_rproc_probe()
Fix to return a negative error code from the st_rproc_state() error
handling case instead of 0, as done elsewhere in this function.

Fixes: 63edb0310a ("remoteproc: Supply controller driver for ST's Remote Processors")
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-10-31 17:36:10 -07:00
Matt Redfearn fd50d8c061 remoteproc: debugfs: Remove state entry which is duplicated is sysfs
Since there is now an always available state file in sysfs with the same
function as this one in debugfs, remove the redundant entry.

Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-10-31 17:24:48 -07:00
Matt Redfearn 2aefbef041 remoteproc: Add a sysfs interface for firmware and state
This patch adds a sysfs interface to rproc allowing the firmware name
and processor state to be changed dynamically.

State was previously available in debugfs, and is replicated here. The
firmware file allows retrieval of the running firmware name, and a new
one to be specified at run time, so long as the remote processor has
been stopped.

Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-10-31 17:24:46 -07:00
Wei Yongjun e687cd19f1 dmaengine: st_fdma: Fix the error return code in st_fdma_probe()
In case of error, the function st_slim_rproc_alloc() returns ERR_PTR()
and never returns NULL. The NULL test in the return value check should
be replaced with IS_ERR().

Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
Acked-by: Peter Griffin <peter.griffin@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-10-19 22:29:33 +05:30
Arnd Bergmann 919b742fb5 dmaengine: st_fdma: fix uninitialized variable access
The newly added st_fdma driver introduces a build warning for
allmodconfig when we add '-Wmaybe-uninitialized':

drivers/dma/st_fdma.c: In function 'st_fdma_probe':
drivers/dma/st_fdma.c:777:5: error: 'ret' may be used uninitialized in this function [-Werror=maybe-uninitialized]

The warning is correct, though this can't happen in practice
as the check is redundant (we don't get to this function if
the pointer is NULL). Even if the function were called with a
NULL of_node, the check is not needed because of_property_read_u32
can deal with a NULL argument by returning an error.

Removing the unnecessary code simplifies the function and avoids
the condition that we get the warning for.

Fixes: 6b4cd727ea ("dmaengine: st_fdma: Add STMicroelectronics FDMA engine driver support")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Peter Griffin <peter.griffin@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-10-19 18:44:42 +05:30
Javier Martinez Canillas af148e458d remoteproc: qcom: wcnss_iris: Fix module autoload
If the driver is built as a module, autoload won't work because the module
alias information is not filled. So user-space can't match the registered
device with the corresponding module.

Export the module alias information using the MODULE_DEVICE_TABLE() macro.

Before this patch:

$ modinfo drivers/remoteproc/qcom_wcnss_iris.ko | grep alias
$

After this patch:

$ modinfo drivers/remoteproc/qcom_wcnss_iris.ko | grep alias
alias:          of:N*T*Cqcom,wcn3680C*
alias:          of:N*T*Cqcom,wcn3680
alias:          of:N*T*Cqcom,wcn3660C*
alias:          of:N*T*Cqcom,wcn3660
alias:          of:N*T*Cqcom,wcn3620C*
alias:          of:N*T*Cqcom,wcn3620

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-10-18 15:18:16 -07:00
Javier Martinez Canillas 4958aabb0c remoteproc: qcom: wcnss: Fix module autoload
If the driver is built as a module, autoload won't work because the module
alias information is not filled. So user-space can't match the registered
device with the corresponding module.

Export the module alias information using the MODULE_DEVICE_TABLE() macro.

Before this patch:

$ modinfo drivers/remoteproc/qcom_wcnss.ko | grep alias
$

After this patch:

$ modinfo drivers/remoteproc/qcom_wcnss.ko | grep alias
alias:          of:N*T*Cqcom,pronto-v2-pilC*
alias:          of:N*T*Cqcom,pronto-v2-pil
alias:          of:N*T*Cqcom,pronto-v1-pilC*
alias:          of:N*T*Cqcom,pronto-v1-pil
alias:          of:N*T*Cqcom,riva-pilC*
alias:          of:N*T*Cqcom,riva-pil

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-10-18 15:18:12 -07:00
Javier Martinez Canillas 3227c876fb remoteproc: qcom: q6v5_pil: Fix module autoload
If the driver is built as a module, autoload won't work because the module
alias information is not filled. So user-space can't match the registered
device with the corresponding module.

Export the module alias information using the MODULE_DEVICE_TABLE() macro.

Before this patch:

$ modinfo drivers/remoteproc/qcom_q6v5_pil.ko | grep alias
$

After this patch:

$ modinfo drivers/remoteproc/qcom_q6v5_pil.ko | grep alias
alias:          of:N*T*Cqcom,q6v5-pilC*
alias:          of:N*T*Cqcom,q6v5-pil

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-10-18 15:18:09 -07:00
Matt Redfearn 0f57dc6ae1 remoteproc: Keep local copy of firmware name
Storage of the firmware name was inconsistent, either storing a pointer
to a name stored with unknown ownership, or a variable length tacked
onto the end of the struct proc allocated in rproc_alloc.

In preparation for allowing the firmware of an already allocated struct
rproc to be changed, instead always keep a locally maintained copy of
the firmware name.

Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2016-10-18 15:03:35 -07:00
Peter Griffin ecaf33bc03 ARM: multi_v7_defconfig: Enable STi and simple-card drivers.
This patch enables the STi ALSA drivers found on STi platforms
as well as the simple-card driver which is a dependency to have
working sound.

Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Acked-by: Lee Jones <lee.jones@linaro.org>
Cc: arnaud.pouliquen@st.com
Cc: broonie@kernel.org
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-10-18 20:12:06 +05:30
Peter Griffin 5cb7b365d3 ARM: multi_v7_defconfig: Enable STi FDMA driver
This DMA controller is found on all STi chipsets.

Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Acked-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-10-18 20:12:06 +05:30
Peter Griffin 4ba975a896 ARM: multi_v7_defconfig: Enable st_remoteproc driver.
The st231 remote coprocessors are found on all STi chipsets.

Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-10-18 20:12:06 +05:30
Peter Griffin 6fb347c057 ARM: multi_v7_defconfig: Enable remoteproc core
Now that remoteproc core is selectable it needs to be enabled
in the multi_v7 build.

Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-10-18 20:12:06 +05:30
Peter Griffin 6da0f216f2 MAINTAINERS: Add FDMA driver files to STi section.
This patch adds the FDMA driver files to the STi
section of the maintainers file.

Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Acked-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-10-18 20:12:06 +05:30
Peter Griffin 6b4cd727ea dmaengine: st_fdma: Add STMicroelectronics FDMA engine driver support
This patch adds support for the Flexible Direct Memory Access (FDMA) core
driver. The FDMA is a slim core CPU with a dedicated firmware.
It is a general purpose DMA controller capable of supporting 16
independent DMA channels. Data moves maybe from memory to memory
or between memory and paced latency critical real time targets and it
is found on al STi based chipsets.

Signed-off-by: Ludovic Barre <ludovic.barre@st.com>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-10-18 20:12:06 +05:30
Peter Griffin 812ab065ea dmaengine: st_fdma: Add STMicroelectronics FDMA driver header file
This header file will also be used by the dma xbar driver in the
future.

Signed-off-by: Ludovic Barre <ludovic.barre@st.com>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-10-18 20:12:06 +05:30
Peter Griffin 897f419add dmaengine: st_fdma: Add STMicroelectronics FDMA DT binding documentation
This patch adds the DT binding documentation for the FDMA constroller
found on STi based chipsets from STMicroelectronics.

Signed-off-by: Ludovic Barre <ludovic.barre@st.com>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-10-18 20:12:05 +05:30
Peter Griffin e41ddbc00e remoteproc: Update Kconfig setup to 'depends on REMOTEPROC'
Make REMOTEPROC core a selectable kconfig option, and update
remoteproc client drivers to 'depends on' the core. This avoids
some nasty Kconfig recursive dependency issues. Also when using
menuconfig client drivers will be hidden until the core has been
enabled.

Documentation/kbuild/kconfig-language.txt:

  Note:
        select should be used with care. select will force
        a symbol to a value without visiting the dependencies.
        By abusing select you are able to select a symbol FOO even
        if FOO depends on BAR that is not set.
        In general use select only for non-visible symbols
        (no prompts anywhere) and for symbols with no dependencies.
        That will limit the usefulness but on the other hand avoid
        the illegal configurations all over.

Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-10-18 20:12:05 +05:30
Peter Griffin c9d7cc3e76 MAINTAINERS: Add st slim core rproc driver to STi section.
This patch adds the slim core rproc driver to the STi section
of the MAINTAINERS file.

Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Acked-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2016-10-18 20:12:05 +05:30
Peter Griffin bb6869b214 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>
2016-10-18 20:12:05 +05:30