diff --git a/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c b/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c index ef185a77b8db..3f8675c3f4ad 100644 --- a/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c +++ b/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c @@ -942,13 +942,13 @@ static void hdmirx_cec_state_reconfiguration(struct rk_hdmirx_dev *hdmirx_dev, b { unsigned int irqs; - if (en) { - hdmirx_update_bits(hdmirx_dev, GLOBAL_SWENABLE, CEC_ENABLE, CEC_ENABLE); - hdmirx_update_bits(hdmirx_dev, CEC_CONFIG, RX_AUTO_DRIVE_ACKNOWLEDGE, - RX_AUTO_DRIVE_ACKNOWLEDGE); - irqs = CECTX_LINE_ERR | CECTX_NACK | CECRX_EOM | CECTX_DONE; - hdmirx_writel(hdmirx_dev, CEC_INT_MASK_N, irqs); - } + hdmirx_update_bits(hdmirx_dev, GLOBAL_SWENABLE, CEC_ENABLE, CEC_ENABLE); + hdmirx_update_bits(hdmirx_dev, CEC_CONFIG, RX_AUTO_DRIVE_ACKNOWLEDGE, + RX_AUTO_DRIVE_ACKNOWLEDGE); + hdmirx_writel(hdmirx_dev, CEC_ADDR, hdmirx_dev->cec->addresses); + irqs = CECTX_LINE_ERR | CECTX_NACK | CECRX_EOM | CECTX_DONE; + hdmirx_writel(hdmirx_dev, CEC_INT_MASK_N, irqs); + cec_queue_pin_hpd_event(hdmirx_dev->cec->adap, en, ktime_get()); } @@ -3490,6 +3490,9 @@ static int hdmirx_runtime_resume(struct device *dev) hdmirx_edid_init_config(hdmirx_dev); + if (hdmirx_dev->cec && hdmirx_dev->cec->adap) + hdmirx_cec_state_reconfiguration(hdmirx_dev, false); + if (hdmirx_dev->initialized) { enable_irq(hdmirx_dev->hdmi_irq); enable_irq(hdmirx_dev->dma_irq);