[PATCH] [media] dvb-usb: allow early initialization of usb device priv data

From: Mauro Carvalho Chehab
Date: Tue Nov 08 2016 - 15:04:24 EST


On some drivers, we need to initialize a mutex before calling
power control or firmware download routines. Add an extra
parameter to allow it.

Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx>

diff --git a/drivers/media/usb/dvb-usb/a800.c b/drivers/media/usb/dvb-usb/a800.c
index 7ba975bea96a..1e14f79aa57a 100644
--- a/drivers/media/usb/dvb-usb/a800.c
+++ b/drivers/media/usb/dvb-usb/a800.c
@@ -107,7 +107,7 @@ static int a800_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{
return dvb_usb_device_init(intf, &a800_properties,
- THIS_MODULE, NULL, adapter_nr);
+ THIS_MODULE, NULL, adapter_nr, NULL);
}

/* do not change the order of the ID table */
diff --git a/drivers/media/usb/dvb-usb/af9005.c b/drivers/media/usb/dvb-usb/af9005.c
index b257780fb380..1625b4714d83 100644
--- a/drivers/media/usb/dvb-usb/af9005.c
+++ b/drivers/media/usb/dvb-usb/af9005.c
@@ -1009,7 +1009,7 @@ static int af9005_usb_probe(struct usb_interface *intf,
int ret;

ret = dvb_usb_device_init(intf, &af9005_properties,
- THIS_MODULE, &d, adapter_nr);
+ THIS_MODULE, &d, adapter_nr, NULL);

if (ret < 0)
return ret;
diff --git a/drivers/media/usb/dvb-usb/az6027.c b/drivers/media/usb/dvb-usb/az6027.c
index 2e711362847e..e8f73a96efd9 100644
--- a/drivers/media/usb/dvb-usb/az6027.c
+++ b/drivers/media/usb/dvb-usb/az6027.c
@@ -946,7 +946,7 @@ static int az6027_usb_probe(struct usb_interface *intf,
&az6027_properties,
THIS_MODULE,
NULL,
- adapter_nr);
+ adapter_nr, NULL);
}

/* I2C */
diff --git a/drivers/media/usb/dvb-usb/cinergyT2-core.c b/drivers/media/usb/dvb-usb/cinergyT2-core.c
index 8ac825413d5a..2aa99c52e39d 100644
--- a/drivers/media/usb/dvb-usb/cinergyT2-core.c
+++ b/drivers/media/usb/dvb-usb/cinergyT2-core.c
@@ -206,24 +206,21 @@ static int cinergyt2_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
return ret;
}

-static int cinergyt2_usb_probe(struct usb_interface *intf,
- const struct usb_device_id *id)
+static int cinergyT2_init_mutex(struct dvb_usb_device *d)
{
- struct dvb_usb_device *d;
- struct cinergyt2_state *st;
- int ret;
-
- ret = dvb_usb_device_init(intf, &cinergyt2_properties,
- THIS_MODULE, &d, adapter_nr);
- if (ret < 0)
- return ret;
+ struct cinergyt2_state *st = d->priv;

- st = d->priv;
mutex_init(&st->data_mutex);
-
return 0;
}

+static int cinergyt2_usb_probe(struct usb_interface *intf,
+ const struct usb_device_id *id)
+{
+ return dvb_usb_device_init(intf, &cinergyt2_properties,
+ THIS_MODULE, NULL, adapter_nr,
+ cinergyT2_init_mutex);
+}

static struct usb_device_id cinergyt2_usb_table[] = {
{ USB_DEVICE(USB_VID_TERRATEC, 0x0038) },
diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c
index 39772812269d..73c1a8568b55 100644
--- a/drivers/media/usb/dvb-usb/cxusb.c
+++ b/drivers/media/usb/dvb-usb/cxusb.c
@@ -1465,33 +1465,33 @@ static int cxusb_probe(struct usb_interface *intf,
struct cxusb_state *st;

if (0 == dvb_usb_device_init(intf, &cxusb_medion_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &cxusb_bluebird_lgh064f_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &cxusb_bluebird_dee1601_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &cxusb_bluebird_lgz201_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &cxusb_bluebird_dtt7579_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &cxusb_bluebird_dualdig4_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &cxusb_bluebird_nano2_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf,
&cxusb_bluebird_nano2_needsfirmware_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &cxusb_aver_a868r_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf,
&cxusb_bluebird_dualdig4_rev2_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &cxusb_d680_dmb_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &cxusb_mygica_d689_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &cxusb_mygica_t230_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0) {
st = d->priv;
mutex_init(&st->data_mutex);
diff --git a/drivers/media/usb/dvb-usb/dib0700_core.c b/drivers/media/usb/dvb-usb/dib0700_core.c
index 92d5408684ac..3423b56c92b3 100644
--- a/drivers/media/usb/dvb-usb/dib0700_core.c
+++ b/drivers/media/usb/dvb-usb/dib0700_core.c
@@ -871,7 +871,7 @@ static int dib0700_probe(struct usb_interface *intf,

for (i = 0; i < dib0700_device_count; i++)
if (dvb_usb_device_init(intf, &dib0700_devices[i], THIS_MODULE,
- &dev, adapter_nr) == 0) {
+ &dev, adapter_nr, NULL) == 0) {
struct dib0700_state *st = dev->priv;
u32 hwversion, romversion, fw_version, fwtype;

diff --git a/drivers/media/usb/dvb-usb/dibusb-mb.c b/drivers/media/usb/dvb-usb/dibusb-mb.c
index a0057641cc86..de4ffe81e8d7 100644
--- a/drivers/media/usb/dvb-usb/dibusb-mb.c
+++ b/drivers/media/usb/dvb-usb/dibusb-mb.c
@@ -111,13 +111,13 @@ static int dibusb_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{
if (0 == dvb_usb_device_init(intf, &dibusb1_1_properties,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &dibusb1_1_an2235_properties,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &dibusb2_0b_properties,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &artec_t1_usb2_properties,
- THIS_MODULE, NULL, adapter_nr))
+ THIS_MODULE, NULL, adapter_nr, NULL))
return 0;

return -EINVAL;
diff --git a/drivers/media/usb/dvb-usb/dibusb-mc.c b/drivers/media/usb/dvb-usb/dibusb-mc.c
index 08fb8a3f6e0c..d50731bb5372 100644
--- a/drivers/media/usb/dvb-usb/dibusb-mc.c
+++ b/drivers/media/usb/dvb-usb/dibusb-mc.c
@@ -23,7 +23,7 @@ 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,
- NULL, adapter_nr);
+ NULL, adapter_nr, NULL);
}

/* do not change the order of the ID table */
diff --git a/drivers/media/usb/dvb-usb/digitv.c b/drivers/media/usb/dvb-usb/digitv.c
index 4284f6984dc1..3dad2293e598 100644
--- a/drivers/media/usb/dvb-usb/digitv.c
+++ b/drivers/media/usb/dvb-usb/digitv.c
@@ -269,7 +269,7 @@ static int digitv_probe(struct usb_interface *intf,
{
struct dvb_usb_device *d;
int ret = dvb_usb_device_init(intf, &digitv_properties, THIS_MODULE, &d,
- adapter_nr);
+ adapter_nr, NULL);
if (ret == 0) {
u8 b[4] = { 0 };

diff --git a/drivers/media/usb/dvb-usb/dtt200u.c b/drivers/media/usb/dvb-usb/dtt200u.c
index f88572c7ae7c..3255fee31433 100644
--- a/drivers/media/usb/dvb-usb/dtt200u.c
+++ b/drivers/media/usb/dvb-usb/dtt200u.c
@@ -149,15 +149,15 @@ static int dtt200u_usb_probe(struct usb_interface *intf,
struct dtt200u_state *st;

if (0 == dvb_usb_device_init(intf, &dtt200u_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &wt220u_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &wt220u_fc_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &wt220u_zl0353_properties,
- THIS_MODULE, &d, adapter_nr) ||
+ THIS_MODULE, &d, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &wt220u_miglia_properties,
- THIS_MODULE, &d, adapter_nr)) {
+ THIS_MODULE, &d, adapter_nr, NULL)) {
st = d->priv;
mutex_init(&st->data_mutex);

diff --git a/drivers/media/usb/dvb-usb/dtv5100.c b/drivers/media/usb/dvb-usb/dtv5100.c
index c60fb54f445f..36b553cb3133 100644
--- a/drivers/media/usb/dvb-usb/dtv5100.c
+++ b/drivers/media/usb/dvb-usb/dtv5100.c
@@ -165,7 +165,7 @@ static int dtv5100_probe(struct usb_interface *intf,
}

ret = dvb_usb_device_init(intf, &dtv5100_properties,
- THIS_MODULE, NULL, adapter_nr);
+ THIS_MODULE, NULL, adapter_nr, NULL);
if (ret)
return ret;

diff --git a/drivers/media/usb/dvb-usb/dvb-usb-init.c b/drivers/media/usb/dvb-usb/dvb-usb-init.c
index 3896ba9a4179..66493fb25645 100644
--- a/drivers/media/usb/dvb-usb/dvb-usb-init.c
+++ b/drivers/media/usb/dvb-usb/dvb-usb-init.c
@@ -138,23 +138,14 @@ static int dvb_usb_exit(struct dvb_usb_device *d)
return 0;
}

-static int dvb_usb_init(struct dvb_usb_device *d, short *adapter_nums)
+static int dvb_usb_init(struct dvb_usb_device *d, short *adapter_nums,
+ int (init_device)(struct dvb_usb_device *d))
{
int ret = 0;

mutex_init(&d->usb_mutex);
mutex_init(&d->i2c_mutex);

- d->state = DVB_USB_STATE_INIT;
-
- if (d->props.size_of_priv > 0) {
- d->priv = kzalloc(d->props.size_of_priv, GFP_KERNEL);
- if (d->priv == NULL) {
- err("no memory for priv in 'struct dvb_usb_device'");
- return -ENOMEM;
- }
- }
-
/* check the capabilities and set appropriate variables */
dvb_usb_device_power_ctrl(d, 1);

@@ -233,7 +224,8 @@ int dvb_usb_device_power_ctrl(struct dvb_usb_device *d, int onoff)
int dvb_usb_device_init(struct usb_interface *intf,
struct dvb_usb_device_properties *props,
struct module *owner, struct dvb_usb_device **du,
- short *adapter_nums)
+ short *adapter_nums,
+ int (init_device)(struct dvb_usb_device *d))
{
struct usb_device *udev = interface_to_usbdev(intf);
struct dvb_usb_device *d = NULL;
@@ -249,19 +241,42 @@ int dvb_usb_device_init(struct usb_interface *intf,
return -ENODEV;
}

- if (cold) {
- info("found a '%s' in cold state, will try to load a firmware", desc->name);
- ret = dvb_usb_download_firmware(udev, props);
- if (!props->no_reconnect || ret != 0)
- return ret;
- }
-
- info("found a '%s' in warm state.", desc->name);
d = kzalloc(sizeof(struct dvb_usb_device), GFP_KERNEL);
if (d == NULL) {
err("no memory for 'struct dvb_usb_device'");
return -ENOMEM;
}
+ d->state = DVB_USB_STATE_INIT;
+
+ if (d->props.size_of_priv > 0) {
+ d->priv = kzalloc(d->props.size_of_priv, GFP_KERNEL);
+ if (d->priv == NULL) {
+ err("no memory for priv in 'struct dvb_usb_device'");
+ ret = -ENOMEM;
+ goto err;
+ }
+ }
+
+ /*
+ * Some drivers may need to early initialize the device private data,
+ * for example, when a mutex is serializing URB reads/writes,
+ * in order for dvb_usb_device_power_ctrl() or firmware load to work.
+ */
+ if (init_device) {
+ ret = init_device(d);
+ if (ret < 0)
+ goto err;
+ }
+
+ if (cold) {
+ info("found a '%s' in cold state, will try to load a firmware",
+ desc->name);
+ ret = dvb_usb_download_firmware(udev, props);
+ if (!props->no_reconnect || ret != 0)
+ goto err;
+ } else {
+ info("found a '%s' in warm state.", desc->name);
+ }

d->udev = udev;
memcpy(&d->props, props, sizeof(struct dvb_usb_device_properties));
@@ -273,12 +288,17 @@ int dvb_usb_device_init(struct usb_interface *intf,
if (du != NULL)
*du = d;

- ret = dvb_usb_init(d, adapter_nums);
+ ret = dvb_usb_init(d, adapter_nums, init_device);

- if (ret == 0)
+ if (!ret) {
info("%s successfully initialized and connected.", desc->name);
- else
- info("%s error while loading driver (%d)", desc->name, ret);
+ return 0;
+ }
+err:
+ info("%s error while loading driver (%d)", desc->name, ret);
+
+ kfree(d->priv);
+ kfree(d);
return ret;
}
EXPORT_SYMBOL(dvb_usb_device_init);
diff --git a/drivers/media/usb/dvb-usb/dvb-usb.h b/drivers/media/usb/dvb-usb/dvb-usb.h
index 1448c3d27ea2..02c4dd3c206a 100644
--- a/drivers/media/usb/dvb-usb/dvb-usb.h
+++ b/drivers/media/usb/dvb-usb/dvb-usb.h
@@ -458,7 +458,9 @@ struct dvb_usb_device {
extern int dvb_usb_device_init(struct usb_interface *,
struct dvb_usb_device_properties *,
struct module *, struct dvb_usb_device **,
- short *adapter_nums);
+ short *adapter_nums,
+ int (init_device)(struct dvb_usb_device *d));
+
extern void dvb_usb_device_exit(struct usb_interface *);

/* the generic read/write method for device control */
diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c
index 2c720cb2fb00..1cb8d96f485e 100644
--- a/drivers/media/usb/dvb-usb/dw2102.c
+++ b/drivers/media/usb/dvb-usb/dw2102.c
@@ -2284,27 +2284,27 @@ static int dw2102_probe(struct usb_interface *intf,
s421->adapter->fe[0].frontend_attach = m88rs2000_frontend_attach;

if (0 == dvb_usb_device_init(intf, &dw2102_properties,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &dw2104_properties,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &dw3101_properties,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &s6x0_properties,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, p1100,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, s660,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, p7500,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, s421,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &su3000_properties,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &t220_properties,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &tt_s2_4600_properties,
- THIS_MODULE, NULL, adapter_nr))
+ THIS_MODULE, NULL, adapter_nr, NULL))
return 0;

return -ENODEV;
diff --git a/drivers/media/usb/dvb-usb/friio.c b/drivers/media/usb/dvb-usb/friio.c
index 474a17e4db0c..3854ac7434ad 100644
--- a/drivers/media/usb/dvb-usb/friio.c
+++ b/drivers/media/usb/dvb-usb/friio.c
@@ -437,7 +437,7 @@ static int friio_probe(struct usb_interface *intf,
}

ret = dvb_usb_device_init(intf, &friio_properties,
- THIS_MODULE, &d, adapter_nr);
+ THIS_MODULE, &d, adapter_nr, NULL);
if (ret == 0)
friio_streaming_ctrl(&d->adapter[0], 1);

diff --git a/drivers/media/usb/dvb-usb/gp8psk.c b/drivers/media/usb/dvb-usb/gp8psk.c
index 2829e3082d15..cede0d8b0f8a 100644
--- a/drivers/media/usb/dvb-usb/gp8psk.c
+++ b/drivers/media/usb/dvb-usb/gp8psk.c
@@ -262,7 +262,7 @@ static int gp8psk_usb_probe(struct usb_interface *intf,
int ret;
struct usb_device *udev = interface_to_usbdev(intf);
ret = dvb_usb_device_init(intf, &gp8psk_properties,
- THIS_MODULE, NULL, adapter_nr);
+ THIS_MODULE, NULL, adapter_nr, NULL);
if (ret == 0) {
info("found Genpix USB device pID = %x (hex)",
le16_to_cpu(udev->descriptor.idProduct));
diff --git a/drivers/media/usb/dvb-usb/m920x.c b/drivers/media/usb/dvb-usb/m920x.c
index eafc5c82467f..b4c83f36abee 100644
--- a/drivers/media/usb/dvb-usb/m920x.c
+++ b/drivers/media/usb/dvb-usb/m920x.c
@@ -835,14 +835,14 @@ static int m920x_probe(struct usb_interface *intf,
*/

ret = dvb_usb_device_init(intf, &megasky_properties,
- THIS_MODULE, &d, adapter_nr);
+ THIS_MODULE, &d, adapter_nr, NULL);
if (ret == 0) {
rc_init_seq = megasky_rc_init;
goto found;
}

ret = dvb_usb_device_init(intf, &digivox_mini_ii_properties,
- THIS_MODULE, &d, adapter_nr);
+ THIS_MODULE, &d, adapter_nr, NULL);
if (ret == 0) {
/* No remote control, so no rc_init_seq */
goto found;
@@ -850,28 +850,28 @@ static int m920x_probe(struct usb_interface *intf,

/* This configures both tuners on the TV Walker Twin */
ret = dvb_usb_device_init(intf, &tvwalkertwin_properties,
- THIS_MODULE, &d, adapter_nr);
+ THIS_MODULE, &d, adapter_nr, NULL);
if (ret == 0) {
rc_init_seq = tvwalkertwin_rc_init;
goto found;
}

ret = dvb_usb_device_init(intf, &dposh_properties,
- THIS_MODULE, &d, adapter_nr);
+ THIS_MODULE, &d, adapter_nr, NULL);
if (ret == 0) {
/* Remote controller not supported yet. */
goto found;
}

ret = dvb_usb_device_init(intf, &pinnacle_pctv310e_properties,
- THIS_MODULE, &d, adapter_nr);
+ THIS_MODULE, &d, adapter_nr, NULL);
if (ret == 0) {
rc_init_seq = pinnacle310e_init;
goto found;
}

ret = dvb_usb_device_init(intf, &vp7049_properties,
- THIS_MODULE, &d, adapter_nr);
+ THIS_MODULE, &d, adapter_nr, NULL);
if (ret == 0) {
rc_init_seq = vp7049_rc_init;
goto found;
diff --git a/drivers/media/usb/dvb-usb/nova-t-usb2.c b/drivers/media/usb/dvb-usb/nova-t-usb2.c
index 1babd3341910..0d8f06430ca5 100644
--- a/drivers/media/usb/dvb-usb/nova-t-usb2.c
+++ b/drivers/media/usb/dvb-usb/nova-t-usb2.c
@@ -157,7 +157,7 @@ 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, NULL, adapter_nr);
+ THIS_MODULE, NULL, adapter_nr, NULL);
}

/* do not change the order of the ID table */
diff --git a/drivers/media/usb/dvb-usb/opera1.c b/drivers/media/usb/dvb-usb/opera1.c
index 2566d2f1c2ad..9f2f156e2939 100644
--- a/drivers/media/usb/dvb-usb/opera1.c
+++ b/drivers/media/usb/dvb-usb/opera1.c
@@ -563,7 +563,7 @@ static int opera1_probe(struct usb_interface *intf,
}

if (0 != dvb_usb_device_init(intf, &opera1_properties,
- THIS_MODULE, NULL, adapter_nr))
+ THIS_MODULE, NULL, adapter_nr, NULL))
return -EINVAL;
return 0;
}
diff --git a/drivers/media/usb/dvb-usb/pctv452e.c b/drivers/media/usb/dvb-usb/pctv452e.c
index 07fa08be9e99..2f844ff39840 100644
--- a/drivers/media/usb/dvb-usb/pctv452e.c
+++ b/drivers/media/usb/dvb-usb/pctv452e.c
@@ -1059,9 +1059,9 @@ static int pctv452e_usb_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{
if (0 == dvb_usb_device_init(intf, &pctv452e_properties,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &tt_connect_s2_3600_properties,
- THIS_MODULE, NULL, adapter_nr))
+ THIS_MODULE, NULL, adapter_nr, NULL))
return 0;

return -ENODEV;
diff --git a/drivers/media/usb/dvb-usb/technisat-usb2.c b/drivers/media/usb/dvb-usb/technisat-usb2.c
index 4706628a3ed5..80fc5043e4cf 100644
--- a/drivers/media/usb/dvb-usb/technisat-usb2.c
+++ b/drivers/media/usb/dvb-usb/technisat-usb2.c
@@ -765,7 +765,7 @@ static int technisat_usb2_probe(struct usb_interface *intf,
struct dvb_usb_device *dev;

if (dvb_usb_device_init(intf, &technisat_usb2_devices, THIS_MODULE,
- &dev, adapter_nr) != 0)
+ &dev, adapter_nr, NULL) != 0)
return -ENODEV;

if (dev) {
diff --git a/drivers/media/usb/dvb-usb/ttusb2.c b/drivers/media/usb/dvb-usb/ttusb2.c
index ecc207fbaf3c..192057ea58c0 100644
--- a/drivers/media/usb/dvb-usb/ttusb2.c
+++ b/drivers/media/usb/dvb-usb/ttusb2.c
@@ -604,11 +604,11 @@ static int ttusb2_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{
if (0 == dvb_usb_device_init(intf, &ttusb2_properties,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &ttusb2_properties_s2400,
- THIS_MODULE, NULL, adapter_nr) ||
+ THIS_MODULE, NULL, adapter_nr, NULL) ||
0 == dvb_usb_device_init(intf, &ttusb2_properties_ct3650,
- THIS_MODULE, NULL, adapter_nr))
+ THIS_MODULE, NULL, adapter_nr, NULL))
return 0;
return -ENODEV;
}
diff --git a/drivers/media/usb/dvb-usb/umt-010.c b/drivers/media/usb/dvb-usb/umt-010.c
index 58ad5b4f856c..9af8cca5f2d2 100644
--- a/drivers/media/usb/dvb-usb/umt-010.c
+++ b/drivers/media/usb/dvb-usb/umt-010.c
@@ -78,7 +78,7 @@ static int umt_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{
if (0 == dvb_usb_device_init(intf, &umt_properties,
- THIS_MODULE, NULL, adapter_nr))
+ THIS_MODULE, NULL, adapter_nr, NULL))
return 0;
return -EINVAL;
}
diff --git a/drivers/media/usb/dvb-usb/vp702x.c b/drivers/media/usb/dvb-usb/vp702x.c
index 40de33de90a7..e95a84e3f9de 100644
--- a/drivers/media/usb/dvb-usb/vp702x.c
+++ b/drivers/media/usb/dvb-usb/vp702x.c
@@ -337,7 +337,7 @@ static int vp702x_usb_probe(struct usb_interface *intf,
int ret;

ret = dvb_usb_device_init(intf, &vp702x_properties,
- THIS_MODULE, &d, adapter_nr);
+ THIS_MODULE, &d, adapter_nr, NULL);
if (ret)
goto out;

diff --git a/drivers/media/usb/dvb-usb/vp7045.c b/drivers/media/usb/dvb-usb/vp7045.c
index 13340af0d39c..350603bbe3da 100644
--- a/drivers/media/usb/dvb-usb/vp7045.c
+++ b/drivers/media/usb/dvb-usb/vp7045.c
@@ -225,7 +225,7 @@ 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, NULL, adapter_nr);
+ THIS_MODULE, NULL, adapter_nr, NULL);
}

static struct usb_device_id vp7045_usb_table [] = {