From 0fba999f13b7480278946be4b51db4a1035e7f4f Mon Sep 17 00:00:00 2001 From: Antti Palosaari Date: Sat, 9 Jun 2012 21:37:11 -0300 Subject: [PATCH] [media] dvb_usb_v2: I2C adapter cleanup changes Signed-off-by: Antti Palosaari Signed-off-by: Mauro Carvalho Chehab --- drivers/media/dvb/dvb-usb/dvb_usb_init.c | 19 ++++++++++++++----- 1 file 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; } -- 2.39.5