]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
v4l patches added to 2.6.18-stable queue
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 20 Feb 2007 23:01:30 +0000 (15:01 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 20 Feb 2007 23:01:30 +0000 (15:01 -0800)
queue-2.6.18/V4L-Fix-quickcam-communicator-driver-for-big-endian-architectures.patch [new file with mode: 0644]
queue-2.6.18/V4L-buf_qbuf-fix-videobuf_queue-stream-corruption-and-lockup.patch [new file with mode: 0644]
queue-2.6.18/V4L-cx88-Fix-lockup-on-suspend.patch [new file with mode: 0644]
queue-2.6.18/V4L-fix-ks0127-status-flags.patch [new file with mode: 0644]
queue-2.6.18/V4L-tveeprom-autodetect-LG-TAPC-G701D-as-tuner-type-37.patch [new file with mode: 0644]
queue-2.6.18/dvb-core-fix-bug-in-CRC-32-checking-on-64-bit-systems.patch [new file with mode: 0644]
queue-2.6.18/series
queue-2.6.18/v4l-cx2341x-audio_properties-is-an-u16-not-u8.patch [new file with mode: 0644]
queue-2.6.18/v4l-cx88-Fix-leadtek_eeprom-tagging.patch [new file with mode: 0644]

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 (file)
index 0000000..91019d9
--- /dev/null
@@ -0,0 +1,51 @@
+From 88b8fa8ed752a7cde798ab6237f20d6ff5729d67 Mon Sep 17 00:00:00 2001
+From: Grant Likely <grant.likely@secretlab.ca>
+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 <grant.likely@secretlab.ca>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+--- 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 (file)
index 0000000..4b4c0e1
--- /dev/null
@@ -0,0 +1,28 @@
+From 0d14635e4e8f7e26602941f454f60f70886ce410 Mon Sep 17 00:00:00 2001
+From: Oleg Nesterov <oleg@tv-sign.ru>
+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 <oleg@tv-sign.ru>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+--- 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 (file)
index 0000000..bbffcad
--- /dev/null
@@ -0,0 +1,38 @@
+From dc799259985b405041552ea8035bff95e0104f54 Mon Sep 17 00:00:00 2001
+From: Robert Hancock <hancockr@shaw.ca>
+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 <hancockr@shaw.ca>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+--- a/drivers/media/video/cx88/cx88-tvaudio.c
++++ b/drivers/media/video/cx88/cx88-tvaudio.c
+@@ -38,6 +38,7 @@
+ #include <linux/module.h>
+ #include <linux/moduleparam.h>
+ #include <linux/errno.h>
++#include <linux/freezer.h>
+ #include <linux/kernel.h>
+ #include <linux/slab.h>
+ #include <linux/mm.h>
+@@ -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 (file)
index 0000000..4a4de7c
--- /dev/null
@@ -0,0 +1,38 @@
+From 821200efc304ba03afb5bbdc8cfc4d5d49a3ffe5 Mon Sep 17 00:00:00 2001
+From: Martin Samuelsson <sam@home.se>
+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 <sam@home.se>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+--- 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 (file)
index 0000000..df26983
--- /dev/null
@@ -0,0 +1,30 @@
+From 236d48c7261f082dd64313bc517a8ed212d58de6 Mon Sep 17 00:00:00 2001
+From: Michael Krufky <mkrufky@linuxtv.org>
+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 <mkrufky@linuxtv.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+--- 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 (file)
index 0000000..2aa69e5
--- /dev/null
@@ -0,0 +1,40 @@
+From d06d6dd843ee98510118f6bd8dc45bc51960b3a1 Mon Sep 17 00:00:00 2001
+From: Ang Way Chuang <wcang@nrg.cs.usm.my>
+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 <wcang@nrg.cs.usm.my>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+--- 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
+
index 1151c59a01082aa31cfc75fda51ce4c1fff4583d..26da5d26d05a25fddd42682a06c18a285b437932 100644 (file)
@@ -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 (file)
index 0000000..74ec6f7
--- /dev/null
@@ -0,0 +1,28 @@
+From b3eeb36d30ac29383e62a9e48296e724d60d6ea5 Mon Sep 17 00:00:00 2001
+From: Hans Verkuil <hverkuil@xs4all.nl>
+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 <hverkuil@xs4all.nl>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+--- 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 (file)
index 0000000..7d29417
--- /dev/null
@@ -0,0 +1,31 @@
+From 14433a44753abbf327e2a218f135161a1e452dc9 Mon Sep 17 00:00:00 2001
+From: Jean Delvare <khali@linux-fr.org>
+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 <khali@linux-fr.org>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+--- 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
+