disable_irq(hdmi_drv->irq);
/* Enable edid interrupt */
+#ifdef SOC_CONFIG_RK3036
+ hdmi_writel(hdmi_dev, INTERRUPT_MASK1, m_INT_EDID_READY);
+#else
hdmi_writel(hdmi_dev, INTERRUPT_MASK1,
m_INT_HOTPLUG | m_INT_EDID_READY);
+#endif
for (trytime = 0; trytime < 10; trytime++) {
hdmi_writel(hdmi_dev, INTERRUPT_STATUS1, 0x04);
if(interrupt){
hdmi_writel(hdmi_dev, HDMI_STATUS, interrupt);
}
+ if (interrupt & m_INT_HOTPLUG)
#else
hdmi_readl(hdmi_dev, INTERRUPT_STATUS1,&interrupt);
if(interrupt){
hdmi_writel(hdmi_dev, INTERRUPT_STATUS1, interrupt);
}
+ if (interrupt & m_HOTPLUG)
#endif
- if (interrupt & m_HOTPLUG) {
+ {
if (hdmi_drv->state == HDMI_SLEEP)
hdmi_drv->state = WAIT_HOTPLUG;
queue_delayed_work(hdmi_drv->workqueue, &hdmi_drv->delay_work,
msecs_to_jiffies(40));
- }
+ }//plug out?
if (hdmi_drv->hdcp_irq_cb)
hdmi_drv->hdcp_irq_cb(0);
rk3028_hdmi_reset_pclk();
rk616_hdmi_reset(hdmi_drv);
#elif defined(SOC_CONFIG_RK3036)
+ rk3028_hdmi_reset_pclk();
rk616_hdmi_reset(hdmi_drv);
#else
hdmi_drv->set_vif = rk616_hdmi_set_vif;
#define _RK616_HDMI_HW_H
#define SOC_CONFIG_RK3036
-
+#include <linux/rockchip/iomap.h>
#define RK616_HDMI_BASE 0x400
enum PWR_MODE {
NORMAL,
writel_relaxed(temp | ((val) & (msk)), hdmi_dev->regbase + (offset) * 0x04);
return ret;
}
-#if defined(CONFIG_ARCH_RK3026)
+#if defined(CONFIG_ARCH_RK3026) || defined(SOC_CONFIG_RK3036)
static inline void rk3028_hdmi_reset_pclk(void)
{
- writel_relaxed(0x00010001, RK2928_CRU_BASE + 0x128);
+ writel_relaxed(0x00010001, RK_CRU_VIRT+ 0x128);
msleep(100);
- writel_relaxed(0x00010000, RK2928_CRU_BASE + 0x128);
+ writel_relaxed(0x00010000, RK_CRU_VIRT + 0x128);
}
#endif
#endif