aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2011-11-26 07:36:19 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-12-02 01:54:59 -0500
commit75ae118a0028810f93a746c25f4bb018fb044323 (patch)
tree9fd7ed24abe64d3a71573a72d164d42056d5523b /drivers/video
parenta6b24f83601530f69ee36ac48527336e3c79bea8 (diff)
OMAPDSS: APPLY: add dss_setup_fifos
Currently fifo threshold configuration is done per overlay or per manager. However, when a fifo size configuration is added, we need to always configure the thresholds for all overlays. This patch prepares for that by changing the fifo threshold configuration to always handle all overlays. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
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);