mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 06:09:23 -04:00
msm: gsi: dump channel information
Dump channel information when stop channel fails. Change-Id: I39ef3338c9e7e968ee6a592debc23edbff9f8fc8 Signed-off-by: Chaitanya Pratapa <cpratapa@codeaurora.org>
This commit is contained in:
parent
7e372e6a9d
commit
4e3719b0fc
1 changed files with 73 additions and 1 deletions
|
|
@ -3124,6 +3124,77 @@ int gsi_start_channel(unsigned long chan_hdl)
|
|||
}
|
||||
EXPORT_SYMBOL(gsi_start_channel);
|
||||
|
||||
static void gsi_dump_ch(unsigned long chan_hdl)
|
||||
{
|
||||
uint32_t val;
|
||||
|
||||
if (!gsi_ctx) {
|
||||
pr_err("%s:%d gsi context not allocated\n", __func__, __LINE__);
|
||||
return;
|
||||
}
|
||||
|
||||
if (chan_hdl >= gsi_ctx->max_ch) {
|
||||
GSIDBG("invalid chan id %u\n", chan_hdl);
|
||||
return;
|
||||
}
|
||||
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_0_OFFS(chan_hdl, gsi_ctx->per.ee));
|
||||
GSIERR("CH%2d CTX0 0x%x\n", chan_hdl, val);
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_1_OFFS(chan_hdl, gsi_ctx->per.ee));
|
||||
GSIERR("CH%2d CTX1 0x%x\n", chan_hdl, val);
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_2_OFFS(chan_hdl, gsi_ctx->per.ee));
|
||||
GSIERR("CH%2d CTX2 0x%x\n", chan_hdl, val);
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_3_OFFS(chan_hdl, gsi_ctx->per.ee));
|
||||
GSIERR("CH%2d CTX3 0x%x\n", chan_hdl, val);
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_4_OFFS(chan_hdl, gsi_ctx->per.ee));
|
||||
GSIERR("CH%2d CTX4 0x%x\n", chan_hdl, val);
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_5_OFFS(chan_hdl, gsi_ctx->per.ee));
|
||||
GSIERR("CH%2d CTX5 0x%x\n", chan_hdl, val);
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_6_OFFS(chan_hdl, gsi_ctx->per.ee));
|
||||
GSIERR("CH%2d CTX6 0x%x\n", chan_hdl, val);
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_7_OFFS(chan_hdl, gsi_ctx->per.ee));
|
||||
GSIERR("CH%2d CTX7 0x%x\n", chan_hdl, val);
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR_OFFS(chan_hdl,
|
||||
gsi_ctx->per.ee));
|
||||
GSIERR("CH%2d REFRP 0x%x\n", chan_hdl, val);
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_OFFS(chan_hdl,
|
||||
gsi_ctx->per.ee));
|
||||
GSIERR("CH%2d REFWP 0x%x\n", chan_hdl, val);
|
||||
if (gsi_ctx->per.ver >= GSI_VER_2_5) {
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_V2_5_EE_n_GSI_CH_k_QOS_OFFS(chan_hdl, gsi_ctx->per.ee));
|
||||
} else {
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_QOS_OFFS(chan_hdl, gsi_ctx->per.ee));
|
||||
}
|
||||
GSIERR("CH%2d QOS 0x%x\n", chan_hdl, val);
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_SCRATCH_0_OFFS(chan_hdl, gsi_ctx->per.ee));
|
||||
GSIERR("CH%2d SCR0 0x%x\n", chan_hdl, val);
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_SCRATCH_1_OFFS(chan_hdl, gsi_ctx->per.ee));
|
||||
GSIERR("CH%2d SCR1 0x%x\n", chan_hdl, val);
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_SCRATCH_2_OFFS(chan_hdl, gsi_ctx->per.ee));
|
||||
GSIERR("CH%2d SCR2 0x%x\n", chan_hdl, val);
|
||||
val = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_SCRATCH_3_OFFS(chan_hdl, gsi_ctx->per.ee));
|
||||
GSIERR("CH%2d SCR3 0x%x\n", chan_hdl, val);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
int gsi_stop_channel(unsigned long chan_hdl)
|
||||
{
|
||||
enum gsi_ch_cmd_opcode op = GSI_CH_STOP;
|
||||
|
|
@ -3176,7 +3247,7 @@ int gsi_stop_channel(unsigned long chan_hdl)
|
|||
gsi_writel(val, gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_CMD_OFFS(gsi_ctx->per.ee));
|
||||
|
||||
GSIDBG("GSI Channel Stop, waiting for completion\n");
|
||||
GSIDBG("GSI Channel Stop, waiting for completion: 0x%x\n", val);
|
||||
gsi_channel_state_change_wait(chan_hdl,
|
||||
ctx,
|
||||
GSI_STOP_CMD_TIMEOUT_MS, op);
|
||||
|
|
@ -3184,6 +3255,7 @@ int gsi_stop_channel(unsigned long chan_hdl)
|
|||
if (ctx->state != GSI_CHAN_STATE_STOPPED &&
|
||||
ctx->state != GSI_CHAN_STATE_STOP_IN_PROC) {
|
||||
GSIERR("chan=%lu unexpected state=%u\n", chan_hdl, ctx->state);
|
||||
gsi_dump_ch(chan_hdl);
|
||||
res = -GSI_STATUS_BAD_STATE;
|
||||
BUG();
|
||||
goto free_lock;
|
||||
|
|
|
|||
Loading…
Reference in a new issue