codecs: Enable clock voting logs to debug AHB/NOC issues
Enable clock voting logs to debug stability issues.
Change-Id: Ie1f995ab004778a81ea42baad15ea36858407e9a
Signed-off-by: Aditya Bavanari <abavanar@codeaurora.org>
diff --git a/soc/swr-mstr-ctrl.c b/soc/swr-mstr-ctrl.c
index cd3805f..b8f8e2a 100644
--- a/soc/swr-mstr-ctrl.c
+++ b/soc/swr-mstr-ctrl.c
@@ -454,6 +454,8 @@
}
swrm->clk_ref_count++;
if (swrm->clk_ref_count == 1) {
+ trace_printk("%s: clock enable count %d",
+ __func__, swrm->clk_ref_count);
ret = swrm->clk(swrm->handle, true);
if (ret) {
dev_err_ratelimited(swrm->dev,
@@ -463,6 +465,8 @@
}
}
} else if (--swrm->clk_ref_count == 0) {
+ trace_printk("%s: clock disable count %d",
+ __func__, swrm->clk_ref_count);
swrm->clk(swrm->handle, false);
complete(&swrm->clk_off_complete);
}
@@ -1673,6 +1677,7 @@
struct swr_device *swr_dev;
struct swr_master *mstr = &swrm->master;
+ trace_printk("%s enter\n", __func__);
if (unlikely(swrm_lock_sleep(swrm) == false)) {
dev_err(swrm->dev, "%s Failed to hold suspend\n", __func__);
return IRQ_NONE;
@@ -1689,6 +1694,8 @@
intr_sts = swr_master_read(swrm, SWRM_INTERRUPT_STATUS);
intr_sts_masked = intr_sts & swrm->intr_mask;
+
+ trace_printk("%s: status: 0x%x \n", __func__, intr_sts_masked);
handle_irq:
for (i = 0; i < SWRM_INTERRUPT_MAX; i++) {
value = intr_sts_masked & (1 << i);
@@ -1833,6 +1840,7 @@
mutex_unlock(&swrm->reslock);
exit:
swrm_unlock_sleep(swrm);
+ trace_printk("%s exit\n", __func__);
return ret;
}
@@ -1847,6 +1855,7 @@
struct swr_device *swr_dev;
struct swr_master *mstr = &swrm->master;
+ trace_printk("%s enter\n", __func__);
if (unlikely(swrm_lock_sleep(swrm) == false)) {
dev_err(swrm->dev, "%s Failed to hold suspend\n", __func__);
return IRQ_NONE;
@@ -1873,6 +1882,7 @@
intr_sts_masked = intr_sts & swrm->intr_mask;
dev_dbg(swrm->dev, "%s: status: 0x%x \n", __func__, intr_sts_masked);
+ trace_printk("%s: status: 0x%x \n", __func__, intr_sts_masked);
handle_irq:
for (i = 0; i < SWRM_INTERRUPT_MAX; i++) {
value = intr_sts_masked & (1 << i);
@@ -2054,6 +2064,7 @@
exit:
mutex_unlock(&swrm->reslock);
swrm_unlock_sleep(swrm);
+ trace_printk("%s exit\n", __func__);
return ret;
}
@@ -2067,6 +2078,7 @@
return IRQ_NONE;
}
+ trace_printk("%s enter\n", __func__);
mutex_lock(&swrm->devlock);
if (!swrm->dev_up) {
if (swrm->wake_irq > 0) {
@@ -2105,6 +2117,7 @@
pm_runtime_put_autosuspend(swrm->dev);
swrm_unlock_sleep(swrm);
exit:
+ trace_printk("%s exit\n", __func__);
return ret;
}
@@ -2119,6 +2132,7 @@
return;
}
+ trace_printk("%s enter\n", __func__);
mutex_lock(&swrm->devlock);
if (!swrm->dev_up) {
mutex_unlock(&swrm->devlock);
@@ -2134,6 +2148,7 @@
pm_runtime_put_autosuspend(swrm->dev);
swrm_unlock_sleep(swrm);
exit:
+ trace_printk("%s exit\n", __func__);
pm_relax(swrm->dev);
}
@@ -2238,6 +2253,8 @@
}
dev_dbg(swrm->dev, "%s: hw_clk_en: %d audio_core_clk_en: %d\n",
__func__, swrm->hw_core_clk_en, swrm->aud_core_clk_en);
+ trace_printk("%s: hw_clk_en: %d audio_core_clk_en: %d\n",
+ __func__, swrm->hw_core_clk_en, swrm->aud_core_clk_en);
pm_runtime_get_sync(swrm->dev);
}
@@ -2255,6 +2272,8 @@
dev_dbg(swrm->dev, "%s: hw_clk_en: %d audio_core_clk_en: %d\n",
__func__, swrm->hw_core_clk_en, swrm->aud_core_clk_en);
+ trace_printk("%s: hw_clk_en: %d audio_core_clk_en: %d\n",
+ __func__, swrm->hw_core_clk_en, swrm->aud_core_clk_en);
--swrm->aud_core_clk_en;
if (swrm->aud_core_clk_en < 0)
swrm->aud_core_clk_en = 0;
@@ -2807,6 +2826,8 @@
dev_dbg(dev, "%s: pm_runtime: resume, state:%d\n",
__func__, swrm->state);
+ trace_printk("%s: pm_runtime: resume, state:%d\n",
+ __func__, swrm->state);
mutex_lock(&swrm->reslock);
if (swrm_request_hw_vote(swrm, LPASS_HW_CORE, true)) {
@@ -2857,6 +2878,9 @@
dev_dbg(dev,
"%s slave device up not implemented\n",
__func__);
+ trace_printk(
+ "%s slave device up not implemented\n",
+ __func__);
ret = 0;
} else if (ret) {
dev_err(dev,
@@ -2912,6 +2936,8 @@
auto_suspend_timer);
mutex_unlock(&swrm->reslock);
+ trace_printk("%s: pm_runtime: resume done, state:%d\n",
+ __func__, swrm->state);
return ret;
}
@@ -2926,6 +2952,8 @@
struct swr_device *swr_dev;
int current_state = 0;
+ trace_printk("%s: pm_runtime: suspend state: %d\n",
+ __func__, swrm->state);
dev_dbg(dev, "%s: pm_runtime: suspend state: %d\n",
__func__, swrm->state);
mutex_lock(&swrm->reslock);
@@ -2950,10 +2978,13 @@
if ((current_state != SWR_MSTR_SSR) &&
swrm_is_port_en(&swrm->master)) {
dev_dbg(dev, "%s ports are enabled\n", __func__);
+ trace_printk("%s ports are enabled\n", __func__);
ret = -EBUSY;
goto exit;
}
if (!swrm->clk_stop_mode0_supp || swrm->state == SWR_MSTR_SSR) {
+ dev_err(dev, "%s: clk stop mode not supported or SSR entry\n",
+ __func__);
mutex_unlock(&swrm->reslock);
enable_bank_switch(swrm, 0, SWR_ROW_50, SWR_MIN_COL);
mutex_lock(&swrm->reslock);
@@ -2964,15 +2995,23 @@
if (ret == -ENODEV) {
dev_dbg_ratelimited(dev,
"%s slave device down not implemented\n",
- __func__);
+ __func__);
+ trace_printk(
+ "%s slave device down not implemented\n",
+ __func__);
ret = 0;
} else if (ret) {
dev_err(dev,
"%s: failed to shutdown swr dev %d\n",
__func__, swr_dev->dev_num);
+ trace_printk(
+ "%s: failed to shutdown swr dev %d\n",
+ __func__, swr_dev->dev_num);
goto exit;
}
}
+ trace_printk("%s: clk stop mode not supported or SSR exit\n",
+ __func__);
} else {
/* Mask bus clash interrupt */
swrm->intr_mask &= ~((u32)0x08);
@@ -3018,6 +3057,8 @@
if (!hw_core_err)
swrm_request_hw_vote(swrm, LPASS_HW_CORE, false);
mutex_unlock(&swrm->reslock);
+ trace_printk("%s: pm_runtime: suspend done state: %d\n",
+ __func__, swrm->state);
return ret;
}
#endif /* CONFIG_PM */
@@ -3029,6 +3070,7 @@
int ret = 0;
dev_dbg(dev, "%s: swrm state: %d\n", __func__, swrm->state);
+ trace_printk("%s: swrm state: %d\n", __func__, swrm->state);
if (!pm_runtime_enabled(dev) || !pm_runtime_suspended(dev)) {
ret = swrm_runtime_suspend(dev);
if (!ret) {
@@ -3047,6 +3089,7 @@
struct swr_mstr_ctrl *swrm = platform_get_drvdata(pdev);
dev_dbg(dev, "%s: swrm state: %d\n", __func__, swrm->state);
+ trace_printk("%s: swrm state: %d\n", __func__, swrm->state);
mutex_lock(&swrm->force_down_lock);
swrm->state = SWR_MSTR_SSR;
@@ -3220,6 +3263,7 @@
}
break;
case SWR_DEVICE_SSR_DOWN:
+ trace_printk("%s: swr device down called\n", __func__);
mutex_lock(&swrm->devlock);
swrm->dev_up = false;
mutex_unlock(&swrm->devlock);
@@ -3229,6 +3273,7 @@
break;
case SWR_DEVICE_SSR_UP:
/* wait for clk voting to be zero */
+ trace_printk("%s: swr device up called\n", __func__);
reinit_completion(&swrm->clk_off_complete);
if (swrm->clk_ref_count &&
!wait_for_completion_timeout(&swrm->clk_off_complete,
@@ -3242,6 +3287,7 @@
break;
case SWR_DEVICE_DOWN:
dev_dbg(swrm->dev, "%s: swr master down called\n", __func__);
+ trace_printk("%s: swr master down called\n", __func__);
mutex_lock(&swrm->mlock);
if (swrm->state == SWR_MSTR_DOWN)
dev_dbg(swrm->dev, "%s:SWR master is already Down:%d\n",
@@ -3252,6 +3298,7 @@
break;
case SWR_DEVICE_UP:
dev_dbg(swrm->dev, "%s: swr master up called\n", __func__);
+ trace_printk("%s: swr master up called\n", __func__);
mutex_lock(&swrm->devlock);
if (!swrm->dev_up) {
dev_dbg(swrm->dev, "SSR not complete yet\n");