openwrtv3/target/linux/brcm2708/patches-4.4/0470-drm-vc4-Replace-HDMI-force-connected-with-an-EDID-pr.patch
Álvaro Fernández Rojas 2b1c6b21b5 brcm2708: update linux 4.4 patches to latest version
As usual these patches were extracted and rebased from the raspberry pi repo:
https://github.com/raspberrypi/linux/tree/rpi-4.4.y

Also adds support for Raspberry Pi Compute Module 3 (untested).

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2016-09-10 14:54:26 +02:00

42 lines
1.6 KiB
Diff

From 05352a2959d8924a6333726cd15144245d7c98fa Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Fri, 12 Aug 2016 10:57:41 -0700
Subject: [PATCH] drm/vc4: Replace HDMI force-connected with an EDID probe.
The force-connected started out because I didn't know how to read the
HPD pin successfully, which required the hpd_active_low check and
getting the correct active level into the DTs. It stayed because we
don't have the Pi3's HPD line exposed to Linux, so this was the only
way to bring up graphics on it.
However, with the DSI panel support now present, users want to be able
to run DSI-only systems, and forcing HDMI on is interfering with
default screen configurations. Work around the Pi3's missing HPD by
probing the DDC on I2C and see if it's present at all.
Signed-off-by: Eric Anholt <eric@anholt.net>
---
drivers/gpu/drm/vc4/vc4_hdmi.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -166,8 +166,6 @@ vc4_hdmi_connector_detect(struct drm_con
struct drm_device *dev = connector->dev;
struct vc4_dev *vc4 = to_vc4_dev(dev);
- return connector_status_connected;
-
if (vc4->hdmi->hpd_gpio) {
if (gpio_get_value_cansleep(vc4->hdmi->hpd_gpio) ^
vc4->hdmi->hpd_active_low)
@@ -176,6 +174,9 @@ vc4_hdmi_connector_detect(struct drm_con
return connector_status_disconnected;
}
+ if (drm_probe_ddc(vc4->hdmi->ddc))
+ return connector_status_connected;
+
if (HDMI_READ(VC4_HDMI_HOTPLUG) & VC4_HDMI_HOTPLUG_CONNECTED)
return connector_status_connected;
else