From: Zongdong Jiao Date: Thu, 13 Jun 2019 08:05:18 +0000 (+0800) Subject: hdmitx: correct hpd trigger [1/1] X-Git-Tag: khadas-vims-v0.9.6-release~347 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=da134118f20f1675e68ce21391377eddc2766c22;p=platform%2Fkernel%2Flinux-amlogic.git 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 --- 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 3f072ca..37113f1 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 @@ -4221,9 +4221,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 171c1db..4924c52 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 @@ -5027,6 +5027,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 697407d..98d65f4 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 @@ -591,6 +591,7 @@ struct hdmitx_dev { #define MISC_I2C_RESET (CMD_MISC_OFFSET + 0x11) /* For g12 */ #define MISC_READ_AVMUTE_OP (CMD_MISC_OFFSET + 0x12) #define MISC_TMDS_CEDST (CMD_MISC_OFFSET + 0x13) +#define MISC_TRIGGER_HPD (CMD_MISC_OFFSET + 0X14) /*********************************************************************** * Get State //GetState