data->temp_input2 = i2c_smbus_read_byte_data(client, LM90_REG_R_REMOTE_TEMPL); 
data->temp11[0] = i2c_smbus_read_byte_data(client, LM90_REG_R_REMOTE_TEMPL); 
static struct lm90_data *lm90_update_device(struct device *dev){	struct i2c_client *client = to_i2c_client(dev);	struct lm90_data *data = i2c_get_clientdata(client);	down(&data->update_lock);	if (time_after(jiffies, data->last_updated + HZ * 2) || !data->valid) {		u8 oldh, newh;		dev_dbg(&client->dev, "Updating lm90 data.\n");		data->temp_input1 = i2c_smbus_read_byte_data(client,				    LM90_REG_R_LOCAL_TEMP);		data->temp_high1 = i2c_smbus_read_byte_data(client,				   LM90_REG_R_LOCAL_HIGH);		data->temp_low1 = i2c_smbus_read_byte_data(client,				  LM90_REG_R_LOCAL_LOW);		data->temp_crit1 = i2c_smbus_read_byte_data(client,				   LM90_REG_R_LOCAL_CRIT);		data->temp_crit2 = i2c_smbus_read_byte_data(client,				   LM90_REG_R_REMOTE_CRIT);		data->temp_hyst = i2c_smbus_read_byte_data(client,				  LM90_REG_R_TCRIT_HYST);		/*		 * There is a trick here. We have to read two registers to		 * have the remote sensor temperature, but we have to beware		 * a conversion could occur inbetween the readings. The		 * datasheet says we should either use the one-shot		 * conversion register, which we don't want to do (disables		 * hardware monitoring) or monitor the busy bit, which is		 * impossible (we can't read the values and monitor that bit		 * at the exact same time). So the solution used here is to		 * read the high byte once, then the low byte, then the high		 * byte again. If the new high byte matches the old one,		 * then we have a valid reading. Else we have to read the low		 * byte again, and now we believe we have a correct reading.		 */		oldh = i2c_smbus_read_byte_data(client,		       LM90_REG_R_REMOTE_TEMPH);		data->temp_input2 = i2c_smbus_read_byte_data(client,				    LM90_REG_R_REMOTE_TEMPL);		newh = i2c_smbus_read_byte_data(client,		       LM90_REG_R_REMOTE_TEMPH);		if (newh != oldh) {			data->temp_input2 = i2c_smbus_read_byte_data(client,					    LM90_REG_R_REMOTE_TEMPL);#ifdef DEBUG			oldh = i2c_smbus_read_byte_data(client,			       LM90_REG_R_REMOTE_TEMPH);			/* oldh is actually newer */			if (newh != oldh)				dev_warn(&client->dev, "Remote temperature may be "					 "wrong.\n");#endif		}		data->temp_input2 |= (newh << 8);		data->temp_high2 = (i2c_smbus_read_byte_data(client,				   LM90_REG_R_REMOTE_HIGHH) << 8) +				   i2c_smbus_read_byte_data(client,				   LM90_REG_R_REMOTE_HIGHL);		data->temp_low2 = (i2c_smbus_read_byte_data(client,				  LM90_REG_R_REMOTE_LOWH) << 8) +				  i2c_smbus_read_byte_data(client,				  LM90_REG_R_REMOTE_LOWL);		data->alarms = i2c_smbus_read_byte_data(client,			       LM90_REG_R_STATUS);		data->last_updated = jiffies;		data->valid = 1;	}	up(&data->update_lock);	return data;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/30d7394b1a3df0e7cc145a543846109babd4d53b/lm90.c/buggy/drivers/i2c/chips/lm90.c