aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Poulain <loic.poulain@linaro.org>2020-12-02 17:37:47 +0100
committerLoic Poulain <loic.poulain@linaro.org>2021-01-11 11:12:55 +0100
commit3dd53508efaf9002605bbf87150830572c0a1992 (patch)
treebc4809301a0e3f8ddd4ed61ef0398795fd48dc39
parent399ce0c42cb073dd78c5ef01e755c2707325a243 (diff)
mhi: core: Add MHI register dump helper
Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
-rw-r--r--drivers/bus/mhi/core/internal.h7
-rw-r--r--drivers/bus/mhi/core/main.c28
2 files changed, 35 insertions, 0 deletions
diff --git a/drivers/bus/mhi/core/internal.h b/drivers/bus/mhi/core/internal.h
index 8fd70ebab874..1a17c9a5a740 100644
--- a/drivers/bus/mhi/core/internal.h
+++ b/drivers/bus/mhi/core/internal.h
@@ -714,5 +714,12 @@ void mhi_unmap_single_no_bb(struct mhi_controller *mhi_cntrl,
struct mhi_buf_info *buf_info);
void mhi_unmap_single_use_bb(struct mhi_controller *mhi_cntrl,
struct mhi_buf_info *buf_info);
+void mhi_dumpregs(struct mhi_controller *mhi_cntrl);
+
+#define mhi_cntrlname(mhi_cntrl) \
+ (mhi_cntrl)->mhi_dev ? dev_name(&(mhi_cntrl)->mhi_dev->dev) : "(null)"
+
+#define MHI_DUMP(f, x...) \
+ pr_err("%s: " f, mhi_cntrlname(mhi_cntrl), ## x)
#endif /* _MHI_INT_H */
diff --git a/drivers/bus/mhi/core/main.c b/drivers/bus/mhi/core/main.c
index 7250b78e5b4c..effe94f18db8 100644
--- a/drivers/bus/mhi/core/main.c
+++ b/drivers/bus/mhi/core/main.c
@@ -1572,3 +1572,31 @@ int mhi_poll(struct mhi_device *mhi_dev, u32 budget)
return ret;
}
EXPORT_SYMBOL_GPL(mhi_poll);
+
+void mhi_dumpregs(struct mhi_controller *mhi_cntrl)
+{
+ void __iomem *base = mhi_cntrl->regs;
+ u32 val;
+
+ MHI_DUMP("====== MHI REGISTER DUMP ======\n");
+ mhi_read_reg(mhi_cntrl, base, MHIREGLEN, &val);
+ MHI_DUMP("MHIREGLEN: 0x%08x\n", val);
+ mhi_read_reg(mhi_cntrl, base, MHIVER, &val);
+ MHI_DUMP("MHIVER: 0x%08x\n", val);
+ mhi_read_reg(mhi_cntrl, base, MHICFG, &val);
+ MHI_DUMP("MHICFG: 0x%08x\n", val);
+ mhi_read_reg(mhi_cntrl, base, CHDBOFF, &val);
+ MHI_DUMP("CHDBOFF: 0x%08x\n", val);
+ mhi_read_reg(mhi_cntrl, base, ERDBOFF, &val);
+ MHI_DUMP("ERDBOFF: 0x%08x\n", val);
+ mhi_read_reg(mhi_cntrl, base, BHIOFF, &val);
+ MHI_DUMP("BHIOFF: 0x%08x\n", val);
+ mhi_read_reg(mhi_cntrl, base, BHIEOFF, &val);
+ MHI_DUMP("BHIEOFF: 0x%08x\n", val);
+ mhi_read_reg(mhi_cntrl, base, DEBUGOFF, &val);
+ MHI_DUMP("DEBUGOFF: 0x%08x\n", val);
+ mhi_read_reg(mhi_cntrl, base, MHICTRL, &val);
+ MHI_DUMP("MHICTRL: 0x%08x\n", val);
+ mhi_read_reg(mhi_cntrl, base, MHISTATUS, &val);
+ MHI_DUMP("MHISTATUS: 0x%08x\n", val);
+}