diff options
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/omap2/dss/apply.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/drivers/video/omap2/dss/apply.c b/drivers/video/omap2/dss/apply.c index ef13fd65fcc1..5f5812b528de 100644 --- a/drivers/video/omap2/dss/apply.c +++ b/drivers/video/omap2/dss/apply.c | |||
@@ -960,6 +960,9 @@ static void dss_ovl_setup_fifo(struct omap_overlay *ovl) | |||
960 | u32 size, burst_size; | 960 | u32 size, burst_size; |
961 | u32 fifo_low, fifo_high; | 961 | u32 fifo_low, fifo_high; |
962 | 962 | ||
963 | if (!op->enabled && !op->enabling) | ||
964 | return; | ||
965 | |||
963 | dssdev = ovl->manager->device; | 966 | dssdev = ovl->manager->device; |
964 | 967 | ||
965 | size = dispc_ovl_get_fifo_size(ovl->id); | 968 | size = dispc_ovl_get_fifo_size(ovl->id); |
@@ -993,7 +996,6 @@ static void dss_ovl_setup_fifo(struct omap_overlay *ovl) | |||
993 | static void dss_mgr_setup_fifos(struct omap_overlay_manager *mgr) | 996 | static void dss_mgr_setup_fifos(struct omap_overlay_manager *mgr) |
994 | { | 997 | { |
995 | struct omap_overlay *ovl; | 998 | struct omap_overlay *ovl; |
996 | struct ovl_priv_data *op; | ||
997 | struct mgr_priv_data *mp; | 999 | struct mgr_priv_data *mp; |
998 | 1000 | ||
999 | mp = get_mgr_priv(mgr); | 1001 | mp = get_mgr_priv(mgr); |
@@ -1001,13 +1003,19 @@ static void dss_mgr_setup_fifos(struct omap_overlay_manager *mgr) | |||
1001 | if (!mp->enabled) | 1003 | if (!mp->enabled) |
1002 | return; | 1004 | return; |
1003 | 1005 | ||
1004 | list_for_each_entry(ovl, &mgr->overlays, list) { | 1006 | list_for_each_entry(ovl, &mgr->overlays, list) |
1005 | op = get_ovl_priv(ovl); | 1007 | dss_ovl_setup_fifo(ovl); |
1008 | } | ||
1006 | 1009 | ||
1007 | if (!op->enabled && !op->enabling) | 1010 | static void dss_setup_fifos(void) |
1008 | continue; | 1011 | { |
1012 | const int num_mgrs = omap_dss_get_num_overlay_managers(); | ||
1013 | struct omap_overlay_manager *mgr; | ||
1014 | int i; | ||
1009 | 1015 | ||
1010 | dss_ovl_setup_fifo(ovl); | 1016 | for (i = 0; i < num_mgrs; ++i) { |
1017 | mgr = omap_dss_get_overlay_manager(i); | ||
1018 | dss_mgr_setup_fifos(mgr); | ||
1011 | } | 1019 | } |
1012 | } | 1020 | } |
1013 | 1021 | ||
@@ -1033,7 +1041,7 @@ int dss_mgr_enable(struct omap_overlay_manager *mgr) | |||
1033 | goto err; | 1041 | goto err; |
1034 | } | 1042 | } |
1035 | 1043 | ||
1036 | dss_mgr_setup_fifos(mgr); | 1044 | dss_setup_fifos(); |
1037 | 1045 | ||
1038 | dss_write_regs(); | 1046 | dss_write_regs(); |
1039 | dss_set_go_bits(); | 1047 | dss_set_go_bits(); |
@@ -1409,7 +1417,7 @@ int dss_ovl_enable(struct omap_overlay *ovl) | |||
1409 | goto err2; | 1417 | goto err2; |
1410 | } | 1418 | } |
1411 | 1419 | ||
1412 | dss_ovl_setup_fifo(ovl); | 1420 | dss_setup_fifos(); |
1413 | 1421 | ||
1414 | op->enabling = false; | 1422 | op->enabling = false; |
1415 | dss_apply_ovl_enable(ovl, true); | 1423 | dss_apply_ovl_enable(ovl, true); |