timings->data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE;
        timings->de_level = OMAPDSS_SIG_ACTIVE_HIGH;
-       timings->sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES;
+       timings->sync_pclk_edge = OMAPDSS_DRIVE_SIG_FALLING_EDGE;
 }
 
 static enum drm_connector_status omap_connector_detect(
 
        .hsync_level    = OMAPDSS_SIG_ACTIVE_HIGH,
        .data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE,
        .de_level       = OMAPDSS_SIG_ACTIVE_HIGH,
-       .sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES,
+       .sync_pclk_edge = OMAPDSS_DRIVE_SIG_FALLING_EDGE,
 };
 
 struct panel_drv_data {
 
        .hsync_level    = OMAPDSS_SIG_ACTIVE_LOW,
        .data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE,
        .de_level       = OMAPDSS_SIG_ACTIVE_HIGH,
-       .sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES,
+       .sync_pclk_edge = OMAPDSS_DRIVE_SIG_FALLING_EDGE,
 };
 
 struct panel_drv_data {
 
        .hsync_level    = OMAPDSS_SIG_ACTIVE_LOW,
        .data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE,
        .de_level       = OMAPDSS_SIG_ACTIVE_HIGH,
-       .sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES,
+       .sync_pclk_edge = OMAPDSS_DRIVE_SIG_FALLING_EDGE,
 };
 
 #define to_panel_data(p) container_of(p, struct panel_drv_data, dssdev)
 
 
        .data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE,
        .de_level       = OMAPDSS_SIG_ACTIVE_HIGH,
-       .sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES,
+       .sync_pclk_edge = OMAPDSS_DRIVE_SIG_FALLING_EDGE,
 };
 
 #define to_panel_data(p) container_of(p, struct panel_drv_data, dssdev)
 
 
        .data_pclk_edge = OMAPDSS_DRIVE_SIG_FALLING_EDGE,
        .de_level       = OMAPDSS_SIG_ACTIVE_HIGH,
-       .sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES,
+       .sync_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE,
 };
 
 #define JBT_COMMAND    0x000
 
        .hsync_level    = OMAPDSS_SIG_ACTIVE_LOW,
        .data_pclk_edge = OMAPDSS_DRIVE_SIG_FALLING_EDGE,
        .de_level       = OMAPDSS_SIG_ACTIVE_HIGH,
-       .sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES,
+       .sync_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE,
 };
 
 #define to_panel_data(p) container_of(p, struct panel_drv_data, dssdev)
 
        case OMAPDSS_DRIVE_SIG_FALLING_EDGE:
                ipc = true;
                break;
-       case OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES:
        default:
                BUG();
        }
 
+       /* always use the 'rf' setting */
+       onoff = true;
+
        switch (sync_pclk_edge) {
-       case OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES:
-               onoff = false;
-               rf = false;
-               break;
        case OMAPDSS_DRIVE_SIG_FALLING_EDGE:
-               onoff = true;
                rf = false;
                break;
        case OMAPDSS_DRIVE_SIG_RISING_EDGE:
-               onoff = true;
                rf = true;
                break;
        default:
 
                OMAPDSS_DRIVE_SIG_RISING_EDGE :
                OMAPDSS_DRIVE_SIG_FALLING_EDGE;
 
-       ovt->sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES;
+       ovt->sync_pclk_edge = vm->flags & DISPLAY_FLAGS_PIXDATA_POSEDGE ?
+               OMAPDSS_DRIVE_SIG_FALLING_EDGE :
+               OMAPDSS_DRIVE_SIG_RISING_EDGE;
 }
 EXPORT_SYMBOL(videomode_to_omap_video_timings);
 
 
        dsi->timings.vsync_level = OMAPDSS_SIG_ACTIVE_HIGH;
        dsi->timings.data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE;
        dsi->timings.de_level = OMAPDSS_SIG_ACTIVE_HIGH;
-       dsi->timings.sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES;
+       dsi->timings.sync_pclk_edge = OMAPDSS_DRIVE_SIG_FALLING_EDGE;
 
        dss_mgr_set_timings(mgr, &dsi->timings);
 
 
        rfbi.timings.vsync_level = OMAPDSS_SIG_ACTIVE_HIGH;
        rfbi.timings.data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE;
        rfbi.timings.de_level = OMAPDSS_SIG_ACTIVE_HIGH;
-       rfbi.timings.sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES;
+       rfbi.timings.sync_pclk_edge = OMAPDSS_DRIVE_SIG_FALLING_EDGE;
 
        dss_mgr_set_timings(mgr, &rfbi.timings);
 }
 
        } else {
                timings->data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE;
                timings->de_level = OMAPDSS_SIG_ACTIVE_HIGH;
-               timings->sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES;
+               timings->sync_pclk_edge = OMAPDSS_DRIVE_SIG_FALLING_EDGE;
        }
 
        timings->pixelclock = PICOS2KHZ(var->pixclock) * 1000;
        } else {
                t->data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE;
                t->de_level = OMAPDSS_SIG_ACTIVE_HIGH;
-               t->sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES;
+               t->sync_pclk_edge = OMAPDSS_DRIVE_SIG_FALLING_EDGE;
        }
 
        t->x_res = m->xres;
 
 };
 
 enum omap_dss_signal_edge {
-       OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES,
        OMAPDSS_DRIVE_SIG_RISING_EDGE,
        OMAPDSS_DRIVE_SIG_FALLING_EDGE,
 };