aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2011-11-15 04:20:13 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-12-02 01:54:36 -0500
commitbc1a95181f7069920c13fcef0159ffa7d61160f1 (patch)
tree46071ea0d4dd6733182d90a6ed5e9c52e722f529 /drivers/video
parent3dcec4d6ba65a4e14987f48e8d98c4290ceb2c29 (diff)
OMAPDSS: APPLY: use dispc_mgr_get_vsync_irq()
Use dispc_mgr_get_vsync_irq() to get the interrupt numbers for vsync, instead of hardcoding the values depending on the display type. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/dss/apply.c36
1 files changed, 12 insertions, 24 deletions
diff --git a/drivers/video/omap2/dss/apply.c b/drivers/video/omap2/dss/apply.c
index dfce82e11a36..9cdfbfa629de 100644
--- a/drivers/video/omap2/dss/apply.c
+++ b/drivers/video/omap2/dss/apply.c
@@ -131,13 +131,7 @@ int dss_mgr_wait_for_go(struct omap_overlay_manager *mgr)
131 if (mgr_manual_update(mgr)) 131 if (mgr_manual_update(mgr))
132 return 0; 132 return 0;
133 133
134 if (dssdev->type == OMAP_DISPLAY_TYPE_VENC 134 irq = dispc_mgr_get_vsync_irq(mgr->id);
135 || dssdev->type == OMAP_DISPLAY_TYPE_HDMI) {
136 irq = DISPC_IRQ_EVSYNC_ODD | DISPC_IRQ_EVSYNC_EVEN;
137 } else {
138 irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ?
139 DISPC_IRQ_VSYNC : DISPC_IRQ_VSYNC2;
140 }
141 135
142 mc = &dss_cache.manager_cache[mgr->id]; 136 mc = &dss_cache.manager_cache[mgr->id];
143 i = 0; 137 i = 0;
@@ -200,13 +194,7 @@ int dss_mgr_wait_for_go_ovl(struct omap_overlay *ovl)
200 if (ovl_manual_update(ovl)) 194 if (ovl_manual_update(ovl))
201 return 0; 195 return 0;
202 196
203 if (dssdev->type == OMAP_DISPLAY_TYPE_VENC 197 irq = dispc_mgr_get_vsync_irq(ovl->manager->id);
204 || dssdev->type == OMAP_DISPLAY_TYPE_HDMI) {
205 irq = DISPC_IRQ_EVSYNC_ODD | DISPC_IRQ_EVSYNC_EVEN;
206 } else {
207 irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ?
208 DISPC_IRQ_VSYNC : DISPC_IRQ_VSYNC2;
209 }
210 198
211 oc = &dss_cache.overlay_cache[ovl->id]; 199 oc = &dss_cache.overlay_cache[ovl->id];
212 i = 0; 200 i = 0;
@@ -421,13 +409,13 @@ static void dss_apply_irq_handler(void *data, u32 mask);
421 409
422static void dss_register_vsync_isr(void) 410static void dss_register_vsync_isr(void)
423{ 411{
412 const int num_mgrs = dss_feat_get_num_mgrs();
424 u32 mask; 413 u32 mask;
425 int r; 414 int r, i;
426 415
427 mask = DISPC_IRQ_VSYNC | DISPC_IRQ_EVSYNC_ODD | 416 mask = 0;
428 DISPC_IRQ_EVSYNC_EVEN; 417 for (i = 0; i < num_mgrs; ++i)
429 if (dss_has_feature(FEAT_MGR_LCD2)) 418 mask |= dispc_mgr_get_vsync_irq(i);
430 mask |= DISPC_IRQ_VSYNC2;
431 419
432 r = omap_dispc_register_isr(dss_apply_irq_handler, NULL, mask); 420 r = omap_dispc_register_isr(dss_apply_irq_handler, NULL, mask);
433 WARN_ON(r); 421 WARN_ON(r);
@@ -437,13 +425,13 @@ static void dss_register_vsync_isr(void)
437 425
438static void dss_unregister_vsync_isr(void) 426static void dss_unregister_vsync_isr(void)
439{ 427{
428 const int num_mgrs = dss_feat_get_num_mgrs();
440 u32 mask; 429 u32 mask;
441 int r; 430 int r, i;
442 431
443 mask = DISPC_IRQ_VSYNC | DISPC_IRQ_EVSYNC_ODD | 432 mask = 0;
444 DISPC_IRQ_EVSYNC_EVEN; 433 for (i = 0; i < num_mgrs; ++i)
445 if (dss_has_feature(FEAT_MGR_LCD2)) 434 mask |= dispc_mgr_get_vsync_irq(i);
446 mask |= DISPC_IRQ_VSYNC2;
447 435
448 r = omap_dispc_unregister_isr(dss_apply_irq_handler, NULL, mask); 436 r = omap_dispc_unregister_isr(dss_apply_irq_handler, NULL, mask);
449 WARN_ON(r); 437 WARN_ON(r);