diff options
-rw-r--r-- | drivers/video/omap2/displays/panel-taal.c | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/drivers/video/omap2/displays/panel-taal.c b/drivers/video/omap2/displays/panel-taal.c index 221579f75d8..4cb0449d509 100644 --- a/drivers/video/omap2/displays/panel-taal.c +++ b/drivers/video/omap2/displays/panel-taal.c | |||
@@ -504,14 +504,18 @@ static int taal_exit_ulps(struct omap_dss_device *dssdev) | |||
504 | return 0; | 504 | return 0; |
505 | 505 | ||
506 | r = omapdss_dsi_display_enable(dssdev); | 506 | r = omapdss_dsi_display_enable(dssdev); |
507 | if (r) | 507 | if (r) { |
508 | goto err; | 508 | dev_err(&dssdev->dev, "failed to enable DSI\n"); |
509 | goto err1; | ||
510 | } | ||
509 | 511 | ||
510 | omapdss_dsi_vc_enable_hs(dssdev, td->channel, true); | 512 | omapdss_dsi_vc_enable_hs(dssdev, td->channel, true); |
511 | 513 | ||
512 | r = _taal_enable_te(dssdev, true); | 514 | r = _taal_enable_te(dssdev, true); |
513 | if (r) | 515 | if (r) { |
514 | goto err; | 516 | dev_err(&dssdev->dev, "failed to re-enable TE"); |
517 | goto err2; | ||
518 | } | ||
515 | 519 | ||
516 | enable_irq(gpio_to_irq(panel_data->ext_te_gpio)); | 520 | enable_irq(gpio_to_irq(panel_data->ext_te_gpio)); |
517 | 521 | ||
@@ -521,13 +525,15 @@ static int taal_exit_ulps(struct omap_dss_device *dssdev) | |||
521 | 525 | ||
522 | return 0; | 526 | return 0; |
523 | 527 | ||
524 | err: | 528 | err2: |
525 | dev_err(&dssdev->dev, "exit ULPS failed"); | 529 | dev_err(&dssdev->dev, "failed to exit ULPS"); |
526 | r = taal_panel_reset(dssdev); | ||
527 | |||
528 | enable_irq(gpio_to_irq(panel_data->ext_te_gpio)); | ||
529 | td->ulps_enabled = false; | ||
530 | 530 | ||
531 | r = taal_panel_reset(dssdev); | ||
532 | if (!r) { | ||
533 | enable_irq(gpio_to_irq(panel_data->ext_te_gpio)); | ||
534 | td->ulps_enabled = false; | ||
535 | } | ||
536 | err1: | ||
531 | taal_queue_ulps_work(dssdev); | 537 | taal_queue_ulps_work(dssdev); |
532 | 538 | ||
533 | return r; | 539 | return r; |
@@ -1317,8 +1323,11 @@ static void taal_disable(struct omap_dss_device *dssdev) | |||
1317 | dsi_bus_lock(dssdev); | 1323 | dsi_bus_lock(dssdev); |
1318 | 1324 | ||
1319 | if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) { | 1325 | if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) { |
1320 | taal_wake_up(dssdev); | 1326 | int r; |
1321 | taal_power_off(dssdev); | 1327 | |
1328 | r = taal_wake_up(dssdev); | ||
1329 | if (!r) | ||
1330 | taal_power_off(dssdev); | ||
1322 | } | 1331 | } |
1323 | 1332 | ||
1324 | dsi_bus_unlock(dssdev); | 1333 | dsi_bus_unlock(dssdev); |