aboutsummaryrefslogtreecommitdiffstats
path: root/include/video
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2011-11-15 09:37:53 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-12-02 01:54:44 -0500
commitaaa874a985158383c4b394c687c716ef26288741 (patch)
treeedbed62510d56becac3a15bebe4fb86fdd21c756 /include/video
parent43a972d96b6ea2b9e3d6b55b9724c9f61d802c68 (diff)
OMAPDSS: APPLY: rewrite overlay enable/disable
Overlays are currently enabled and disabled with a boolean in the struct omap_overlay_info. The overlay info is set with ovl->set_overlay_info(), and made into use with mgr->apply(). This doesn't work properly, as the enable/disable status may affect also other overlays, for example when using fifo-merge. Thus the enabling and disabling of the overlay needs to be done outside the normal overlay configuration. This patch achieves that by doing the following things: 1) Add function pointers to struct omap_overlay: enable(), disable() and is_enabled(). These are used to do the obvious. The functions may block. 2) Move the "enabled" field from struct omap_overlay to ovl_priv_data. 3) Add a new route for settings to be applied to the HW, called "extra_info". The status of the normal info and extra_info are tracked separately. The point here is to allow the normal info to be changed and applied in non-blocking matter, whereas the extra_info can only be changed when holding the mutex. This makes it possible to, for example, set the overlay enable flag, apply it, and wait until the HW has taken the flag into use. This is not possible if the enable flag would be in the normal info, as a new value for the flag could be set at any time from the users of omapdss. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'include/video')
-rw-r--r--include/video/omapdss.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/include/video/omapdss.h b/include/video/omapdss.h
index 6e3e7a716838..9d01ff66659f 100644
--- a/include/video/omapdss.h
+++ b/include/video/omapdss.h
@@ -352,8 +352,6 @@ struct omap_dss_cpr_coefs {
352}; 352};
353 353
354struct omap_overlay_info { 354struct omap_overlay_info {
355 bool enabled;
356
357 u32 paddr; 355 u32 paddr;
358 u32 p_uv_addr; /* for NV12 format */ 356 u32 p_uv_addr; /* for NV12 format */
359 u16 screen_width; 357 u16 screen_width;
@@ -391,6 +389,10 @@ struct omap_overlay {
391 /* if true, info has been changed, but not applied() yet */ 389 /* if true, info has been changed, but not applied() yet */
392 bool info_dirty; 390 bool info_dirty;
393 391
392 int (*enable)(struct omap_overlay *ovl);
393 int (*disable)(struct omap_overlay *ovl);
394 bool (*is_enabled)(struct omap_overlay *ovl);
395
394 int (*set_manager)(struct omap_overlay *ovl, 396 int (*set_manager)(struct omap_overlay *ovl,
395 struct omap_overlay_manager *mgr); 397 struct omap_overlay_manager *mgr);
396 int (*unset_manager)(struct omap_overlay *ovl); 398 int (*unset_manager)(struct omap_overlay *ovl);