diff options
author | Sibi Sankar <sibis@codeaurora.org> | 2021-09-16 16:59:21 +0300 |
---|---|---|
committer | Bjorn Andersson <bjorn.andersson@linaro.org> | 2021-09-27 23:43:29 +0300 |
commit | c1fe10d238c0256a77dbc4bf6493b9782b2a218d (patch) | |
tree | 0dd439404f4dbb55c5dc6ab36de113fbf38a6a3b /drivers/remoteproc/qcom_q6v5_wcss.c | |
parent | 8443ef7b5771830bc86c9e2c1622b55ddf33f0f5 (diff) | |
download | linux-c1fe10d238c0256a77dbc4bf6493b9782b2a218d.tar.xz |
remoteproc: qcom: q6v5: Use qmp_send to update co-processor load state
The power domains exposed by the AOSS QMP driver control the load state
resources linked to modem, adsp, cdsp remoteprocs. These are used to
notify the Always on Subsystem (AOSS) that a particular co-processor is
up/down. AOSS uses this information to wait for the co-processors to
suspend before starting its sleep sequence.
These co-processors enter low-power modes independent to that of the
application processor and the load state resources linked to them are
expected to remain unaltered across system suspend/resume cycles. To
achieve this behavior lets stop using the power-domains exposed by the
AOSS QMP node and replace them with generic qmp_send interface instead.
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
[bjorn: Fixed up build error in q6v5_wcss_remove()]
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/1631800770-371-5-git-send-email-sibis@codeaurora.org
Diffstat (limited to 'drivers/remoteproc/qcom_q6v5_wcss.c')
-rw-r--r-- | drivers/remoteproc/qcom_q6v5_wcss.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/remoteproc/qcom_q6v5_wcss.c b/drivers/remoteproc/qcom_q6v5_wcss.c index 20d50ec7eff1..bb0947f7770e 100644 --- a/drivers/remoteproc/qcom_q6v5_wcss.c +++ b/drivers/remoteproc/qcom_q6v5_wcss.c @@ -1044,8 +1044,7 @@ static int q6v5_wcss_probe(struct platform_device *pdev) if (ret) goto free_rproc; - ret = qcom_q6v5_init(&wcss->q6v5, pdev, rproc, desc->crash_reason_smem, - NULL); + ret = qcom_q6v5_init(&wcss->q6v5, pdev, rproc, desc->crash_reason_smem, NULL, NULL); if (ret) goto free_rproc; @@ -1074,7 +1073,9 @@ free_rproc: static int q6v5_wcss_remove(struct platform_device *pdev) { struct rproc *rproc = platform_get_drvdata(pdev); + struct q6v5_wcss *wcss = rproc->priv; + qcom_q6v5_deinit(&wcss->q6v5); rproc_del(rproc); rproc_free(rproc); |