@ -74,8 +74,9 @@ static const unsigned short normal_i2c[] = {
# define TT_OFF 0
# define TT_ON 1
# define TT_MASK 7
# define MANUFACTURER_ID 0x01
# define DEFAULT_REVISION 0xA4
# define NATSEMI_MAN_ID 0x01
# define LM95231_CHIP_ID 0xA1
# define LM95241_CHIP_ID 0xA4
static const u8 lm95241_reg_address [ ] = {
LM95241_REG_R_LOCAL_TEMPH ,
@ -338,20 +339,25 @@ static int lm95241_detect(struct i2c_client *new_client,
struct i2c_board_info * info )
{
struct i2c_adapter * adapter = new_client - > adapter ;
int address = new_client - > addr ;
const char * name ;
int mfg_id , chip_id ;
if ( ! i2c_check_functionality ( adapter , I2C_FUNC_SMBUS_BYTE_DATA ) )
return - ENODEV ;
if ( ( i2c_smbus_read_byte_data ( new_client , LM95241_REG_R_MAN_ID )
= = MANUFACTURER_ID )
& & ( i2c_smbus_read_byte_data ( new_client , LM95241_REG_R_CHIP_ID )
= = DEFAULT_REVISION ) ) {
name = DEVNAME ;
} else {
dev_dbg ( & adapter - > dev , " LM95241 detection failed at 0x%02x \n " ,
address ) ;
mfg_id = i2c_smbus_read_byte_data ( new_client , LM95241_REG_R_MAN_ID ) ;
if ( mfg_id ! = NATSEMI_MAN_ID )
return - ENODEV ;
chip_id = i2c_smbus_read_byte_data ( new_client , LM95241_REG_R_CHIP_ID ) ;
switch ( chip_id ) {
case LM95231_CHIP_ID :
name = " lm95231 " ;
break ;
case LM95241_CHIP_ID :
name = " lm95241 " ;
break ;
default :
return - ENODEV ;
}
@ -431,7 +437,8 @@ static int lm95241_remove(struct i2c_client *client)
/* Driver data (common to all clients) */
static const struct i2c_device_id lm95241_id [ ] = {
{ DEVNAME , 0 } ,
{ " lm95231 " , 0 } ,
{ " lm95241 " , 0 } ,
{ }
} ;
MODULE_DEVICE_TABLE ( i2c , lm95241_id ) ;