diff options
Diffstat (limited to 'drivers/video/omap2/dss/manager.c')
-rw-r--r-- | drivers/video/omap2/dss/manager.c | 59 |
1 files changed, 14 insertions, 45 deletions
diff --git a/drivers/video/omap2/dss/manager.c b/drivers/video/omap2/dss/manager.c index 9aeea50e33f..18a1b9286c4 100644 --- a/drivers/video/omap2/dss/manager.c +++ b/drivers/video/omap2/dss/manager.c | |||
@@ -416,8 +416,6 @@ struct overlay_cache_data { | |||
416 | enum omap_burst_size burst_size; | 416 | enum omap_burst_size burst_size; |
417 | u32 fifo_low; | 417 | u32 fifo_low; |
418 | u32 fifo_high; | 418 | u32 fifo_high; |
419 | |||
420 | bool manual_update; | ||
421 | }; | 419 | }; |
422 | 420 | ||
423 | struct manager_cache_data { | 421 | struct manager_cache_data { |
@@ -437,7 +435,6 @@ struct manager_cache_data { | |||
437 | 435 | ||
438 | bool alpha_enabled; | 436 | bool alpha_enabled; |
439 | 437 | ||
440 | bool manual_upd_display; | ||
441 | bool manual_update; | 438 | bool manual_update; |
442 | bool do_manual_update; | 439 | bool do_manual_update; |
443 | 440 | ||
@@ -539,24 +536,15 @@ static int dss_mgr_wait_for_go(struct omap_overlay_manager *mgr) | |||
539 | if (!dssdev || dssdev->state != OMAP_DSS_DISPLAY_ACTIVE) | 536 | if (!dssdev || dssdev->state != OMAP_DSS_DISPLAY_ACTIVE) |
540 | return 0; | 537 | return 0; |
541 | 538 | ||
539 | if (dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE) | ||
540 | return 0; | ||
541 | |||
542 | if (dssdev->type == OMAP_DISPLAY_TYPE_VENC | 542 | if (dssdev->type == OMAP_DISPLAY_TYPE_VENC |
543 | || dssdev->type == OMAP_DISPLAY_TYPE_HDMI) { | 543 | || dssdev->type == OMAP_DISPLAY_TYPE_HDMI) { |
544 | irq = DISPC_IRQ_EVSYNC_ODD | DISPC_IRQ_EVSYNC_EVEN; | 544 | irq = DISPC_IRQ_EVSYNC_ODD | DISPC_IRQ_EVSYNC_EVEN; |
545 | } else { | 545 | } else { |
546 | if (dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE) { | 546 | irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ? |
547 | enum omap_dss_update_mode mode; | 547 | DISPC_IRQ_VSYNC : DISPC_IRQ_VSYNC2; |
548 | mode = dssdev->driver->get_update_mode(dssdev); | ||
549 | if (mode != OMAP_DSS_UPDATE_AUTO) | ||
550 | return 0; | ||
551 | |||
552 | irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ? | ||
553 | DISPC_IRQ_FRAMEDONE | ||
554 | : DISPC_IRQ_FRAMEDONE2; | ||
555 | } else { | ||
556 | irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ? | ||
557 | DISPC_IRQ_VSYNC | ||
558 | : DISPC_IRQ_VSYNC2; | ||
559 | } | ||
560 | } | 548 | } |
561 | 549 | ||
562 | mc = &dss_cache.manager_cache[mgr->id]; | 550 | mc = &dss_cache.manager_cache[mgr->id]; |
@@ -617,24 +605,15 @@ int dss_mgr_wait_for_go_ovl(struct omap_overlay *ovl) | |||
617 | if (!dssdev || dssdev->state != OMAP_DSS_DISPLAY_ACTIVE) | 605 | if (!dssdev || dssdev->state != OMAP_DSS_DISPLAY_ACTIVE) |
618 | return 0; | 606 | return 0; |
619 | 607 | ||
608 | if (dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE) | ||
609 | return 0; | ||
610 | |||
620 | if (dssdev->type == OMAP_DISPLAY_TYPE_VENC | 611 | if (dssdev->type == OMAP_DISPLAY_TYPE_VENC |
621 | || dssdev->type == OMAP_DISPLAY_TYPE_HDMI) { | 612 | || dssdev->type == OMAP_DISPLAY_TYPE_HDMI) { |
622 | irq = DISPC_IRQ_EVSYNC_ODD | DISPC_IRQ_EVSYNC_EVEN; | 613 | irq = DISPC_IRQ_EVSYNC_ODD | DISPC_IRQ_EVSYNC_EVEN; |
623 | } else { | 614 | } else { |
624 | if (dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE) { | 615 | irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ? |
625 | enum omap_dss_update_mode mode; | 616 | DISPC_IRQ_VSYNC : DISPC_IRQ_VSYNC2; |
626 | mode = dssdev->driver->get_update_mode(dssdev); | ||
627 | if (mode != OMAP_DSS_UPDATE_AUTO) | ||
628 | return 0; | ||
629 | |||
630 | irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ? | ||
631 | DISPC_IRQ_FRAMEDONE | ||
632 | : DISPC_IRQ_FRAMEDONE2; | ||
633 | } else { | ||
634 | irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ? | ||
635 | DISPC_IRQ_VSYNC | ||
636 | : DISPC_IRQ_VSYNC2; | ||
637 | } | ||
638 | } | 617 | } |
639 | 618 | ||
640 | oc = &dss_cache.overlay_cache[ovl->id]; | 619 | oc = &dss_cache.overlay_cache[ovl->id]; |
@@ -763,7 +742,7 @@ static int configure_overlay(enum omap_plane plane) | |||
763 | orig_outw = outw; | 742 | orig_outw = outw; |
764 | orig_outh = outh; | 743 | orig_outh = outh; |
765 | 744 | ||
766 | if (c->manual_update && mc->do_manual_update) { | 745 | if (mc->manual_update && mc->do_manual_update) { |
767 | unsigned bpp; | 746 | unsigned bpp; |
768 | unsigned scale_x_m = w, scale_x_d = outw; | 747 | unsigned scale_x_m = w, scale_x_d = outw; |
769 | unsigned scale_y_m = h, scale_y_d = outh; | 748 | unsigned scale_y_m = h, scale_y_d = outh; |
@@ -928,7 +907,7 @@ static int configure_dispc(void) | |||
928 | if (!oc->dirty) | 907 | if (!oc->dirty) |
929 | continue; | 908 | continue; |
930 | 909 | ||
931 | if (oc->manual_update && !mc->do_manual_update) | 910 | if (mc->manual_update && !mc->do_manual_update) |
932 | continue; | 911 | continue; |
933 | 912 | ||
934 | if (mgr_busy[oc->channel]) { | 913 | if (mgr_busy[oc->channel]) { |
@@ -976,7 +955,7 @@ static int configure_dispc(void) | |||
976 | /* We don't need GO with manual update display. LCD iface will | 955 | /* We don't need GO with manual update display. LCD iface will |
977 | * always be turned off after frame, and new settings will be | 956 | * always be turned off after frame, and new settings will be |
978 | * taken in to use at next update */ | 957 | * taken in to use at next update */ |
979 | if (!mc->manual_upd_display) | 958 | if (!mc->manual_update) |
980 | dispc_go(i); | 959 | dispc_go(i); |
981 | } | 960 | } |
982 | 961 | ||
@@ -1302,11 +1281,6 @@ static int omap_dss_mgr_apply(struct omap_overlay_manager *mgr) | |||
1302 | 1281 | ||
1303 | oc->enabled = true; | 1282 | oc->enabled = true; |
1304 | 1283 | ||
1305 | oc->manual_update = | ||
1306 | dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE && | ||
1307 | dssdev->driver->get_update_mode(dssdev) != | ||
1308 | OMAP_DSS_UPDATE_AUTO; | ||
1309 | |||
1310 | ++num_planes_enabled; | 1284 | ++num_planes_enabled; |
1311 | } | 1285 | } |
1312 | 1286 | ||
@@ -1341,13 +1315,8 @@ static int omap_dss_mgr_apply(struct omap_overlay_manager *mgr) | |||
1341 | mc->trans_enabled = mgr->info.trans_enabled; | 1315 | mc->trans_enabled = mgr->info.trans_enabled; |
1342 | mc->alpha_enabled = mgr->info.alpha_enabled; | 1316 | mc->alpha_enabled = mgr->info.alpha_enabled; |
1343 | 1317 | ||
1344 | mc->manual_upd_display = | ||
1345 | dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE; | ||
1346 | |||
1347 | mc->manual_update = | 1318 | mc->manual_update = |
1348 | dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE && | 1319 | dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE; |
1349 | dssdev->driver->get_update_mode(dssdev) != | ||
1350 | OMAP_DSS_UPDATE_AUTO; | ||
1351 | } | 1320 | } |
1352 | 1321 | ||
1353 | /* XXX TODO: Try to get fifomerge working. The problem is that it | 1322 | /* XXX TODO: Try to get fifomerge working. The problem is that it |