mbox series

[RFC,0/5] Hexagon remoteproc spring cleaning

Message ID 20180523052054.19025-1-bjorn.andersson@linaro.org
Headers show
Series Hexagon remoteproc spring cleaning | expand

Message

Bjorn Andersson May 23, 2018, 5:20 a.m. UTC
With the introduction of support for the non-MSA Hexagon WCSS driver from
Sricharan and the non-PAS ADSP driver from Rohit it makes sense to overhaul the
structure of the Qualcomm "Q6V5 drivers".

The first patch is from Sricharan's series and included here for completeness.
The second patch introduces a set of helper functions, based on the current
state of the qcom_q6v5_pil driver. The third and forth patch migrates the PAS
and the MSA drivers over to using these helpers. Finally a (completely)
reworked version of Sricharan's WCSS remoteproc driver is introduced.


With this in place I suggest that we rename qcom_adsp_pil.c to qcom_q6v5_pas.c,
qcom_q6v5_pil.c to qcom_q6v5_msa.c and depending on the details of the non-PAS
ADSP we could potentially combine that into a qcom_q6v5_pil.c - or we carry
them as separate files.

Looking at the remaining non-essential parts of these drivers we have
memory-region handling and halt_axi handling. The prior is actively being
worked on and the latter should (if no better abstraction is presented) be
possible to just put in the new qcom_q6v5.c.

Bjorn Andersson (3):
  remoteproc: q6v5: Extract common resource handling
  remoteproc: qcom: adsp: Use common q6v5 helpers
  remoteproc: qcom: q6v5-pil: Use common q6v5 helpers

Sricharan R (2):
  remoteproc: qcom: mdt_loader: Make the firmware authentication
    optional
  remoteproc: qcom: Introduce Hexagon V5 based WCSS driver

 drivers/remoteproc/Kconfig          |  23 ++
 drivers/remoteproc/Makefile         |   2 +
 drivers/remoteproc/qcom_adsp_pil.c  | 156 ++------
 drivers/remoteproc/qcom_q6v5.c      | 243 ++++++++++++
 drivers/remoteproc/qcom_q6v5.h      |  46 +++
 drivers/remoteproc/qcom_q6v5_pil.c  | 157 +-------
 drivers/remoteproc/qcom_q6v5_wcss.c | 580 ++++++++++++++++++++++++++++
 drivers/soc/qcom/mdt_loader.c       |  87 +++--
 include/linux/soc/qcom/mdt_loader.h |   4 +
 9 files changed, 1002 insertions(+), 296 deletions(-)
 create mode 100644 drivers/remoteproc/qcom_q6v5.c
 create mode 100644 drivers/remoteproc/qcom_q6v5.h
 create mode 100644 drivers/remoteproc/qcom_q6v5_wcss.c

-- 
2.17.0

Comments

Vinod Koul May 23, 2018, 6:05 a.m. UTC | #1
On 22-05-18, 22:20, Bjorn Andersson wrote:

> +static int q6v5_wcss_reset(struct q6v5_wcss *wcss)

> +{

> +	int ret;

> +	u32 val;

> +	int i;

> +

> +	/* Assert resets, stop core */

> +	val = readl(wcss->reg_base + QDSP6SS_RESET_REG);

> +	val |= Q6SS_CORE_ARES | Q6SS_BUS_ARES_ENABLE | Q6SS_STOP_CORE;

> +	writel(val, wcss->reg_base + QDSP6SS_RESET_REG);

> +

> +	/* BHS require xo cbcr to be enabled */

> +	val = readl(wcss->reg_base + QDSP6SS_XO_CBCR);

> +	val |= 0x1;

> +	writel(val, wcss->reg_base + QDSP6SS_XO_CBCR);


As commented on previous patch, it would help IMO to add a modify() wrapper
here which would perform read, modify and write.

Looking at the patch, few other comments would be applicable too, so would be
great if you/Sricharan can update this

-- 
~Vinod