[PATCH 2/8] omapdrm: encoder-tpd12s015: keep ls_oe_gpio high if CEC is enabled

Hans Verkuil hverkuil at xs4all.nl
Fri Apr 14 10:25:06 UTC 2017

From: Hans Verkuil <hans.verkuil at cisco.com>

When the OMAP4 CEC support is enabled the CEC pin should always
be on. So keep ls_oe_gpio high when CONFIG_OMAP4_DSS_HDMI_CEC
is set.

Background: even if the HPD is low it should still be possible
to use CEC. Some displays will set the HPD low when they go into standby or
when they switch to another input, but CEC is still available and able
to wake up/change input for such a display.

This is explicitly allowed by the CEC standard.

Signed-off-by: Hans Verkuil <hans.verkuil at cisco.com>
 drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c b/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c
index 58276a48112e..757554e6d62f 100644
--- a/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c
+++ b/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c
@@ -46,6 +46,9 @@ static int tpd_connect(struct omap_dss_device *dssdev,
 	dssdev->dst = dst;
 	gpiod_set_value_cansleep(ddata->ct_cp_hpd_gpio, 1);
+	gpiod_set_value_cansleep(ddata->ls_oe_gpio, 1);
 	/* DC-DC converter needs at max 300us to get to 90% of 5V */
@@ -64,6 +67,7 @@ static void tpd_disconnect(struct omap_dss_device *dssdev,
 	gpiod_set_value_cansleep(ddata->ct_cp_hpd_gpio, 0);
+	gpiod_set_value_cansleep(ddata->ls_oe_gpio, 0);
 	dst->src = NULL;
 	dssdev->dst = NULL;
@@ -146,11 +150,15 @@ static int tpd_read_edid(struct omap_dss_device *dssdev,
 	if (!gpiod_get_value_cansleep(ddata->hpd_gpio))
 		return -ENODEV;
 	gpiod_set_value_cansleep(ddata->ls_oe_gpio, 1);
 	r = in->ops.hdmi->read_edid(in, edid, len);
 	gpiod_set_value_cansleep(ddata->ls_oe_gpio, 0);
 	return r;

More information about the dri-devel mailing list