diff options
Diffstat (limited to 'drivers/hwmon/w83781d.c')
-rw-r--r-- | drivers/hwmon/w83781d.c | 29 |
1 files changed, 5 insertions, 24 deletions
diff --git a/drivers/hwmon/w83781d.c b/drivers/hwmon/w83781d.c index d38b9ede3abd..8d4d1acbf650 100644 --- a/drivers/hwmon/w83781d.c +++ b/drivers/hwmon/w83781d.c | |||
@@ -28,7 +28,6 @@ | |||
28 | as99127f 7 3 0 3 0x31 0x12c3 yes no | 28 | as99127f 7 3 0 3 0x31 0x12c3 yes no |
29 | as99127f rev.2 (type_name = as99127f) 0x31 0x5ca3 yes no | 29 | as99127f rev.2 (type_name = as99127f) 0x31 0x5ca3 yes no |
30 | w83781d 7 3 0 3 0x10-1 0x5ca3 yes yes | 30 | w83781d 7 3 0 3 0x10-1 0x5ca3 yes yes |
31 | w83627hf 9 3 2 3 0x21 0x5ca3 yes yes(LPC) | ||
32 | w83782d 9 3 2-4 3 0x30 0x5ca3 yes yes | 31 | w83782d 9 3 2-4 3 0x30 0x5ca3 yes yes |
33 | w83783s 5-6 3 2 1-2 0x40 0x5ca3 yes no | 32 | w83783s 5-6 3 2 1-2 0x40 0x5ca3 yes no |
34 | 33 | ||
@@ -59,7 +58,7 @@ static unsigned short normal_i2c[] = { 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, | |||
59 | static unsigned short isa_address = 0x290; | 58 | static unsigned short isa_address = 0x290; |
60 | 59 | ||
61 | /* Insmod parameters */ | 60 | /* Insmod parameters */ |
62 | I2C_CLIENT_INSMOD_5(w83781d, w83782d, w83783s, w83627hf, as99127f); | 61 | I2C_CLIENT_INSMOD_4(w83781d, w83782d, w83783s, as99127f); |
63 | I2C_CLIENT_MODULE_PARM(force_subclients, "List of subclient addresses: " | 62 | I2C_CLIENT_MODULE_PARM(force_subclients, "List of subclient addresses: " |
64 | "{bus, clientaddr, subclientaddr1, subclientaddr2}"); | 63 | "{bus, clientaddr, subclientaddr1, subclientaddr2}"); |
65 | 64 | ||
@@ -113,7 +112,7 @@ MODULE_PARM_DESC(init, "Set to zero to bypass chip initialization"); | |||
113 | #define W83781D_REG_ALARM1 0x41 | 112 | #define W83781D_REG_ALARM1 0x41 |
114 | #define W83781D_REG_ALARM2 0x42 | 113 | #define W83781D_REG_ALARM2 0x42 |
115 | 114 | ||
116 | /* Real-time status (W83782D, W83783S, W83627HF) */ | 115 | /* Real-time status (W83782D, W83783S) */ |
117 | #define W83782D_REG_ALARM1 0x459 | 116 | #define W83782D_REG_ALARM1 0x459 |
118 | #define W83782D_REG_ALARM2 0x45A | 117 | #define W83782D_REG_ALARM2 0x45A |
119 | #define W83782D_REG_ALARM3 0x45B | 118 | #define W83782D_REG_ALARM3 0x45B |
@@ -962,8 +961,6 @@ w83781d_detect_subclients(struct i2c_adapter *adapter, int address, int kind, | |||
962 | client_name = "w83782d subclient"; | 961 | client_name = "w83782d subclient"; |
963 | else if (kind == w83783s) | 962 | else if (kind == w83783s) |
964 | client_name = "w83783s subclient"; | 963 | client_name = "w83783s subclient"; |
965 | else if (kind == w83627hf) | ||
966 | client_name = "w83627hf subclient"; | ||
967 | else if (kind == as99127f) | 964 | else if (kind == as99127f) |
968 | client_name = "as99127f subclient"; | 965 | client_name = "as99127f subclient"; |
969 | 966 | ||
@@ -1267,8 +1264,6 @@ w83781d_detect(struct i2c_adapter *adapter, int address, int kind) | |||
1267 | kind = w83782d; | 1264 | kind = w83782d; |
1268 | else if (val1 == 0x40 && vendid == winbond && address == 0x2d) | 1265 | else if (val1 == 0x40 && vendid == winbond && address == 0x2d) |
1269 | kind = w83783s; | 1266 | kind = w83783s; |
1270 | else if (val1 == 0x21 && vendid == winbond) | ||
1271 | kind = w83627hf; | ||
1272 | else if (val1 == 0x31) | 1267 | else if (val1 == 0x31) |
1273 | kind = as99127f; | 1268 | kind = as99127f; |
1274 | else { | 1269 | else { |
@@ -1287,8 +1282,6 @@ w83781d_detect(struct i2c_adapter *adapter, int address, int kind) | |||
1287 | client_name = "w83782d"; | 1282 | client_name = "w83782d"; |
1288 | } else if (kind == w83783s) { | 1283 | } else if (kind == w83783s) { |
1289 | client_name = "w83783s"; | 1284 | client_name = "w83783s"; |
1290 | } else if (kind == w83627hf) { | ||
1291 | client_name = "w83627hf"; | ||
1292 | } else if (kind == as99127f) { | 1285 | } else if (kind == as99127f) { |
1293 | client_name = "as99127f"; | 1286 | client_name = "as99127f"; |
1294 | } | 1287 | } |
@@ -1395,10 +1388,6 @@ w83781d_isa_probe(struct platform_device *pdev) | |||
1395 | 1388 | ||
1396 | reg = w83781d_read_value(data, W83781D_REG_WCHIPID); | 1389 | reg = w83781d_read_value(data, W83781D_REG_WCHIPID); |
1397 | switch (reg) { | 1390 | switch (reg) { |
1398 | case 0x21: | ||
1399 | data->type = w83627hf; | ||
1400 | name = "w83627hf"; | ||
1401 | break; | ||
1402 | case 0x30: | 1391 | case 0x30: |
1403 | data->type = w83782d; | 1392 | data->type = w83782d; |
1404 | name = "w83782d"; | 1393 | name = "w83782d"; |
@@ -1598,11 +1587,6 @@ w83781d_init_device(struct device *dev) | |||
1598 | int type = data->type; | 1587 | int type = data->type; |
1599 | u8 tmp; | 1588 | u8 tmp; |
1600 | 1589 | ||
1601 | if (type == w83627hf) | ||
1602 | dev_info(dev, "The W83627HF chip is better supported by the " | ||
1603 | "w83627hf driver, support will be dropped from the " | ||
1604 | "w83781d driver soon\n"); | ||
1605 | |||
1606 | if (reset && type != as99127f) { /* this resets registers we don't have | 1590 | if (reset && type != as99127f) { /* this resets registers we don't have |
1607 | documentation for on the as99127f */ | 1591 | documentation for on the as99127f */ |
1608 | /* Resetting the chip has been the default for a long time, | 1592 | /* Resetting the chip has been the default for a long time, |
@@ -1716,8 +1700,7 @@ static struct w83781d_data *w83781d_update_device(struct device *dev) | |||
1716 | w83781d_read_value(data, W83781D_REG_IN_MIN(i)); | 1700 | w83781d_read_value(data, W83781D_REG_IN_MIN(i)); |
1717 | data->in_max[i] = | 1701 | data->in_max[i] = |
1718 | w83781d_read_value(data, W83781D_REG_IN_MAX(i)); | 1702 | w83781d_read_value(data, W83781D_REG_IN_MAX(i)); |
1719 | if ((data->type != w83782d) | 1703 | if ((data->type != w83782d) && (i == 6)) |
1720 | && (data->type != w83627hf) && (i == 6)) | ||
1721 | break; | 1704 | break; |
1722 | } | 1705 | } |
1723 | for (i = 0; i < 3; i++) { | 1706 | for (i = 0; i < 3; i++) { |
@@ -1775,7 +1758,7 @@ static struct w83781d_data *w83781d_update_device(struct device *dev) | |||
1775 | data->fan_div[1] |= (i >> 4) & 0x04; | 1758 | data->fan_div[1] |= (i >> 4) & 0x04; |
1776 | data->fan_div[2] |= (i >> 5) & 0x04; | 1759 | data->fan_div[2] |= (i >> 5) & 0x04; |
1777 | } | 1760 | } |
1778 | if ((data->type == w83782d) || (data->type == w83627hf)) { | 1761 | if (data->type == w83782d) { |
1779 | data->alarms = w83781d_read_value(data, | 1762 | data->alarms = w83781d_read_value(data, |
1780 | W83782D_REG_ALARM1) | 1763 | W83782D_REG_ALARM1) |
1781 | | (w83781d_read_value(data, | 1764 | | (w83781d_read_value(data, |
@@ -1885,13 +1868,11 @@ w83781d_isa_found(unsigned short address) | |||
1885 | outb_p(W83781D_REG_WCHIPID, address + W83781D_ADDR_REG_OFFSET); | 1868 | outb_p(W83781D_REG_WCHIPID, address + W83781D_ADDR_REG_OFFSET); |
1886 | val = inb_p(address + W83781D_DATA_REG_OFFSET); | 1869 | val = inb_p(address + W83781D_DATA_REG_OFFSET); |
1887 | if ((val & 0xfe) == 0x10 /* W83781D */ | 1870 | if ((val & 0xfe) == 0x10 /* W83781D */ |
1888 | || val == 0x30 /* W83782D */ | 1871 | || val == 0x30) /* W83782D */ |
1889 | || val == 0x21) /* W83627HF */ | ||
1890 | found = 1; | 1872 | found = 1; |
1891 | 1873 | ||
1892 | if (found) | 1874 | if (found) |
1893 | pr_info("w83781d: Found a %s chip at %#x\n", | 1875 | pr_info("w83781d: Found a %s chip at %#x\n", |
1894 | val == 0x21 ? "W83627HF" : | ||
1895 | val == 0x30 ? "W83782D" : "W83781D", (int)address); | 1876 | val == 0x30 ? "W83782D" : "W83781D", (int)address); |
1896 | 1877 | ||
1897 | release: | 1878 | release: |