a90f933507
Detection class I2C_CLASS_TV_DIGITAL is set by many adapters but no I2C device driver is setting it anymore, which means it can be dropped. I2C devices on digital TV adapters are instantiated explicitly these days, which is much better. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
44 lines
1018 B
C
44 lines
1018 B
C
/* dvb-usb-i2c.c is part of the DVB USB library.
|
|
*
|
|
* Copyright (C) 2004-6 Patrick Boettcher (patrick.boettcher@desy.de)
|
|
* see dvb-usb-init.c for copyright information.
|
|
*
|
|
* This file contains functions for (de-)initializing an I2C adapter.
|
|
*/
|
|
#include "dvb-usb-common.h"
|
|
|
|
int dvb_usb_i2c_init(struct dvb_usb_device *d)
|
|
{
|
|
int ret = 0;
|
|
|
|
if (!(d->props.caps & DVB_USB_IS_AN_I2C_ADAPTER))
|
|
return 0;
|
|
|
|
if (d->props.i2c_algo == NULL) {
|
|
err("no i2c algorithm specified");
|
|
return -EINVAL;
|
|
}
|
|
|
|
strlcpy(d->i2c_adap.name, d->desc->name, sizeof(d->i2c_adap.name));
|
|
d->i2c_adap.algo = d->props.i2c_algo;
|
|
d->i2c_adap.algo_data = NULL;
|
|
d->i2c_adap.dev.parent = &d->udev->dev;
|
|
|
|
i2c_set_adapdata(&d->i2c_adap, d);
|
|
|
|
if ((ret = i2c_add_adapter(&d->i2c_adap)) < 0)
|
|
err("could not add i2c adapter");
|
|
|
|
d->state |= DVB_USB_STATE_I2C;
|
|
|
|
return ret;
|
|
}
|
|
|
|
int dvb_usb_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;
|
|
}
|