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 31098437be70..fedc5e1a2844 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 @@ -4023,6 +4023,8 @@ int get_hpd_state(void) ret = hdmitx_device.hpd_state; mutex_unlock(&setclk_mutex); + if (hdmitx_device.chip_type == MESON_CPU_ID_TM2) + return 1; return ret; } EXPORT_SYMBOL(get_hpd_state); @@ -4536,10 +4538,9 @@ static int amhdmitx_get_dt_info(struct platform_device *pdev) pr_info(SYS "get hdmi platform data\n"); } #endif - pr_info("hdmitx: testtest\n"); - hdmitx_device.irq_hpd = 39; - // platform_get_irq_byname(pdev, "hdmitx_hpd"); -#if 0 + hdmitx_device.irq_hpd = platform_get_irq_byname(pdev, "hdmitx_hpd"); + if (hdmitx_device.chip_type == MESON_CPU_ID_TM2) + hdmitx_device.irq_hpd = 39; if (hdmitx_device.irq_hpd == -ENXIO) { pr_err("%s: ERROR: hdmitx hpd irq No not found\n", __func__); @@ -4547,7 +4548,6 @@ static int amhdmitx_get_dt_info(struct platform_device *pdev) } pr_info(SYS "hpd irq = %d\n", hdmitx_device.irq_hpd); -#endif return ret; } 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 3771eca51861..6ae751661469 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 @@ -648,9 +648,13 @@ static irqreturn_t intr_handler(int irq, void *dev) hdmitx_wr_reg(HDMITX_TOP_INTR_STAT_CLR, ~0); hdmitx_wr_reg(HDMITX_DWC_HDCP22REG_STAT, 0xff); - pr_info(SYS "irq %x\n", dat_top); - if (dat_dwc) - pr_info(SYS "irq %x\n", dat_dwc); + if (hdev->chip_type != MESON_CPU_ID_TM2) { + /*tm2 has a bug, wait to fix*/ + pr_info(SYS "irq %x\n", dat_top); + if (dat_dwc) + pr_info(SYS "irq %x\n", dat_dwc); + } + if (hdev->hpd_lock == 1) { pr_info(HW "HDMI hpd locked\n"); goto next;