summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-06-19 00:27:04 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-06-19 00:27:04 -0700
commitea8783eb74fdf7d2e27d581fa509214baa9bb1b7 (patch)
treeddd3de198b706ede167c3cd7851da3a2faf6e23b /drivers/gpu
parentbfbbb3e4b2118005181b01832adec1c1fb1c7cbf (diff)
parent76dbbea975d77ebbfd008310b97d38f7b434d78e (diff)
Merge "drm/msm : add utility function to dump HDMI registers"
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/msm/hdmi-staging/sde_hdmi_util.c53
-rw-r--r--drivers/gpu/drm/msm/hdmi-staging/sde_hdmi_util.h2
2 files changed, 54 insertions, 1 deletions
diff --git a/drivers/gpu/drm/msm/hdmi-staging/sde_hdmi_util.c b/drivers/gpu/drm/msm/hdmi-staging/sde_hdmi_util.c
index 35ee5ae56d6a..a7887d2c84b0 100644
--- a/drivers/gpu/drm/msm/hdmi-staging/sde_hdmi_util.c
+++ b/drivers/gpu/drm/msm/hdmi-staging/sde_hdmi_util.c
@@ -68,6 +68,59 @@ static void sde_hdmi_hdcp2p2_ddc_clear_status(struct sde_hdmi *display)
hdmi_write(hdmi, HDMI_HDCP2P2_DDC_STATUS, reg_val);
}
+/**
+ * sde_hdmi_dump_regs - utility to dump HDMI regs
+ * @hdmi_display: Pointer to private display handle
+ * Return : void
+ */
+
+void sde_hdmi_dump_regs(void *hdmi_display)
+{
+ struct sde_hdmi *display = (struct sde_hdmi *)hdmi_display;
+ struct hdmi *hdmi;
+ int i;
+ u32 addr_off = 0;
+ u32 len = 0;
+
+ if (!display) {
+ pr_err("invalid input\n");
+ return;
+ }
+
+ hdmi = display->ctrl.ctrl;
+
+ if (!hdmi) {
+ pr_err("invalid input\n");
+ return;
+ }
+
+ if (!hdmi->power_on || !display->connected) {
+ SDE_ERROR("HDMI display is not ready\n");
+ return;
+ }
+
+ len = hdmi->mmio_len;
+
+ if (len % 16)
+ len += 16;
+ len /= 16;
+
+ pr_info("HDMI CORE regs\n");
+ for (i = 0; i < len; i++) {
+ u32 x0, x4, x8, xc;
+
+ x0 = hdmi_read(hdmi, addr_off+0x0);
+ x4 = hdmi_read(hdmi, addr_off+0x4);
+ x8 = hdmi_read(hdmi, addr_off+0x8);
+ xc = hdmi_read(hdmi, addr_off+0xc);
+
+ pr_info("%08x : %08x %08x %08x %08x\n", addr_off, x0, x4, x8,
+ xc);
+
+ addr_off += 16;
+ }
+}
+
int sde_hdmi_ddc_hdcp2p2_isr(void *hdmi_display)
{
struct sde_hdmi_tx_hdcp2p2_ddc_data *data;
diff --git a/drivers/gpu/drm/msm/hdmi-staging/sde_hdmi_util.h b/drivers/gpu/drm/msm/hdmi-staging/sde_hdmi_util.h
index 697cb0c40754..6b310acee0ff 100644
--- a/drivers/gpu/drm/msm/hdmi-staging/sde_hdmi_util.h
+++ b/drivers/gpu/drm/msm/hdmi-staging/sde_hdmi_util.h
@@ -160,5 +160,5 @@ void sde_hdmi_hdcp2p2_ddc_disable(void *hdmi_display);
int sde_hdmi_hdcp2p2_read_rxstatus(void *hdmi_display);
void sde_hdmi_ddc_config(void *hdmi_display);
int sde_hdmi_ddc_hdcp2p2_isr(void *hdmi_display);
-
+void sde_hdmi_dump_regs(void *hdmi_display);
#endif /* _SDE_HDMI_UTIL_H_ */