summaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/dvb-usb/dvb_usb_init.c
diff options
context:
space:
mode:
authorAntti Palosaari2012-06-10 02:37:11 +0200
committerMauro Carvalho Chehab2012-08-04 12:56:28 +0200
commit0fba999f13b7480278946be4b51db4a1035e7f4f (patch)
tree5b6c300e37883fd119d1a83b0b2948e22caa46cd /drivers/media/dvb/dvb-usb/dvb_usb_init.c
parent[media] af9015: use USB core soft_unbind (diff)
downloadkernel-qcow2-linux-0fba999f13b7480278946be4b51db4a1035e7f4f.tar.gz
kernel-qcow2-linux-0fba999f13b7480278946be4b51db4a1035e7f4f.tar.xz
kernel-qcow2-linux-0fba999f13b7480278946be4b51db4a1035e7f4f.zip
[media] dvb_usb_v2: I2C adapter cleanup changes
Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/dvb-usb/dvb_usb_init.c')
-rw-r--r--drivers/media/dvb/dvb-usb/dvb_usb_init.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/drivers/media/dvb/dvb-usb/dvb_usb_init.c b/drivers/media/dvb/dvb-usb/dvb_usb_init.c
index c98712a29133..5759d8e2f8ef 100644
--- a/drivers/media/dvb/dvb-usb/dvb_usb_init.c
+++ b/drivers/media/dvb/dvb-usb/dvb_usb_init.c
@@ -70,10 +70,12 @@ err:
int dvb_usbv2_i2c_init(struct dvb_usb_device *d)
{
- int ret = 0;
+ int ret;
- if (!d->props.i2c_algo)
- return 0;
+ if (!d->props.i2c_algo) {
+ ret = 0;
+ goto err;
+ }
strlcpy(d->i2c_adap.name, d->name, sizeof(d->i2c_adap.name));
d->i2c_adap.algo = d->props.i2c_algo;
@@ -83,11 +85,16 @@ int dvb_usbv2_i2c_init(struct dvb_usb_device *d)
i2c_set_adapdata(&d->i2c_adap, d);
ret = i2c_add_adapter(&d->i2c_adap);
- if (ret < 0)
- pr_err("%s: could not add i2c adapter\n", KBUILD_MODNAME);
+ if (ret < 0) {
+ pr_err("%s: i2c_add_adapter() failed\n", KBUILD_MODNAME);
+ goto err;
+ }
d->state |= DVB_USB_STATE_I2C;
+ return 0;
+err:
+ pr_debug("%s: failed=%d\n", __func__, ret);
return ret;
}
@@ -95,7 +102,9 @@ int dvb_usbv2_i2c_exit(struct dvb_usb_device *d)
{
if (d->state & DVB_USB_STATE_I2C)
i2c_del_adapter(&d->i2c_adap);
+
d->state &= ~DVB_USB_STATE_I2C;
+
return 0;
}