From: Greg Kroah-Hartman Date: Tue, 20 Feb 2007 23:01:30 +0000 (-0800) Subject: v4l patches added to 2.6.18-stable queue X-Git-Tag: v2.6.18.8~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f02211807c4dd15afeda97bf196f6e17ec0f765d;p=thirdparty%2Fkernel%2Fstable-queue.git v4l patches added to 2.6.18-stable queue --- diff --git a/queue-2.6.18/V4L-Fix-quickcam-communicator-driver-for-big-endian-architectures.patch b/queue-2.6.18/V4L-Fix-quickcam-communicator-driver-for-big-endian-architectures.patch new file mode 100644 index 00000000000..91019d92d8a --- /dev/null +++ b/queue-2.6.18/V4L-Fix-quickcam-communicator-driver-for-big-endian-architectures.patch @@ -0,0 +1,51 @@ +From 88b8fa8ed752a7cde798ab6237f20d6ff5729d67 Mon Sep 17 00:00:00 2001 +From: Grant Likely +Date: Sun, 7 Jan 2007 10:33:30 -0300 +Subject: [PATCH] V4L: Fix quickcam communicator driver for big endian architectures + +Host endianess does not affect the order that pixel rgb data comes +in from the quickcam (the values are bytes, not words or longs). The +driver is erroniously swapping the order of rgb values for big endian +machines. This patch is needed get the Quickcam communicator working +on big endian machines (tested on powerpc) + +(cherry picked from commit c6d704c8c4453f05717ba88792f70f8babf95268) + +Signed-off-by: Grant Likely +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Michael Krufky +Signed-off-by: Greg Kroah-Hartman + +--- a/drivers/media/video/usbvideo/quickcam_messenger.h ++++ b/drivers/media/video/usbvideo/quickcam_messenger.h +@@ -35,27 +35,13 @@ struct rgb { + }; + + struct bayL0 { +-#ifdef __BIG_ENDIAN +- u8 r; +- u8 g; +-#elif __LITTLE_ENDIAN + u8 g; + u8 r; +-#else +-#error not byte order defined +-#endif + }; + + struct bayL1 { +-#ifdef __BIG_ENDIAN +- u8 g; +- u8 b; +-#elif __LITTLE_ENDIAN + u8 b; + u8 g; +-#else +-#error not byte order defined +-#endif + }; + + struct cam_size { +-- +1.4.4.2 + diff --git a/queue-2.6.18/V4L-buf_qbuf-fix-videobuf_queue-stream-corruption-and-lockup.patch b/queue-2.6.18/V4L-buf_qbuf-fix-videobuf_queue-stream-corruption-and-lockup.patch new file mode 100644 index 00000000000..4b4c0e11bb1 --- /dev/null +++ b/queue-2.6.18/V4L-buf_qbuf-fix-videobuf_queue-stream-corruption-and-lockup.patch @@ -0,0 +1,28 @@ +From 0d14635e4e8f7e26602941f454f60f70886ce410 Mon Sep 17 00:00:00 2001 +From: Oleg Nesterov +Date: Tue, 23 Jan 2007 20:04:13 -0300 +Subject: [PATCH] V4L: buf_qbuf: fix videobuf_queue->stream corruption and lockup + +We are doing ->buf_prepare(buf) before adding buf to q->stream list. This +means that videobuf_qbuf() should not try to re-add a STATE_PREPARED buffer. + +(cherry picked from commit 419dd8378dfa32985672ab7927b4bc827f33b332) + +Signed-off-by: Oleg Nesterov +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Michael Krufky +Signed-off-by: Greg Kroah-Hartman + +--- a/drivers/media/video/video-buf.c ++++ b/drivers/media/video/video-buf.c +@@ -695,6 +695,7 @@ videobuf_qbuf(struct videobuf_queue *q, + goto done; + } + if (buf->state == STATE_QUEUED || ++ buf->state == STATE_PREPARED || + buf->state == STATE_ACTIVE) { + dprintk(1,"qbuf: buffer is already queued or active.\n"); + goto done; +-- +1.4.4.2 + diff --git a/queue-2.6.18/V4L-cx88-Fix-lockup-on-suspend.patch b/queue-2.6.18/V4L-cx88-Fix-lockup-on-suspend.patch new file mode 100644 index 00000000000..bbffcadeeef --- /dev/null +++ b/queue-2.6.18/V4L-cx88-Fix-lockup-on-suspend.patch @@ -0,0 +1,38 @@ +From dc799259985b405041552ea8035bff95e0104f54 Mon Sep 17 00:00:00 2001 +From: Robert Hancock +Date: Sun, 7 Jan 2007 08:12:19 -0300 +Subject: [PATCH] V4L: cx88: Fix lockup on suspend + +Suspending with the cx88xx module loaded causes the system to lock up +because the cx88_audio_thread kthread was missing a try_to_freeze() +call, which caused it to go into a tight loop and result in softlockup +when suspending. Fix that. + +(cherry picked from commit a96afb3e9428f2e7463344f12dbc85faf08e2e09) + +Signed-off-by: Robert Hancock +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Michael Krufky +Signed-off-by: Greg Kroah-Hartman + +--- a/drivers/media/video/cx88/cx88-tvaudio.c ++++ b/drivers/media/video/cx88/cx88-tvaudio.c +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -979,6 +980,7 @@ int cx88_audio_thread(void *data) + msleep_interruptible(1000); + if (kthread_should_stop()) + break; ++ try_to_freeze(); + + /* just monitor the audio status for now ... */ + memset(&t, 0, sizeof(t)); +-- +1.4.4.2 + diff --git a/queue-2.6.18/V4L-fix-ks0127-status-flags.patch b/queue-2.6.18/V4L-fix-ks0127-status-flags.patch new file mode 100644 index 00000000000..4a4de7c257d --- /dev/null +++ b/queue-2.6.18/V4L-fix-ks0127-status-flags.patch @@ -0,0 +1,38 @@ +From 821200efc304ba03afb5bbdc8cfc4d5d49a3ffe5 Mon Sep 17 00:00:00 2001 +From: Martin Samuelsson +Date: Sun, 7 Jan 2007 20:50:27 -0300 +Subject: [PATCH] V4L: fix ks0127 status flags + +Or status flags together in DECODER_GET_STATUS instead of and-zapping them. + +(cherry picked from commit 55d5440d4587454628a850ce26703639885af678) + +Signed-off-by: Martin Samuelsson +Signed-off-by: Andrew Morton +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Michael Krufky +Signed-off-by: Greg Kroah-Hartman + +--- a/drivers/media/video/ks0127.c ++++ b/drivers/media/video/ks0127.c +@@ -712,13 +712,13 @@ static int ks0127_command(struct i2c_client *client, + *iarg = 0; + status = ks0127_read(ks, KS_STAT); + if (!(status & 0x20)) /* NOVID not set */ +- *iarg = (*iarg & DECODER_STATUS_GOOD); ++ *iarg = (*iarg | DECODER_STATUS_GOOD); + if ((status & 0x01)) /* CLOCK set */ +- *iarg = (*iarg & DECODER_STATUS_COLOR); ++ *iarg = (*iarg | DECODER_STATUS_COLOR); + if ((status & 0x08)) /* PALDET set */ +- *iarg = (*iarg & DECODER_STATUS_PAL); ++ *iarg = (*iarg | DECODER_STATUS_PAL); + else +- *iarg = (*iarg & DECODER_STATUS_NTSC); ++ *iarg = (*iarg | DECODER_STATUS_NTSC); + break; + + //Catch any unknown command +-- +1.4.4.2 + diff --git a/queue-2.6.18/V4L-tveeprom-autodetect-LG-TAPC-G701D-as-tuner-type-37.patch b/queue-2.6.18/V4L-tveeprom-autodetect-LG-TAPC-G701D-as-tuner-type-37.patch new file mode 100644 index 00000000000..df2698399c8 --- /dev/null +++ b/queue-2.6.18/V4L-tveeprom-autodetect-LG-TAPC-G701D-as-tuner-type-37.patch @@ -0,0 +1,30 @@ +From 236d48c7261f082dd64313bc517a8ed212d58de6 Mon Sep 17 00:00:00 2001 +From: Michael Krufky +Date: Fri, 12 Jan 2007 17:38:05 -0300 +Subject: [PATCH] V4L: tveeprom: autodetect LG TAPC G701D as tuner type 37 + +Autodetect LG TAPC G701D as tuner type 37, fixing +mis-detected tuners in some Hauppauge tv tuner cards. + +Thanks to Adonis Papas, for pointing this out. + +(cherry picked from commit 1323fbda1343f50f198bc8bd6d1d59c8b7fc45bf) + +Signed-off-by: Michael Krufky +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- a/drivers/media/video/tveeprom.c ++++ b/drivers/media/video/tveeprom.c +@@ -184,7 +184,7 @@ hauppauge_tuner[] = + { TUNER_ABSENT, "Thompson DTT757"}, + /* 80-89 */ + { TUNER_ABSENT, "Philips FQ1216LME MK3"}, +- { TUNER_ABSENT, "LG TAPC G701D"}, ++ { TUNER_LG_PAL_NEW_TAPC, "LG TAPC G701D"}, + { TUNER_LG_NTSC_NEW_TAPC, "LG TAPC H791F"}, + { TUNER_LG_PAL_NEW_TAPC, "TCL 2002MB 3"}, + { TUNER_LG_PAL_NEW_TAPC, "TCL 2002MI 3"}, +-- +1.4.4.2 + diff --git a/queue-2.6.18/dvb-core-fix-bug-in-CRC-32-checking-on-64-bit-systems.patch b/queue-2.6.18/dvb-core-fix-bug-in-CRC-32-checking-on-64-bit-systems.patch new file mode 100644 index 00000000000..2aa69e536f2 --- /dev/null +++ b/queue-2.6.18/dvb-core-fix-bug-in-CRC-32-checking-on-64-bit-systems.patch @@ -0,0 +1,40 @@ +From d06d6dd843ee98510118f6bd8dc45bc51960b3a1 Mon Sep 17 00:00:00 2001 +From: Ang Way Chuang +Date: Wed, 7 Feb 2007 15:36:11 -0500 +Subject: [PATCH] dvb-core: fix bug in CRC-32 checking on 64-bit systems + +CRC-32 checking during ULE decapsulation always failed on x86_64 systems due +to the size of a variable used to store CRC. This bug was discovered on +Fedora Core 6 with kernel-2.6.18-1.2849. The i386 counterpart has no such +problem. This patch has been tested on 64-bit system as well as 32-bit system. + +(cherry picked from commit dedcefb085fe98a1feaf63590fe2fc7e0ecb1987) + +Signed-off-by: Ang Way Chuang +Signed-off-by: Michael Krufky +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- a/drivers/media/dvb/dvb-core/dvb_net.c ++++ b/drivers/media/dvb/dvb-core/dvb_net.c +@@ -604,7 +604,7 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len ) + { &utype, sizeof utype }, + { priv->ule_skb->data, priv->ule_skb->len - 4 } + }; +- unsigned long ule_crc = ~0L, expected_crc; ++ u32 ule_crc = ~0L, expected_crc; + if (priv->ule_dbit) { + /* Set D-bit for CRC32 verification, + * if it was set originally. */ +@@ -617,7 +617,7 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len ) + *((u8 *)priv->ule_skb->tail - 2) << 8 | + *((u8 *)priv->ule_skb->tail - 1); + if (ule_crc != expected_crc) { +- printk(KERN_WARNING "%lu: CRC32 check FAILED: %#lx / %#lx, SNDU len %d type %#x, ts_remain %d, next 2: %x.\n", ++ printk(KERN_WARNING "%lu: CRC32 check FAILED: %08x / %08x, SNDU len %d type %#x, ts_remain %d, next 2: %x.\n", + priv->ts_count, ule_crc, expected_crc, priv->ule_sndu_len, priv->ule_sndu_type, ts_remain, ts_remain > 2 ? *(unsigned short *)from_where : 0); + + #ifdef ULE_DEBUG +-- +1.4.4.2 + diff --git a/queue-2.6.18/series b/queue-2.6.18/series index 1151c59a010..26da5d26d05 100644 --- a/queue-2.6.18/series +++ b/queue-2.6.18/series @@ -5,3 +5,11 @@ i2c-fix-broken-ds1337-initialization.patch grow_buffers-infinite-loop-fix.patch hfs_fill_super-returns-success-even-if-no-root-inode.patch ib-mad-fix-race-between-cancel-and-receive-completion.patch +dvb-core-fix-bug-in-CRC-32-checking-on-64-bit-systems.patch +v4l-cx2341x-audio_properties-is-an-u16-not-u8.patch +v4l-cx88-Fix-leadtek_eeprom-tagging.patch +V4L-cx88-Fix-lockup-on-suspend.patch +V4L-Fix-quickcam-communicator-driver-for-big-endian-architectures.patch +V4L-fix-ks0127-status-flags.patch +V4L-tveeprom-autodetect-LG-TAPC-G701D-as-tuner-type-37.patch +V4L-buf_qbuf-fix-videobuf_queue-stream-corruption-and-lockup.patch diff --git a/queue-2.6.18/v4l-cx2341x-audio_properties-is-an-u16-not-u8.patch b/queue-2.6.18/v4l-cx2341x-audio_properties-is-an-u16-not-u8.patch new file mode 100644 index 00000000000..74ec6f7c0bb --- /dev/null +++ b/queue-2.6.18/v4l-cx2341x-audio_properties-is-an-u16-not-u8.patch @@ -0,0 +1,28 @@ +From b3eeb36d30ac29383e62a9e48296e724d60d6ea5 Mon Sep 17 00:00:00 2001 +From: Hans Verkuil +Date: Wed, 7 Feb 2007 15:38:23 -0500 +Subject: [PATCH] v4l: cx2341x audio_properties is an u16, not u8 + +This bug broke the MPEG audio mode controls. + +(cherry picked from commit cb2c7b4927c8f376b7ba9557978d8c59ed472664) + +Signed-off-by: Hans Verkuil +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Michael Krufky +Signed-off-by: Greg Kroah-Hartman + +--- a/include/media/cx2341x.h ++++ b/include/media/cx2341x.h +@@ -49,7 +49,7 @@ struct cx2341x_mpeg_params { + enum v4l2_mpeg_audio_mode_extension audio_mode_extension; + enum v4l2_mpeg_audio_emphasis audio_emphasis; + enum v4l2_mpeg_audio_crc audio_crc; +- u8 audio_properties; ++ u16 audio_properties; + + /* video */ + enum v4l2_mpeg_video_encoding video_encoding; +-- +1.4.4.2 + diff --git a/queue-2.6.18/v4l-cx88-Fix-leadtek_eeprom-tagging.patch b/queue-2.6.18/v4l-cx88-Fix-leadtek_eeprom-tagging.patch new file mode 100644 index 00000000000..7d29417cf8b --- /dev/null +++ b/queue-2.6.18/v4l-cx88-Fix-leadtek_eeprom-tagging.patch @@ -0,0 +1,31 @@ +From 14433a44753abbf327e2a218f135161a1e452dc9 Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Wed, 7 Feb 2007 15:39:34 -0500 +Subject: [PATCH] v4l: cx88: Fix leadtek_eeprom tagging + +reference to .init.text: from .text between 'cx88_card_setup' +(at offset 0x68c) and 'cx88_risc_field' +Caused by leadtek_eeprom() being declared __devinit and called from +a non-devinit context. + +(cherry picked from commit 69f7e75a9d45e5eaca16917a8d0dedf76149f13f) + +Signed-off-by: Jean Delvare +Signed-off-by: Michael Krufky +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- a/drivers/media/video/cx88/cx88-cards.c ++++ b/drivers/media/video/cx88/cx88-cards.c +@@ -1465,7 +1465,7 @@ const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); + /* ----------------------------------------------------------------------- */ + /* some leadtek specific stuff */ + +-static void __devinit leadtek_eeprom(struct cx88_core *core, u8 *eeprom_data) ++static void leadtek_eeprom(struct cx88_core *core, u8 *eeprom_data) + { + /* This is just for the "Winfast 2000XP Expert" board ATM; I don't have data on + * any others. +-- +1.4.4.2 +