mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-25 16:31:13 +00:00
8299d1f057
Rebased RPi foundation patches on linux 5.10.59, removed applied and reverted patches, wireless patches and defconfig patches. bcm2708: boot tested on RPi B+ v1.2 bcm2709: boot tested on RPi 4B v1.1 4G bcm2711: boot tested on RPi 4B v1.1 4G Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
46 lines
1.5 KiB
Diff
46 lines
1.5 KiB
Diff
From ea4d08578d2e002ce01a2f6913c78fbff8195985 Mon Sep 17 00:00:00 2001
|
|
From: Maxime Ripard <maxime@cerno.tech>
|
|
Date: Tue, 29 Jun 2021 11:41:57 +0200
|
|
Subject: [PATCH] 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: 15b4511a4af6 ("drm/vc4: add HDMI CEC support")
|
|
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
|
---
|
|
drivers/gpu/drm/vc4/vc4_hdmi.c | 7 +++++++
|
|
1 file changed, 7 insertions(+)
|
|
|
|
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
|
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
|
@@ -1761,6 +1761,11 @@ static int vc4_hdmi_cec_enable(struct ce
|
|
/* clock period in microseconds */
|
|
const u32 usecs = 1000000 / CEC_CLOCK_FREQ;
|
|
u32 val = HDMI_READ(HDMI_CEC_CNTRL_5);
|
|
+ int ret;
|
|
+
|
|
+ ret = pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev);
|
|
+ if (ret)
|
|
+ return ret;
|
|
|
|
val &= ~(VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET |
|
|
VC4_HDMI_CEC_CNT_TO_4700_US_MASK |
|
|
@@ -1804,6 +1809,8 @@ static int vc4_hdmi_cec_disable(struct c
|
|
HDMI_WRITE(HDMI_CEC_CNTRL_5, HDMI_READ(HDMI_CEC_CNTRL_5) |
|
|
VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
|
|
|
|
+ pm_runtime_put(&vc4_hdmi->pdev->dev);
|
|
+
|
|
return 0;
|
|
}
|
|
|