|
@@ -416,8 +416,6 @@ struct overlay_cache_data {
|
|
|
enum omap_burst_size burst_size;
|
|
|
u32 fifo_low;
|
|
|
u32 fifo_high;
|
|
|
-
|
|
|
- bool manual_update;
|
|
|
};
|
|
|
|
|
|
struct manager_cache_data {
|
|
@@ -437,7 +435,6 @@ struct manager_cache_data {
|
|
|
|
|
|
bool alpha_enabled;
|
|
|
|
|
|
- bool manual_upd_display;
|
|
|
bool manual_update;
|
|
|
bool do_manual_update;
|
|
|
|
|
@@ -539,24 +536,15 @@ static int dss_mgr_wait_for_go(struct omap_overlay_manager *mgr)
|
|
|
if (!dssdev || dssdev->state != OMAP_DSS_DISPLAY_ACTIVE)
|
|
|
return 0;
|
|
|
|
|
|
+ if (dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE)
|
|
|
+ return 0;
|
|
|
+
|
|
|
if (dssdev->type == OMAP_DISPLAY_TYPE_VENC
|
|
|
|| dssdev->type == OMAP_DISPLAY_TYPE_HDMI) {
|
|
|
irq = DISPC_IRQ_EVSYNC_ODD | DISPC_IRQ_EVSYNC_EVEN;
|
|
|
} else {
|
|
|
- if (dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE) {
|
|
|
- enum omap_dss_update_mode mode;
|
|
|
- mode = dssdev->driver->get_update_mode(dssdev);
|
|
|
- if (mode != OMAP_DSS_UPDATE_AUTO)
|
|
|
- return 0;
|
|
|
-
|
|
|
- irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ?
|
|
|
- DISPC_IRQ_FRAMEDONE
|
|
|
- : DISPC_IRQ_FRAMEDONE2;
|
|
|
- } else {
|
|
|
- irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ?
|
|
|
- DISPC_IRQ_VSYNC
|
|
|
- : DISPC_IRQ_VSYNC2;
|
|
|
- }
|
|
|
+ irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ?
|
|
|
+ DISPC_IRQ_VSYNC : DISPC_IRQ_VSYNC2;
|
|
|
}
|
|
|
|
|
|
mc = &dss_cache.manager_cache[mgr->id];
|
|
@@ -617,24 +605,15 @@ int dss_mgr_wait_for_go_ovl(struct omap_overlay *ovl)
|
|
|
if (!dssdev || dssdev->state != OMAP_DSS_DISPLAY_ACTIVE)
|
|
|
return 0;
|
|
|
|
|
|
+ if (dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE)
|
|
|
+ return 0;
|
|
|
+
|
|
|
if (dssdev->type == OMAP_DISPLAY_TYPE_VENC
|
|
|
|| dssdev->type == OMAP_DISPLAY_TYPE_HDMI) {
|
|
|
irq = DISPC_IRQ_EVSYNC_ODD | DISPC_IRQ_EVSYNC_EVEN;
|
|
|
} else {
|
|
|
- if (dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE) {
|
|
|
- enum omap_dss_update_mode mode;
|
|
|
- mode = dssdev->driver->get_update_mode(dssdev);
|
|
|
- if (mode != OMAP_DSS_UPDATE_AUTO)
|
|
|
- return 0;
|
|
|
-
|
|
|
- irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ?
|
|
|
- DISPC_IRQ_FRAMEDONE
|
|
|
- : DISPC_IRQ_FRAMEDONE2;
|
|
|
- } else {
|
|
|
- irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ?
|
|
|
- DISPC_IRQ_VSYNC
|
|
|
- : DISPC_IRQ_VSYNC2;
|
|
|
- }
|
|
|
+ irq = (dssdev->manager->id == OMAP_DSS_CHANNEL_LCD) ?
|
|
|
+ DISPC_IRQ_VSYNC : DISPC_IRQ_VSYNC2;
|
|
|
}
|
|
|
|
|
|
oc = &dss_cache.overlay_cache[ovl->id];
|
|
@@ -763,7 +742,7 @@ static int configure_overlay(enum omap_plane plane)
|
|
|
orig_outw = outw;
|
|
|
orig_outh = outh;
|
|
|
|
|
|
- if (c->manual_update && mc->do_manual_update) {
|
|
|
+ if (mc->manual_update && mc->do_manual_update) {
|
|
|
unsigned bpp;
|
|
|
unsigned scale_x_m = w, scale_x_d = outw;
|
|
|
unsigned scale_y_m = h, scale_y_d = outh;
|
|
@@ -928,7 +907,7 @@ static int configure_dispc(void)
|
|
|
if (!oc->dirty)
|
|
|
continue;
|
|
|
|
|
|
- if (oc->manual_update && !mc->do_manual_update)
|
|
|
+ if (mc->manual_update && !mc->do_manual_update)
|
|
|
continue;
|
|
|
|
|
|
if (mgr_busy[oc->channel]) {
|
|
@@ -976,7 +955,7 @@ static int configure_dispc(void)
|
|
|
/* We don't need GO with manual update display. LCD iface will
|
|
|
* always be turned off after frame, and new settings will be
|
|
|
* taken in to use at next update */
|
|
|
- if (!mc->manual_upd_display)
|
|
|
+ if (!mc->manual_update)
|
|
|
dispc_go(i);
|
|
|
}
|
|
|
|
|
@@ -1302,11 +1281,6 @@ static int omap_dss_mgr_apply(struct omap_overlay_manager *mgr)
|
|
|
|
|
|
oc->enabled = true;
|
|
|
|
|
|
- oc->manual_update =
|
|
|
- dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE &&
|
|
|
- dssdev->driver->get_update_mode(dssdev) !=
|
|
|
- OMAP_DSS_UPDATE_AUTO;
|
|
|
-
|
|
|
++num_planes_enabled;
|
|
|
}
|
|
|
|
|
@@ -1341,13 +1315,8 @@ static int omap_dss_mgr_apply(struct omap_overlay_manager *mgr)
|
|
|
mc->trans_enabled = mgr->info.trans_enabled;
|
|
|
mc->alpha_enabled = mgr->info.alpha_enabled;
|
|
|
|
|
|
- mc->manual_upd_display =
|
|
|
- dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE;
|
|
|
-
|
|
|
mc->manual_update =
|
|
|
- dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE &&
|
|
|
- dssdev->driver->get_update_mode(dssdev) !=
|
|
|
- OMAP_DSS_UPDATE_AUTO;
|
|
|
+ dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE;
|
|
|
}
|
|
|
|
|
|
/* XXX TODO: Try to get fifomerge working. The problem is that it
|