From c65e706d4b4fd3b3e0868ad9407a2b07f3182efc Mon Sep 17 00:00:00 2001 From: yxj Date: Sat, 20 Apr 2013 12:40:45 +0800 Subject: [PATCH] mfd:rk616:hdmi:use threaded irq,hot pulg ok --- drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi.c | 2 +- drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi_hw.c | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi.c b/drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi.c index b901a22bf3b7..7bed90d0d546 100755 --- a/drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi.c +++ b/drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi.c @@ -225,7 +225,7 @@ static int __devinit rk616_hdmi_probe (struct platform_device *pdev) } /* request the IRQ */ - ret = request_irq(hdmi->irq, hdmi_irq,IRQF_TRIGGER_FALLING,dev_name(&pdev->dev), hdmi); + ret = request_threaded_irq(hdmi->irq,NULL,hdmi_irq,IRQF_TRIGGER_FALLING,dev_name(&pdev->dev), hdmi); if (ret) { dev_err(hdmi->dev, "hdmi request_irq failed (%d).\n", ret); diff --git a/drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi_hw.c b/drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi_hw.c index ab2d2031d798..3fce867906da 100755 --- a/drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi_hw.c +++ b/drivers/video/rockchip/hdmi/chips/rk616/rk616_hdmi_hw.c @@ -422,14 +422,12 @@ int rk616_hdmi_removed(void) irqreturn_t hdmi_irq(int irq, void *priv) { - char interrupt1 = 0; + u32 interrupt1 = 0; unsigned long flags; spin_lock_irqsave(&hdmi->irq_lock,flags); HDMIRdReg(INTERRUPT_STATUS1,&interrupt1); HDMIWrReg(INTERRUPT_STATUS1, interrupt1); -#if 1 - hdmi_dbg(hdmi->dev,"[%s] interrupt1 %02x\n",__func__, interrupt1); -#endif + if(interrupt1 & m_INT_HOTPLUG ){ if(hdmi->state == HDMI_SLEEP) hdmi->state = WAIT_HOTPLUG; @@ -447,6 +445,7 @@ irqreturn_t hdmi_irq(int irq, void *priv) hdmi->hdcp_irq_cb(interrupt2); #endif spin_unlock_irqrestore(&hdmi->irq_lock,flags); + printk("int statu1:0x%08x\n",interrupt1); return IRQ_HANDLED; } @@ -460,7 +459,7 @@ static void rk616_hdmi_reset(void) HDMIMskReg(SYS_CTRL,m_RST_ANALOG,v_NOT_RST_ANALOG); delay100us(); msk = m_REG_CLK_INV | m_VCLK_INV | m_REG_CLK_SOURCE | m_POWER | m_INT_POL; - val = v_REG_CLK_INV| v_VCLK_INV | v_REG_CLK_SOURCE_SYS | v_PWR_ON |v_INT_POL_LOW; + val = v_REG_CLK_INV| v_VCLK_INV | v_REG_CLK_SOURCE_SYS | v_PWR_ON |v_INT_POL_HIGH; HDMIMskReg(SYS_CTRL,msk,val); rk616_hdmi_set_pwr_mode(LOWER_PWR); } -- 2.34.1