Commit 47dc3d68 authored by Patrick Boettcher's avatar Patrick Boettcher Committed by Linus Torvalds

[PATCH] dvb: usb: core: change dvb_usb_device_init() API

Change the init call to optionally return the new dvb_usb_device directly.
Signed-off-by: default avatarPatrick Boettcher <pb@linuxtv.org>
Signed-off-by: default avatarJohannes Stezenbach <js@linuxtv.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 62703b9d
...@@ -90,7 +90,7 @@ static struct dvb_usb_properties a800_properties; ...@@ -90,7 +90,7 @@ static struct dvb_usb_properties a800_properties;
static int a800_probe(struct usb_interface *intf, static int a800_probe(struct usb_interface *intf,
const struct usb_device_id *id) 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 */ /* do not change the order of the ID table */
......
...@@ -211,7 +211,7 @@ static struct dvb_usb_properties cxusb_properties; ...@@ -211,7 +211,7 @@ static struct dvb_usb_properties cxusb_properties;
static int cxusb_probe(struct usb_interface *intf, static int cxusb_probe(struct usb_interface *intf,
const struct usb_device_id *id) 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 [] = { static struct usb_device_id cxusb_table [] = {
......
...@@ -86,9 +86,9 @@ static struct dvb_usb_properties dibusb2_0b_properties; ...@@ -86,9 +86,9 @@ static struct dvb_usb_properties dibusb2_0b_properties;
static int dibusb_probe(struct usb_interface *intf, static int dibusb_probe(struct usb_interface *intf,
const struct usb_device_id *id) const struct usb_device_id *id)
{ {
if (dvb_usb_device_init(intf,&dibusb1_1_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) == 0 || dvb_usb_device_init(intf,&dibusb1_1_an2235_properties,THIS_MODULE,NULL) == 0 ||
dvb_usb_device_init(intf,&dibusb2_0b_properties,THIS_MODULE) == 0) dvb_usb_device_init(intf,&dibusb2_0b_properties,THIS_MODULE,NULL) == 0)
return 0; return 0;
return -EINVAL; return -EINVAL;
......
...@@ -20,7 +20,7 @@ static struct dvb_usb_properties dibusb_mc_properties; ...@@ -20,7 +20,7 @@ static struct dvb_usb_properties dibusb_mc_properties;
static int dibusb_mc_probe(struct usb_interface *intf, static int dibusb_mc_probe(struct usb_interface *intf,
const struct usb_device_id *id) 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 */ /* do not change the order of the ID table */
......
...@@ -173,7 +173,7 @@ static struct dvb_usb_properties digitv_properties; ...@@ -173,7 +173,7 @@ static struct dvb_usb_properties digitv_properties;
static int digitv_probe(struct usb_interface *intf, static int digitv_probe(struct usb_interface *intf,
const struct usb_device_id *id) 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 [] = { static struct usb_device_id digitv_table [] = {
......
...@@ -98,8 +98,8 @@ static struct dvb_usb_properties wt220u_properties; ...@@ -98,8 +98,8 @@ static struct dvb_usb_properties wt220u_properties;
static int dtt200u_usb_probe(struct usb_interface *intf, static int dtt200u_usb_probe(struct usb_interface *intf,
const struct usb_device_id *id) const struct usb_device_id *id)
{ {
if (dvb_usb_device_init(intf,&dtt200u_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) == 0) dvb_usb_device_init(intf,&wt220u_properties,THIS_MODULE,NULL) == 0)
return 0; return 0;
return -ENODEV; return -ENODEV;
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#define USB_VID_KWORLD 0xeb2a #define USB_VID_KWORLD 0xeb2a
#define USB_VID_KYE 0x0458 #define USB_VID_KYE 0x0458
#define USB_VID_MEDION 0x1660 #define USB_VID_MEDION 0x1660
#define USB_VID_PINNACLE 0x2304
#define USB_VID_VISIONPLUS 0x13d3 #define USB_VID_VISIONPLUS 0x13d3
#define USB_VID_TWINHAN 0x1822 #define USB_VID_TWINHAN 0x1822
#define USB_VID_ULTIMA_ELECTRONIC 0x05d8 #define USB_VID_ULTIMA_ELECTRONIC 0x05d8
...@@ -88,5 +89,7 @@ ...@@ -88,5 +89,7 @@
#define USB_PID_MEDION_MD95700 0x0932 #define USB_PID_MEDION_MD95700 0x0932
#define USB_PID_KYE_DVB_T_COLD 0x701e #define USB_PID_KYE_DVB_T_COLD 0x701e
#define USB_PID_KYE_DVB_T_WARM 0x701f #define USB_PID_KYE_DVB_T_WARM 0x701f
#define USB_PID_PCTV_200E 0x020e
#define USB_PID_PCTV_400E 0x020f
#endif #endif
...@@ -128,7 +128,9 @@ static struct dvb_usb_device_description * dvb_usb_find_device(struct usb_device ...@@ -128,7 +128,9 @@ static struct dvb_usb_device_description * dvb_usb_find_device(struct usb_device
/* /*
* USB * 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 usb_device *udev = interface_to_usbdev(intf);
struct dvb_usb_device *d = NULL; struct dvb_usb_device *d = NULL;
...@@ -170,6 +172,9 @@ int dvb_usb_device_init(struct usb_interface *intf, struct dvb_usb_properties *p ...@@ -170,6 +172,9 @@ int dvb_usb_device_init(struct usb_interface *intf, struct dvb_usb_properties *p
usb_set_intfdata(intf, d); usb_set_intfdata(intf, d);
if (du != NULL)
*du = d;
ret = dvb_usb_init(d); ret = dvb_usb_init(d);
} }
......
...@@ -127,7 +127,7 @@ struct dvb_usb_device; ...@@ -127,7 +127,7 @@ struct dvb_usb_device;
* helper functions. * helper functions.
* *
* @urb: describes the kind of USB transfer used for MPEG2-TS-streaming. * @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 * @num_device_descs: number of struct dvb_usb_device_description in @devices
* @devices: array of struct dvb_usb_device_description compatibles with these * @devices: array of struct dvb_usb_device_description compatibles with these
...@@ -310,7 +310,7 @@ struct dvb_usb_device { ...@@ -310,7 +310,7 @@ struct dvb_usb_device {
void *priv; 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 *); extern void dvb_usb_device_exit(struct usb_interface *);
/* the generic read/write method for device control */ /* the generic read/write method for device control */
......
...@@ -144,7 +144,7 @@ static struct dvb_usb_properties nova_t_properties; ...@@ -144,7 +144,7 @@ static struct dvb_usb_properties nova_t_properties;
static int nova_t_probe(struct usb_interface *intf, static int nova_t_probe(struct usb_interface *intf,
const struct usb_device_id *id) 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 */ /* do not change the order of the ID table */
......
...@@ -77,7 +77,7 @@ static struct dvb_usb_properties umt_properties; ...@@ -77,7 +77,7 @@ static struct dvb_usb_properties umt_properties;
static int umt_probe(struct usb_interface *intf, static int umt_probe(struct usb_interface *intf,
const struct usb_device_id *id) 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 0;
return -EINVAL; return -EINVAL;
} }
......
...@@ -197,7 +197,7 @@ static int vp702x_usb_probe(struct usb_interface *intf, ...@@ -197,7 +197,7 @@ static int vp702x_usb_probe(struct usb_interface *intf,
usb_clear_halt(udev,usb_sndctrlpipe(udev,0)); usb_clear_halt(udev,usb_sndctrlpipe(udev,0));
usb_clear_halt(udev,usb_rcvctrlpipe(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 [] = { static struct usb_device_id vp702x_usb_table [] = {
......
...@@ -199,7 +199,7 @@ static struct dvb_usb_properties vp7045_properties; ...@@ -199,7 +199,7 @@ static struct dvb_usb_properties vp7045_properties;
static int vp7045_usb_probe(struct usb_interface *intf, static int vp7045_usb_probe(struct usb_interface *intf,
const struct usb_device_id *id) 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 [] = { static struct usb_device_id vp7045_usb_table [] = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment