]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c
omapdrm: encoder-tpd12s015: keep ls_oe_gpio high
[mirror_ubuntu-bionic-kernel.git] / drivers / gpu / drm / omapdrm / displays / encoder-tpd12s015.c
index a9e9d667c55e9716a5ac3d473f73578a1e930b14..293b8fd07cfc8ba0f059039a50dc6e57b1857a12 100644 (file)
@@ -51,6 +51,8 @@ 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 */
        udelay(300);
 
@@ -69,6 +71,7 @@ static void tpd_disconnect(struct omap_dss_device *dssdev,
                return;
 
        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,18 +149,11 @@ static int tpd_read_edid(struct omap_dss_device *dssdev,
 {
        struct panel_drv_data *ddata = to_panel_data(dssdev);
        struct omap_dss_device *in = ddata->in;
-       int r;
 
        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;
+       return in->ops.hdmi->read_edid(in, edid, len);
 }
 
 static bool tpd_detect(struct omap_dss_device *dssdev)