
From: Patrick Boettcher <pb@linuxtv.org>

Change the init call to optionally return the new dvb_usb_device directly.

Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 drivers/media/dvb/dvb-usb/a800.c         |    2 +-
 drivers/media/dvb/dvb-usb/cxusb.c        |    2 +-
 drivers/media/dvb/dvb-usb/dibusb-mb.c    |    6 +++---
 drivers/media/dvb/dvb-usb/dibusb-mc.c    |    2 +-
 drivers/media/dvb/dvb-usb/digitv.c       |    2 +-
 drivers/media/dvb/dvb-usb/dtt200u.c      |    4 ++--
 drivers/media/dvb/dvb-usb/dvb-usb-ids.h  |    3 +++
 drivers/media/dvb/dvb-usb/dvb-usb-init.c |    7 ++++++-
 drivers/media/dvb/dvb-usb/dvb-usb.h      |    4 ++--
 drivers/media/dvb/dvb-usb/nova-t-usb2.c  |    2 +-
 drivers/media/dvb/dvb-usb/umt-010.c      |    2 +-
 drivers/media/dvb/dvb-usb/vp702x.c       |    2 +-
 drivers/media/dvb/dvb-usb/vp7045.c       |    2 +-
 13 files changed, 24 insertions(+), 16 deletions(-)

diff -puN drivers/media/dvb/dvb-usb/a800.c~dvb-usb-core-change-dvb_usb_device_init-api drivers/media/dvb/dvb-usb/a800.c
--- devel/drivers/media/dvb/dvb-usb/a800.c~dvb-usb-core-change-dvb_usb_device_init-api	2005-09-04 16:51:39.000000000 -0700
+++ devel-akpm/drivers/media/dvb/dvb-usb/a800.c	2005-09-04 16:51:39.000000000 -0700
@@ -90,7 +90,7 @@ static struct dvb_usb_properties a800_pr
 static int a800_probe(struct usb_interface *intf,
 		const struct usb_device_id *id)
 {
-	return dvb_usb_device_init(intf,&a800_properties,THIS_MODULE);
+	return dvb_usb_device_init(intf,&a800_properties,THIS_MODULE,NULL);
 }
 
 /* do not change the order of the ID table */
diff -puN drivers/media/dvb/dvb-usb/cxusb.c~dvb-usb-core-change-dvb_usb_device_init-api drivers/media/dvb/dvb-usb/cxusb.c
--- devel/drivers/media/dvb/dvb-usb/cxusb.c~dvb-usb-core-change-dvb_usb_device_init-api	2005-09-04 16:51:39.000000000 -0700
+++ devel-akpm/drivers/media/dvb/dvb-usb/cxusb.c	2005-09-04 16:51:39.000000000 -0700
@@ -211,7 +211,7 @@ static struct dvb_usb_properties cxusb_p
 static int cxusb_probe(struct usb_interface *intf,
 		const struct usb_device_id *id)
 {
-	return dvb_usb_device_init(intf,&cxusb_properties,THIS_MODULE);
+	return dvb_usb_device_init(intf,&cxusb_properties,THIS_MODULE,NULL);
 }
 
 static struct usb_device_id cxusb_table [] = {
diff -puN drivers/media/dvb/dvb-usb/dibusb-mb.c~dvb-usb-core-change-dvb_usb_device_init-api drivers/media/dvb/dvb-usb/dibusb-mb.c
--- devel/drivers/media/dvb/dvb-usb/dibusb-mb.c~dvb-usb-core-change-dvb_usb_device_init-api	2005-09-04 16:51:39.000000000 -0700
+++ devel-akpm/drivers/media/dvb/dvb-usb/dibusb-mb.c	2005-09-04 16:51:39.000000000 -0700
@@ -86,9 +86,9 @@ static struct dvb_usb_properties dibusb2
 static int dibusb_probe(struct usb_interface *intf,
 		const struct usb_device_id *id)
 {
-	if (dvb_usb_device_init(intf,&dibusb1_1_properties,THIS_MODULE) == 0 ||
-		dvb_usb_device_init(intf,&dibusb1_1_an2235_properties,THIS_MODULE) == 0 ||
-		dvb_usb_device_init(intf,&dibusb2_0b_properties,THIS_MODULE) == 0)
+	if (dvb_usb_device_init(intf,&dibusb1_1_properties,THIS_MODULE,NULL) == 0 ||
+		dvb_usb_device_init(intf,&dibusb1_1_an2235_properties,THIS_MODULE,NULL) == 0 ||
+		dvb_usb_device_init(intf,&dibusb2_0b_properties,THIS_MODULE,NULL) == 0)
 		return 0;
 
 	return -EINVAL;
diff -puN drivers/media/dvb/dvb-usb/dibusb-mc.c~dvb-usb-core-change-dvb_usb_device_init-api drivers/media/dvb/dvb-usb/dibusb-mc.c
--- devel/drivers/media/dvb/dvb-usb/dibusb-mc.c~dvb-usb-core-change-dvb_usb_device_init-api	2005-09-04 16:51:39.000000000 -0700
+++ devel-akpm/drivers/media/dvb/dvb-usb/dibusb-mc.c	2005-09-04 16:51:39.000000000 -0700
@@ -20,7 +20,7 @@ static struct dvb_usb_properties dibusb_
 static int dibusb_mc_probe(struct usb_interface *intf,
 		const struct usb_device_id *id)
 {
-	return dvb_usb_device_init(intf,&dibusb_mc_properties,THIS_MODULE);
+	return dvb_usb_device_init(intf,&dibusb_mc_properties,THIS_MODULE,NULL);
 }
 
 /* do not change the order of the ID table */
diff -puN drivers/media/dvb/dvb-usb/digitv.c~dvb-usb-core-change-dvb_usb_device_init-api drivers/media/dvb/dvb-usb/digitv.c
--- devel/drivers/media/dvb/dvb-usb/digitv.c~dvb-usb-core-change-dvb_usb_device_init-api	2005-09-04 16:51:39.000000000 -0700
+++ devel-akpm/drivers/media/dvb/dvb-usb/digitv.c	2005-09-04 16:51:39.000000000 -0700
@@ -173,7 +173,7 @@ static struct dvb_usb_properties digitv_
 static int digitv_probe(struct usb_interface *intf,
 		const struct usb_device_id *id)
 {
-	return dvb_usb_device_init(intf,&digitv_properties,THIS_MODULE);
+	return dvb_usb_device_init(intf,&digitv_properties,THIS_MODULE,NULL);
 }
 
 static struct usb_device_id digitv_table [] = {
diff -puN drivers/media/dvb/dvb-usb/dtt200u.c~dvb-usb-core-change-dvb_usb_device_init-api drivers/media/dvb/dvb-usb/dtt200u.c
--- devel/drivers/media/dvb/dvb-usb/dtt200u.c~dvb-usb-core-change-dvb_usb_device_init-api	2005-09-04 16:51:39.000000000 -0700
+++ devel-akpm/drivers/media/dvb/dvb-usb/dtt200u.c	2005-09-04 16:51:39.000000000 -0700
@@ -98,8 +98,8 @@ static struct dvb_usb_properties wt220u_
 static int dtt200u_usb_probe(struct usb_interface *intf,
 		const struct usb_device_id *id)
 {
-	if (dvb_usb_device_init(intf,&dtt200u_properties,THIS_MODULE) == 0 ||
-		dvb_usb_device_init(intf,&wt220u_properties,THIS_MODULE) == 0)
+	if (dvb_usb_device_init(intf,&dtt200u_properties,THIS_MODULE,NULL) == 0 ||
+		dvb_usb_device_init(intf,&wt220u_properties,THIS_MODULE,NULL) == 0)
 		return 0;
 
 	return -ENODEV;
diff -puN drivers/media/dvb/dvb-usb/dvb-usb.h~dvb-usb-core-change-dvb_usb_device_init-api drivers/media/dvb/dvb-usb/dvb-usb.h
--- devel/drivers/media/dvb/dvb-usb/dvb-usb.h~dvb-usb-core-change-dvb_usb_device_init-api	2005-09-04 16:51:39.000000000 -0700
+++ devel-akpm/drivers/media/dvb/dvb-usb/dvb-usb.h	2005-09-04 16:51:39.000000000 -0700
@@ -127,7 +127,7 @@ struct dvb_usb_device;
  *  helper functions.
  *
  * @urb: describes the kind of USB transfer used for MPEG2-TS-streaming.
- *  Currently only BULK is implemented
+ *  (BULK or ISOC)
  *
  * @num_device_descs: number of struct dvb_usb_device_description in @devices
  * @devices: array of struct dvb_usb_device_description compatibles with these
@@ -310,7 +310,7 @@ struct dvb_usb_device {
 	void *priv;
 };
 
-extern int dvb_usb_device_init(struct usb_interface *, struct dvb_usb_properties *, struct module *);
+extern int dvb_usb_device_init(struct usb_interface *, struct dvb_usb_properties *, struct module *, struct dvb_usb_device **);
 extern void dvb_usb_device_exit(struct usb_interface *);
 
 /* the generic read/write method for device control */
diff -puN drivers/media/dvb/dvb-usb/dvb-usb-ids.h~dvb-usb-core-change-dvb_usb_device_init-api drivers/media/dvb/dvb-usb/dvb-usb-ids.h
--- devel/drivers/media/dvb/dvb-usb/dvb-usb-ids.h~dvb-usb-core-change-dvb_usb_device_init-api	2005-09-04 16:51:39.000000000 -0700
+++ devel-akpm/drivers/media/dvb/dvb-usb/dvb-usb-ids.h	2005-09-04 16:51:39.000000000 -0700
@@ -27,6 +27,7 @@
 #define USB_VID_KWORLD						0xeb2a
 #define USB_VID_KYE							0x0458
 #define USB_VID_MEDION						0x1660
+#define USB_VID_PINNACLE					0x2304
 #define USB_VID_VISIONPLUS					0x13d3
 #define USB_VID_TWINHAN						0x1822
 #define USB_VID_ULTIMA_ELECTRONIC			0x05d8
@@ -88,5 +89,7 @@
 #define USB_PID_MEDION_MD95700				0x0932
 #define USB_PID_KYE_DVB_T_COLD				0x701e
 #define USB_PID_KYE_DVB_T_WARM				0x701f
+#define USB_PID_PCTV_200E					0x020e
+#define USB_PID_PCTV_400E					0x020f
 
 #endif
diff -puN drivers/media/dvb/dvb-usb/dvb-usb-init.c~dvb-usb-core-change-dvb_usb_device_init-api drivers/media/dvb/dvb-usb/dvb-usb-init.c
--- devel/drivers/media/dvb/dvb-usb/dvb-usb-init.c~dvb-usb-core-change-dvb_usb_device_init-api	2005-09-04 16:51:39.000000000 -0700
+++ devel-akpm/drivers/media/dvb/dvb-usb/dvb-usb-init.c	2005-09-04 16:51:39.000000000 -0700
@@ -128,7 +128,9 @@ static struct dvb_usb_device_description
 /*
  * USB
  */
-int dvb_usb_device_init(struct usb_interface *intf, struct dvb_usb_properties *props, struct module *owner)
+
+int dvb_usb_device_init(struct usb_interface *intf, struct dvb_usb_properties
+		*props, struct module *owner,struct dvb_usb_device **du)
 {
 	struct usb_device *udev = interface_to_usbdev(intf);
 	struct dvb_usb_device *d = NULL;
@@ -170,6 +172,9 @@ int dvb_usb_device_init(struct usb_inter
 
 		usb_set_intfdata(intf, d);
 
+		if (du != NULL)
+			*du = d;
+
 		ret = dvb_usb_init(d);
 	}
 
diff -puN drivers/media/dvb/dvb-usb/nova-t-usb2.c~dvb-usb-core-change-dvb_usb_device_init-api drivers/media/dvb/dvb-usb/nova-t-usb2.c
--- devel/drivers/media/dvb/dvb-usb/nova-t-usb2.c~dvb-usb-core-change-dvb_usb_device_init-api	2005-09-04 16:51:39.000000000 -0700
+++ devel-akpm/drivers/media/dvb/dvb-usb/nova-t-usb2.c	2005-09-04 16:51:39.000000000 -0700
@@ -144,7 +144,7 @@ static struct dvb_usb_properties nova_t_
 static int nova_t_probe(struct usb_interface *intf,
 		const struct usb_device_id *id)
 {
-	return dvb_usb_device_init(intf,&nova_t_properties,THIS_MODULE);
+	return dvb_usb_device_init(intf,&nova_t_properties,THIS_MODULE,NULL);
 }
 
 /* do not change the order of the ID table */
diff -puN drivers/media/dvb/dvb-usb/umt-010.c~dvb-usb-core-change-dvb_usb_device_init-api drivers/media/dvb/dvb-usb/umt-010.c
--- devel/drivers/media/dvb/dvb-usb/umt-010.c~dvb-usb-core-change-dvb_usb_device_init-api	2005-09-04 16:51:39.000000000 -0700
+++ devel-akpm/drivers/media/dvb/dvb-usb/umt-010.c	2005-09-04 16:51:39.000000000 -0700
@@ -77,7 +77,7 @@ static struct dvb_usb_properties umt_pro
 static int umt_probe(struct usb_interface *intf,
 		const struct usb_device_id *id)
 {
-	if (dvb_usb_device_init(intf,&umt_properties,THIS_MODULE) == 0)
+	if (dvb_usb_device_init(intf,&umt_properties,THIS_MODULE,NULL) == 0)
 		return 0;
 	return -EINVAL;
 }
diff -puN drivers/media/dvb/dvb-usb/vp702x.c~dvb-usb-core-change-dvb_usb_device_init-api drivers/media/dvb/dvb-usb/vp702x.c
--- devel/drivers/media/dvb/dvb-usb/vp702x.c~dvb-usb-core-change-dvb_usb_device_init-api	2005-09-04 16:51:39.000000000 -0700
+++ devel-akpm/drivers/media/dvb/dvb-usb/vp702x.c	2005-09-04 16:51:39.000000000 -0700
@@ -197,7 +197,7 @@ static int vp702x_usb_probe(struct usb_i
 	usb_clear_halt(udev,usb_sndctrlpipe(udev,0));
 	usb_clear_halt(udev,usb_rcvctrlpipe(udev,0));
 
-	return dvb_usb_device_init(intf,&vp702x_properties,THIS_MODULE);
+	return dvb_usb_device_init(intf,&vp702x_properties,THIS_MODULE,NULL);
 }
 
 static struct usb_device_id vp702x_usb_table [] = {
diff -puN drivers/media/dvb/dvb-usb/vp7045.c~dvb-usb-core-change-dvb_usb_device_init-api drivers/media/dvb/dvb-usb/vp7045.c
--- devel/drivers/media/dvb/dvb-usb/vp7045.c~dvb-usb-core-change-dvb_usb_device_init-api	2005-09-04 16:51:39.000000000 -0700
+++ devel-akpm/drivers/media/dvb/dvb-usb/vp7045.c	2005-09-04 16:51:39.000000000 -0700
@@ -199,7 +199,7 @@ static struct dvb_usb_properties vp7045_
 static int vp7045_usb_probe(struct usb_interface *intf,
 		const struct usb_device_id *id)
 {
-	return dvb_usb_device_init(intf,&vp7045_properties,THIS_MODULE);
+	return dvb_usb_device_init(intf,&vp7045_properties,THIS_MODULE,NULL);
 }
 
 static struct usb_device_id vp7045_usb_table [] = {
_
