From 2c4f36cf8ef1cb7ca0f04e0ee09b63b784dc6272 Mon Sep 17 00:00:00 2001 From: Kaifu Hu Date: Tue, 24 Apr 2018 10:02:55 +0800 Subject: [PATCH] hdmitx: add dolby debug info PD#164913: hdmitx: add dolby debug info Add dolby debug info. Change-Id: I65156223b66bcb95c31e8b60a602f834bacf89f2 Signed-off-by: Kaifu Hu --- .../vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c | 3 + .../vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c | 63 +++++++++++++++++++ .../media/vout/hdmi_tx/hdmi_tx_module.h | 2 + 3 files changed, 68 insertions(+) diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c index 01f3d4411100..9e227257ee4c 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c @@ -1197,6 +1197,9 @@ static void hdmitx_set_vsif_pkt(enum eotf_type type, pr_info("hdmitx: not support DolbyVision\n"); return; } + + hdev->hdmi_current_eotf_type = type; + hdev->hdmi_current_tunnel_mode = tunnel_mode; /*ver0 and ver1_15 and ver1_12bit with ll= 0 use hdmi 1.4b VSIF*/ if ((hdev->RXCap.dv_info.ver == 0) || ((hdev->RXCap.dv_info.ver == 1) && (hdev->RXCap.dv_info.length == 0xE)) diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c index 34614dd382ec..904bc67161cc 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c @@ -2708,6 +2708,57 @@ static void hdmitx_dump_drm_reg(void) pr_info("[0x%x]: 0x%x\n", reg_addr, reg_val); } +static void hdmitx_dump_vsif_reg(void) +{ + unsigned int reg_val; + unsigned int reg_addr; + + for (reg_addr = HDMITX_DWC_FC_VSDIEEEID0; + reg_addr <= HDMITX_DWC_FC_VSDPAYLOAD23; reg_addr++) { + reg_val = hdmitx_rd_reg(reg_addr); + pr_info("[0x%x]: 0x%x\n", reg_addr, reg_val); + } + reg_addr = HDMITX_DWC_FC_DATAUTO0; + reg_val = hdmitx_rd_reg(reg_addr); + pr_info("[0x%x]: 0x%x\n", reg_addr, reg_val); + reg_addr = HDMITX_DWC_FC_PACKET_TX_EN; + reg_val = hdmitx_rd_reg(reg_addr); + pr_info("[0x%x]: 0x%x\n", reg_addr, reg_val); +} + +static void hdmitx_dump_avi_reg(void) +{ + unsigned int reg_val; + unsigned int reg_addr; + + pr_info("hdmitx avi info reg config\n"); + + reg_addr = HDMITX_DWC_FC_AVICONF0; + reg_val = hdmitx_rd_reg(reg_addr); + pr_info("[0x%x]: 0x%x\n", reg_addr, reg_val); + reg_addr = HDMITX_DWC_FC_AVICONF1; + reg_val = hdmitx_rd_reg(reg_addr); + pr_info("[0x%x]: 0x%x\n", reg_addr, reg_val); + reg_addr = HDMITX_DWC_FC_AVICONF2; + reg_val = hdmitx_rd_reg(reg_addr); + pr_info("[0x%x]: 0x%x\n", reg_addr, reg_val); + reg_addr = HDMITX_DWC_FC_AVIVID; + reg_val = hdmitx_rd_reg(reg_addr); + pr_info("[0x%x]: 0x%x\n", reg_addr, reg_val); + reg_addr = HDMITX_DWC_FC_AVICONF3; + reg_val = hdmitx_rd_reg(reg_addr); + pr_info("[0x%x]: 0x%x\n", reg_addr, reg_val); + reg_addr = HDMITX_DWC_FC_PRCONF; + reg_val = hdmitx_rd_reg(reg_addr); + pr_info("[0x%x]: 0x%x\n", reg_addr, reg_val); + reg_addr = HDMITX_DWC_FC_DATAUTO3; + reg_val = hdmitx_rd_reg(reg_addr); + pr_info("[0x%x]: 0x%x\n", reg_addr, reg_val); + reg_addr = HDMITX_DWC_FC_PACKET_TX_EN; + reg_val = hdmitx_rd_reg(reg_addr); + pr_info("[0x%x]: 0x%x\n", reg_addr, reg_val); +} + static void hdmitx_debug(struct hdmitx_dev *hdev, const char *buf) { char tmpbuf[128]; @@ -2962,6 +3013,18 @@ static void hdmitx_debug(struct hdmitx_dev *hdev, const char *buf) hdev->hdmi_last_hdr_mode); hdmitx_dump_drm_reg(); return; + } else if (strncmp(tmpbuf, "dv_info", 7) == 0) { + pr_info("hdev->hdmi_current_eotf_type: 0x%x\n", + hdev->hdmi_current_eotf_type); + pr_info("hdev->hdmi_current_tunnel_mode: 0x%x\n", + hdev->hdmi_current_tunnel_mode); + pr_info("hdev->dv_src_feature: %d\n", + hdev->dv_src_feature); + hdmitx_dump_vsif_reg(); + return; + } else if (strncmp(tmpbuf, "avi_info", 8) == 0) { + hdmitx_dump_avi_reg(); + return; } } diff --git a/include/linux/amlogic/media/vout/hdmi_tx/hdmi_tx_module.h b/include/linux/amlogic/media/vout/hdmi_tx/hdmi_tx_module.h index 9781a9f5448f..f9ffffe1c5f8 100644 --- a/include/linux/amlogic/media/vout/hdmi_tx/hdmi_tx_module.h +++ b/include/linux/amlogic/media/vout/hdmi_tx/hdmi_tx_module.h @@ -363,6 +363,8 @@ struct hdmitx_dev { unsigned int hdmi_current_hdr_mode; unsigned int dv_src_feature; unsigned int sdr_hdr_feature; + enum eotf_type hdmi_current_eotf_type; + enum mode_type hdmi_current_tunnel_mode; unsigned int flag_3dfp:1; unsigned int flag_3dtb:1; unsigned int flag_3dss:1;