diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0762-vc4-cec-Restore-cec-physical-address-on-reconnect.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0762-vc4-cec-Restore-cec-physical-address-on-reconnect.patch | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0762-vc4-cec-Restore-cec-physical-address-on-reconnect.patch b/target/linux/bcm27xx/patches-5.4/950-0762-vc4-cec-Restore-cec-physical-address-on-reconnect.patch deleted file mode 100644 index d42f61d2e4..0000000000 --- a/target/linux/bcm27xx/patches-5.4/950-0762-vc4-cec-Restore-cec-physical-address-on-reconnect.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 7776a876ce7a6eeda164aebacc965116821d3095 Mon Sep 17 00:00:00 2001 -From: Dom Cobley <popcornmix@gmail.com> -Date: Wed, 3 Jun 2020 12:20:19 +0100 -Subject: [PATCH] vc4: cec: Restore cec physical address on reconnect - -Currently we call cec_phys_addr_invalidate on a hotplug deassert. -That may be due to a TV power cycling, or an AVR being switched -on (and switching edid). This makes CEC unusable. - -Set it back up again on the hotplug assert. - -Signed-off-by: Dom Cobley <popcornmix@gmail.com> ---- - drivers/gpu/drm/vc4/vc4_hdmi.c | 25 +++++++++++++++++-------- - 1 file changed, 17 insertions(+), 8 deletions(-) - ---- a/drivers/gpu/drm/vc4/vc4_hdmi.c -+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c -@@ -113,20 +113,29 @@ static enum drm_connector_status - vc4_hdmi_connector_detect(struct drm_connector *connector, bool force) - { - struct vc4_hdmi *vc4_hdmi = connector_to_vc4_hdmi(connector); -+ bool connected = false; - - if (vc4_hdmi->hpd_gpio) { - if (gpio_get_value_cansleep(vc4_hdmi->hpd_gpio) ^ - vc4_hdmi->hpd_active_low) -- return connector_status_connected; -- cec_phys_addr_invalidate(vc4_hdmi->cec_adap); -- return connector_status_disconnected; -- } -- -- if (drm_probe_ddc(vc4_hdmi->ddc)) -- return connector_status_connected; -- -+ connected = true; -+ } else if (drm_probe_ddc(vc4_hdmi->ddc)) -+ connected = true; - if (HDMI_READ(HDMI_HOTPLUG) & VC4_HDMI_HOTPLUG_CONNECTED) -+ connected = true; -+ if (connected) { -+ if (connector->status != connector_status_connected) { -+ struct edid *edid = drm_get_edid(connector, vc4_hdmi->ddc); -+ -+ if (edid) { -+ cec_s_phys_addr_from_edid(vc4_hdmi->cec_adap, edid); -+ vc4_hdmi->encoder.hdmi_monitor = drm_detect_hdmi_monitor(edid); -+ drm_connector_update_edid_property(connector, edid); -+ kfree(edid); -+ } -+ } - return connector_status_connected; -+ } - cec_phys_addr_invalidate(vc4_hdmi->cec_adap); - return connector_status_disconnected; - } |