soc: qcom: print raw data for gladiator error registers
Dump the value in gladiator error registers in raw format. CRs-Fixed: 1019798 Change-Id: I7bccd68866457bb0635ae5166ec935f9e82ba760 Signed-off-by: Runmin Wang <runminw@codeaurora.org>
This commit is contained in:
parent
1acab1571a
commit
b386224e95
1 changed files with 56 additions and 4 deletions
|
@ -40,6 +40,7 @@
|
|||
#define GLADIATOR_ERRLOG7 0x1038
|
||||
#define GLADIATOR_ERRLOG8 0x103C
|
||||
#define OBSERVER_0_ID_COREID 0x8000
|
||||
#define OBSERVER_0_ID_REVISIONID 0x8004
|
||||
#define OBSERVER_0_FAULTEN 0x8008
|
||||
#define OBSERVER_0_ERRVLD 0x800C
|
||||
#define OBSERVER_0_ERRCLR 0x8010
|
||||
|
@ -53,7 +54,6 @@
|
|||
#define OBSERVER_0_ERRLOG7 0x8030
|
||||
#define OBSERVER_0_ERRLOG8 0x8034
|
||||
#define OBSERVER_0_STALLEN 0x8038
|
||||
#define OBSERVER_0_REVISIONID 0x8004
|
||||
|
||||
#define GLD_TRANS_OPCODE_MASK 0xE
|
||||
#define GLD_TRANS_OPCODE_SHIFT 1
|
||||
|
@ -128,6 +128,11 @@ enum obs_err_code {
|
|||
};
|
||||
|
||||
enum err_log {
|
||||
ID_COREID,
|
||||
ID_REVISIONID,
|
||||
FAULTEN,
|
||||
ERRVLD,
|
||||
ERRCLR,
|
||||
ERR_LOG0,
|
||||
ERR_LOG1,
|
||||
ERR_LOG2,
|
||||
|
@ -138,6 +143,7 @@ enum err_log {
|
|||
ERR_LOG7,
|
||||
ERR_LOG8,
|
||||
STALLEN,
|
||||
MAX_NUM,
|
||||
};
|
||||
|
||||
enum type_logger_error {
|
||||
|
@ -475,6 +481,15 @@ static u32 get_gld_offset(unsigned int err_log)
|
|||
u32 offset = 0;
|
||||
|
||||
switch (err_log) {
|
||||
case FAULTEN:
|
||||
offset = GLADIATOR_FAULTEN;
|
||||
break;
|
||||
case ERRVLD:
|
||||
offset = GLADIATOR_ERRVLD;
|
||||
break;
|
||||
case ERRCLR:
|
||||
offset = GLADIATOR_ERRCLR;
|
||||
break;
|
||||
case ERR_LOG0:
|
||||
offset = GLADIATOR_ERRLOG0;
|
||||
break;
|
||||
|
@ -514,6 +529,21 @@ static u32 get_obs_offset(unsigned int err_log)
|
|||
u32 offset = 0;
|
||||
|
||||
switch (err_log) {
|
||||
case ID_COREID:
|
||||
offset = OBSERVER_0_ID_COREID;
|
||||
break;
|
||||
case ID_REVISIONID:
|
||||
offset = OBSERVER_0_ID_REVISIONID;
|
||||
break;
|
||||
case FAULTEN:
|
||||
offset = OBSERVER_0_FAULTEN;
|
||||
break;
|
||||
case ERRVLD:
|
||||
offset = OBSERVER_0_ERRVLD;
|
||||
break;
|
||||
case ERRCLR:
|
||||
offset = OBSERVER_0_ERRCLR;
|
||||
break;
|
||||
case ERR_LOG0:
|
||||
offset = OBSERVER_0_ERRLOG0;
|
||||
break;
|
||||
|
@ -573,7 +603,7 @@ static void decode_gld_errlog5(struct msm_gladiator_data *msm_gld_data)
|
|||
static irqreturn_t msm_gladiator_isr(int irq, void *dev_id)
|
||||
{
|
||||
u32 err_reg;
|
||||
unsigned int err_log;
|
||||
unsigned int err_log, err_buf[MAX_NUM];
|
||||
|
||||
struct msm_gladiator_data *msm_gld_data = dev_id;
|
||||
|
||||
|
@ -591,9 +621,31 @@ static irqreturn_t msm_gladiator_isr(int irq, void *dev_id)
|
|||
clear_gladiator_error(msm_gld_data->gladiator_virt_base);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
pr_alert("GLADIATOR ERROR DETECTED\n");
|
||||
pr_alert("Gladiator Error Detected:\n");
|
||||
if (gld_err_valid) {
|
||||
pr_alert("GLADIATOR error log register data:\n");
|
||||
for (err_log = FAULTEN; err_log <= ERR_LOG8; err_log++) {
|
||||
err_buf[err_log] = readl_relaxed(
|
||||
msm_gld_data->gladiator_virt_base +
|
||||
get_gld_offset(err_log));
|
||||
}
|
||||
pr_alert("Main log register data:\n%08x %08x %08x %08x\n%08x %08x %08x %08x\n%08x %08x %08x\n",
|
||||
err_buf[0], err_buf[1], err_buf[2], err_buf[3], err_buf[4], err_buf[5], err_buf[6],
|
||||
err_buf[7], err_buf[8], err_buf[9], err_buf[10]);
|
||||
}
|
||||
|
||||
if (obsrv_err_valid) {
|
||||
for (err_log = ID_COREID; err_log <= STALLEN; err_log++) {
|
||||
err_buf[err_log] = readl_relaxed(
|
||||
msm_gld_data->gladiator_virt_base +
|
||||
get_obs_offset(err_log));
|
||||
}
|
||||
pr_alert("Observer log register data:\n%08x %08x %08x %08x\n%08x %08x %08x %08x\n%08x %08x %08x %08x\n%08x\n",
|
||||
err_buf[0], err_buf[1], err_buf[2], err_buf[3], err_buf[4], err_buf[5], err_buf[6], err_buf[7],
|
||||
err_buf[8], err_buf[9], err_buf[10], err_buf[11], err_buf[12]);
|
||||
}
|
||||
|
||||
if (gld_err_valid) {
|
||||
pr_alert("Main error log register data:\n");
|
||||
for (err_log = ERR_LOG0; err_log <= ERR_LOG8; err_log++) {
|
||||
/* skip log register 7 as its reserved */
|
||||
if (err_log == ERR_LOG7)
|
||||
|
|
Loading…
Add table
Reference in a new issue