msm: ipa3: creating new ipc log file for IPA Clocks
Created new ipc ipa_clk log for adding more debug prints
for IPA Clocks in which provides the explicit time taken
by IPA ICC Voting for BW Paths and IPA Enable/Disable Clocks.
Change-Id: I53b7b5baba0ff72df286c86a4b45b0f860014474
Signed-off-by: Jagadeesh Ponduru <quic_jponduru@quicinc.com>
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa.c b/drivers/platform/msm/ipa/ipa_v3/ipa.c
index 967f68a..0441ab4 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa.c
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa.c
@@ -6701,6 +6701,7 @@
idx = ipa3_get_bus_vote();
+ IPADBG_CLK("IPA ICC Voting for BW Started\n");
for (i = 0; i < ipa3_ctx->icc_num_paths; i++) {
if (ipa3_ctx->ctrl->icc_path[i] &&
icc_set_bw(
@@ -6708,8 +6709,13 @@
ipa3_ctx->icc_clk[idx][i][IPA_ICC_AB],
ipa3_ctx->icc_clk[idx][i][IPA_ICC_IB]))
WARN(1, "path %d bus scaling failed", i);
+ IPADBG_CLK("IPA ICC Voting for BW %d Path Completed\n", i);
}
+ IPADBG_CLK("IPA ICC Voting for BW Finished\n");
+
+ IPADBG_CLK("Enabling IPA Clocks Started\n");
ipa3_ctx->ctrl->ipa3_enable_clks();
+ IPADBG_CLK("Enabling IPA Clocks Finished\n");
atomic_set(&ipa3_ctx->ipa_clk_vote, 1);
}
@@ -6765,10 +6771,13 @@
}
}
+ IPADBG_CLK("Disabling IPA Clocks Started\n");
ipa3_ctx->ctrl->ipa3_disable_clks();
+ IPADBG_CLK("Disabling IPA Clocks Finished\n");
ipa_pm_set_clock_index(0);
+ IPADBG_CLK("IPA ICC Voting for BW Started\n");
for (i = 0; i < ipa3_ctx->icc_num_paths; i++) {
if (ipa3_ctx->ctrl->icc_path[i] &&
icc_set_bw(
@@ -6776,7 +6785,9 @@
ipa3_ctx->icc_clk[IPA_ICC_NONE][i][IPA_ICC_AB],
ipa3_ctx->icc_clk[IPA_ICC_NONE][i][IPA_ICC_IB]))
WARN(1, "path %d bus off failed", i);
+ IPADBG_CLK("IPA ICC Voting for BW %d Path Completed\n", i);
}
+ IPADBG_CLK("IPA ICC Voting for BW Finished\n");
atomic_set(&ipa3_ctx->ipa_clk_vote, 0);
}
@@ -9088,6 +9099,10 @@
if (ipa3_ctx->logbuf == NULL)
IPADBG("failed to create IPC log, continue...\n");
+ ipa3_ctx->logbuf_clk = ipc_log_context_create(IPA_IPC_LOG_PAGES, "ipa_clk", 0);
+ if (ipa3_ctx->logbuf_clk == NULL)
+ IPADBG("failed to create IPC ipa_clk log, continue...\n");
+
/* ipa3_ctx->pdev and ipa3_ctx->uc_pdev will be set in the smmu probes*/
ipa3_ctx->master_pdev = ipa_pdev;
for (i = 0; i < IPA_SMMU_CB_MAX; i++)
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_i.h b/drivers/platform/msm/ipa/ipa_v3/ipa_i.h
index 9b67cfe..0b8e0eb 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa_i.h
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa_i.h
@@ -158,6 +158,14 @@
DRV_NAME " %s:%d " fmt, ## args); \
} while (0)
+#define IPADBG_CLK(fmt, args...) \
+ do { \
+ pr_debug(DRV_NAME " %s:%d " fmt, __func__, __LINE__, ## args);\
+ if (ipa3_ctx) \
+ IPA_IPC_LOGGING(ipa3_ctx->logbuf_clk, \
+ DRV_NAME " %s:%d " fmt, ## args); \
+ } while (0)
+
#define IPAERR(fmt, args...) \
do { \
pr_err(DRV_NAME " %s:%d " fmt, __func__, __LINE__, ## args);\
@@ -2156,6 +2164,7 @@
* @modem_cfg_emb_pipe_flt: modem configure embedded pipe filtering rules
* @logbuf: ipc log buffer for high priority messages
* @logbuf_low: ipc log buffer for low priority messages
+ * @logbuf_clk: ipc log buffer for ipa clock messages
* @ipa_wdi2: using wdi-2.0
* @ipa_config_is_auto: is this AUTO use case
* @ipa_fltrt_not_hashable: filter/route rules not hashable
@@ -2303,6 +2312,7 @@
void *smem_pipe_mem;
void *logbuf;
void *logbuf_low;
+ void *logbuf_clk;
struct ipa3_controller *ctrl;
struct idr ipa_idr;
struct platform_device *master_pdev;