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_ERRLOG7 0x1038
|
||||||
#define GLADIATOR_ERRLOG8 0x103C
|
#define GLADIATOR_ERRLOG8 0x103C
|
||||||
#define OBSERVER_0_ID_COREID 0x8000
|
#define OBSERVER_0_ID_COREID 0x8000
|
||||||
|
#define OBSERVER_0_ID_REVISIONID 0x8004
|
||||||
#define OBSERVER_0_FAULTEN 0x8008
|
#define OBSERVER_0_FAULTEN 0x8008
|
||||||
#define OBSERVER_0_ERRVLD 0x800C
|
#define OBSERVER_0_ERRVLD 0x800C
|
||||||
#define OBSERVER_0_ERRCLR 0x8010
|
#define OBSERVER_0_ERRCLR 0x8010
|
||||||
|
@ -53,7 +54,6 @@
|
||||||
#define OBSERVER_0_ERRLOG7 0x8030
|
#define OBSERVER_0_ERRLOG7 0x8030
|
||||||
#define OBSERVER_0_ERRLOG8 0x8034
|
#define OBSERVER_0_ERRLOG8 0x8034
|
||||||
#define OBSERVER_0_STALLEN 0x8038
|
#define OBSERVER_0_STALLEN 0x8038
|
||||||
#define OBSERVER_0_REVISIONID 0x8004
|
|
||||||
|
|
||||||
#define GLD_TRANS_OPCODE_MASK 0xE
|
#define GLD_TRANS_OPCODE_MASK 0xE
|
||||||
#define GLD_TRANS_OPCODE_SHIFT 1
|
#define GLD_TRANS_OPCODE_SHIFT 1
|
||||||
|
@ -128,6 +128,11 @@ enum obs_err_code {
|
||||||
};
|
};
|
||||||
|
|
||||||
enum err_log {
|
enum err_log {
|
||||||
|
ID_COREID,
|
||||||
|
ID_REVISIONID,
|
||||||
|
FAULTEN,
|
||||||
|
ERRVLD,
|
||||||
|
ERRCLR,
|
||||||
ERR_LOG0,
|
ERR_LOG0,
|
||||||
ERR_LOG1,
|
ERR_LOG1,
|
||||||
ERR_LOG2,
|
ERR_LOG2,
|
||||||
|
@ -138,6 +143,7 @@ enum err_log {
|
||||||
ERR_LOG7,
|
ERR_LOG7,
|
||||||
ERR_LOG8,
|
ERR_LOG8,
|
||||||
STALLEN,
|
STALLEN,
|
||||||
|
MAX_NUM,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum type_logger_error {
|
enum type_logger_error {
|
||||||
|
@ -475,6 +481,15 @@ static u32 get_gld_offset(unsigned int err_log)
|
||||||
u32 offset = 0;
|
u32 offset = 0;
|
||||||
|
|
||||||
switch (err_log) {
|
switch (err_log) {
|
||||||
|
case FAULTEN:
|
||||||
|
offset = GLADIATOR_FAULTEN;
|
||||||
|
break;
|
||||||
|
case ERRVLD:
|
||||||
|
offset = GLADIATOR_ERRVLD;
|
||||||
|
break;
|
||||||
|
case ERRCLR:
|
||||||
|
offset = GLADIATOR_ERRCLR;
|
||||||
|
break;
|
||||||
case ERR_LOG0:
|
case ERR_LOG0:
|
||||||
offset = GLADIATOR_ERRLOG0;
|
offset = GLADIATOR_ERRLOG0;
|
||||||
break;
|
break;
|
||||||
|
@ -514,6 +529,21 @@ static u32 get_obs_offset(unsigned int err_log)
|
||||||
u32 offset = 0;
|
u32 offset = 0;
|
||||||
|
|
||||||
switch (err_log) {
|
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:
|
case ERR_LOG0:
|
||||||
offset = OBSERVER_0_ERRLOG0;
|
offset = OBSERVER_0_ERRLOG0;
|
||||||
break;
|
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)
|
static irqreturn_t msm_gladiator_isr(int irq, void *dev_id)
|
||||||
{
|
{
|
||||||
u32 err_reg;
|
u32 err_reg;
|
||||||
unsigned int err_log;
|
unsigned int err_log, err_buf[MAX_NUM];
|
||||||
|
|
||||||
struct msm_gladiator_data *msm_gld_data = dev_id;
|
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);
|
clear_gladiator_error(msm_gld_data->gladiator_virt_base);
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
pr_alert("GLADIATOR ERROR DETECTED\n");
|
pr_alert("Gladiator Error Detected:\n");
|
||||||
if (gld_err_valid) {
|
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++) {
|
for (err_log = ERR_LOG0; err_log <= ERR_LOG8; err_log++) {
|
||||||
/* skip log register 7 as its reserved */
|
/* skip log register 7 as its reserved */
|
||||||
if (err_log == ERR_LOG7)
|
if (err_log == ERR_LOG7)
|
||||||
|
|
Loading…
Add table
Reference in a new issue