summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux/drivers/media/dvb/dvb-core/dvb_i2c.c15
-rw-r--r--linux/drivers/media/dvb/dvb-core/dvb_i2c.h6
-rw-r--r--linux/drivers/media/dvb/frontends/alps_tdlb7.c8
-rw-r--r--linux/drivers/media/dvb/frontends/alps_tdmb7.c8
-rw-r--r--linux/drivers/media/dvb/frontends/at76c651.c8
-rw-r--r--linux/drivers/media/dvb/frontends/cx24110.c8
-rw-r--r--linux/drivers/media/dvb/frontends/dvb_dummy_fe.c9
-rw-r--r--linux/drivers/media/dvb/frontends/grundig_29504-401.c7
-rw-r--r--linux/drivers/media/dvb/frontends/grundig_29504-491.c8
-rw-r--r--linux/drivers/media/dvb/frontends/mt312.c4
-rw-r--r--linux/drivers/media/dvb/frontends/nxt6000.c4
-rw-r--r--linux/drivers/media/dvb/frontends/sp887x.c8
-rw-r--r--linux/drivers/media/dvb/frontends/stv0299.c8
-rw-r--r--linux/drivers/media/dvb/frontends/tda1004x.c12
-rw-r--r--linux/drivers/media/dvb/frontends/ves1820.c20
-rw-r--r--linux/drivers/media/dvb/frontends/ves1x93.c4
-rw-r--r--linux/drivers/media/dvb/ttusb-dec/dec2000_frontend.c8
17 files changed, 61 insertions, 84 deletions
diff --git a/linux/drivers/media/dvb/dvb-core/dvb_i2c.c b/linux/drivers/media/dvb/dvb-core/dvb_i2c.c
index 0159d8d1c..7be068ac6 100644
--- a/linux/drivers/media/dvb/dvb-core/dvb_i2c.c
+++ b/linux/drivers/media/dvb/dvb-core/dvb_i2c.c
@@ -32,8 +32,9 @@
struct dvb_i2c_device {
struct list_head list_head;
struct module *owner;
- int (*attach) (struct dvb_i2c_bus *i2c);
- void (*detach) (struct dvb_i2c_bus *i2c);
+ int (*attach) (struct dvb_i2c_bus *i2c, void **data);
+ void (*detach) (struct dvb_i2c_bus *i2c, void *data);
+ void *data;
};
LIST_HEAD(dvb_i2c_buslist);
@@ -66,7 +67,7 @@ static void try_attach_device (struct dvb_i2c_bus *i2c, struct dvb_i2c_device *d
return;
}
- if (dev->attach (i2c) == 0) {
+ if (dev->attach (i2c, &dev->data) == 0) {
register_i2c_client (i2c, dev);
} else {
if (dev->owner)
@@ -77,7 +78,7 @@ static void try_attach_device (struct dvb_i2c_bus *i2c, struct dvb_i2c_device *d
static void detach_device (struct dvb_i2c_bus *i2c, struct dvb_i2c_device *dev)
{
- dev->detach (i2c);
+ dev->detach (i2c, dev->data);
if (dev->owner)
module_put (dev->owner);
@@ -229,8 +230,8 @@ void dvb_unregister_i2c_bus (int (*xfer) (struct dvb_i2c_bus *i2c,
int dvb_register_i2c_device (struct module *owner,
- int (*attach) (struct dvb_i2c_bus *i2c),
- void (*detach) (struct dvb_i2c_bus *i2c))
+ int (*attach) (struct dvb_i2c_bus *i2c, void **data),
+ void (*detach) (struct dvb_i2c_bus *i2c, void *data))
{
struct dvb_i2c_device *entry;
@@ -256,7 +257,7 @@ int dvb_register_i2c_device (struct module *owner,
}
-int dvb_unregister_i2c_device (int (*attach) (struct dvb_i2c_bus *i2c))
+int dvb_unregister_i2c_device (int (*attach) (struct dvb_i2c_bus *i2c, void **data))
{
struct list_head *entry, *n;
diff --git a/linux/drivers/media/dvb/dvb-core/dvb_i2c.h b/linux/drivers/media/dvb/dvb-core/dvb_i2c.h
index 1df192448..3e9cb6870 100644
--- a/linux/drivers/media/dvb/dvb-core/dvb_i2c.h
+++ b/linux/drivers/media/dvb/dvb-core/dvb_i2c.h
@@ -54,10 +54,10 @@ void dvb_unregister_i2c_bus (int (*xfer) (struct dvb_i2c_bus *i2c,
extern int dvb_register_i2c_device (struct module *owner,
- int (*attach) (struct dvb_i2c_bus *i2c),
- void (*detach) (struct dvb_i2c_bus *i2c));
+ int (*attach) (struct dvb_i2c_bus *i2c, void **data),
+ void (*detach) (struct dvb_i2c_bus *i2c, void *data));
-extern int dvb_unregister_i2c_device (int (*attach) (struct dvb_i2c_bus *i2c));
+extern int dvb_unregister_i2c_device (int (*attach) (struct dvb_i2c_bus *i2c, void **data));
#endif
diff --git a/linux/drivers/media/dvb/frontends/alps_tdlb7.c b/linux/drivers/media/dvb/frontends/alps_tdlb7.c
index c96122e27..847567abd 100644
--- a/linux/drivers/media/dvb/frontends/alps_tdlb7.c
+++ b/linux/drivers/media/dvb/frontends/alps_tdlb7.c
@@ -661,7 +661,7 @@ static int tdlb7_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg)
}
-static int tdlb7_attach (struct dvb_i2c_bus *i2c)
+static int tdlb7_attach (struct dvb_i2c_bus *i2c, void **data)
{
struct i2c_msg msg = { addr: 0x71, flags: 0, buf: NULL, len: 0 };
@@ -672,13 +672,11 @@ static int tdlb7_attach (struct dvb_i2c_bus *i2c)
sp8870_firmware_upload(i2c);
- dvb_register_frontend (tdlb7_ioctl, i2c, NULL, &tdlb7_info);
-
- return 0;
+ return dvb_register_frontend (tdlb7_ioctl, i2c, NULL, &tdlb7_info);
}
-static void tdlb7_detach (struct dvb_i2c_bus *i2c)
+static void tdlb7_detach (struct dvb_i2c_bus *i2c, void *data)
{
dprintk ("%s\n", __FUNCTION__);
diff --git a/linux/drivers/media/dvb/frontends/alps_tdmb7.c b/linux/drivers/media/dvb/frontends/alps_tdmb7.c
index 175feeb48..749de1aad 100644
--- a/linux/drivers/media/dvb/frontends/alps_tdmb7.c
+++ b/linux/drivers/media/dvb/frontends/alps_tdmb7.c
@@ -402,7 +402,7 @@ static int tdmb7_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg)
-static int tdmb7_attach (struct dvb_i2c_bus *i2c)
+static int tdmb7_attach (struct dvb_i2c_bus *i2c, void **data)
{
struct i2c_msg msg = { .addr = 0x43, .flags = 0, .buf = NULL,. len = 0 };
@@ -411,13 +411,11 @@ static int tdmb7_attach (struct dvb_i2c_bus *i2c)
if (i2c->xfer (i2c, &msg, 1) != 1)
return -ENODEV;
- dvb_register_frontend (tdmb7_ioctl, i2c, NULL, &tdmb7_info);
-
- return 0;
+ return dvb_register_frontend (tdmb7_ioctl, i2c, NULL, &tdmb7_info);
}
-static void tdmb7_detach (struct dvb_i2c_bus *i2c)
+static void tdmb7_detach (struct dvb_i2c_bus *i2c, void *data)
{
dprintk ("%s\n", __FUNCTION__);
diff --git a/linux/drivers/media/dvb/frontends/at76c651.c b/linux/drivers/media/dvb/frontends/at76c651.c
index 60c22edae..5cdc60df4 100644
--- a/linux/drivers/media/dvb/frontends/at76c651.c
+++ b/linux/drivers/media/dvb/frontends/at76c651.c
@@ -470,7 +470,7 @@ static int at76c651_ioctl(struct dvb_frontend *fe, unsigned int cmd, void *arg)
}
-static int at76c651_attach(struct dvb_i2c_bus *i2c)
+static int at76c651_attach(struct dvb_i2c_bus *i2c, void **data)
{
if ( (at76c651_readreg(i2c, 0x0E) != 0x65) ||
( ( (at76c651_revision = at76c651_readreg(i2c, 0x0F)) & 0xFE) != 0x10) )
@@ -492,13 +492,11 @@ static int at76c651_attach(struct dvb_i2c_bus *i2c)
at76c651_set_defaults(i2c);
- dvb_register_frontend(at76c651_ioctl, i2c, NULL, &at76c651_info);
-
- return 0;
+ return dvb_register_frontend(at76c651_ioctl, i2c, NULL, &at76c651_info);
}
-static void at76c651_detach(struct dvb_i2c_bus *i2c)
+static void at76c651_detach(struct dvb_i2c_bus *i2c, void *data)
{
dvb_unregister_frontend(at76c651_ioctl, i2c);
diff --git a/linux/drivers/media/dvb/frontends/cx24110.c b/linux/drivers/media/dvb/frontends/cx24110.c
index fe7571e7e..303ada3cc 100644
--- a/linux/drivers/media/dvb/frontends/cx24110.c
+++ b/linux/drivers/media/dvb/frontends/cx24110.c
@@ -643,7 +643,7 @@ static int cx24110_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg)
}
-static int cx24110_attach (struct dvb_i2c_bus *i2c)
+static int cx24110_attach (struct dvb_i2c_bus *i2c, void **data)
{
u8 sig;
@@ -651,13 +651,11 @@ static int cx24110_attach (struct dvb_i2c_bus *i2c)
if ( sig != 0x5a && sig != 0x69 )
return -ENODEV;
- dvb_register_frontend (cx24110_ioctl, i2c, NULL, &cx24110_info);
-
- return 0;
+ return dvb_register_frontend (cx24110_ioctl, i2c, NULL, &cx24110_info);
}
-static void cx24110_detach (struct dvb_i2c_bus *i2c)
+static void cx24110_detach (struct dvb_i2c_bus *i2c, void *data)
{
dvb_unregister_frontend (cx24110_ioctl, i2c);
}
diff --git a/linux/drivers/media/dvb/frontends/dvb_dummy_fe.c b/linux/drivers/media/dvb/frontends/dvb_dummy_fe.c
index 6966f8542..132df2ddc 100644
--- a/linux/drivers/media/dvb/frontends/dvb_dummy_fe.c
+++ b/linux/drivers/media/dvb/frontends/dvb_dummy_fe.c
@@ -173,14 +173,13 @@ static int dvbdummyfe_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *ar
}
-static int dvbdummyfe_attach (struct dvb_i2c_bus *i2c)
+static int dvbdummyfe_attach (struct dvb_i2c_bus *i2c, void **data)
{
- dvb_register_frontend (dvbdummyfe_ioctl, i2c, NULL, frontend_info());
- return 0;
+ return dvb_register_frontend (dvbdummyfe_ioctl, i2c, NULL, frontend_info());
}
-static void dvbdummyfe_detach (struct dvb_i2c_bus *i2c)
+static void dvbdummyfe_detach (struct dvb_i2c_bus *i2c, void *data)
{
dvb_unregister_frontend (dvbdummyfe_ioctl, i2c);
}
@@ -191,14 +190,12 @@ static int __init init_dvbdummyfe (void)
return dvb_register_i2c_device (THIS_MODULE,
dvbdummyfe_attach,
dvbdummyfe_detach);
- return 0;
}
static void __exit exit_dvbdummyfe (void)
{
dvb_unregister_i2c_device (dvbdummyfe_attach);
- return;
}
diff --git a/linux/drivers/media/dvb/frontends/grundig_29504-401.c b/linux/drivers/media/dvb/frontends/grundig_29504-401.c
index 5f64b10ae..c043b9251 100644
--- a/linux/drivers/media/dvb/frontends/grundig_29504-401.c
+++ b/linux/drivers/media/dvb/frontends/grundig_29504-401.c
@@ -416,7 +416,7 @@ int grundig_29504_401_ioctl (struct dvb_frontend *fe,
}
-static int l64781_attach (struct dvb_i2c_bus *i2c)
+static int l64781_attach (struct dvb_i2c_bus *i2c, void **data)
{
u8 reg0x3e;
u8 b0 [] = { 0x1a };
@@ -466,9 +466,8 @@ static int l64781_attach (struct dvb_i2c_bus *i2c)
goto bailout;
}
- dvb_register_frontend (grundig_29504_401_ioctl, i2c, NULL,
+ return dvb_register_frontend (grundig_29504_401_ioctl, i2c, NULL,
&grundig_29504_401_info);
- return 0;
bailout:
l64781_writereg (i2c, 0x3e, reg0x3e); /* restore reg 0x3e */
@@ -477,7 +476,7 @@ static int l64781_attach (struct dvb_i2c_bus *i2c)
-static void l64781_detach (struct dvb_i2c_bus *i2c)
+static void l64781_detach (struct dvb_i2c_bus *i2c, void *data)
{
dvb_unregister_frontend (grundig_29504_401_ioctl, i2c);
}
diff --git a/linux/drivers/media/dvb/frontends/grundig_29504-491.c b/linux/drivers/media/dvb/frontends/grundig_29504-491.c
index c15636317..a70c769bf 100644
--- a/linux/drivers/media/dvb/frontends/grundig_29504-491.c
+++ b/linux/drivers/media/dvb/frontends/grundig_29504-491.c
@@ -433,19 +433,17 @@ static int grundig_29504_491_ioctl (struct dvb_frontend *fe, unsigned int cmd,
}
-static int tda8083_attach (struct dvb_i2c_bus *i2c)
+static int tda8083_attach (struct dvb_i2c_bus *i2c, void **data)
{
if ((tda8083_readreg (i2c, 0x00)) != 0x05)
return -ENODEV;
- dvb_register_frontend (grundig_29504_491_ioctl, i2c, NULL,
+ return dvb_register_frontend (grundig_29504_491_ioctl, i2c, NULL,
&grundig_29504_491_info);
-
- return 0;
}
-static void tda8083_detach (struct dvb_i2c_bus *i2c)
+static void tda8083_detach (struct dvb_i2c_bus *i2c, void *data)
{
dvb_unregister_frontend (grundig_29504_491_ioctl, i2c);
}
diff --git a/linux/drivers/media/dvb/frontends/mt312.c b/linux/drivers/media/dvb/frontends/mt312.c
index 5318eb260..b94adc4e3 100644
--- a/linux/drivers/media/dvb/frontends/mt312.c
+++ b/linux/drivers/media/dvb/frontends/mt312.c
@@ -714,7 +714,7 @@ static int mt312_ioctl(struct dvb_frontend *fe, unsigned int cmd, void *arg)
return 0;
}
-static int mt312_attach(struct dvb_i2c_bus *i2c)
+static int mt312_attach(struct dvb_i2c_bus *i2c, void **data)
{
int ret;
u8 id;
@@ -734,7 +734,7 @@ static int mt312_attach(struct dvb_i2c_bus *i2c)
return 0;
}
-static void mt312_detach(struct dvb_i2c_bus *i2c)
+static void mt312_detach(struct dvb_i2c_bus *i2c, void *data)
{
dvb_unregister_frontend(mt312_ioctl, i2c);
diff --git a/linux/drivers/media/dvb/frontends/nxt6000.c b/linux/drivers/media/dvb/frontends/nxt6000.c
index 93ca0c51c..711e19863 100644
--- a/linux/drivers/media/dvb/frontends/nxt6000.c
+++ b/linux/drivers/media/dvb/frontends/nxt6000.c
@@ -829,7 +829,7 @@ static int nxt6000_ioctl(struct dvb_frontend *fe, unsigned int cmd, void *arg)
static u8 demod_addr_tbl[] = {0x14, 0x18, 0x24, 0x28};
-static int nxt6000_attach(struct dvb_i2c_bus *i2c)
+static int nxt6000_attach(struct dvb_i2c_bus *i2c, void **data)
{
u8 addr_nr;
@@ -888,7 +888,7 @@ static int nxt6000_attach(struct dvb_i2c_bus *i2c)
}
-static void nxt6000_detach(struct dvb_i2c_bus *i2c)
+static void nxt6000_detach(struct dvb_i2c_bus *i2c, void *data)
{
dprintk("nxt6000: detach\n");
diff --git a/linux/drivers/media/dvb/frontends/sp887x.c b/linux/drivers/media/dvb/frontends/sp887x.c
index 8aec93860..57b24ebaa 100644
--- a/linux/drivers/media/dvb/frontends/sp887x.c
+++ b/linux/drivers/media/dvb/frontends/sp887x.c
@@ -561,7 +561,7 @@ int sp887x_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg)
static
-int sp887x_attach (struct dvb_i2c_bus *i2c)
+int sp887x_attach (struct dvb_i2c_bus *i2c, void **data)
{
struct i2c_msg msg = { addr: 0x70, flags: 0, buf: NULL, len: 0 };
@@ -570,14 +570,12 @@ int sp887x_attach (struct dvb_i2c_bus *i2c)
if (i2c->xfer (i2c, &msg, 1) != 1)
return -ENODEV;
- dvb_register_frontend (sp887x_ioctl, i2c, NULL, &sp887x_info);
-
- return 0;
+ return dvb_register_frontend (sp887x_ioctl, i2c, NULL, &sp887x_info);
}
static
-void sp887x_detach (struct dvb_i2c_bus *i2c)
+void sp887x_detach (struct dvb_i2c_bus *i2c, void *data)
{
dprintk ("%s\n", __FUNCTION__);
dvb_unregister_frontend (sp887x_ioctl, i2c);
diff --git a/linux/drivers/media/dvb/frontends/stv0299.c b/linux/drivers/media/dvb/frontends/stv0299.c
index d3384ba72..69ea355be 100644
--- a/linux/drivers/media/dvb/frontends/stv0299.c
+++ b/linux/drivers/media/dvb/frontends/stv0299.c
@@ -910,7 +910,7 @@ static long probe_tuner (struct dvb_i2c_bus *i2c)
}
-static int uni0299_attach (struct dvb_i2c_bus *i2c)
+static int uni0299_attach (struct dvb_i2c_bus *i2c, void **data)
{
long tuner_type;
u8 id;
@@ -928,14 +928,12 @@ static int uni0299_attach (struct dvb_i2c_bus *i2c)
if ((tuner_type = probe_tuner(i2c)) < 0)
return -ENODEV;
- dvb_register_frontend (uni0299_ioctl, i2c, (void*) tuner_type,
+ return dvb_register_frontend (uni0299_ioctl, i2c, (void*) tuner_type,
&uni0299_info);
-
- return 0;
}
-static void uni0299_detach (struct dvb_i2c_bus *i2c)
+static void uni0299_detach (struct dvb_i2c_bus *i2c, void *data)
{
dprintk ("%s\n", __FUNCTION__);
dvb_unregister_frontend (uni0299_ioctl, i2c);
diff --git a/linux/drivers/media/dvb/frontends/tda1004x.c b/linux/drivers/media/dvb/frontends/tda1004x.c
index 76c31def1..bdcda54df 100644
--- a/linux/drivers/media/dvb/frontends/tda1004x.c
+++ b/linux/drivers/media/dvb/frontends/tda1004x.c
@@ -1055,7 +1055,7 @@ static int tda1004x_ioctl(struct dvb_frontend *fe, unsigned int cmd, void *arg)
}
-static int tda1004x_attach(struct dvb_i2c_bus *i2c)
+static int tda1004x_attach(struct dvb_i2c_bus *i2c, void **data)
{
int tda1004x_address = -1;
int tuner_address = -1;
@@ -1113,17 +1113,15 @@ static int tda1004x_attach(struct dvb_i2c_bus *i2c)
// register
switch(tda_state.tda1004x_address) {
case TDA10045H_ADDRESS:
- dvb_register_frontend(tda1004x_ioctl, i2c, (void *)(*((u32*) &tda_state)), &tda10045h_info);
- break;
+ return dvb_register_frontend(tda1004x_ioctl, i2c, (void *)(*((u32*) &tda_state)), &tda10045h_info);
+ default:
+ return -ENODEV;
}
-
- // success
- return 0;
}
static
-void tda1004x_detach(struct dvb_i2c_bus *i2c)
+void tda1004x_detach(struct dvb_i2c_bus *i2c, void *data)
{
dprintk("%s\n", __FUNCTION__);
diff --git a/linux/drivers/media/dvb/frontends/ves1820.c b/linux/drivers/media/dvb/frontends/ves1820.c
index ac1ca02fd..bd31d1457 100644
--- a/linux/drivers/media/dvb/frontends/ves1820.c
+++ b/linux/drivers/media/dvb/frontends/ves1820.c
@@ -507,9 +507,9 @@ static long probe_demod_addr (struct dvb_i2c_bus *i2c)
}
-static int ves1820_attach (struct dvb_i2c_bus *i2c)
+static int ves1820_attach (struct dvb_i2c_bus *i2c, void **data)
{
- void *data = NULL;
+ void *priv = NULL;
long demod_addr;
long tuner_type;
@@ -522,21 +522,19 @@ static int ves1820_attach (struct dvb_i2c_bus *i2c)
if ((i2c->adapter->num < MAX_UNITS) && pwm[i2c->adapter->num] != -1) {
printk("DVB: VES1820(%d): pwm=0x%02x (user specified)\n",
i2c->adapter->num, pwm[i2c->adapter->num]);
- SET_PWM(data, pwm[i2c->adapter->num]);
+ SET_PWM(priv, pwm[i2c->adapter->num]);
}
else
- SET_PWM(data, read_pwm(i2c));
- SET_REG0(data, ves1820_inittab[0]);
- SET_TUNER(data, tuner_type);
- SET_DEMOD_ADDR(data, demod_addr);
+ SET_PWM(priv, read_pwm(i2c));
+ SET_REG0(priv, ves1820_inittab[0]);
+ SET_TUNER(priv, tuner_type);
+ SET_DEMOD_ADDR(priv, demod_addr);
- dvb_register_frontend (ves1820_ioctl, i2c, data, &ves1820_info);
-
- return 0;
+ return dvb_register_frontend (ves1820_ioctl, i2c, priv, &ves1820_info);
}
-static void ves1820_detach (struct dvb_i2c_bus *i2c)
+static void ves1820_detach (struct dvb_i2c_bus *i2c, void *data)
{
dvb_unregister_frontend (ves1820_ioctl, i2c);
}
diff --git a/linux/drivers/media/dvb/frontends/ves1x93.c b/linux/drivers/media/dvb/frontends/ves1x93.c
index 415d1cfaf..4d1f940ea 100644
--- a/linux/drivers/media/dvb/frontends/ves1x93.c
+++ b/linux/drivers/media/dvb/frontends/ves1x93.c
@@ -552,7 +552,7 @@ static int ves1x93_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg)
}
-static int ves1x93_attach (struct dvb_i2c_bus *i2c)
+static int ves1x93_attach (struct dvb_i2c_bus *i2c, void **data)
{
u8 identity = ves1x93_readreg(i2c, 0x1e);
@@ -575,7 +575,7 @@ static int ves1x93_attach (struct dvb_i2c_bus *i2c)
}
-static void ves1x93_detach (struct dvb_i2c_bus *i2c)
+static void ves1x93_detach (struct dvb_i2c_bus *i2c, void *data)
{
dvb_unregister_frontend (ves1x93_ioctl, i2c);
}
diff --git a/linux/drivers/media/dvb/ttusb-dec/dec2000_frontend.c b/linux/drivers/media/dvb/ttusb-dec/dec2000_frontend.c
index 2d8dba7eb..b1bce427b 100644
--- a/linux/drivers/media/dvb/ttusb-dec/dec2000_frontend.c
+++ b/linux/drivers/media/dvb/ttusb-dec/dec2000_frontend.c
@@ -140,17 +140,15 @@ static int dec2000_frontend_ioctl(struct dvb_frontend *fe, unsigned int cmd,
return 0;
}
-static int dec2000_frontend_attach(struct dvb_i2c_bus *i2c)
+static int dec2000_frontend_attach(struct dvb_i2c_bus *i2c, void **data)
{
dprintk("%s\n", __FUNCTION__);
- dvb_register_frontend(dec2000_frontend_ioctl, i2c, NULL,
+ return dvb_register_frontend(dec2000_frontend_ioctl, i2c, NULL,
&dec2000_frontend_info);
-
- return 0;
}
-static void dec2000_frontend_detach(struct dvb_i2c_bus *i2c)
+static void dec2000_frontend_detach(struct dvb_i2c_bus *i2c, void *data)
{
dprintk("%s\n", __FUNCTION__);