unsigned long fb_end_aligned_physaddr;
 #endif
 
-       /* Current osd mode */
-       int osd_mode;
-
        /* Store the buffer offset */
        int set_osd_coords_x;
        int set_osd_coords_y;
                        IVTVFB_DEBUG_WARN("ivtvfb_set_var - Invalid bpp\n");
        }
 
-       /* Change osd mode if needed.
-          Although rare, things can go wrong. The extra mode
-          change seems to help... */
-       if (osd_mode != -1 && osd_mode != oi->osd_mode) {
+       /* Set video mode. Although rare, the display can become scrambled even
+          if we don't change mode. Always 'bounce' to osd_mode via mode 0 */
+       if (osd_mode != -1) {
                ivtv_vapi(itv, CX2341X_OSD_SET_PIXEL_FORMAT, 1, 0);
                ivtv_vapi(itv, CX2341X_OSD_SET_PIXEL_FORMAT, 1, osd_mode);
-               oi->osd_mode = osd_mode;
        }
 
        oi->bits_per_pixel = var->bits_per_pixel;
        oi->bits_per_pixel = osd_depth;
        oi->bytes_per_pixel = oi->bits_per_pixel / 8;
 
-       /* Invalidate current osd mode to force a mode switch later */
-       oi->osd_mode = -1;
-
        /* Horizontal size & position */
 
        if (osd_xres > 720) osd_xres = 720;