diff --git a/drivers/media/video/ivtv/ivtv-driver.c b/drivers/media/video/ivtv/ivtv-driver.c
index 8b5597ff3cd778e59493075de671c4d85ea1a96f..45b9328a538f5c8d4809462c4147a23c1f217df7 100644
--- a/drivers/media/video/ivtv/ivtv-driver.c
+++ b/drivers/media/video/ivtv/ivtv-driver.c
@@ -116,7 +116,7 @@ static int dec_yuv_buffers = IVTV_DEFAULT_DEC_YUV_BUFFERS;
 static int dec_vbi_buffers = IVTV_DEFAULT_DEC_VBI_BUFFERS;
 
 static int ivtv_yuv_mode = 0;
-static int ivtv_yuv_threshold=480;
+static int ivtv_yuv_threshold=-1;
 static int ivtv_pci_latency = 1;
 
 int ivtv_debug = 0;
diff --git a/drivers/media/video/ivtv/ivtv-driver.h b/drivers/media/video/ivtv/ivtv-driver.h
index ce28923a5c9cea3dd3a9de4b73f41232c3fd3db3..9a412d6c6d06c6ec308bb1c3f7876baae6725f6c 100644
--- a/drivers/media/video/ivtv/ivtv-driver.h
+++ b/drivers/media/video/ivtv/ivtv-driver.h
@@ -606,7 +606,6 @@ struct yuv_playback_info
 
 	int lace_mode;
 	int lace_threshold;
-	int lace_threshold_last;
 	int lace_sync_field;
 
 	atomic_t next_dma_frame;
diff --git a/drivers/media/video/ivtv/ivtv-yuv.c b/drivers/media/video/ivtv/ivtv-yuv.c
index 286a0d7e7208e45417081b41f0e0fbea6b021a02..bcea09542e5ae903493c71e2a7584dc9680525cf 100644
--- a/drivers/media/video/ivtv/ivtv-yuv.c
+++ b/drivers/media/video/ivtv/ivtv-yuv.c
@@ -613,16 +613,19 @@ static void ivtv_yuv_handle_vertical(struct ivtv *itv, struct yuv_frame_info *wi
 	}
 
 	itv->yuv_info.frame_interlaced_last = itv->yuv_info.frame_interlaced;
-	itv->yuv_info.lace_threshold_last = itv->yuv_info.lace_threshold;
 }
 
 /* Modify the supplied coordinate information to fit the visible osd area */
 static u32 ivtv_yuv_window_setup (struct ivtv *itv, struct yuv_frame_info *window)
 {
-	int osd_crop;
+	int osd_crop, lace_threshold;
 	u32 osd_scale;
 	u32 yuv_update = 0;
 
+	lace_threshold = itv->yuv_info.lace_threshold;
+	if (lace_threshold < 0)
+		lace_threshold = itv->yuv_info.decode_height - 1;
+
 	/* Work out the lace settings */
 	switch (itv->yuv_info.lace_mode) {
 		case IVTV_YUV_MODE_PROGRESSIVE: /* Progressive mode */
@@ -639,7 +642,7 @@ static u32 ivtv_yuv_window_setup (struct ivtv *itv, struct yuv_frame_info *windo
 			break;
 
 		case IVTV_YUV_MODE_AUTO:
-			if (window->tru_h <= itv->yuv_info.lace_threshold || window->tru_h > 576 || window->tru_w > 720){
+			if (window->tru_h <= lace_threshold || window->tru_h > 576 || window->tru_w > 720){
 				itv->yuv_info.frame_interlaced = 0;
 				if ((window->tru_h < 512) ||
 				  (window->tru_h > 576 && window->tru_h < 1021) ||