Skip to content

Commit 20b0dfa

Browse files
committed
drm/vc4: hdmi: Make sure the device is powered with CEC
Similarly to what we encountered with the detect hook with DRM, nothing actually prevents any of the CEC callback from being run while the HDMI output is disabled. However, this is an issue since any register access to the controller when it's powered down will result in a silent hang. Let's make sure we run the runtime_pm hooks when the CEC adapter is opened and closed by the userspace to avoid that issue. Fixes: 15b4511 ("drm/vc4: add HDMI CEC support") Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com> Signed-off-by: Maxime Ripard <maxime@cerno.tech> Link: https://patchwork.freedesktop.org/patch/msgid/20210819135931.895976-6-maxime@cerno.tech
1 parent 724fc85 commit 20b0dfa

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

drivers/gpu/drm/vc4/vc4_hdmi.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1741,8 +1741,14 @@ static int vc4_hdmi_cec_enable(struct cec_adapter *adap)
17411741
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
17421742
/* clock period in microseconds */
17431743
const u32 usecs = 1000000 / CEC_CLOCK_FREQ;
1744-
u32 val = HDMI_READ(HDMI_CEC_CNTRL_5);
1744+
u32 val;
1745+
int ret;
1746+
1747+
ret = pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev);
1748+
if (ret)
1749+
return ret;
17451750

1751+
val = HDMI_READ(HDMI_CEC_CNTRL_5);
17461752
val &= ~(VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET |
17471753
VC4_HDMI_CEC_CNT_TO_4700_US_MASK |
17481754
VC4_HDMI_CEC_CNT_TO_4500_US_MASK);
@@ -1785,6 +1791,8 @@ static int vc4_hdmi_cec_disable(struct cec_adapter *adap)
17851791
HDMI_WRITE(HDMI_CEC_CNTRL_5, HDMI_READ(HDMI_CEC_CNTRL_5) |
17861792
VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
17871793

1794+
pm_runtime_put(&vc4_hdmi->pdev->dev);
1795+
17881796
return 0;
17891797
}
17901798

0 commit comments

Comments
 (0)