diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-11-21 06:42:58 -0500 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-12-02 01:54:54 -0500 |
commit | 33ca237f80555cde41c17682991a2b58d2f14da5 (patch) | |
tree | 7d6bf28ff53dd00bb37cfa71471d5384837ebc4d /drivers/video | |
parent | 2a4ee7ee685f3bf996461ed0d148857ce85a00e2 (diff) |
OMAPDSS: check the return value of dss_mgr_enable()
Now that dss_mgr_enable returns an error value, check it in all the
places dss_mgr_enable is used, and bail out properly.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/omap2/dss/dpi.c | 5 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dsi.c | 11 | ||||
-rw-r--r-- | drivers/video/omap2/dss/hdmi.c | 9 | ||||
-rw-r--r-- | drivers/video/omap2/dss/sdi.c | 6 | ||||
-rw-r--r-- | drivers/video/omap2/dss/venc.c | 26 |
5 files changed, 50 insertions, 7 deletions
diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c index 79c4df3c9a88..395d658a94fc 100644 --- a/drivers/video/omap2/dss/dpi.c +++ b/drivers/video/omap2/dss/dpi.c | |||
@@ -223,10 +223,13 @@ int omapdss_dpi_display_enable(struct omap_dss_device *dssdev) | |||
223 | 223 | ||
224 | mdelay(2); | 224 | mdelay(2); |
225 | 225 | ||
226 | dss_mgr_enable(dssdev->manager); | 226 | r = dss_mgr_enable(dssdev->manager); |
227 | if (r) | ||
228 | goto err_mgr_enable; | ||
227 | 229 | ||
228 | return 0; | 230 | return 0; |
229 | 231 | ||
232 | err_mgr_enable: | ||
230 | err_set_mode: | 233 | err_set_mode: |
231 | if (dpi_use_dsi_pll(dssdev)) | 234 | if (dpi_use_dsi_pll(dssdev)) |
232 | dsi_pll_uninit(dpi.dsidev, true); | 235 | dsi_pll_uninit(dpi.dsidev, true); |
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c index 9cb2e827c001..4dc98b692267 100644 --- a/drivers/video/omap2/dss/dsi.c +++ b/drivers/video/omap2/dss/dsi.c | |||
@@ -3979,6 +3979,7 @@ int dsi_enable_video_output(struct omap_dss_device *dssdev, int channel) | |||
3979 | int bpp = dsi_get_pixel_size(dssdev->panel.dsi_pix_fmt); | 3979 | int bpp = dsi_get_pixel_size(dssdev->panel.dsi_pix_fmt); |
3980 | u8 data_type; | 3980 | u8 data_type; |
3981 | u16 word_count; | 3981 | u16 word_count; |
3982 | int r; | ||
3982 | 3983 | ||
3983 | if (dssdev->panel.dsi_mode == OMAP_DSS_DSI_VIDEO_MODE) { | 3984 | if (dssdev->panel.dsi_mode == OMAP_DSS_DSI_VIDEO_MODE) { |
3984 | switch (dssdev->panel.dsi_pix_fmt) { | 3985 | switch (dssdev->panel.dsi_pix_fmt) { |
@@ -4013,7 +4014,15 @@ int dsi_enable_video_output(struct omap_dss_device *dssdev, int channel) | |||
4013 | dsi_if_enable(dsidev, true); | 4014 | dsi_if_enable(dsidev, true); |
4014 | } | 4015 | } |
4015 | 4016 | ||
4016 | dss_mgr_enable(dssdev->manager); | 4017 | r = dss_mgr_enable(dssdev->manager); |
4018 | if (r) { | ||
4019 | if (dssdev->panel.dsi_mode == OMAP_DSS_DSI_VIDEO_MODE) { | ||
4020 | dsi_if_enable(dsidev, false); | ||
4021 | dsi_vc_enable(dsidev, channel, false); | ||
4022 | } | ||
4023 | |||
4024 | return r; | ||
4025 | } | ||
4017 | 4026 | ||
4018 | return 0; | 4027 | return 0; |
4019 | } | 4028 | } |
diff --git a/drivers/video/omap2/dss/hdmi.c b/drivers/video/omap2/dss/hdmi.c index e245a2bbba9d..b064762b6994 100644 --- a/drivers/video/omap2/dss/hdmi.c +++ b/drivers/video/omap2/dss/hdmi.c | |||
@@ -387,9 +387,16 @@ static int hdmi_power_on(struct omap_dss_device *dssdev) | |||
387 | 387 | ||
388 | hdmi.ip_data.ops->video_enable(&hdmi.ip_data, 1); | 388 | hdmi.ip_data.ops->video_enable(&hdmi.ip_data, 1); |
389 | 389 | ||
390 | dss_mgr_enable(dssdev->manager); | 390 | r = dss_mgr_enable(dssdev->manager); |
391 | if (r) | ||
392 | goto err_mgr_enable; | ||
391 | 393 | ||
392 | return 0; | 394 | return 0; |
395 | |||
396 | err_mgr_enable: | ||
397 | hdmi.ip_data.ops->video_enable(&hdmi.ip_data, 0); | ||
398 | hdmi.ip_data.ops->phy_disable(&hdmi.ip_data); | ||
399 | hdmi.ip_data.ops->pll_disable(&hdmi.ip_data); | ||
393 | err: | 400 | err: |
394 | hdmi_runtime_put(); | 401 | hdmi_runtime_put(); |
395 | return -EIO; | 402 | return -EIO; |
diff --git a/drivers/video/omap2/dss/sdi.c b/drivers/video/omap2/dss/sdi.c index 02da8beb7304..8266ca0d666b 100644 --- a/drivers/video/omap2/dss/sdi.c +++ b/drivers/video/omap2/dss/sdi.c | |||
@@ -123,10 +123,14 @@ int omapdss_sdi_display_enable(struct omap_dss_device *dssdev) | |||
123 | goto err_sdi_enable; | 123 | goto err_sdi_enable; |
124 | mdelay(2); | 124 | mdelay(2); |
125 | 125 | ||
126 | dss_mgr_enable(dssdev->manager); | 126 | r = dss_mgr_enable(dssdev->manager); |
127 | if (r) | ||
128 | goto err_mgr_enable; | ||
127 | 129 | ||
128 | return 0; | 130 | return 0; |
129 | 131 | ||
132 | err_mgr_enable: | ||
133 | dss_sdi_disable(); | ||
130 | err_sdi_enable: | 134 | err_sdi_enable: |
131 | err_set_dispc_clock_div: | 135 | err_set_dispc_clock_div: |
132 | err_set_dss_clock_div: | 136 | err_set_dss_clock_div: |
diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c index 101fcd77a50d..b3e9f9091581 100644 --- a/drivers/video/omap2/dss/venc.c +++ b/drivers/video/omap2/dss/venc.c | |||
@@ -417,9 +417,10 @@ static const struct venc_config *venc_timings_to_config( | |||
417 | BUG(); | 417 | BUG(); |
418 | } | 418 | } |
419 | 419 | ||
420 | static void venc_power_on(struct omap_dss_device *dssdev) | 420 | static int venc_power_on(struct omap_dss_device *dssdev) |
421 | { | 421 | { |
422 | u32 l; | 422 | u32 l; |
423 | int r; | ||
423 | 424 | ||
424 | venc_reset(); | 425 | venc_reset(); |
425 | venc_write_config(venc_timings_to_config(&dssdev->panel.timings)); | 426 | venc_write_config(venc_timings_to_config(&dssdev->panel.timings)); |
@@ -447,7 +448,22 @@ static void venc_power_on(struct omap_dss_device *dssdev) | |||
447 | if (dssdev->platform_enable) | 448 | if (dssdev->platform_enable) |
448 | dssdev->platform_enable(dssdev); | 449 | dssdev->platform_enable(dssdev); |
449 | 450 | ||
450 | dss_mgr_enable(dssdev->manager); | 451 | r = dss_mgr_enable(dssdev->manager); |
452 | if (r) | ||
453 | goto err; | ||
454 | |||
455 | return 0; | ||
456 | |||
457 | err: | ||
458 | venc_write_reg(VENC_OUTPUT_CONTROL, 0); | ||
459 | dss_set_dac_pwrdn_bgz(0); | ||
460 | |||
461 | if (dssdev->platform_disable) | ||
462 | dssdev->platform_disable(dssdev); | ||
463 | |||
464 | regulator_disable(venc.vdda_dac_reg); | ||
465 | |||
466 | return r; | ||
451 | } | 467 | } |
452 | 468 | ||
453 | static void venc_power_off(struct omap_dss_device *dssdev) | 469 | static void venc_power_off(struct omap_dss_device *dssdev) |
@@ -504,7 +520,9 @@ static int venc_panel_enable(struct omap_dss_device *dssdev) | |||
504 | if (r) | 520 | if (r) |
505 | goto err1; | 521 | goto err1; |
506 | 522 | ||
507 | venc_power_on(dssdev); | 523 | r = venc_power_on(dssdev); |
524 | if (r) | ||
525 | goto err2; | ||
508 | 526 | ||
509 | venc.wss_data = 0; | 527 | venc.wss_data = 0; |
510 | 528 | ||
@@ -512,6 +530,8 @@ static int venc_panel_enable(struct omap_dss_device *dssdev) | |||
512 | 530 | ||
513 | mutex_unlock(&venc.venc_lock); | 531 | mutex_unlock(&venc.venc_lock); |
514 | return 0; | 532 | return 0; |
533 | err2: | ||
534 | venc_runtime_put(); | ||
515 | err1: | 535 | err1: |
516 | omap_dss_stop_device(dssdev); | 536 | omap_dss_stop_device(dssdev); |
517 | err0: | 537 | err0: |