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);
 
                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;
 {
        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)