summaryrefslogtreecommitdiff
path: root/drivers/platform
diff options
context:
space:
mode:
authorAmir Levy <alevy@codeaurora.org>2016-05-03 08:54:50 +0300
committerJeevan Shriram <jshriram@codeaurora.org>2016-05-06 12:06:26 -0700
commit35daa2f0183e33a3399b78e6080524ea907ce9c8 (patch)
tree5298290c27484acd934d993df859e22d502c14e8 /drivers/platform
parent71f50fce75c45e5184728f29867c01e9158a6fca (diff)
msm: ipa: add a general function for assert
In order to centralize IPA assert calls and add essential data on assertion, replace some BUG calls in an ipa_assert wrapper. CRs-fixed: 1006564 Change-Id: I6a9b679bb083c695908972b377e8779e2f1cca60 Signed-off-by: Amir Levy <alevy@codeaurora.org>
Diffstat (limited to 'drivers/platform')
-rw-r--r--drivers/platform/msm/ipa/ipa_api.c9
-rw-r--r--drivers/platform/msm/ipa/ipa_common_i.h6
-rw-r--r--drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c18
3 files changed, 24 insertions, 9 deletions
diff --git a/drivers/platform/msm/ipa/ipa_api.c b/drivers/platform/msm/ipa/ipa_api.c
index f4a2d17db38d..e16ca747210b 100644
--- a/drivers/platform/msm/ipa/ipa_api.c
+++ b/drivers/platform/msm/ipa/ipa_api.c
@@ -2529,6 +2529,15 @@ void *ipa_get_ipc_logbuf_low(void)
}
EXPORT_SYMBOL(ipa_get_ipc_logbuf_low);
+/**
+ * ipa_assert() - general function for assertion
+ */
+void ipa_assert(void)
+{
+ pr_err("IPA: unrecoverable error has occurred, asserting\n");
+ BUG();
+}
+
static const struct dev_pm_ops ipa_pm_ops = {
.suspend_noirq = ipa_ap_suspend,
.resume_noirq = ipa_ap_resume,
diff --git a/drivers/platform/msm/ipa/ipa_common_i.h b/drivers/platform/msm/ipa/ipa_common_i.h
index d906169f7098..fcab2a05ffb5 100644
--- a/drivers/platform/msm/ipa/ipa_common_i.h
+++ b/drivers/platform/msm/ipa/ipa_common_i.h
@@ -97,6 +97,11 @@
ipa_dec_client_disable_clks(&log_info); \
} while (0)
+#define ipa_assert_on(condition)\
+do {\
+ if (unlikely(condition))\
+ ipa_assert();\
+} while (0)
enum ipa_active_client_log_type {
EP,
@@ -133,6 +138,7 @@ int ipa_set_required_perf_profile(enum ipa_voltage_level floor_voltage,
u32 bandwidth_mbps);
void *ipa_get_ipc_logbuf(void);
void *ipa_get_ipc_logbuf_low(void);
+void ipa_assert(void);
#endif /* _IPA_COMMON_I_H_ */
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c
index d0b1b525d95a..7fd8fcbffc9b 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c
+++ b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c
@@ -589,7 +589,7 @@ u16 ipahal_imm_cmd_get_opcode(enum ipahal_imm_cmd_name cmd)
if (cmd >= IPA_IMM_CMD_MAX) {
IPAHAL_ERR("Invalid immediate command imm_cmd=%u\n", cmd);
- WARN_ON(1);
+ ipa_assert();
return -EFAULT;
}
@@ -599,7 +599,7 @@ u16 ipahal_imm_cmd_get_opcode(enum ipahal_imm_cmd_name cmd)
if (opcode == -1) {
IPAHAL_ERR("Try to get opcode of obsolete IMM_CMD=%s\n",
ipahal_imm_cmd_name_str(cmd));
- WARN_ON(1);
+ ipa_assert();
return -EFAULT;
}
@@ -622,7 +622,7 @@ u16 ipahal_imm_cmd_get_opcode_param(enum ipahal_imm_cmd_name cmd, int param)
if (cmd >= IPA_IMM_CMD_MAX) {
IPAHAL_ERR("Invalid immediate command IMM_CMD=%u\n", cmd);
- WARN_ON(1);
+ ipa_assert();
return -EFAULT;
}
@@ -632,7 +632,7 @@ u16 ipahal_imm_cmd_get_opcode_param(enum ipahal_imm_cmd_name cmd, int param)
if (!ipahal_imm_cmd_objs[ipahal_ctx->hw_type][cmd].dyn_op) {
IPAHAL_ERR("IMM_CMD=%s does not support dynamic opcode\n",
ipahal_imm_cmd_name_str(cmd));
- WARN_ON(1);
+ ipa_assert();
return -EFAULT;
}
@@ -644,20 +644,20 @@ u16 ipahal_imm_cmd_get_opcode_param(enum ipahal_imm_cmd_name cmd, int param)
if (param & ~0xFFFF) {
IPAHAL_ERR("IMM_CMD=%s opcode param is invalid\n",
ipahal_imm_cmd_name_str(cmd));
- WARN_ON(1);
+ ipa_assert();
return -EFAULT;
}
opcode = ipahal_imm_cmd_objs[ipahal_ctx->hw_type][cmd].opcode;
if (opcode == -1) {
IPAHAL_ERR("Try to get opcode of obsolete IMM_CMD=%s\n",
ipahal_imm_cmd_name_str(cmd));
- WARN_ON(1);
+ ipa_assert();
return -EFAULT;
}
if (opcode & ~0xFFFF) {
IPAHAL_ERR("IMM_CMD=%s opcode will be overridden\n",
ipahal_imm_cmd_name_str(cmd));
- WARN_ON(1);
+ ipa_assert();
return -EFAULT;
}
return (opcode + (param<<8));
@@ -674,13 +674,13 @@ struct ipahal_imm_cmd_pyld *ipahal_construct_imm_cmd(
{
if (!params) {
IPAHAL_ERR("Input error: params=%p\n", params);
- WARN_ON(1);
+ ipa_assert();
return NULL;
}
if (cmd >= IPA_IMM_CMD_MAX) {
IPAHAL_ERR("Invalid immediate command %u\n", cmd);
- WARN_ON(1);
+ ipa_assert();
return NULL;
}