if ((ret = flexcop_i2c_operation(fc,&r100,30)) != 0) return ret; 
if ((ret = flexcop_i2c_operation(fc,&r100)) != 0) { /* The Cablestar needs a different kind of i2c-transfer (does not * support "Repeat Start"): * wait for the ACK failure, * and do a subsequent read with the Bit 30 enabled */ r100.tw_sm_c_100.no_base_addr_ack_error = 1; if ((ret = flexcop_i2c_operation(fc,&r100)) != 0) { deb_i2c("no_base_addr read failed. %d\n",ret); return ret; } } 
static int flexcop_i2c_read4(struct flexcop_device *fc, flexcop_ibi_value r100, u8 *buf){	flexcop_ibi_value r104;	int len = r100.tw_sm_c_100.total_bytes, /* remember total_bytes is buflen-1 */		ret;	if ((ret = flexcop_i2c_operation(fc,&r100,30)) != 0)		return ret;	r104 = fc->read_ibi_reg(fc,tw_sm_c_104);	deb_i2c("read: r100: %08x, r104: %08x\n",r100.raw,r104.raw);	/* there is at least one byte, otherwise we wouldn't be here */	buf[0] = r100.tw_sm_c_100.data1_reg;	if (len > 0) buf[1] = r104.tw_sm_c_104.data2_reg;	if (len > 1) buf[2] = r104.tw_sm_c_104.data3_reg;	if (len > 2) buf[3] = r104.tw_sm_c_104.data4_reg;	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/bdc7800122da0b6b008aa9bdafc01e32b6a4576a/flexcop-i2c.c/clean/drivers/media/dvb/b2c2/flexcop-i2c.c