]>
Commit | Line | Data |
---|---|---|
776338e1 JS |
1 | /* dvb-usb-i2c.c is part of the DVB USB library. |
2 | * | |
99e44da7 | 3 | * Copyright (C) 2004-6 Patrick Boettcher (patrick.boettcher@posteo.de) |
776338e1 JS |
4 | * see dvb-usb-init.c for copyright information. |
5 | * | |
6 | * This file contains functions for (de-)initializing an I2C adapter. | |
7 | */ | |
8 | #include "dvb-usb-common.h" | |
9 | ||
10 | int dvb_usb_i2c_init(struct dvb_usb_device *d) | |
11 | { | |
12 | int ret = 0; | |
13 | ||
14 | if (!(d->props.caps & DVB_USB_IS_AN_I2C_ADAPTER)) | |
15 | return 0; | |
16 | ||
17 | if (d->props.i2c_algo == NULL) { | |
18 | err("no i2c algorithm specified"); | |
19 | return -EINVAL; | |
20 | } | |
21 | ||
bd0eb12f | 22 | strlcpy(d->i2c_adap.name, d->desc->name, sizeof(d->i2c_adap.name)); |
776338e1 JS |
23 | d->i2c_adap.algo = d->props.i2c_algo; |
24 | d->i2c_adap.algo_data = NULL; | |
12a917f6 | 25 | d->i2c_adap.dev.parent = &d->udev->dev; |
776338e1 JS |
26 | |
27 | i2c_set_adapdata(&d->i2c_adap, d); | |
28 | ||
29 | if ((ret = i2c_add_adapter(&d->i2c_adap)) < 0) | |
30 | err("could not add i2c adapter"); | |
31 | ||
32 | d->state |= DVB_USB_STATE_I2C; | |
33 | ||
34 | return ret; | |
35 | } | |
36 | ||
37 | int dvb_usb_i2c_exit(struct dvb_usb_device *d) | |
38 | { | |
39 | if (d->state & DVB_USB_STATE_I2C) | |
40 | i2c_del_adapter(&d->i2c_adap); | |
41 | d->state &= ~DVB_USB_STATE_I2C; | |
42 | return 0; | |
43 | } |