unsigned char write[3]; unsigned char read[2]; struct i2c_msg msgs[2] = { { client->addr, 0,        3, write }, { client->addr, I2C_M_RD, 2, read  } }; 
unsigned char write[3]; unsigned char read[2]; struct i2c_msg msgs[2] = { { client->addr, 0,        3, write }, { client->addr, I2C_M_RD, 2, read  } }; 
static int msp3400c_read(struct i2c_client *client, int dev, int addr){	int err,retval;        unsigned char write[3];        unsigned char read[2];        struct i2c_msg msgs[2] = {                { client->addr, 0,        3, write },                { client->addr, I2C_M_RD, 2, read  }        };        write[0] = dev+1;        write[1] = addr >> 8;        write[2] = addr & 0xff;	for (err = 0; err < 3;) {		if (2 == i2c_transfer(client->adapter,msgs,2))			break;		err++;		printk(KERN_WARNING		       "msp34xx: I/O error #%d (read 0x%02x/0x%02x)\n", err,		       dev, addr);		current->state = TASK_INTERRUPTIBLE;		schedule_timeout(msecs_to_jiffies(10));	}	if (3 == err) {		printk(KERN_WARNING		       "msp34xx: giving up, reseting chip. Sound will go off, sorry folks :-|\n");		msp3400c_reset(client);		return -1;	}	retval = read[0] << 8 | read[1];	dprintk_trace("trace: msp3400c_read(0x%x, 0x%x): 0x%x\n", dev, addr,		      retval);	return retval;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/4ac97914c6c35f6bf132071c718e034d0846b9f5/msp3400.c/clean/drivers/media/video/msp3400.c