The "qcom,halt-regs" consists of a phandle reference followed by the
three offsets within syscon for halt registers. Thus, we need to
request 4 integers from of_property_read_variable_u32_array(), with
the halt_reg ofsets at indexes 1, 2, and 3. Offset 0 is the phandle.

With MAX_HALT_REG at 3, of_property_read_variable_u32_array() returns
-EOVERFLOW, causing .probe() to fail.

Increase MAX_HALT_REG to 4, and update the indexes accordingly.

Fixes: 0af65b9b915e ("remoteproc: qcom: wcss: Add non pas wcss Q6 support for 
QCS404")

Signed-off-by: Alexandru Gagniuc <[email protected]>
---
changes since v1:
 - Add "Fixes:" to commit message

 drivers/remoteproc/qcom_q6v5_wcss.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/qcom_q6v5_wcss.c 
b/drivers/remoteproc/qcom_q6v5_wcss.c
index 07c88623f5978..23ec87827d4f8 100644
--- a/drivers/remoteproc/qcom_q6v5_wcss.c
+++ b/drivers/remoteproc/qcom_q6v5_wcss.c
@@ -85,7 +85,7 @@
 #define TCSR_WCSS_CLK_MASK     0x1F
 #define TCSR_WCSS_CLK_ENABLE   0x14
 
-#define MAX_HALT_REG           3
+#define MAX_HALT_REG           4
 enum {
        WCSS_IPQ8074,
        WCSS_QCS404,
@@ -864,9 +864,9 @@ static int q6v5_wcss_init_mmio(struct q6v5_wcss *wcss,
                return -EINVAL;
        }
 
-       wcss->halt_q6 = halt_reg[0];
-       wcss->halt_wcss = halt_reg[1];
-       wcss->halt_nc = halt_reg[2];
+       wcss->halt_q6 = halt_reg[1];
+       wcss->halt_wcss = halt_reg[2];
+       wcss->halt_nc = halt_reg[3];
 
        return 0;
 }
-- 
2.45.1


Reply via email to