summaryrefslogtreecommitdiff
authorZongdong Jiao <zongdong.jiao@amlogic.com>2019-06-13 08:05:18 (GMT)
committer Shen Liu <shen.liu@amlogic.com>2020-04-17 02:08:40 (GMT)
commit6a8265e7b7c960ec841cfccd9ffc5fa4c641737b (patch)
tree95ac02dcb4f0656218f8ae4e9d807ff00799a7c3
parent96b6455e24ce3f11a40827d001b902dd1f357504 (diff)
downloadcommon-6a8265e7b7c960ec841cfccd9ffc5fa4c641737b.zip
common-6a8265e7b7c960ec841cfccd9ffc5fa4c641737b.tar.gz
common-6a8265e7b7c960ec841cfccd9ffc5fa4c641737b.tar.bz2
hdmitx: correct hpd trigger [1/1]
PD#SWPL-8724 Problem: When kernel boots up, there will be two irq status. [ 0.602639] hdmitx: system: irq 80000004 0 [ 0.622658] hdmitx: system: irq 80000002 0 Solution: Correct hpd trigger Verify: G12/U212 Change-Id: I3c913c6d46ac4e639032134c598050b5c77a047d Signed-off-by: Zongdong Jiao <zongdong.jiao@amlogic.com>
Diffstat
-rw-r--r--drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c6
-rw-r--r--drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/hdmi_tx_hw.c3
-rw-r--r--include/linux/amlogic/media/vout/hdmi_tx/hdmi_tx_module.h1
3 files changed, 7 insertions, 3 deletions
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 7f57eef..ddf14f7 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
@@ -3900,9 +3900,9 @@ static int hdmi_task_handle(void *data)
hdmitx_device->HWOp.SetupIRQ(hdmitx_device);
/* Trigger HDMITX IRQ*/
- hdmitx_device->HWOp.CntlMisc(hdmitx_device, MISC_HPD_MUX_OP, PIN_UNMUX);
- mdelay(20);
- hdmitx_device->HWOp.CntlMisc(hdmitx_device, MISC_HPD_MUX_OP, PIN_MUX);
+ if (hdmitx_device->HWOp.CntlMisc(hdmitx_device, MISC_HPD_GPI_ST, 0))
+ hdmitx_device->HWOp.CntlMisc(hdmitx_device,
+ MISC_TRIGGER_HPD, 0);
hdmitx_device->hdmi_init = 1;
return 0;
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 e9d8485..298788d 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
@@ -4753,6 +4753,9 @@ static int hdmitx_cntl_misc(struct hdmitx_dev *hdev, unsigned int cmd,
return hdmitx_hpd_hw_op(argv);
case MISC_HPD_GPI_ST:
return hdmitx_hpd_hw_op(HPD_READ_HPD_GPIO);
+ case MISC_TRIGGER_HPD:
+ hdmitx_wr_reg(HDMITX_TOP_INTR_STAT, 1 << 1);
+ return 0;
case MISC_HPLL_FAKE:
hdmitx_set_fake_vic(hdev);
break;
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 aed86d5..850ea2b 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
@@ -542,6 +542,7 @@ struct hdmitx_dev {
#define MISC_TMDS_RXSENSE (CMD_MISC_OFFSET + 0x0f)
#define MISC_I2C_REACTIVE (CMD_MISC_OFFSET + 0x10)
#define MISC_READ_AVMUTE_OP (CMD_MISC_OFFSET + 0x11)
+#define MISC_TRIGGER_HPD (CMD_MISC_OFFSET + 0X14)
/***********************************************************************
* Get State //GetState