diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-11-15 04:20:13 -0500 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-12-02 01:54:36 -0500 |
commit | bc1a95181f7069920c13fcef0159ffa7d61160f1 (patch) | |
tree | 46071ea0d4dd6733182d90a6ed5e9c52e722f529 /drivers/video | |
parent | 3dcec4d6ba65a4e14987f48e8d98c4290ceb2c29 (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.c | 36 |
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 | ||
422 | static void dss_register_vsync_isr(void) | 410 | static 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 | ||
438 | static void dss_unregister_vsync_isr(void) | 426 | static 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); |