diff --git a/kernel/chips/w83781d.c b/kernel/chips/w83781d.c index 496c7e05..8442bd35 100644 --- a/kernel/chips/w83781d.c +++ b/kernel/chips/w83781d.c @@ -729,12 +729,12 @@ int w83781d_detect(struct i2c_adapter *adapter, int address, val1 = w83781d_read_value(new_client, W83781D_REG_BANK); val2 = w83781d_read_value(new_client, W83781D_REG_CHIPMAN); /* Check for Winbond or Asus ID if in bank 0 */ - if (!(val1 & 0x07) && - ((!(val1 & 0x80) && (val2 != 0xa3) && (val2 != 0xc3)) + if ((!(val1 & 0x07)) && + (((!(val1 & 0x80)) && (val2 != 0xa3) && (val2 != 0xc3)) || ((val1 & 0x80) && (val2 != 0x5c) && (val2 != 0x12)))) goto ERROR1; /* If Winbond SMBus, check address at 0x48. Asus doesn't support */ - if ((!is_isa) && ((!(val1 & 0x80) && (val2 == 0xa3)) || + if ((!is_isa) && (((!(val1 & 0x80)) && (val2 == 0xa3)) || ((val1 & 0x80) && (val2 == 0x5c)))) { if (w83781d_read_value (new_client, W83781D_REG_I2C_ADDR) != address)