Merge "msm: mhi: Check ERRDBG registers for device status"

This commit is contained in:
qctecmdr 2022-01-22 22:25:45 -08:00 • committed by Gerrit - the friendly Code Review server
commit 1d97d4833c

View file

@ -143,6 +143,17 @@ bool mhi_scan_rddm_cookie(struct mhi_controller *mhi_cntrl, u32 cookie)
{
int ret;
u32 val;
int i;
bool result = false;
struct {
char *name;
u32 offset;
} error_reg[] = {
{ "ERROR_DBG1", BHI_ERRDBG1 },
{ "ERROR_DBG2", BHI_ERRDBG2 },
{ "ERROR_DBG3", BHI_ERRDBG3 },
{ NULL },
};
if (!mhi_cntrl->rddm_supported || !cookie)
return false;
@ -152,15 +163,23 @@ bool mhi_scan_rddm_cookie(struct mhi_controller *mhi_cntrl, u32 cookie)
if (!MHI_REG_ACCESS_VALID(mhi_cntrl->pm_state))
return false;
ret = mhi_read_reg(mhi_cntrl, mhi_cntrl->bhi, BHI_ERRDBG2, &val);
if (ret)
return false;
/* look for an RDDM cookie match in any of the error debug registers */
for (i = 0; error_reg[i].name; i++) {
ret = mhi_read_reg(mhi_cntrl, mhi_cntrl->bhi,
error_reg[i].offset, &val);
if (ret)
break;
MHI_CNTRL_LOG("reg:%s value:0x%x\n", error_reg[i].name, val);
MHI_CNTRL_LOG("BHI_ERRDBG2 value:0x%x\n", val);
if (val == cookie)
return true;
if (!(val ^ cookie)) {
MHI_CNTRL_ERR("RDDM cookie found in %s\n",
error_reg[i].name);
return true;
}
}
return false;
MHI_CNTRL_ERR("RDDM cookie not found\n");
return result;
}
EXPORT_SYMBOL(mhi_scan_rddm_cookie);