From a72ff764c5dd39dd7e709dc304298c02646b5ab7 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 12 Mar 2009 22:40:47 -0700 Subject: [PATCH] .28 patches --- ...rform-s5h1409-soft-reset-after-tunin.patch | 54 ++++++++ ...-fix-TDA8290-TDA18271-initialization.patch | 33 +++++ ...7127-fix-broken-S-Video-with-saa7129.patch | 118 ++++++++++++++++++ ...4L-ivtv-fix-decoder-crash-regression.patch | 67 ++++++++++ queue-2.6.28/series | 4 + 5 files changed, 276 insertions(+) create mode 100644 queue-2.6.28/0001-DVB-s5h1409-Perform-s5h1409-soft-reset-after-tunin.patch create mode 100644 queue-2.6.28/0002-V4L-tda8290-fix-TDA8290-TDA18271-initialization.patch create mode 100644 queue-2.6.28/0003-V4L-saa7127-fix-broken-S-Video-with-saa7129.patch create mode 100644 queue-2.6.28/0004-V4L-ivtv-fix-decoder-crash-regression.patch diff --git a/queue-2.6.28/0001-DVB-s5h1409-Perform-s5h1409-soft-reset-after-tunin.patch b/queue-2.6.28/0001-DVB-s5h1409-Perform-s5h1409-soft-reset-after-tunin.patch new file mode 100644 index 00000000000..48d6b1b4e02 --- /dev/null +++ b/queue-2.6.28/0001-DVB-s5h1409-Perform-s5h1409-soft-reset-after-tunin.patch @@ -0,0 +1,54 @@ +From 776f979e0e2a0847214d8af0bd1050e61e0d5564 Mon Sep 17 00:00:00 2001 +From: Devin Heitmueller +Date: Mon, 26 Jan 2009 03:07:59 -0300 +Subject: DVB: s5h1409: Perform s5h1409 soft reset after tuning + +From: Devin Heitmueller + +(cherry picked from commit 67e70baf043cfdcdaf5972bc94be82632071536b) + +Just like with the s5h1411, the s5h1409 needs a soft-reset in order for it +to know that the tuner has been told to change frequencies. This change +changes the behavior from "random tuning times between 500ms to complete +tuning lock failures" to "tuning lock consistently within 700ms". + +Thanks to Robert Krakora for doing +initial testing of the patch on the KWorld 330U. + +Thanks to Andy Walls for doing testing of the patch on +the HVR-1600. + +Thanks to Michael Krufky for doing additional testing. + +Signed-off-by: Devin Heitmueller +Signed-off-by: Michael Krufky +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/dvb/frontends/s5h1409.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +--- a/drivers/media/dvb/frontends/s5h1409.c ++++ b/drivers/media/dvb/frontends/s5h1409.c +@@ -545,9 +545,6 @@ static int s5h1409_set_frontend(struct d + + s5h1409_enable_modulation(fe, p->u.vsb.modulation); + +- /* Allow the demod to settle */ +- msleep(100); +- + if (fe->ops.tuner_ops.set_params) { + if (fe->ops.i2c_gate_ctrl) + fe->ops.i2c_gate_ctrl(fe, 1); +@@ -562,6 +559,10 @@ static int s5h1409_set_frontend(struct d + s5h1409_set_qam_interleave_mode(fe); + } + ++ /* Issue a reset to the demod so it knows to resync against the ++ newly tuned frequency */ ++ s5h1409_softreset(fe); ++ + return 0; + } + diff --git a/queue-2.6.28/0002-V4L-tda8290-fix-TDA8290-TDA18271-initialization.patch b/queue-2.6.28/0002-V4L-tda8290-fix-TDA8290-TDA18271-initialization.patch new file mode 100644 index 00000000000..2b392f2c842 --- /dev/null +++ b/queue-2.6.28/0002-V4L-tda8290-fix-TDA8290-TDA18271-initialization.patch @@ -0,0 +1,33 @@ +From ff4f3bdf78afa7005574364a71fc1cf001ee6974 Mon Sep 17 00:00:00 2001 +From: Michael Krufky +Date: Mon, 5 Jan 2009 18:25:04 -0300 +Subject: V4L: tda8290: fix TDA8290 + TDA18271 initialization + +From: Michael Krufky + +(cherry picked from commit 439b72b69e4992e9ec34b74304f0fa95623934eb) + +Don't call tda8290_init_tuner unless we have either a TDA8275 or TDA8275A +present. Calling this function will cause a TDA18271 to get sick, so we +should only call it when needed. + +Signed-off-by: Michael Krufky +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/common/tuners/tda8290.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/media/common/tuners/tda8290.c ++++ b/drivers/media/common/tuners/tda8290.c +@@ -724,7 +724,8 @@ struct dvb_frontend *tda829x_attach(stru + fe->ops.analog_ops.info.name = name; + + if (priv->ver & TDA8290) { +- tda8290_init_tuner(fe); ++ if (priv->ver & (TDA8275 | TDA8275A)) ++ tda8290_init_tuner(fe); + tda8290_init_if(fe); + } else if (priv->ver & TDA8295) + tda8295_init_if(fe); diff --git a/queue-2.6.28/0003-V4L-saa7127-fix-broken-S-Video-with-saa7129.patch b/queue-2.6.28/0003-V4L-saa7127-fix-broken-S-Video-with-saa7129.patch new file mode 100644 index 00000000000..11c3b0d5fe6 --- /dev/null +++ b/queue-2.6.28/0003-V4L-saa7127-fix-broken-S-Video-with-saa7129.patch @@ -0,0 +1,118 @@ +From 62cf228a1d4e184128699194d8d43c023646235b Mon Sep 17 00:00:00 2001 +From: Martin Dauskardt +Date: Thu, 12 Mar 2009 17:43:44 -0400 +Subject: V4L: saa7127: fix broken S-Video with saa7129 + +From: Martin Dauskardt + +(backported from commit 0f3559ef17362a7dd5017521a4dd4cad31263395) + +Register 0x2d has to be set differently in the saa7129 compared to the +saa7127. This was not done correctly, so S-Video was broken in certain +circumstances. + +This fixes a regression introduced in 2.6.28. + +Signed-off-by: Martin Dauskardt +Signed-off-by: Hans Verkuil +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Michael Krufky +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/video/saa7127.c | 52 ++++++++++++++++++++++++------------------ + 1 file changed, 30 insertions(+), 22 deletions(-) + +--- a/drivers/media/video/saa7127.c ++++ b/drivers/media/video/saa7127.c +@@ -149,7 +149,7 @@ static const struct i2c_reg_value saa712 + { SAA7127_REG_COPYGEN_0, 0x77 }, + { SAA7127_REG_COPYGEN_1, 0x41 }, + { SAA7127_REG_COPYGEN_2, 0x00 }, /* Macrovision enable/disable */ +- { SAA7127_REG_OUTPUT_PORT_CONTROL, 0x9e }, ++ { SAA7127_REG_OUTPUT_PORT_CONTROL, 0xbf }, + { SAA7127_REG_GAIN_LUMINANCE_RGB, 0x00 }, + { SAA7127_REG_GAIN_COLORDIFF_RGB, 0x00 }, + { SAA7127_REG_INPUT_PORT_CONTROL_1, 0x80 }, /* for color bars */ +@@ -479,12 +479,18 @@ static int saa7127_set_output_type(struc + break; + + case SAA7127_OUTPUT_TYPE_COMPOSITE: +- state->reg_2d = 0x08; /* 00001000 CVBS only, RGB DAC's off (high impedance mode) */ ++ if (state->ident == V4L2_IDENT_SAA7129) ++ state->reg_2d = 0x20; /* CVBS only */ ++ else ++ state->reg_2d = 0x08; /* 00001000 CVBS only, RGB DAC's off (high impedance mode) */ + state->reg_3a = 0x13; /* by default switch YUV to RGB-matrix on */ + break; + + case SAA7127_OUTPUT_TYPE_SVIDEO: +- state->reg_2d = 0xff; /* 11111111 croma -> R, luma -> CVBS + G + B */ ++ if (state->ident == V4L2_IDENT_SAA7129) ++ state->reg_2d = 0x18; /* Y + C */ ++ else ++ state->reg_2d = 0xff; /*11111111 croma -> R, luma -> CVBS + G + B */ + state->reg_3a = 0x13; /* by default switch YUV to RGB-matrix on */ + break; + +@@ -499,7 +505,10 @@ static int saa7127_set_output_type(struc + break; + + case SAA7127_OUTPUT_TYPE_BOTH: +- state->reg_2d = 0xbf; ++ if (state->ident == V4L2_IDENT_SAA7129) ++ state->reg_2d = 0x38; ++ else ++ state->reg_2d = 0xbf; + state->reg_3a = 0x13; /* by default switch YUV to RGB-matrix on */ + break; + +@@ -691,24 +700,6 @@ static int saa7127_probe(struct i2c_clie + + i2c_set_clientdata(client, state); + +- /* Configure Encoder */ +- +- v4l_dbg(1, debug, client, "Configuring encoder\n"); +- saa7127_write_inittab(client, saa7127_init_config_common); +- saa7127_set_std(client, V4L2_STD_NTSC); +- saa7127_set_output_type(client, SAA7127_OUTPUT_TYPE_BOTH); +- saa7127_set_vps(client, &vbi); +- saa7127_set_wss(client, &vbi); +- saa7127_set_cc(client, &vbi); +- saa7127_set_xds(client, &vbi); +- if (test_image == 1) +- /* The Encoder has an internal Colorbar generator */ +- /* This can be used for debugging */ +- saa7127_set_input_type(client, SAA7127_INPUT_TYPE_TEST_IMAGE); +- else +- saa7127_set_input_type(client, SAA7127_INPUT_TYPE_NORMAL); +- saa7127_set_video_enable(client, 1); +- + if (id->driver_data) { /* Chip type is already known */ + state->ident = id->driver_data; + } else { /* Needs detection */ +@@ -730,6 +721,23 @@ static int saa7127_probe(struct i2c_clie + + v4l_info(client, "%s found @ 0x%x (%s)\n", client->name, + client->addr << 1, client->adapter->name); ++ ++ v4l_dbg(1, debug, client, "Configuring encoder\n"); ++ saa7127_write_inittab(client, saa7127_init_config_common); ++ saa7127_set_std(client, V4L2_STD_NTSC); ++ saa7127_set_output_type(client, SAA7127_OUTPUT_TYPE_BOTH); ++ saa7127_set_vps(client, &vbi); ++ saa7127_set_wss(client, &vbi); ++ saa7127_set_cc(client, &vbi); ++ saa7127_set_xds(client, &vbi); ++ if (test_image == 1) ++ /* The Encoder has an internal Colorbar generator */ ++ /* This can be used for debugging */ ++ saa7127_set_input_type(client, SAA7127_INPUT_TYPE_TEST_IMAGE); ++ else ++ saa7127_set_input_type(client, SAA7127_INPUT_TYPE_NORMAL); ++ saa7127_set_video_enable(client, 1); ++ + if (state->ident == V4L2_IDENT_SAA7129) + saa7127_write_inittab(client, saa7129_init_config_extra); + return 0; diff --git a/queue-2.6.28/0004-V4L-ivtv-fix-decoder-crash-regression.patch b/queue-2.6.28/0004-V4L-ivtv-fix-decoder-crash-regression.patch new file mode 100644 index 00000000000..96c7d16b8f0 --- /dev/null +++ b/queue-2.6.28/0004-V4L-ivtv-fix-decoder-crash-regression.patch @@ -0,0 +1,67 @@ +From ecc30addbaa83029a9fb6de6c2756fef1cc6a7f8 Mon Sep 17 00:00:00 2001 +From: Hans Verkuil +Date: Sat, 14 Feb 2009 19:58:33 -0300 +Subject: V4L: ivtv: fix decoder crash regression + +From: Hans Verkuil + +(cherry picked from commit ac9575f75c52bcb455120f8c43376b556acba048) + +The video_ioctl2 conversion of ivtv in kernel 2.6.27 introduced a bug +causing decoder commands to crash. The decoder commands should have been +handled from the video_ioctl2 default handler, ensuring correct mapping +of the argument between user and kernel space. Unfortunately they ended +up before the video_ioctl2 call, causing random crashes. + +Thanks to hannes@linus.priv.at for testing and helping me track down the +cause! + +Signed-off-by: Hans Verkuil +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Michael Krufky +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/video/ivtv/ivtv-ioctl.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +--- a/drivers/media/video/ivtv/ivtv-ioctl.c ++++ b/drivers/media/video/ivtv/ivtv-ioctl.c +@@ -1750,6 +1750,18 @@ static int ivtv_default(struct file *fil + break; + } + ++ case IVTV_IOC_DMA_FRAME: ++ case VIDEO_GET_PTS: ++ case VIDEO_GET_FRAME_COUNT: ++ case VIDEO_GET_EVENT: ++ case VIDEO_PLAY: ++ case VIDEO_STOP: ++ case VIDEO_FREEZE: ++ case VIDEO_CONTINUE: ++ case VIDEO_COMMAND: ++ case VIDEO_TRY_COMMAND: ++ return ivtv_decoder_ioctls(file, cmd, (void *)arg); ++ + default: + return -EINVAL; + } +@@ -1792,18 +1804,6 @@ static long ivtv_serialized_ioctl(struct + ivtv_vapi(itv, CX2341X_DEC_SET_AUDIO_MODE, 2, itv->audio_bilingual_mode, itv->audio_stereo_mode); + return 0; + +- case IVTV_IOC_DMA_FRAME: +- case VIDEO_GET_PTS: +- case VIDEO_GET_FRAME_COUNT: +- case VIDEO_GET_EVENT: +- case VIDEO_PLAY: +- case VIDEO_STOP: +- case VIDEO_FREEZE: +- case VIDEO_CONTINUE: +- case VIDEO_COMMAND: +- case VIDEO_TRY_COMMAND: +- return ivtv_decoder_ioctls(filp, cmd, (void *)arg); +- + default: + break; + } diff --git a/queue-2.6.28/series b/queue-2.6.28/series index db6b94a4375..de774bac5d5 100644 --- a/queue-2.6.28/series +++ b/queue-2.6.28/series @@ -81,3 +81,7 @@ proc-fix-pg_locked-reporting-in-proc-kpageflags.patch powerpc-fix-load-store-float-double-alignment-handler.patch sdhci-add-no_busy_irq-quirk-for-marvell-cafe-host-chip.patch pipe_rdwr_fasync-fix-the-error-handling-to-prevent-the-leak-crash.patch +0001-DVB-s5h1409-Perform-s5h1409-soft-reset-after-tunin.patch +0002-V4L-tda8290-fix-TDA8290-TDA18271-initialization.patch +0003-V4L-saa7127-fix-broken-S-Video-with-saa7129.patch +0004-V4L-ivtv-fix-decoder-crash-regression.patch -- 2.47.3