author | Zongdong 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) |
commit | 6a8265e7b7c960ec841cfccd9ffc5fa4c641737b (patch) | |
tree | 95ac02dcb4f0656218f8ae4e9d807ff00799a7c3 | |
parent | 96b6455e24ce3f11a40827d001b902dd1f357504 (diff) | |
download | common-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>
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 |