aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/dss/apply.c24
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)
993static void dss_mgr_setup_fifos(struct omap_overlay_manager *mgr) 996static 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) 1010static 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);