cxusb_set_i2c_path(d,PATH_CX22702); 
cxusb_gpio_tuner(d,0); 
static int cxusb_i2c_xfer(struct i2c_adapter *adap,struct i2c_msg msg[],int num){	struct dvb_usb_device *d = i2c_get_adapdata(adap);	int i;	if (down_interruptible(&d->i2c_sem) < 0)		return -EAGAIN;	if (num > 2)		warn("more than 2 i2c messages at a time is not handled yet. TODO.");	for (i = 0; i < num; i++) {		switch (msg[i].addr) {			case 0x63:				cxusb_set_i2c_path(d,PATH_CX22702);				break;			default:				cxusb_set_i2c_path(d,PATH_TUNER_OTHER);				break;		}		/* read request */		if (i+1 < num && (msg[i+1].flags & I2C_M_RD)) {			u8 obuf[3+msg[i].len], ibuf[1+msg[i+1].len];			obuf[0] = msg[i].len;			obuf[1] = msg[i+1].len;			obuf[2] = msg[i].addr;			memcpy(&obuf[3],msg[i].buf,msg[i].len);			if (cxusb_ctrl_msg(d, CMD_I2C_READ,						obuf, 3+msg[i].len,						ibuf, 1+msg[i+1].len) < 0)				break;			if (ibuf[0] != 0x08)				deb_info("i2c read could have been failed\n");			memcpy(msg[i+1].buf,&ibuf[1],msg[i+1].len);			i++;		} else { /* write */			u8 obuf[2+msg[i].len], ibuf;			obuf[0] = msg[i].addr;			obuf[1] = msg[i].len;			memcpy(&obuf[2],msg[i].buf,msg[i].len);			if (cxusb_ctrl_msg(d,CMD_I2C_WRITE, obuf, 2+msg[i].len, &ibuf,1) < 0)				break;			if (ibuf != 0x08)				deb_info("i2c write could have been failed\n");		}	}	up(&d->i2c_sem);	return i;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/e2efeab26b77061ba5418f4c98c3b3ed100fb608/cxusb.c/clean/drivers/media/dvb/dvb-usb/cxusb.c