Commit 7e0f8688 authored by Sibi Sankar's avatar Sibi Sankar Committed by Bjorn Andersson

remoteproc: qcom: q6v5-mss: Improve readability across clk handling

Define CLKEN and CLKOFF for improving readability of Q6SS clock
handling.
Reviewed-by: default avatarEvan Green <evgreen@chromium.org>
Signed-off-by: default avatarSibi Sankar <sibis@codeaurora.org>
Link: https://lore.kernel.org/r/20200117135130.3605-3-sibis@codeaurora.orgSigned-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
parent c8784657
...@@ -79,6 +79,11 @@ ...@@ -79,6 +79,11 @@
#define Q6SS_CORE_ARES BIT(1) #define Q6SS_CORE_ARES BIT(1)
#define Q6SS_BUS_ARES_ENABLE BIT(2) #define Q6SS_BUS_ARES_ENABLE BIT(2)
/* QDSP6SS CBCR */
#define Q6SS_CBCR_CLKEN BIT(0)
#define Q6SS_CBCR_CLKOFF BIT(31)
#define Q6SS_CBCR_TIMEOUT_US 200
/* QDSP6SS_GFMUX_CTL */ /* QDSP6SS_GFMUX_CTL */
#define Q6SS_CLK_ENABLE BIT(1) #define Q6SS_CLK_ENABLE BIT(1)
...@@ -99,7 +104,6 @@ ...@@ -99,7 +104,6 @@
#define QDSP6v56_BHS_ON BIT(24) #define QDSP6v56_BHS_ON BIT(24)
#define QDSP6v56_CLAMP_WL BIT(21) #define QDSP6v56_CLAMP_WL BIT(21)
#define QDSP6v56_CLAMP_QMC_MEM BIT(22) #define QDSP6v56_CLAMP_QMC_MEM BIT(22)
#define HALT_CHECK_MAX_LOOPS 200
#define QDSP6SS_XO_CBCR 0x0038 #define QDSP6SS_XO_CBCR 0x0038
#define QDSP6SS_ACC_OVERRIDE_VAL 0x20 #define QDSP6SS_ACC_OVERRIDE_VAL 0x20
...@@ -501,12 +505,12 @@ static int q6v5proc_reset(struct q6v5 *qproc) ...@@ -501,12 +505,12 @@ static int q6v5proc_reset(struct q6v5 *qproc)
if (qproc->version == MSS_SDM845) { if (qproc->version == MSS_SDM845) {
val = readl(qproc->reg_base + QDSP6SS_SLEEP); val = readl(qproc->reg_base + QDSP6SS_SLEEP);
val |= 0x1; val |= Q6SS_CBCR_CLKEN;
writel(val, qproc->reg_base + QDSP6SS_SLEEP); writel(val, qproc->reg_base + QDSP6SS_SLEEP);
ret = readl_poll_timeout(qproc->reg_base + QDSP6SS_SLEEP, ret = readl_poll_timeout(qproc->reg_base + QDSP6SS_SLEEP,
val, !(val & BIT(31)), 1, val, !(val & Q6SS_CBCR_CLKOFF), 1,
SLEEP_CHECK_MAX_LOOPS); Q6SS_CBCR_TIMEOUT_US);
if (ret) { if (ret) {
dev_err(qproc->dev, "QDSP6SS Sleep clock timed out\n"); dev_err(qproc->dev, "QDSP6SS Sleep clock timed out\n");
return -ETIMEDOUT; return -ETIMEDOUT;
...@@ -529,12 +533,12 @@ static int q6v5proc_reset(struct q6v5 *qproc) ...@@ -529,12 +533,12 @@ static int q6v5proc_reset(struct q6v5 *qproc)
goto pbl_wait; goto pbl_wait;
} else if (qproc->version == MSS_SC7180) { } else if (qproc->version == MSS_SC7180) {
val = readl(qproc->reg_base + QDSP6SS_SLEEP); val = readl(qproc->reg_base + QDSP6SS_SLEEP);
val |= 0x1; val |= Q6SS_CBCR_CLKEN;
writel(val, qproc->reg_base + QDSP6SS_SLEEP); writel(val, qproc->reg_base + QDSP6SS_SLEEP);
ret = readl_poll_timeout(qproc->reg_base + QDSP6SS_SLEEP, ret = readl_poll_timeout(qproc->reg_base + QDSP6SS_SLEEP,
val, !(val & BIT(31)), 1, val, !(val & Q6SS_CBCR_CLKOFF), 1,
SLEEP_CHECK_MAX_LOOPS); Q6SS_CBCR_TIMEOUT_US);
if (ret) { if (ret) {
dev_err(qproc->dev, "QDSP6SS Sleep clock timed out\n"); dev_err(qproc->dev, "QDSP6SS Sleep clock timed out\n");
return -ETIMEDOUT; return -ETIMEDOUT;
...@@ -542,12 +546,12 @@ static int q6v5proc_reset(struct q6v5 *qproc) ...@@ -542,12 +546,12 @@ static int q6v5proc_reset(struct q6v5 *qproc)
/* Turn on the XO clock needed for PLL setup */ /* Turn on the XO clock needed for PLL setup */
val = readl(qproc->reg_base + QDSP6SS_XO_CBCR); val = readl(qproc->reg_base + QDSP6SS_XO_CBCR);
val |= 0x1; val |= Q6SS_CBCR_CLKEN;
writel(val, qproc->reg_base + QDSP6SS_XO_CBCR); writel(val, qproc->reg_base + QDSP6SS_XO_CBCR);
ret = readl_poll_timeout(qproc->reg_base + QDSP6SS_XO_CBCR, ret = readl_poll_timeout(qproc->reg_base + QDSP6SS_XO_CBCR,
val, !(val & BIT(31)), 1, val, !(val & Q6SS_CBCR_CLKOFF), 1,
SLEEP_CHECK_MAX_LOOPS); Q6SS_CBCR_TIMEOUT_US);
if (ret) { if (ret) {
dev_err(qproc->dev, "QDSP6SS XO clock timed out\n"); dev_err(qproc->dev, "QDSP6SS XO clock timed out\n");
return -ETIMEDOUT; return -ETIMEDOUT;
...@@ -555,7 +559,7 @@ static int q6v5proc_reset(struct q6v5 *qproc) ...@@ -555,7 +559,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
/* Configure Q6 core CBCR to auto-enable after reset sequence */ /* Configure Q6 core CBCR to auto-enable after reset sequence */
val = readl(qproc->reg_base + QDSP6SS_CORE_CBCR); val = readl(qproc->reg_base + QDSP6SS_CORE_CBCR);
val |= 0x1; val |= Q6SS_CBCR_CLKEN;
writel(val, qproc->reg_base + QDSP6SS_CORE_CBCR); writel(val, qproc->reg_base + QDSP6SS_CORE_CBCR);
/* De-assert the Q6 stop core signal */ /* De-assert the Q6 stop core signal */
...@@ -590,13 +594,13 @@ static int q6v5proc_reset(struct q6v5 *qproc) ...@@ -590,13 +594,13 @@ static int q6v5proc_reset(struct q6v5 *qproc)
/* BHS require xo cbcr to be enabled */ /* BHS require xo cbcr to be enabled */
val = readl(qproc->reg_base + QDSP6SS_XO_CBCR); val = readl(qproc->reg_base + QDSP6SS_XO_CBCR);
val |= 0x1; val |= Q6SS_CBCR_CLKEN;
writel(val, qproc->reg_base + QDSP6SS_XO_CBCR); writel(val, qproc->reg_base + QDSP6SS_XO_CBCR);
/* Read CLKOFF bit to go low indicating CLK is enabled */ /* Read CLKOFF bit to go low indicating CLK is enabled */
ret = readl_poll_timeout(qproc->reg_base + QDSP6SS_XO_CBCR, ret = readl_poll_timeout(qproc->reg_base + QDSP6SS_XO_CBCR,
val, !(val & BIT(31)), 1, val, !(val & Q6SS_CBCR_CLKOFF), 1,
HALT_CHECK_MAX_LOOPS); Q6SS_CBCR_TIMEOUT_US);
if (ret) { if (ret) {
dev_err(qproc->dev, dev_err(qproc->dev,
"xo cbcr enabling timed out (rc:%d)\n", ret); "xo cbcr enabling timed out (rc:%d)\n", ret);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment