diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-12-08 03:32:37 -0500 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2012-01-02 01:51:25 -0500 |
commit | 6ac48d1e3ac788ad1d54895acd83be26cefb4fe9 (patch) | |
tree | 511d3080a4c3964095da524af8404493285e80bf /drivers/video/omap2/dss/manager.c | |
parent | 5af661ce1a8c7672364c2c911b76186589db0f0e (diff) |
OMAPDSS: APPLY: move check functions
The functions dss_ovl_check, dss_mgr_check_zorder, dss_mgr_check in
apply.c are not really part of the apply mechanism, and can be moved to
overlay.c and manager.c.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video/omap2/dss/manager.c')
-rw-r--r-- | drivers/video/omap2/dss/manager.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/drivers/video/omap2/dss/manager.c b/drivers/video/omap2/dss/manager.c index 8c967ef2ae9..542258dbdcc 100644 --- a/drivers/video/omap2/dss/manager.c +++ b/drivers/video/omap2/dss/manager.c | |||
@@ -592,3 +592,66 @@ struct omap_overlay_manager *omap_dss_get_overlay_manager(int num) | |||
592 | } | 592 | } |
593 | EXPORT_SYMBOL(omap_dss_get_overlay_manager); | 593 | EXPORT_SYMBOL(omap_dss_get_overlay_manager); |
594 | 594 | ||
595 | static int dss_mgr_check_zorder(struct omap_overlay_manager *mgr, | ||
596 | struct omap_overlay_info **overlay_infos) | ||
597 | { | ||
598 | struct omap_overlay *ovl1, *ovl2; | ||
599 | struct omap_overlay_info *info1, *info2; | ||
600 | |||
601 | list_for_each_entry(ovl1, &mgr->overlays, list) { | ||
602 | info1 = overlay_infos[ovl1->id]; | ||
603 | |||
604 | if (info1 == NULL) | ||
605 | continue; | ||
606 | |||
607 | list_for_each_entry(ovl2, &mgr->overlays, list) { | ||
608 | if (ovl1 == ovl2) | ||
609 | continue; | ||
610 | |||
611 | info2 = overlay_infos[ovl2->id]; | ||
612 | |||
613 | if (info2 == NULL) | ||
614 | continue; | ||
615 | |||
616 | if (info1->zorder == info2->zorder) { | ||
617 | DSSERR("overlays %d and %d have the same " | ||
618 | "zorder %d\n", | ||
619 | ovl1->id, ovl2->id, info1->zorder); | ||
620 | return -EINVAL; | ||
621 | } | ||
622 | } | ||
623 | } | ||
624 | |||
625 | return 0; | ||
626 | } | ||
627 | |||
628 | int dss_mgr_check(struct omap_overlay_manager *mgr, | ||
629 | struct omap_dss_device *dssdev, | ||
630 | struct omap_overlay_manager_info *info, | ||
631 | struct omap_overlay_info **overlay_infos) | ||
632 | { | ||
633 | struct omap_overlay *ovl; | ||
634 | int r; | ||
635 | |||
636 | if (dss_has_feature(FEAT_ALPHA_FREE_ZORDER)) { | ||
637 | r = dss_mgr_check_zorder(mgr, overlay_infos); | ||
638 | if (r) | ||
639 | return r; | ||
640 | } | ||
641 | |||
642 | list_for_each_entry(ovl, &mgr->overlays, list) { | ||
643 | struct omap_overlay_info *oi; | ||
644 | int r; | ||
645 | |||
646 | oi = overlay_infos[ovl->id]; | ||
647 | |||
648 | if (oi == NULL) | ||
649 | continue; | ||
650 | |||
651 | r = dss_ovl_check(ovl, oi, dssdev); | ||
652 | if (r) | ||
653 | return r; | ||
654 | } | ||
655 | |||
656 | return 0; | ||
657 | } | ||