aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon/w83781d.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hwmon/w83781d.c')
-rw-r--r--drivers/hwmon/w83781d.c29
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,
59static unsigned short isa_address = 0x290; 58static unsigned short isa_address = 0x290;
60 59
61/* Insmod parameters */ 60/* Insmod parameters */
62I2C_CLIENT_INSMOD_5(w83781d, w83782d, w83783s, w83627hf, as99127f); 61I2C_CLIENT_INSMOD_4(w83781d, w83782d, w83783s, as99127f);
63I2C_CLIENT_MODULE_PARM(force_subclients, "List of subclient addresses: " 62I2C_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: