ipq807x: 6.1: copy patches and config from 5.15
[openwrt/staging/jow.git] / target / linux / ipq807x / patches-6.1 / 0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch
diff --git a/target/linux/ipq807x/patches-6.1/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch b/target/linux/ipq807x/patches-6.1/0116-remoteproc-qcom-Update-regmap-offsets-for-halt-regis.patch
new file mode 100644 (file)
index 0000000..c8e5ace
--- /dev/null
@@ -0,0 +1,79 @@
+From 8c73af6e8d78c66cfef0f551b00d375ec0b67ff3 Mon Sep 17 00:00:00 2001
+From: Gokul Sriram Palanisamy <gokulsri@codeaurora.org>
+Date: Sat, 30 Jan 2021 10:50:09 +0530
+Subject: [PATCH] remoteproc: qcom: Update regmap offsets for halt register
+
+Fixed issue in reading halt-regs parameter from device-tree.
+
+Signed-off-by: Gokul Sriram Palanisamy <gokulsri@codeaurora.org>
+Signed-off-by: Sricharan R <sricharan@codeaurora.org>
+---
+ drivers/remoteproc/qcom_q6v5_wcss.c | 22 ++++++++++++++--------
+ 1 file changed, 14 insertions(+), 8 deletions(-)
+
+--- 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;
+@@ -875,10 +876,13 @@ static int q6v5_wcss_init_reset(struct q
+               }
+       }
+-      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;
+@@ -929,9 +933,9 @@ static int q6v5_wcss_init_mmio(struct q6
+               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;
+ }
+@@ -1178,6 +1182,7 @@ static const struct wcss_data wcss_ipq80
+       .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,
+@@ -1192,6 +1197,7 @@ static const struct wcss_data wcss_qcs40
+       .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,