aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/dvb-usb/dvb_usb_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/dvb/dvb-usb/dvb_usb_init.c')
-rw-r--r--drivers/media/dvb/dvb-usb/dvb_usb_init.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/drivers/media/dvb/dvb-usb/dvb_usb_init.c b/drivers/media/dvb/dvb-usb/dvb_usb_init.c
index 9dcf4e525795..aa7caa5c4684 100644
--- a/drivers/media/dvb/dvb-usb/dvb_usb_init.c
+++ b/drivers/media/dvb/dvb-usb/dvb_usb_init.c
@@ -68,6 +68,37 @@ err:
68 return ret; 68 return ret;
69} 69}
70 70
71int dvb_usb_i2c_init(struct dvb_usb_device *d)
72{
73 int ret = 0;
74
75 if (!d->props.i2c_algo)
76 return 0;
77
78 strlcpy(d->i2c_adap.name, d->name, sizeof(d->i2c_adap.name));
79 d->i2c_adap.algo = d->props.i2c_algo;
80 d->i2c_adap.algo_data = NULL;
81 d->i2c_adap.dev.parent = &d->udev->dev;
82
83 i2c_set_adapdata(&d->i2c_adap, d);
84
85 ret = i2c_add_adapter(&d->i2c_adap);
86 if (ret < 0)
87 pr_err("%s: could not add i2c adapter", KBUILD_MODNAME);
88
89 d->state |= DVB_USB_STATE_I2C;
90
91 return ret;
92}
93
94int dvb_usb_i2c_exit(struct dvb_usb_device *d)
95{
96 if (d->state & DVB_USB_STATE_I2C)
97 i2c_del_adapter(&d->i2c_adap);
98 d->state &= ~DVB_USB_STATE_I2C;
99 return 0;
100}
101
71static int dvb_usb_adapter_init(struct dvb_usb_device *d) 102static int dvb_usb_adapter_init(struct dvb_usb_device *d)
72{ 103{
73 struct dvb_usb_adapter *adap; 104 struct dvb_usb_adapter *adap;