Fixed issue in reading halt-regs parameter from device-tree.

Signed-off-by: Gokul Sriram Palanisamy <gokul...@codeaurora.org>
Signed-off-by: Sricharan R <sricha...@codeaurora.org>
---
 drivers/remoteproc/qcom_q6v5_wcss.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/drivers/remoteproc/qcom_q6v5_wcss.c 
b/drivers/remoteproc/qcom_q6v5_wcss.c
index 31fee8d..bb9b669 100644
--- a/drivers/remoteproc/qcom_q6v5_wcss.c
+++ b/drivers/remoteproc/qcom_q6v5_wcss.c
@@ -86,7 +86,7 @@
 #define TCSR_WCSS_CLK_MASK     0x1F
 #define TCSR_WCSS_CLK_ENABLE   0x14
 
-#define MAX_HALT_REG           3
+#define MAX_HALT_REG           4
 
 #define WCNSS_PAS_ID           6
 
@@ -154,6 +154,7 @@ struct wcss_data {
        u32 version;
        bool aon_reset_required;
        bool wcss_q6_reset_required;
+       bool bcr_reset_required;
        const char *ssr_name;
        const char *sysmon_name;
        int ssctl_id;
@@ -868,10 +869,13 @@ static int q6v5_wcss_init_reset(struct q6v5_wcss *wcss,
                }
        }
 
-       wcss->wcss_q6_bcr_reset = devm_reset_control_get_exclusive(dev, 
"wcss_q6_bcr_reset");
-       if (IS_ERR(wcss->wcss_q6_bcr_reset)) {
-               dev_err(wcss->dev, "unable to acquire wcss_q6_bcr_reset\n");
-               return PTR_ERR(wcss->wcss_q6_bcr_reset);
+       if (desc->bcr_reset_required) {
+               wcss->wcss_q6_bcr_reset = devm_reset_control_get_exclusive(dev,
+                                                                          
"wcss_q6_bcr_reset");
+               if (IS_ERR(wcss->wcss_q6_bcr_reset)) {
+                       dev_err(wcss->dev, "unable to acquire 
wcss_q6_bcr_reset\n");
+                       return PTR_ERR(wcss->wcss_q6_bcr_reset);
+               }
        }
 
        return 0;
@@ -919,9 +923,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;
 }
@@ -1166,6 +1170,7 @@ static const struct wcss_data wcss_ipq8074_res_init = {
        .crash_reason_smem = WCSS_CRASH_REASON,
        .aon_reset_required = true,
        .wcss_q6_reset_required = true,
+       .bcr_reset_required = false,
        .ssr_name = "q6wcss",
        .ops = &q6v5_wcss_ipq8074_ops,
        .requires_force_stop = true,
@@ -1180,6 +1185,7 @@ static const struct wcss_data wcss_qcs404_res_init = {
        .version = WCSS_QCS404,
        .aon_reset_required = false,
        .wcss_q6_reset_required = false,
+       .bcr_reset_required = true,
        .ssr_name = "mpss",
        .sysmon_name = "wcnss",
        .ssctl_id = 0x12,
-- 
2.7.4

Reply via email to