Skip to content

Commit

Permalink
[media] dw2102: store i2c client for tuner into dw2102_state
Browse files Browse the repository at this point in the history
Prepare the dw2102 driver for tuner drivers that are implemented as I2C
drivers (such as m88ts2022). The I2C client is stored in to the state
and released at disconnect.

Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  • Loading branch information
trsqr authored and mchehab committed Apr 3, 2015
1 parent 2c4ffe2 commit 70769b2
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion drivers/media/usb/dvb-usb/dw2102.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@

struct dw2102_state {
u8 initialized;
struct i2c_client *i2c_client_tuner;
int (*old_set_voltage)(struct dvb_frontend *f, fe_sec_voltage_t v);
};

Expand Down Expand Up @@ -2138,10 +2139,26 @@ static int dw2102_probe(struct usb_interface *intf,
return -ENODEV;
}

static void dw2102_disconnect(struct usb_interface *intf)
{
struct dvb_usb_device *d = usb_get_intfdata(intf);
struct dw2102_state *st = (struct dw2102_state *)d->priv;
struct i2c_client *client;

/* remove I2C client for tuner */
client = st->i2c_client_tuner;
if (client) {
module_put(client->dev.driver->owner);
i2c_unregister_device(client);
}

dvb_usb_device_exit(intf);
}

static struct usb_driver dw2102_driver = {
.name = "dw2102",
.probe = dw2102_probe,
.disconnect = dvb_usb_device_exit,
.disconnect = dw2102_disconnect,
.id_table = dw2102_table,
};

Expand Down

0 comments on commit 70769b2

Please sign in to comment.