Commit 3b86b9ec authored by Hans Verkuil's avatar Hans Verkuil Committed by Tomi Valkeinen

omapdrm: encoder-tpd12s015: keep ls_oe_gpio high

For OMAP4 CEC support the CEC pin should always be on. So keep
ls_oe_gpio high all the time in order to support CEC.

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: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 9e66317d
...@@ -51,6 +51,8 @@ static int tpd_connect(struct omap_dss_device *dssdev, ...@@ -51,6 +51,8 @@ static int tpd_connect(struct omap_dss_device *dssdev,
dssdev->dst = dst; dssdev->dst = dst;
gpiod_set_value_cansleep(ddata->ct_cp_hpd_gpio, 1); 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 */ /* DC-DC converter needs at max 300us to get to 90% of 5V */
udelay(300); udelay(300);
...@@ -69,6 +71,7 @@ static void tpd_disconnect(struct omap_dss_device *dssdev, ...@@ -69,6 +71,7 @@ static void tpd_disconnect(struct omap_dss_device *dssdev,
return; return;
gpiod_set_value_cansleep(ddata->ct_cp_hpd_gpio, 0); gpiod_set_value_cansleep(ddata->ct_cp_hpd_gpio, 0);
gpiod_set_value_cansleep(ddata->ls_oe_gpio, 0);
dst->src = NULL; dst->src = NULL;
dssdev->dst = NULL; dssdev->dst = NULL;
...@@ -146,18 +149,11 @@ static int tpd_read_edid(struct omap_dss_device *dssdev, ...@@ -146,18 +149,11 @@ static int tpd_read_edid(struct omap_dss_device *dssdev,
{ {
struct panel_drv_data *ddata = to_panel_data(dssdev); struct panel_drv_data *ddata = to_panel_data(dssdev);
struct omap_dss_device *in = ddata->in; struct omap_dss_device *in = ddata->in;
int r;
if (!gpiod_get_value_cansleep(ddata->hpd_gpio)) if (!gpiod_get_value_cansleep(ddata->hpd_gpio))
return -ENODEV; return -ENODEV;
gpiod_set_value_cansleep(ddata->ls_oe_gpio, 1); return in->ops.hdmi->read_edid(in, edid, len);
r = in->ops.hdmi->read_edid(in, edid, len);
gpiod_set_value_cansleep(ddata->ls_oe_gpio, 0);
return r;
} }
static bool tpd_detect(struct omap_dss_device *dssdev) static bool tpd_detect(struct omap_dss_device *dssdev)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment