aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2/dss
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2011-12-13 06:18:52 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2012-01-02 01:51:26 -0500
commit54540d41aaad0ed3245d3e99db014ab03a219c5a (patch)
treee81c956135475ce72f61e3b1a6b36684c4222742 /drivers/video/omap2/dss
parent00f17e4560da32db454c46faf1e8df4fe35cc226 (diff)
OMAPDSS: APPLY: move simple_check functions
The functions dss_ovl_simple_check() and dss_mgr_simple_check() 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')
-rw-r--r--drivers/video/omap2/dss/apply.c55
-rw-r--r--drivers/video/omap2/dss/dss.h4
-rw-r--r--drivers/video/omap2/dss/manager.c19
-rw-r--r--drivers/video/omap2/dss/overlay.c36
4 files changed, 59 insertions, 55 deletions
diff --git a/drivers/video/omap2/dss/apply.c b/drivers/video/omap2/dss/apply.c
index 12f2cdb65704..0a6fb8de19c0 100644
--- a/drivers/video/omap2/dss/apply.c
+++ b/drivers/video/omap2/dss/apply.c
@@ -991,25 +991,6 @@ out:
991 mutex_unlock(&apply_lock); 991 mutex_unlock(&apply_lock);
992} 992}
993 993
994static int dss_mgr_simple_check(struct omap_overlay_manager *mgr,
995 const struct omap_overlay_manager_info *info)
996{
997 if (dss_has_feature(FEAT_ALPHA_FIXED_ZORDER)) {
998 /*
999 * OMAP3 supports only graphics source transparency color key
1000 * and alpha blending simultaneously. See TRM 15.4.2.4.2.2
1001 * Alpha Mode.
1002 */
1003 if (info->partial_alpha_enabled && info->trans_enabled
1004 && info->trans_key_type != OMAP_DSS_COLOR_KEY_GFX_DST) {
1005 DSSERR("check_manager: illegal transparency key\n");
1006 return -EINVAL;
1007 }
1008 }
1009
1010 return 0;
1011}
1012
1013int dss_mgr_set_info(struct omap_overlay_manager *mgr, 994int dss_mgr_set_info(struct omap_overlay_manager *mgr,
1014 struct omap_overlay_manager_info *info) 995 struct omap_overlay_manager_info *info)
1015{ 996{
@@ -1109,42 +1090,6 @@ err:
1109} 1090}
1110 1091
1111 1092
1112static int dss_ovl_simple_check(struct omap_overlay *ovl,
1113 const struct omap_overlay_info *info)
1114{
1115 if (info->paddr == 0) {
1116 DSSERR("check_overlay: paddr cannot be 0\n");
1117 return -EINVAL;
1118 }
1119
1120 if ((ovl->caps & OMAP_DSS_OVL_CAP_SCALE) == 0) {
1121 if (info->out_width != 0 && info->width != info->out_width) {
1122 DSSERR("check_overlay: overlay %d doesn't support "
1123 "scaling\n", ovl->id);
1124 return -EINVAL;
1125 }
1126
1127 if (info->out_height != 0 && info->height != info->out_height) {
1128 DSSERR("check_overlay: overlay %d doesn't support "
1129 "scaling\n", ovl->id);
1130 return -EINVAL;
1131 }
1132 }
1133
1134 if ((ovl->supported_modes & info->color_mode) == 0) {
1135 DSSERR("check_overlay: overlay %d doesn't support mode %d\n",
1136 ovl->id, info->color_mode);
1137 return -EINVAL;
1138 }
1139
1140 if (info->zorder >= omap_dss_get_num_overlays()) {
1141 DSSERR("check_overlay: zorder %d too high\n", info->zorder);
1142 return -EINVAL;
1143 }
1144
1145 return 0;
1146}
1147
1148int dss_ovl_set_info(struct omap_overlay *ovl, 1093int dss_ovl_set_info(struct omap_overlay *ovl,
1149 struct omap_overlay_info *info) 1094 struct omap_overlay_info *info)
1150{ 1095{
diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h
index 20a88392ed24..3cf99a95dae2 100644
--- a/drivers/video/omap2/dss/dss.h
+++ b/drivers/video/omap2/dss/dss.h
@@ -209,6 +209,8 @@ void default_get_overlay_fifo_thresholds(enum omap_plane plane,
209/* manager */ 209/* manager */
210int dss_init_overlay_managers(struct platform_device *pdev); 210int dss_init_overlay_managers(struct platform_device *pdev);
211void dss_uninit_overlay_managers(struct platform_device *pdev); 211void dss_uninit_overlay_managers(struct platform_device *pdev);
212int dss_mgr_simple_check(struct omap_overlay_manager *mgr,
213 const struct omap_overlay_manager_info *info);
212int dss_mgr_check(struct omap_overlay_manager *mgr, 214int dss_mgr_check(struct omap_overlay_manager *mgr,
213 struct omap_dss_device *dssdev, 215 struct omap_dss_device *dssdev,
214 struct omap_overlay_manager_info *info, 216 struct omap_overlay_manager_info *info,
@@ -219,6 +221,8 @@ void dss_init_overlays(struct platform_device *pdev);
219void dss_uninit_overlays(struct platform_device *pdev); 221void dss_uninit_overlays(struct platform_device *pdev);
220void dss_overlay_setup_dispc_manager(struct omap_overlay_manager *mgr); 222void dss_overlay_setup_dispc_manager(struct omap_overlay_manager *mgr);
221void dss_recheck_connections(struct omap_dss_device *dssdev, bool force); 223void dss_recheck_connections(struct omap_dss_device *dssdev, bool force);
224int dss_ovl_simple_check(struct omap_overlay *ovl,
225 const struct omap_overlay_info *info);
222int dss_ovl_check(struct omap_overlay *ovl, 226int dss_ovl_check(struct omap_overlay *ovl,
223 struct omap_overlay_info *info, struct omap_dss_device *dssdev); 227 struct omap_overlay_info *info, struct omap_dss_device *dssdev);
224 228
diff --git a/drivers/video/omap2/dss/manager.c b/drivers/video/omap2/dss/manager.c
index 542258dbdccc..d1858e71c64e 100644
--- a/drivers/video/omap2/dss/manager.c
+++ b/drivers/video/omap2/dss/manager.c
@@ -592,6 +592,25 @@ struct omap_overlay_manager *omap_dss_get_overlay_manager(int num)
592} 592}
593EXPORT_SYMBOL(omap_dss_get_overlay_manager); 593EXPORT_SYMBOL(omap_dss_get_overlay_manager);
594 594
595int dss_mgr_simple_check(struct omap_overlay_manager *mgr,
596 const struct omap_overlay_manager_info *info)
597{
598 if (dss_has_feature(FEAT_ALPHA_FIXED_ZORDER)) {
599 /*
600 * OMAP3 supports only graphics source transparency color key
601 * and alpha blending simultaneously. See TRM 15.4.2.4.2.2
602 * Alpha Mode.
603 */
604 if (info->partial_alpha_enabled && info->trans_enabled
605 && info->trans_key_type != OMAP_DSS_COLOR_KEY_GFX_DST) {
606 DSSERR("check_manager: illegal transparency key\n");
607 return -EINVAL;
608 }
609 }
610
611 return 0;
612}
613
595static int dss_mgr_check_zorder(struct omap_overlay_manager *mgr, 614static int dss_mgr_check_zorder(struct omap_overlay_manager *mgr,
596 struct omap_overlay_info **overlay_infos) 615 struct omap_overlay_info **overlay_infos)
597{ 616{
diff --git a/drivers/video/omap2/dss/overlay.c b/drivers/video/omap2/dss/overlay.c
index c91babfc44ca..6e821810deec 100644
--- a/drivers/video/omap2/dss/overlay.c
+++ b/drivers/video/omap2/dss/overlay.c
@@ -595,6 +595,42 @@ void dss_uninit_overlays(struct platform_device *pdev)
595 num_overlays = 0; 595 num_overlays = 0;
596} 596}
597 597
598int dss_ovl_simple_check(struct omap_overlay *ovl,
599 const struct omap_overlay_info *info)
600{
601 if (info->paddr == 0) {
602 DSSERR("check_overlay: paddr cannot be 0\n");
603 return -EINVAL;
604 }
605
606 if ((ovl->caps & OMAP_DSS_OVL_CAP_SCALE) == 0) {
607 if (info->out_width != 0 && info->width != info->out_width) {
608 DSSERR("check_overlay: overlay %d doesn't support "
609 "scaling\n", ovl->id);
610 return -EINVAL;
611 }
612
613 if (info->out_height != 0 && info->height != info->out_height) {
614 DSSERR("check_overlay: overlay %d doesn't support "
615 "scaling\n", ovl->id);
616 return -EINVAL;
617 }
618 }
619
620 if ((ovl->supported_modes & info->color_mode) == 0) {
621 DSSERR("check_overlay: overlay %d doesn't support mode %d\n",
622 ovl->id, info->color_mode);
623 return -EINVAL;
624 }
625
626 if (info->zorder >= omap_dss_get_num_overlays()) {
627 DSSERR("check_overlay: zorder %d too high\n", info->zorder);
628 return -EINVAL;
629 }
630
631 return 0;
632}
633
598int dss_ovl_check(struct omap_overlay *ovl, 634int dss_ovl_check(struct omap_overlay *ovl,
599 struct omap_overlay_info *info, struct omap_dss_device *dssdev) 635 struct omap_overlay_info *info, struct omap_dss_device *dssdev)
600{ 636{