rpms/kernel/F-11 git-bluetooth3.patch, NONE, 1.1 linux-2.6-v4l-dvb-fixes.patch, 1.14, 1.15 config-generic, 1.278, 1.279 kernel.spec, 1.1582, 1.1583 linux-2.6-v4l-dvb-experimental.patch, 1.9, 1.10

Kyle McMartin kyle at fedoraproject.org
Fri May 1 20:40:06 UTC 2009


Author: kyle

Update of /cvs/pkgs/rpms/kernel/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv9706

Modified Files:
	config-generic kernel.spec 
	linux-2.6-v4l-dvb-experimental.patch 
Added Files:
	git-bluetooth3.patch linux-2.6-v4l-dvb-fixes.patch 
Log Message:
* Fri May 01 2009 Kyle McMartin <kyle at redhat.com> 2.6.29.2-121
- More bluetooth fixes from 2.6.30-rc.
- linux-2.6-v4l-dvb-fixes.patch: restore, accidently nuked.
- linux-2.6-v4l-dvb-experimental.patch: restore to previous version
   to fix rejects against restored -fixes.


git-bluetooth3.patch:

--- NEW FILE git-bluetooth3.patch ---
commit 3fdca1e1370ffe89980927cdef0583bebcd8caaf
Author: Marcel Holtmann <marcel at holtmann.org>
Date:   Tue Apr 28 09:04:55 2009 -0700

    Bluetooth: Fix connection establishment with low security requirement
    
    The Bluetooth 2.1 specification introduced four different security modes
    that can be mapped using Legacy Pairing and Simple Pairing. With the
    usage of Simple Pairing it is required that all connections (except
    the ones for SDP) are encrypted. So even the low security requirement
    mandates an encrypted connection when using Simple Pairing. When using
    Legacy Pairing (for Bluetooth 2.0 devices and older) this is not required
    since it causes interoperability issues.
    
    To support this properly the low security requirement translates into
    different host controller transactions depending if Simple Pairing is
    supported or not. However in case of Simple Pairing the command to
    switch on encryption after a successful authentication is not triggered
    for the low security mode. This patch fixes this and actually makes
    the logic to differentiate between Simple Pairing and Legacy Pairing
    a lot simpler.
    
    Based on a report by Ville Tervo <ville.tervo at nokia.com>
    
    Signed-off-by: Marcel Holtmann <marcel at holtmann.org>

commit 052b30b0a8eec8db5b18ad49effdf2a9ba4c1e1a
Author: Marcel Holtmann <marcel at holtmann.org>
Date:   Sun Apr 26 20:01:22 2009 +0200

    Bluetooth: Add different pairing timeout for Legacy Pairing
    
    The Bluetooth stack uses a reference counting for all established ACL
    links and if no user (L2CAP connection) is present, the link will be
    terminated to save power. The problem part is the dedicated pairing
    when using Legacy Pairing (Bluetooth 2.0 and before). At that point
    no user is present and pairing attempts will be disconnected within
    10 seconds or less. In previous kernel version this was not a problem
    since the disconnect timeout wasn't triggered on incoming connections
    for the first time. However this caused issues with broken host stacks
    that kept the connections around after dedicated pairing. When the
    support for Simple Pairing got added, the link establishment procedure
    needed to be changed and now causes issues when using Legacy Pairing
    
    When using Simple Pairing it is possible to do a proper reference
    counting of ACL link users. With Legacy Pairing this is not possible
    since the specification is unclear in some areas and too many broken
    Bluetooth devices have already been deployed. So instead of trying to
    deal with all the broken devices, a special pairing timeout will be
    introduced that increases the timeout to 60 seconds when pairing is
    triggered.
    
    If a broken devices now puts the stack into an unforeseen state, the
    worst that happens is the disconnect timeout triggers after 120 seconds
    instead of 4 seconds. This allows successful pairings with legacy and
    broken devices now.
    
    Based on a report by Johan Hedberg <johan.hedberg at nokia.com>
    
    Signed-off-by: Marcel Holtmann <marcel at holtmann.org>

commit f3784d834c71689336fa272df420b45345cb6b84
Author: Roger Quadros <ext-roger.quadros at nokia.com>
Date:   Thu Apr 23 14:50:54 2009 +0300

    Bluetooth: Ensure that HCI sysfs add/del is preempt safe
    
    Use a different work_struct variables for add_conn() and del_conn() and
    use single work queue instead of two for adding and deleting connections.
    
    It eliminates the following error on a preemptible kernel:
    
    [  204.358032] Unable to handle kernel NULL pointer dereference at virtual address 0000000c
    [  204.370697] pgd = c0004000
    [  204.373443] [0000000c] *pgd=00000000
    [  204.378601] Internal error: Oops: 17 [#1] PREEMPT
    [  204.383361] Modules linked in: vfat fat rfcomm sco l2cap sd_mod scsi_mod iphb pvr2d drm omaplfb ps
    [  204.438537] CPU: 0    Not tainted  (2.6.28-maemo2 #1)
    [  204.443664] PC is at klist_put+0x2c/0xb4
    [  204.447601] LR is at klist_put+0x18/0xb4
    [  204.451568] pc : [<c0270f08>]    lr : [<c0270ef4>]    psr: a0000113
    [  204.451568] sp : cf1b3f10  ip : cf1b3f10  fp : cf1b3f2c
    [  204.463104] r10: 00000000  r9 : 00000000  r8 : bf08029c
    [  204.468353] r7 : c7869200  r6 : cfbe2690  r5 : c78692c8  r4 : 00000001
    [  204.474945] r3 : 00000001  r2 : cf1b2000  r1 : 00000001  r0 : 00000000
    [  204.481506] Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM Segment kernel
    [  204.488861] Control: 10c5387d  Table: 887fc018  DAC: 00000017
    [  204.494628] Process btdelconn (pid: 515, stack limit = 0xcf1b22e0)
    
    Signed-off-by: Roger Quadros <ext-roger.quadros at nokia.com>
    Signed-off-by: Marcel Holtmann <marcel at holtmann.org>

diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index f69f015..ed3aea1 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -101,6 +101,7 @@ enum {
 /* HCI timeouts */
 #define HCI_CONNECT_TIMEOUT	(40000)	/* 40 seconds */
 #define HCI_DISCONN_TIMEOUT	(2000)	/* 2 seconds */
+#define HCI_PAIRING_TIMEOUT	(60000)	/* 60 seconds */
 #define HCI_IDLE_TIMEOUT	(6000)	/* 6 seconds */
 #define HCI_INIT_TIMEOUT	(10000)	/* 10 seconds */
 
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index 01f9316..be5bd71 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -171,6 +171,7 @@ struct hci_conn {
 	__u8             auth_type;
 	__u8             sec_level;
 	__u8             power_save;
+	__u16            disc_timeout;
 	unsigned long	 pend;
 
 	unsigned int	 sent;
@@ -180,7 +181,8 @@ struct hci_conn {
 	struct timer_list disc_timer;
 	struct timer_list idle_timer;
 
-	struct work_struct work;
+	struct work_struct work_add;
+	struct work_struct work_del;
 
 	struct device	dev;
 
@@ -348,9 +350,9 @@ static inline void hci_conn_put(struct hci_conn *conn)
 		if (conn->type == ACL_LINK) {
 			del_timer(&conn->idle_timer);
 			if (conn->state == BT_CONNECTED) {
-				timeo = msecs_to_jiffies(HCI_DISCONN_TIMEOUT);
+				timeo = msecs_to_jiffies(conn->disc_timeout);
 				if (!conn->out)
-					timeo *= 5;
+					timeo *= 2;
 			} else
 				timeo = msecs_to_jiffies(10);
 		} else
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index 1181db0..375f4b4 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -215,6 +215,7 @@ struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst)
 	conn->state = BT_OPEN;
 
 	conn->power_save = 1;
+	conn->disc_timeout = HCI_DISCONN_TIMEOUT;
 
 	switch (type) {
 	case ACL_LINK:
@@ -424,12 +425,9 @@ int hci_conn_security(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
 	if (sec_level == BT_SECURITY_SDP)
 		return 1;
 
-	if (sec_level == BT_SECURITY_LOW) {
-		if (conn->ssp_mode > 0 && conn->hdev->ssp_mode > 0)
-			return hci_conn_auth(conn, sec_level, auth_type);
-		else
-			return 1;
-	}
+	if (sec_level == BT_SECURITY_LOW &&
+				(!conn->ssp_mode || !conn->hdev->ssp_mode))
+		return 1;
 
 	if (conn->link_mode & HCI_LM_ENCRYPT)
 		return hci_conn_auth(conn, sec_level, auth_type);
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 15f40ea..4e7cb88 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -883,6 +883,7 @@ static inline void hci_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *s
 		if (conn->type == ACL_LINK) {
 			conn->state = BT_CONFIG;
 			hci_conn_hold(conn);
+			conn->disc_timeout = HCI_DISCONN_TIMEOUT;
 		} else
 			conn->state = BT_CONNECTED;
 
@@ -1063,9 +1064,14 @@ static inline void hci_auth_complete_evt(struct hci_dev *hdev, struct sk_buff *s
 				hci_proto_connect_cfm(conn, ev->status);
 				hci_conn_put(conn);
 			}
-		} else
+		} else {
 			hci_auth_cfm(conn, ev->status);
 
+			hci_conn_hold(conn);
+			conn->disc_timeout = HCI_DISCONN_TIMEOUT;
+			hci_conn_put(conn);
+		}
+
 		if (test_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend)) {
 			if (!ev->status) {
 				struct hci_cp_set_conn_encrypt cp;
@@ -1479,7 +1485,21 @@ static inline void hci_mode_change_evt(struct hci_dev *hdev, struct sk_buff *skb
 
 static inline void hci_pin_code_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
 {
+	struct hci_ev_pin_code_req *ev = (void *) skb->data;
+	struct hci_conn *conn;
+
 	BT_DBG("%s", hdev->name);
+
+	hci_dev_lock(hdev);
+
+	conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &ev->bdaddr);
+	if (conn) {
+		hci_conn_hold(conn);
+		conn->disc_timeout = HCI_PAIRING_TIMEOUT;
+		hci_conn_put(conn);
+	}
+
+	hci_dev_unlock(hdev);
 }
 
 static inline void hci_link_key_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
@@ -1489,7 +1509,21 @@ static inline void hci_link_key_request_evt(struct hci_dev *hdev, struct sk_buff
 
 static inline void hci_link_key_notify_evt(struct hci_dev *hdev, struct sk_buff *skb)
 {
+	struct hci_ev_link_key_notify *ev = (void *) skb->data;
+	struct hci_conn *conn;
+
 	BT_DBG("%s", hdev->name);
+
+	hci_dev_lock(hdev);
+
+	conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &ev->bdaddr);
+	if (conn) {
+		hci_conn_hold(conn);
+		conn->disc_timeout = HCI_DISCONN_TIMEOUT;
+		hci_conn_put(conn);
+	}
+
+	hci_dev_unlock(hdev);
 }
 
 static inline void hci_clock_offset_evt(struct hci_dev *hdev, struct sk_buff *skb)
diff --git a/net/bluetooth/hci_sysfs.c b/net/bluetooth/hci_sysfs.c
index ed82796..b7c5108 100644
--- a/net/bluetooth/hci_sysfs.c
+++ b/net/bluetooth/hci_sysfs.c
@@ -9,8 +9,7 @@
 struct class *bt_class = NULL;
 EXPORT_SYMBOL_GPL(bt_class);
 
-static struct workqueue_struct *btaddconn;
-static struct workqueue_struct *btdelconn;
+static struct workqueue_struct *bluetooth;
 
 static inline char *link_typetostr(int type)
 {
@@ -88,9 +87,10 @@ static struct device_type bt_link = {
 
 static void add_conn(struct work_struct *work)
 {
-	struct hci_conn *conn = container_of(work, struct hci_conn, work);
+	struct hci_conn *conn = container_of(work, struct hci_conn, work_add);
 
-	flush_workqueue(btdelconn);
+	/* ensure previous add/del is complete */
+	flush_workqueue(bluetooth);
 
 	if (device_add(&conn->dev) < 0) {
 		BT_ERR("Failed to register connection device");
@@ -114,9 +114,9 @@ void hci_conn_add_sysfs(struct hci_conn *conn)
 
 	device_initialize(&conn->dev);
 
-	INIT_WORK(&conn->work, add_conn);
+	INIT_WORK(&conn->work_add, add_conn);
 
-	queue_work(btaddconn, &conn->work);
+	queue_work(bluetooth, &conn->work_add);
 }
 
 /*
@@ -131,9 +131,12 @@ static int __match_tty(struct device *dev, void *data)
 
 static void del_conn(struct work_struct *work)
 {
-	struct hci_conn *conn = container_of(work, struct hci_conn, work);
+	struct hci_conn *conn = container_of(work, struct hci_conn, work_del);
 	struct hci_dev *hdev = conn->hdev;
 
+	/* ensure previous add/del is complete */
+	flush_workqueue(bluetooth);
+
 	while (1) {
 		struct device *dev;
 
@@ -156,9 +159,9 @@ void hci_conn_del_sysfs(struct hci_conn *conn)
 	if (!device_is_registered(&conn->dev))
 		return;
 
-	INIT_WORK(&conn->work, del_conn);
+	INIT_WORK(&conn->work_del, del_conn);
 
-	queue_work(btdelconn, &conn->work);
+	queue_work(bluetooth, &conn->work_del);
 }
 
 static inline char *host_typetostr(int type)
@@ -435,20 +438,13 @@ void hci_unregister_sysfs(struct hci_dev *hdev)
 
 int __init bt_sysfs_init(void)
 {
-	btaddconn = create_singlethread_workqueue("btaddconn");
-	if (!btaddconn)
-		return -ENOMEM;
-
-	btdelconn = create_singlethread_workqueue("btdelconn");
-	if (!btdelconn) {
-		destroy_workqueue(btaddconn);
+	bluetooth = create_singlethread_workqueue("bluetooth");
+	if (!bluetooth)
 		return -ENOMEM;
-	}
 
 	bt_class = class_create(THIS_MODULE, "bluetooth");
 	if (IS_ERR(bt_class)) {
-		destroy_workqueue(btdelconn);
-		destroy_workqueue(btaddconn);
+		destroy_workqueue(bluetooth);
 		return PTR_ERR(bt_class);
 	}
 
@@ -457,8 +453,7 @@ int __init bt_sysfs_init(void)
 
 void bt_sysfs_cleanup(void)
 {
-	destroy_workqueue(btaddconn);
-	destroy_workqueue(btdelconn);
+	destroy_workqueue(bluetooth);
 
 	class_destroy(bt_class);
 }

linux-2.6-v4l-dvb-fixes.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -p -N -r 1.14 -r 1.15 linux-2.6-v4l-dvb-fixes.patch
Index: linux-2.6-v4l-dvb-fixes.patch
===================================================================
RCS file: linux-2.6-v4l-dvb-fixes.patch
diff -N linux-2.6-v4l-dvb-fixes.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ linux-2.6-v4l-dvb-fixes.patch	1 May 2009 20:40:05 -0000	1.15
@@ -0,0 +1,113100 @@
+Abylay Ospan (5):
+      V4L/DVB (10796): Add init code for NetUP Dual DVB-S2 CI card
+      V4L/DVB (10797): Add EEPROM code for NetUP Dual DVB-S2 CI card.
+      V4L/DVB (10798): Add CIMax(R) SP2 Common Interface code for NetUP Dual DVB-S2 CI card
+      V4L/DVB (11056): Bug fix in NetUP: restore high address lines in CI
+      V4L/DVB (11057): Fix CiMax stability in Netup Dual DVB-S2 CI
+
+Adam Baker (2):
+      V4L/DVB (10639): gspca - sq905: New subdriver.
+      V4L/DVB (10829): Support alternate resolutions for sq905
+
+Alan Cox (2):
+      V4L/DVB (11243): cx88: Missing failure checks
+      V4L/DVB (11244): pluto2: silence spew of card hung up messages
+
+Alan McIvor (1):
+      V4L/DVB (11124): Add support for ProVideo PV-183 to bttv
+
+Alexey Klimov (18):
+      V4L/DVB (10316): v4l/dvb: use usb_make_path in usb-radio drivers
+      V4L/DVB (10324): em28xx: Correct mailing list
+      V4L/DVB (10335): gspca - all subdrivers: Fix CodingStyle in sd_mod_init function.
+      V4L/DVB (10336): gspca - all subdrivers: Return ret instead of -1 in sd_mod_init.
+      V4L/DVB (10455): radio-mr800: codingstyle cleanups
+      V4L/DVB (10456): radio-mr800: place dev_err instead of dev_warn
+      V4L/DVB (10457): radio-mr800: add more dev_err messages in probe
+      V4L/DVB (10458): radio-mr800: move radio start and stop in one function
+      V4L/DVB (10459): radio-mr800: fix amradio_set_freq
+      V4L/DVB (10460): radio-mr800: add stereo support
+      V4L/DVB (10461): radio-mr800: add few lost mutex locks
+      V4L/DVB (10462): radio-mr800: increase version and add comments
+      V4L/DVB (10463): radio-mr800: fix checking of retval after usb_bulk_msg
+      V4L/DVB (10464): radio-si470x: use usb_make_path in usb-radio drivers
+      V4L/DVB (10465): dsbr100: Add few lost mutex locks.
+      V4L/DVB (10522): em28xx-audio: replace printk with em28xx_errdev
+      V4L/DVB (10946): radio-rtrack2: fix double mutex_unlock
+      V4L/DVB (10961): radio-terratec: remove linux/delay.h which hadn't been used.
+
+Andy Walls (44):
+      V4L/DVB (10274): cx18: Fix a PLL divisor update for the I2S master clock
+      V4L/DVB (10275): cx18: Additional debug to display outgoing mailbox parameters
+      V4L/DVB (10276): cx18, cx2341x, ivtv: Add AC-3 audio encoding control to cx18
+      V4L/DVB (10277): cx18, cx2341x: Fix bugs in cx18 AC3 control and comply with V4L2 spec
+      V4L/DVB (10278): cx18: Fix bad audio in first analog capture.
+      V4L/DVB (10279): cx18: Print driver version number when logging status
+      V4L/DVB (10280): cx18: Rename structure members: dev to pci_dev and v4l2dev to video_dev
+      V4L/DVB (10281): cx18: Conversion to new V4L2 framework: use v4l2_device object
+      V4L/DVB (10283): cx18: Call request_module() with proper argument types.
+      V4L/DVB (10284): cx18: Add initial entry for a Leadtek DVR3100 H hybrid card
+      V4L/DVB (10433): cx18: Defer A/V core initialization until a valid cx18_av_cmd arrives
+      V4L/DVB (10434): cx18: Smarter verification of CX18_AUDIO_ENABLE register writes
+      V4L/DVB (10435): cx18: Normalize APU after second APU firmware load
+      V4L/DVB (10436): cx18: Fix coding style of a switch statement per checkpatch.pl
+      V4L/DVB (10437): cx18: Remove an unused spinlock
+      V4L/DVB (10439): cx18: Clean-up and enable sliced VBI handling
+      V4L/DVB (10440): cx18: Fix presentation timestamp (PTS) for VBI buffers
+      V4L/DVB (10441): cx18: Fix VBI ioctl() handling and Raw/Sliced VBI state management
+      V4L/DVB (10442): cx18: Fixes for enforcing when Encoder Raw VBI params can be set
+      V4L/DVB (10443): cx18: Use correct line counts per field in firmware API call
+      V4L/DVB (10444): cx18: Fix sliced VBI PTS and fix artifacts in last raw line of field
+      V4L/DVB (10445): cx18: Process Raw VBI on a whole frame basis; fix VBI buffer size
+      V4L/DVB (10446): cx18: Finally get sliced VBI working - for 525 line 60 Hz systems at least
+      V4L/DVB (10755): cx18: Convert the integrated A/V decoder core interface to a v4l2_subdev
+      V4L/DVB (10756): cx18: Slim down instance handling, build names from v4l2_device.name
+      V4L/DVB (10757): cx18, v4l2-chip-ident: Finish conversion of AV decoder core to v4l2_subdev
+      V4L/DVB (10758): cx18: Convert I2C devices to v4l2_subdevices
+      V4L/DVB (10759): cx18: Convert GPIO connected functions to act as v4l2_subdevices
+      V4L/DVB (10760): cx18: Fix a memory leak of buffers used for sliced VBI insertion
+      V4L/DVB (10761): cx18: Change log lines for internal subdevs and fix tveeprom reads
+      V4L/DVB (10762): cx18: Get rid of unused variables related to video output
+      V4L/DVB (10763): cx18: Increment version number due to significant changes for v4l2_subdevs
+      V4L/DVB (10764): cx18: Disable AC3 controls as the firmware doesn't support AC3
+      V4L/DVB (10850): cx18: Use strlcpy() instead of strncpy() for temp eeprom i2c_client setup
+      V4L/DVB (10851): cx18: Fix a video scaling check problem introduced by sliced VBI changes
+      V4L/DVB (10852): cx18: Include cx18-audio.h in cx18-audio.c to eliminate s-parse warning
+      V4L/DVB (10853): cx18: Fix s-parse warnings and a logic error about extracting the VBI PTS
+      V4L/DVB (10854): cx18: Correct comments about vertical and horizontal blanking timings
+      V4L/DVB (10855): cx18: Fix VPS service register codes
+      V4L/DVB (10856): cx18: Add interlock so sliced VBI insertion only happens for an MPEG PS
+      V4L/DVB (11042): v4l2-api: Add definitions for V4L2_MPEG_STREAM_VBI_FMT_IVTV payloads
+      V4L/DVB (11091): cx18, ivtv: Ensure endianess for linemasks in VBI embedded in MPEG stream
+      V4L/DVB (11092): cx18: Optimize processing of VBI buffers from the capture unit
+      V4L/DVB (11233): mxl5005s: Switch in mxl5005s_set_params should operate on correct values
+
+Antoine Jacquet (1):
+      V4L/DVB (10263): zr364xx: add support for Aiptek DV T300
+
+Antonio Ospite (2):
+      V4L/DVB (10344): gspca - ov534: Disable the Hercules webcams.
+      V4L/DVB (10676): mt9m111: Call icl->reset() on mt9m111_reset().
+
+Antti Palosaari (4):
+      V4L/DVB (10286): af9015: add new USB ID for KWorld DVB-T 395U
+      V4L/DVB (10329): af9015: remove dual_mode module param
+      V4L/DVB (11215): zl10353: add support for Intel CE6230 and Intel CE6231
+      V4L/DVB (11216): Add driver for Intel CE6230 DVB-T USB2.0
+
+Arne Luehrs (1):
+      V4L/DVB (10319): dib0700: enable IR receiver in Nova TD usb stick (52009)
+
+Artem Makhutov (1):
+      V4L/DVB (11248): Remove debug output from stb6100_cfg.h
+
+Bruno Christo (1):
+      V4L/DVB (10827): Add support for GeoVision GV-800(S)
+
+Daniel Glöckner (1):
+      V4L/DVB (11242): allow v4l2 drivers to provide a get_unmapped_area handler
+
+Devin Heitmueller (36):
+      V4L/DVB (10320): dib0700: fix i2c error message to make data type clear
+      V4L/DVB (10321): dib0700: Report dib0700_i2c_enumeration failures
+      V4L/DVB (11059): xc5000: fix bug for hybrid xc5000 devices with IF other than 5380
+      V4L/DVB (11060): au8522: rename the au8522.c source file
+      V4L/DVB (11061): au8522: move shared state and common functions into a separate header files
+      V4L/DVB (11062): au8522: fix register read/write high bits
+      V4L/DVB (11063): au8522: power down the digital demod when not in use
+      V4L/DVB (11064): au8522: make use of hybrid framework so analog/digital demod can share state
+      V4L/DVB (11065): au8522: add support for analog side of demodulator
+      V4L/DVB (11066): au0828: add support for analog functionality in bridge
+      V4L/DVB (11067): au0828: workaround a bug in the au0828 i2c handling
+      V4L/DVB (11068): au0828: add analog profile for the HVR-850
+      V4L/DVB (11069): au8522: add mutex protecting use of hybrid state
+      V4L/DVB (11070): au0828: Rework the way the analog video binding occurs
+      V4L/DVB (11071): tveeprom: add the xc5000 tuner to the tveeprom definition
+      V4L/DVB (11072): au0828: advertise only NTSC-M (as opposed to all NTSC standards)
+      V4L/DVB (11073): au0828: disable VBI code since it doesn't yet work
+      V4L/DVB (11074): au0828: fix i2c enumeration bug
+      V4L/DVB (11075): au0828: make register debug lines easier to read
+      V4L/DVB (11076): au0828: make g_chip_ident call work properly
+      V4L/DVB (11077): au0828: properly handle missing analog USB endpoint
+      V4L/DVB (11078): au0828: properly handle non-existent analog inputs
+      V4L/DVB (11079): au0828: fix panic on disconnect if analog initialization failed
+      V4L/DVB (11080): au0828: Convert to use v4l2_device/subdev framework
+      V4L/DVB (11081): au0828: make sure v4l2_device name is unique
+      V4L/DVB (11082): au0828: remove memset calls in v4l2 routines.
+      V4L/DVB (11083): au0828: remove some unneeded braces
+      V4L/DVB (11084): au0828: add entry for undefined input type
+      V4L/DVB (11085): au0828/au8522: Codingstyle fixes
+      V4L/DVB (11086): au0828: rename macro for currently non-function VBI support
+      V4L/DVB (11088): au0828: finish videodev/subdev conversion
+      V4L/DVB (11089): au8522: finish conversion to v4l2_device/subdev
+      V4L/DVB (11139): em28xx: add remote control definition for HVR-900 (both versions)
+      V4L/DVB (11140): usbvision: fix oops on ARM platform when allocating transfer buffers
+      V4L/DVB (11141): em28xx: fix oops on ARM platform when allocating transfer buffers
+      V4L/DVB (11142): au0828: fix oops on ARM platform when allocating transfer buffers
+
+Douglas Kosovic (1):
+      V4L/DVB (10299): bttv: Add support for IVCE-8784 support for V4L2 bttv driver
+
+Douglas Schilling Landgraf (13):
+      V4L/DVB (10323): em28xx: Add entry for GADMEI TVR200
+      V4L/DVB (10326): em28xx: Cleanup: fix bad whitespacing
+      V4L/DVB (10327): em28xx: Add check before call em28xx_isoc_audio_deinit()
+      V4L/DVB (10517): em28xx: remove bad check (changeset a31c595188af)
+      V4L/DVB (10520): em28xx-audio: Add spinlock for trigger
+      V4L/DVB (10521): em28xx-audio: Add lock for users
+      V4L/DVB (10523): em28xx-audio: Add macros EM28XX_START_AUDIO / EM28XX_STOP_AUDIO
+      V4L/DVB (10524): em28xx: Add DVC 101 model to Pinnacle Dazzle description
+      V4L/DVB (10556): em28xx-cards: Add Pinnacle Dazzle Video Creator Plus DVC107 description
+      V4L/DVB (10739): em28xx-cards: remove incorrect entry
+      V4L/DVB (10740): em28xx-cards: Add SIIG AVTuner-PVR board
+      V4L/DVB (10741): em28xx: Add Kaiser Baas Video to DVD maker support
+      V4L/DVB (11222): gspca - zc3xx: The webcam DLink DSB - C320 has the sensor pas106.
+
+Erik Andren (3):
+      V4L/DVB (10334): gspca - stv06xx: Rework control description.
+      V4L/DVB (10341): gspca - stv06xx: Plug a memory leak in the pb0100 sensor driver.
+      V4L/DVB (10342): gspca - stv06xx: Add ctrl caching to the vv6410.
+
+Erik S. Beiser (1):
+      V4L/DVB (10826): cx88: Add IR support to pcHDTV HD3000 & HD5500
+
+Guennadi Liakhovetski (9):
+      V4L/DVB (10665): soc-camera: add data signal polarity flags to drivers
+      V4L/DVB (10672): sh_mobile_ceu_camera: include NV* formats into the format list only once.
+      V4L/DVB (10673): mt9t031: fix gain and hflip controls, register update, and scaling
+      V4L/DVB (10674): soc-camera: camera host driver for i.MX3x SoCs
+      V4L/DVB (10675): soc-camera: extend soc_camera_bus_param_compatible with more tests
+      V4L/DVB (11024): soc-camera: separate S_FMT and S_CROP operations
+      V4L/DVB (11025): soc-camera: configure drivers with a default format on open
+      V4L/DVB (11026): sh-mobile-ceu-camera: set field to the value, configured at open()
+      V4L/DVB (11027): soc-camera: configure drivers with a default format at probe time
+
+Hans Verkuil (171):
+      V4L/DVB (10231): v4l2-subdev: add v4l2_ext_controls support
+      V4L/DVB (10244): v4l2: replace a few snprintfs with strlcpy
+      V4L/DVB (10246): saa6752hs: convert to v4l2_subdev.
+      V4L/DVB (10247): saa7134: convert to the new v4l2 framework.
+      V4L/DVB (10249): v4l2-common: added v4l2_i2c_tuner_addrs()
+      V4L/DVB (10251): cx25840: add comments explaining what the init() does.
+      V4L/DVB (10252): v4l2 doc: explain why v4l2_device_unregister_subdev() has to be called.
+      V4L/DVB (10271): saa7146: convert to video_ioctl2.
[...112707 lines suppressed...]
+-			return 0;
+-		case VIDIOCSFREQ:
+-			if(copy_from_user(&tea->freq, arg, sizeof(tea->freq)))
+-				return -EFAULT;
+-			snd_tea575x_set_freq(tea);
+-			return 0;
+-		case VIDIOCGAUDIO:
+-		{
+-			struct video_audio v;
+-			memset(&v, 0, sizeof(v));
+-			strcpy(v.name, "Radio");
+-			if(copy_to_user(arg,&v, sizeof(v)))
+-				return -EFAULT;
++	}
++	return -EINVAL;
++}
++
++static int vidioc_g_ctrl(struct file *file, void *priv,
++					struct v4l2_control *ctrl)
++{
++	struct snd_tea575x *tea = video_drvdata(file);
++
++	switch (ctrl->id) {
++	case V4L2_CID_AUDIO_MUTE:
++		if (tea->ops->mute) {
++			ctrl->value = tea->mute;
+ 			return 0;
+ 		}
+-		case VIDIOCSAUDIO:
+-		{
+-			struct video_audio v;
+-			if(copy_from_user(&v, arg, sizeof(v)))
+-				return -EFAULT;
+-			if (tea->ops->mute)
+-				tea->ops->mute(tea,
+-					       (v.flags &
+-						VIDEO_AUDIO_MUTE) ? 1 : 0);
+-			if(v.audio)
+-				return -EINVAL;
++	}
++	return -EINVAL;
++}
++
++static int vidioc_s_ctrl(struct file *file, void *priv,
++					struct v4l2_control *ctrl)
++{
++	struct snd_tea575x *tea = video_drvdata(file);
++
++	switch (ctrl->id) {
++	case V4L2_CID_AUDIO_MUTE:
++		if (tea->ops->mute) {
++			tea->ops->mute(tea, ctrl->value);
++			tea->mute = 1;
+ 			return 0;
+ 		}
+-		default:
+-			return -ENOIOCTLCMD;
+ 	}
++	return -EINVAL;
++}
++
++static int vidioc_g_input(struct file *filp, void *priv, unsigned int *i)
++{
++	*i = 0;
++	return 0;
+ }
+ 
+-static void snd_tea575x_release(struct video_device *vfd)
++static int vidioc_s_input(struct file *filp, void *priv, unsigned int i)
+ {
++	if (i != 0)
++		return -EINVAL;
++	return 0;
+ }
+ 
+ static int snd_tea575x_exclusive_open(struct file *file)
+@@ -189,50 +260,91 @@ static int snd_tea575x_exclusive_release(struct file *file)
+ 	return 0;
+ }
+ 
++static const struct v4l2_file_operations tea575x_fops = {
++	.owner		= THIS_MODULE,
++	.open           = snd_tea575x_exclusive_open,
++	.release        = snd_tea575x_exclusive_release,
++	.ioctl		= video_ioctl2,
++};
++
++static const struct v4l2_ioctl_ops tea575x_ioctl_ops = {
++	.vidioc_querycap    = vidioc_querycap,
++	.vidioc_g_tuner     = vidioc_g_tuner,
++	.vidioc_s_tuner     = vidioc_s_tuner,
++	.vidioc_g_audio     = vidioc_g_audio,
++	.vidioc_s_audio     = vidioc_s_audio,
++	.vidioc_g_input     = vidioc_g_input,
++	.vidioc_s_input     = vidioc_s_input,
++	.vidioc_g_frequency = vidioc_g_frequency,
++	.vidioc_s_frequency = vidioc_s_frequency,
++	.vidioc_queryctrl   = vidioc_queryctrl,
++	.vidioc_g_ctrl      = vidioc_g_ctrl,
++	.vidioc_s_ctrl      = vidioc_s_ctrl,
++};
++
++static struct video_device tea575x_radio = {
++	.name           = "tea575x-tuner",
++	.fops           = &tea575x_fops,
++	.ioctl_ops 	= &tea575x_ioctl_ops,
++	.release	= video_device_release,
++};
++
+ /*
+  * initialize all the tea575x chips
+  */
+ void snd_tea575x_init(struct snd_tea575x *tea)
+ {
++	int retval;
+ 	unsigned int val;
++	struct video_device *tea575x_radio_inst;
+ 
+ 	val = tea->ops->read(tea);
+ 	if (val == 0x1ffffff || val == 0) {
+-		snd_printk(KERN_ERR "Cannot find TEA575x chip\n");
++		snd_printk(KERN_ERR
++			   "tea575x-tuner: Cannot find TEA575x chip\n");
+ 		return;
+ 	}
+ 
+-	memset(&tea->vd, 0, sizeof(tea->vd));
+-	strcpy(tea->vd.name, tea->tea5759 ? "TEA5759 radio" : "TEA5757 radio");
+-	tea->vd.release = snd_tea575x_release;
+-	video_set_drvdata(&tea->vd, tea);
+-	tea->vd.fops = &tea->fops;
+ 	tea->in_use = 0;
+-	tea->fops.owner = tea->card->module;
+-	tea->fops.open = snd_tea575x_exclusive_open;
+-	tea->fops.release = snd_tea575x_exclusive_release;
+-	tea->fops.ioctl = snd_tea575x_ioctl;
+-	if (video_register_device(&tea->vd, VFL_TYPE_RADIO, tea->dev_nr - 1) < 0) {
+-		snd_printk(KERN_ERR "unable to register tea575x tuner\n");
++	tea->val = TEA575X_BIT_BAND_FM | TEA575X_BIT_SEARCH_10_40;
++	tea->freq = 90500 * 16;		/* 90.5Mhz default */
++
++	tea575x_radio_inst = video_device_alloc();
++	if (tea575x_radio_inst == NULL) {
++		printk(KERN_ERR "tea575x-tuner: not enough memory\n");
+ 		return;
+ 	}
+-	tea->vd_registered = 1;
+ 
+-	tea->val = TEA575X_BIT_BAND_FM | TEA575X_BIT_SEARCH_10_40;
+-	tea->freq = 90500 * 16;		/* 90.5Mhz default */
++	memcpy(tea575x_radio_inst, &tea575x_radio, sizeof(tea575x_radio));
++
++	strcpy(tea575x_radio.name, tea->tea5759 ?
++				   "TEA5759 radio" : "TEA5757 radio");
++
++	video_set_drvdata(tea575x_radio_inst, tea);
++
++	retval = video_register_device(tea575x_radio_inst,
++				       VFL_TYPE_RADIO, radio_nr);
++	if (retval) {
++		printk(KERN_ERR "tea575x-tuner: can't register video device!\n");
++		kfree(tea575x_radio_inst);
++		return;
++	}
+ 
+ 	snd_tea575x_set_freq(tea);
+ 
+ 	/* mute on init */
+-	if (tea->ops->mute)
++	if (tea->ops->mute) {
+ 		tea->ops->mute(tea, 1);
++		tea->mute = 1;
++	}
++	tea->vd = tea575x_radio_inst;
+ }
+ 
+ void snd_tea575x_exit(struct snd_tea575x *tea)
+ {
+-	if (tea->vd_registered) {
+-		video_unregister_device(&tea->vd);
+-		tea->vd_registered = 0;
++	if (tea->vd) {
++		video_unregister_device(tea->vd);
++		tea->vd = NULL;
+ 	}
+ }
+ 
+diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig
+index 82b9bdd..6cc18bf 100644
+--- a/sound/pci/Kconfig
++++ b/sound/pci/Kconfig
+@@ -487,7 +487,7 @@ config SND_FM801
+ config SND_FM801_TEA575X_BOOL
+ 	bool "ForteMedia FM801 + TEA5757 tuner"
+ 	depends on SND_FM801
+-	depends on VIDEO_V4L1=y || VIDEO_V4L1=SND_FM801
++	depends on VIDEO_V4L2=y || VIDEO_V4L2=SND_FM801
+ 	help
+ 	  Say Y here to include support for soundcards based on the ForteMedia
+ 	  FM801 chip with a TEA5757 tuner connected to GPIO1-3 pins (Media


Index: config-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/config-generic,v
retrieving revision 1.278
retrieving revision 1.279
diff -u -p -r1.278 -r1.279
--- config-generic	1 May 2009 18:41:25 -0000	1.278
+++ config-generic	1 May 2009 20:40:05 -0000	1.279
@@ -2276,7 +2276,7 @@ CONFIG_RADIO_MAXIRADIO=m
 CONFIG_RADIO_MAESTRO=m
 
 CONFIG_MEDIA_ATTACH=y
-# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
+# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
 
 #
 # Digital Video Broadcasting Devices


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/kernel.spec,v
retrieving revision 1.1582
retrieving revision 1.1583
diff -u -p -r1.1582 -r1.1583
--- kernel.spec	1 May 2009 18:59:33 -0000	1.1582
+++ kernel.spec	1 May 2009 20:40:05 -0000	1.1583
@@ -587,6 +587,7 @@ Patch09: linux-2.6-upstream-reverts.patc
 Patch10: git-cpufreq.patch
 Patch11: git-bluetooth.patch
 Patch12: git-bluetooth2.patch
+Patch13: git-bluetooth3.patch
 
 # Standalone patches
 Patch20: linux-2.6-hotfixes.patch
@@ -704,6 +705,7 @@ Patch2201: linux-2.6-firewire-git-pendin
 # silence the ACPI blacklist code
 Patch2802: linux-2.6-silence-acpi-blacklist.patch
 
+Patch2900: linux-2.6-v4l-dvb-fixes.patch
 Patch2901: linux-2.6-v4l-dvb-experimental.patch
 Patch2902: linux-2.6-v4l-dvb-fix-uint16_t-audio-h.patch
 Patch2903: linux-2.6-revert-dvb-net-kabi-change.patch
@@ -1134,6 +1136,7 @@ fi
 #ApplyPatch git-cpufreq.patch
 ApplyPatch git-bluetooth.patch
 ApplyPatch git-bluetooth2.patch
+ApplyPatch git-bluetooth3.patch
 
 ApplyPatch linux-2.6-hotfixes.patch
 
@@ -1354,6 +1357,7 @@ C=$(wc -l $RPM_SOURCE_DIR/linux-2.6-fire
 ApplyPatch linux-2.6-silence-acpi-blacklist.patch
 
 # V4L/DVB updates/fixes/experimental drivers
+ApplyPatch linux-2.6-v4l-dvb-fixes.patch
 ApplyPatch linux-2.6-v4l-dvb-experimental.patch
 ApplyPatch linux-2.6-v4l-dvb-fix-uint16_t-audio-h.patch
 ApplyPatch linux-2.6-revert-dvb-net-kabi-change.patch
@@ -1962,6 +1966,12 @@ fi
 # and build.
 
 %changelog
+* Fri May 01 2009 Kyle McMartin <kyle at redhat.com> 2.6.29.2-121
+- More bluetooth fixes from 2.6.30-rc.
+- linux-2.6-v4l-dvb-fixes.patch: restore, accidently nuked.
+- linux-2.6-v4l-dvb-experimental.patch: restore to previous version
+   to fix rejects against restored -fixes.
+
 * Fri May 01 2009 Eric Sandeen <sandeen at redhat.com>
 - Fix ext4 corruption on partial write into prealloc block
 

linux-2.6-v4l-dvb-experimental.patch:

Index: linux-2.6-v4l-dvb-experimental.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/linux-2.6-v4l-dvb-experimental.patch,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -p -r1.9 -r1.10
--- linux-2.6-v4l-dvb-experimental.patch	1 May 2009 18:41:26 -0000	1.9
+++ linux-2.6-v4l-dvb-experimental.patch	1 May 2009 20:40:05 -0000	1.10
@@ -392,10 +392,10 @@ index 0000000..31ba8c5
 +MODULE_AUTHOR("Pierre Ossman");
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
-index 19cf3b8..2409065 100644
+index 76bad58..58abbe3 100644
 --- a/drivers/media/video/Kconfig
 +++ b/drivers/media/video/Kconfig
-@@ -819,6 +819,8 @@ source "drivers/media/video/pvrusb2/Kconfig"
+@@ -795,6 +795,8 @@ source "drivers/media/video/hdpvr/Kconfig"
  
  source "drivers/media/video/em28xx/Kconfig"
  
@@ -405,10 +405,10 @@ index 19cf3b8..2409065 100644
  
  source "drivers/media/video/usbvideo/Kconfig"
 diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
-index 72f6d03..13cd579 100644
+index b904674..08765d8 100644
 --- a/drivers/media/video/Makefile
 +++ b/drivers/media/video/Makefile
-@@ -70,6 +70,7 @@ obj-$(CONFIG_VIDEO_MEYE) += meye.o
+@@ -67,6 +67,7 @@ obj-$(CONFIG_VIDEO_MEYE) += meye.o
  obj-$(CONFIG_VIDEO_SAA7134) += saa7134/
  obj-$(CONFIG_VIDEO_CX88) += cx88/
  obj-$(CONFIG_VIDEO_EM28XX) += em28xx/
@@ -14281,7 +14281,7 @@ index 0000000..aa4a23e
 +}
 +#endif
 diff --git a/drivers/media/video/cx25840/cx25840-audio.c b/drivers/media/video/cx25840/cx25840-audio.c
-index d199d80..95e3f95 100644
+index 93d74be..2f846f5 100644
 --- a/drivers/media/video/cx25840/cx25840-audio.c
 +++ b/drivers/media/video/cx25840/cx25840-audio.c
 @@ -32,7 +32,7 @@ static int set_audclk_freq(struct i2c_client *client, u32 freq)
@@ -14420,10 +14420,10 @@ index d199d80..95e3f95 100644
  
  static int get_volume(struct i2c_client *client)
 diff --git a/drivers/media/video/cx25840/cx25840-core.c b/drivers/media/video/cx25840/cx25840-core.c
-index 25eb3be..7d6b0bb 100644
+index 737ee4e..f8ed3c0 100644
 --- a/drivers/media/video/cx25840/cx25840-core.c
 +++ b/drivers/media/video/cx25840/cx25840-core.c
-@@ -348,6 +348,77 @@ static void cx23885_initialize(struct i2c_client *client)
+@@ -345,6 +345,77 @@ static void cx23885_initialize(struct i2c_client *client)
  
  /* ----------------------------------------------------------------------- */
  
@@ -14501,7 +14501,7 @@ index 25eb3be..7d6b0bb 100644
  void cx25840_std_setup(struct i2c_client *client)
  {
  	struct cx25840_state *state = to_state(i2c_get_clientdata(client));
-@@ -417,39 +488,41 @@ void cx25840_std_setup(struct i2c_client *client)
+@@ -414,39 +485,41 @@ void cx25840_std_setup(struct i2c_client *client)
  	}
  
  	/* DEBUG: Displays configured PLL frequency */
@@ -14575,7 +14575,7 @@ index 25eb3be..7d6b0bb 100644
  	}
  
  	/* Sets horizontal blanking delay and active lines */
-@@ -599,7 +672,7 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
+@@ -596,7 +669,7 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
  	 * configuration in reg (for the cx23885) so we have no
  	 * need to attempt to flip bits for earlier av decoders.
  	 */
@@ -14584,7 +14584,7 @@ index 25eb3be..7d6b0bb 100644
  		switch (aud_input) {
  		case CX25840_AUDIO_SERIAL:
  			/* do nothing, use serial audio input */
-@@ -622,7 +695,7 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
+@@ -619,7 +692,7 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
  	/* Set INPUT_MODE to Composite (0) or S-Video (1) */
  	cx25840_and_or(client, 0x401, ~0x6, is_composite ? 0 : 0x02);
  
@@ -14593,7 +14593,7 @@ index 25eb3be..7d6b0bb 100644
  		/* Set CH_SEL_ADC2 to 1 if input comes from CH3 */
  		cx25840_and_or(client, 0x102, ~0x2, (reg & 0x80) == 0 ? 2 : 0);
  		/* Set DUAL_MODE_ADC2 to 1 if input comes from both CH2&CH3 */
-@@ -662,6 +735,19 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
+@@ -659,6 +732,19 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
  		 */
  		cx25840_write(client, 0x918, 0xa0);
  		cx25840_write(client, 0x919, 0x01);
@@ -14613,7 +14613,7 @@ index 25eb3be..7d6b0bb 100644
  	}
  
  	return 0;
-@@ -1113,6 +1199,8 @@ static int cx25840_init(struct v4l2_subdev *sd, u32 val)
+@@ -1118,6 +1204,8 @@ static int cx25840_init(struct v4l2_subdev *sd, u32 val)
  			cx25836_initialize(client);
  		else if (state->is_cx23885)
  			cx23885_initialize(client);
@@ -14622,7 +14622,7 @@ index 25eb3be..7d6b0bb 100644
  		else
  			cx25840_initialize(client);
  	}
-@@ -1168,7 +1256,7 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
+@@ -1159,7 +1247,7 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
  	v4l_dbg(1, cx25840_debug, client, "%s output\n",
  			enable ? "enable" : "disable");
  	if (enable) {
@@ -14631,7 +14631,7 @@ index 25eb3be..7d6b0bb 100644
  			u8 v = (cx25840_read(client, 0x421) | 0x0b);
  			cx25840_write(client, 0x421, v);
  		} else {
-@@ -1178,7 +1266,7 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
+@@ -1169,7 +1257,7 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
  					state->is_cx25836 ? 0x04 : 0x07);
  		}
  	} else {
@@ -14640,7 +14640,7 @@ index 25eb3be..7d6b0bb 100644
  			u8 v = cx25840_read(client, 0x421) & ~(0x0b);
  			cx25840_write(client, 0x421, v);
  		} else {
-@@ -1356,6 +1444,8 @@ static int cx25840_reset(struct v4l2_subdev *sd, u32 val)
+@@ -1350,6 +1438,8 @@ static int cx25840_reset(struct v4l2_subdev *sd, u32 val)
  		cx25836_initialize(client);
  	else if (state->is_cx23885)
  		cx23885_initialize(client);
@@ -14649,7 +14649,7 @@ index 25eb3be..7d6b0bb 100644
  	else
  		cx25840_initialize(client);
  	return 0;
-@@ -1468,6 +1558,8 @@ static int cx25840_probe(struct i2c_client *client,
+@@ -1449,6 +1539,8 @@ static int cx25840_probe(struct i2c_client *client,
  		id = V4L2_IDENT_CX25836 + ((device_id >> 4) & 0xf) - 6;
  	} else if (device_id == 0x1313) {
  		id = V4L2_IDENT_CX25836 + ((device_id >> 4) & 0xf) - 6;
@@ -14658,7 +14658,7 @@ index 25eb3be..7d6b0bb 100644
  	}
  	else {
  		v4l_dbg(1, cx25840_debug, client, "cx25840 not found\n");
-@@ -1490,6 +1582,7 @@ static int cx25840_probe(struct i2c_client *client,
+@@ -1471,6 +1563,7 @@ static int cx25840_probe(struct i2c_client *client,
  	state->c = client;
  	state->is_cx25836 = ((device_id & 0xff00) == 0x8300);
  	state->is_cx23885 = (device_id == 0x0000) || (device_id == 0x1313);
@@ -14667,7 +14667,7 @@ index 25eb3be..7d6b0bb 100644
  	state->aud_input = CX25840_AUDIO8;
  	state->audclk_freq = 48000;
 diff --git a/drivers/media/video/cx25840/cx25840-core.h b/drivers/media/video/cx25840/cx25840-core.h
-index be05582..93941be 100644
+index 9ad0eb8..814b565 100644
 --- a/drivers/media/video/cx25840/cx25840-core.h
 +++ b/drivers/media/video/cx25840/cx25840-core.h
 @@ -50,6 +50,7 @@ struct cx25840_state {
@@ -14718,17 +14718,17 @@ index 0b2dceb..0df53b0 100644
  		memcpy(buffer + 2, ptr, len);
  
 diff --git a/include/linux/i2c-id.h b/include/linux/i2c-id.h
-index 1ffc23b..d252c9b 100644
+index f27604a..f9d48c9 100644
 --- a/include/linux/i2c-id.h
 +++ b/include/linux/i2c-id.h
-@@ -87,6 +87,7 @@
+@@ -88,6 +88,7 @@
  #define I2C_HW_B_CX2341X	0x010020 /* Conexant CX2341X MPEG encoder cards */
  #define I2C_HW_B_CX23885	0x010022 /* conexant 23885 based tv cards (bus1) */
  #define I2C_HW_B_AU0828		0x010023 /* auvitek au0828 usb bridge */
 +#define I2C_HW_B_CX231XX	0x010024 /* Conexant CX231XX USB based cards */
+ #define I2C_HW_B_HDPVR		0x010025 /* Hauppauge HD PVR */
  
  /* --- SGI adapters							*/
- #define I2C_HW_SGI_VINO		0x160000
 diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
 index ea1bf5b..3d7533d 100644
 --- a/include/linux/mmc/sdio_ids.h




More information about the scm-commits mailing list