
From: Michael Hunold <hunold@linuxtv.org>

- dvb-ttusb-budget: Fixed i2c code to detect nearly all errors

- dvb-ttusb-budget: Added "V 2.1" to prevent warning message on driver load

- dvb-ttusb-budget: Some printks turned into dprintks

- dvb-ttusb-budget: Removed __initdata.  It is now possible in kernel 2.6
  to compile the DVB drivers into a monolithic kernel.

- dvb-ttusb-budget: Fix for failing urb submission under 2.6 kernels


---

 25-akpm/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c      |   15 ++++++----
 25-akpm/drivers/media/dvb/ttusb-budget/dvb-ttusb-dspbootcode.h |    2 -
 2 files changed, 11 insertions(+), 6 deletions(-)

diff -puN drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c~dvb-09-ttusb-budget-update drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
--- 25/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c~dvb-09-ttusb-budget-update	Mon Feb 23 14:05:15 2004
+++ 25-akpm/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c	Mon Feb 23 14:05:15 2004
@@ -29,6 +29,7 @@
 #include <linux/dvb/dmx.h>
 #include <linux/pci.h>
 
+#include "dvb_usb_compat.h"
 #include "dvb_functions.h"
 
 /*
@@ -223,6 +224,9 @@ static int ttusb_i2c_msg(struct ttusb *t
 
 	err = ttusb_result(ttusb, b, 0x20);
 
+        /* check if the i2c transaction was successful */
+        if ((snd_len != b[5]) || (rcv_len != b[6])) return -EREMOTEIO;
+
 	if (rcv_len > 0) {
 
 		if (err || b[0] != 0x55 || b[1] != id) {
@@ -273,7 +277,7 @@ static int ttusb_i2c_xfer(struct dvb_i2c
 				    snd_buf, snd_len, rcv_buf, rcv_len);
 
 		if (err < rcv_len) {
-			printk("%s: i == %i\n", __FUNCTION__, i);
+			dprintk("%s: i == %i\n", __FUNCTION__, i);
 			break;
 		}
 
@@ -432,7 +436,8 @@ static int ttusb_init_controller(struct 
 		get_version[7], get_version[8]);
 
 	if (memcmp(get_version + 4, "V 0.0", 5) &&
-	    memcmp(get_version + 4, "V 1.1", 5)) {
+	    memcmp(get_version + 4, "V 1.1", 5) &&
+   	    memcmp(get_version + 4, "V 2.1", 5)) {
 		printk
 		    ("%s: unknown STC version %c%c%c%c%c, please report!\n",
 		     __FUNCTION__, get_version[4], get_version[5],
@@ -932,7 +937,7 @@ static int ttusb_start_feed(struct dvb_d
 	struct ttusb *ttusb = (struct ttusb *) dvbdmxfeed->demux;
 	struct ttusb_channel *channel;
 
-	printk("ttusb_start_feed\n");
+	dprintk("ttusb_start_feed\n");
 
 	switch (dvbdmxfeed->type) {
 	case DMX_TYPE_TS:
@@ -1004,7 +1009,7 @@ static int ttusb_stop_feed(struct dvb_de
 
 static int ttusb_setup_interfaces(struct ttusb *ttusb)
 {
-	usb_reset_configuration(ttusb->dev);
+	usb_set_configuration(ttusb->dev, 1);
 	usb_set_interface(ttusb->dev, 1, 1);
 
 	ttusb->bulk_out_pipe = usb_sndbulkpipe(ttusb->dev, 1);
@@ -1186,7 +1191,7 @@ static void ttusb_disconnect(struct usb_
 static struct usb_device_id ttusb_table[] = {
 	{USB_DEVICE(0xb48, 0x1003)},
 	{USB_DEVICE(0xb48, 0x1004)},	/* to be confirmed ????  */
-	{USB_DEVICE(0xb48, 0x1005)},	/* to be confirmed ????  */
+	{USB_DEVICE(0xb48, 0x1005)},
 	{}
 };
 
diff -puN drivers/media/dvb/ttusb-budget/dvb-ttusb-dspbootcode.h~dvb-09-ttusb-budget-update drivers/media/dvb/ttusb-budget/dvb-ttusb-dspbootcode.h
--- 25/drivers/media/dvb/ttusb-budget/dvb-ttusb-dspbootcode.h~dvb-09-ttusb-budget-update	Mon Feb 23 14:05:15 2004
+++ 25-akpm/drivers/media/dvb/ttusb-budget/dvb-ttusb-dspbootcode.h	Mon Feb 23 14:05:15 2004
@@ -1,7 +1,7 @@
 
 #include <asm/types.h>
 
-u8 dsp_bootcode [] __initdata = {
+u8 dsp_bootcode [] = {
 	0x08, 0xaa, 0x00, 0x18, 0x00, 0x03, 0x08, 0x00, 
 	0x00, 0x10, 0x00, 0x00, 0x01, 0x80, 0x18, 0x5f, 
 	0x00, 0x00, 0x01, 0x80, 0x77, 0x18, 0x2a, 0xeb, 

_
