aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Paprocki <andrew@ishiboo.com>2008-08-06 16:41:06 -0400
committerJean Delvare <khali@mahadeva.delvare>2008-08-06 16:41:06 -0400
commit816d8c6a2580562698cf0fa0b9e5b4dd570e636e (patch)
tree6f2b41ba4e144a04315fe56cb50998e8cd3ae24d
parent0475169c13e177e1af5a02f5e9f30fda13dc0b86 (diff)
hwmon: (it87) Support for 16-bit fan reading in it8705 >= rev 0x03
The it8705 chip supports 16-bit fan tachometers in revisions at least >= 0x03 (Version G). This patch enables 16-bit fan readings on all revisions >= 0x03 just like the it8712, it8716, and it8718 chips. Signed-off-by: Andrew Paprocki <andrew@ishiboo.com> Signed-off-by: Jean Delvare <khali@linux-fr.org>
-rw-r--r--Documentation/hwmon/it876
-rw-r--r--drivers/hwmon/it87.c19
2 files changed, 15 insertions, 10 deletions
diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87
index d931525f3f37..3496b7020e7c 100644
--- a/Documentation/hwmon/it87
+++ b/Documentation/hwmon/it87
@@ -6,7 +6,7 @@ Supported chips:
6 Prefix: 'it87' 6 Prefix: 'it87'
7 Addresses scanned: from Super I/O config space (8 I/O ports) 7 Addresses scanned: from Super I/O config space (8 I/O ports)
8 Datasheet: Publicly available at the ITE website 8 Datasheet: Publicly available at the ITE website
9 http://www.ite.com.tw/ 9 http://www.ite.com.tw/product_info/file/pc/IT8705F_V.0.4.1.pdf
10 * IT8712F 10 * IT8712F
11 Prefix: 'it8712' 11 Prefix: 'it8712'
12 Addresses scanned: from Super I/O config space (8 I/O ports) 12 Addresses scanned: from Super I/O config space (8 I/O ports)
@@ -97,8 +97,8 @@ The IT8716F, IT8718F and later IT8712F revisions have support for
97The IT8716F and IT8718F, and late IT8712F and IT8705F also have optional 97The IT8716F and IT8718F, and late IT8712F and IT8705F also have optional
9816-bit tachometer counters for fans 1 to 3. This is better (no more fan 9816-bit tachometer counters for fans 1 to 3. This is better (no more fan
99clock divider mess) but not compatible with the older chips and 99clock divider mess) but not compatible with the older chips and
100revisions. For now, the driver only uses the 16-bit mode on the 100revisions. The 16-bit tachometer mode is enabled by the driver when one
101late IT8712F, IT8716F and IT8718F. 101of the above chips is detected.
102 102
103The IT8726F is just bit enhanced IT8716F with additional hardware 103The IT8726F is just bit enhanced IT8716F with additional hardware
104for AMD power sequencing. Therefore the chip will appear as IT8716F 104for AMD power sequencing. Therefore the chip will appear as IT8716F
diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c
index 2a365681f969..30cdb0956779 100644
--- a/drivers/hwmon/it87.c
+++ b/drivers/hwmon/it87.c
@@ -272,9 +272,11 @@ struct it87_data {
272 272
273static inline int has_16bit_fans(const struct it87_data *data) 273static inline int has_16bit_fans(const struct it87_data *data)
274{ 274{
275 /* IT8712F Datasheet 0.9.1, section 8.3.5 indicates 7h == Version I. 275 /* IT8705F Datasheet 0.4.1, 3h == Version G.
276 This is the first revision with 16bit tachometer support. */ 276 IT8712F Datasheet 0.9.1, section 8.3.5 indicates 7h == Version I.
277 return (data->type == it8712 && data->revision >= 0x07) 277 These are the first revisions with 16bit tachometer support. */
278 return (data->type == it87 && data->revision >= 0x03)
279 || (data->type == it8712 && data->revision >= 0x07)
278 || data->type == it8716 280 || data->type == it8716
279 || data->type == it8718; 281 || data->type == it8718;
280} 282}
@@ -1370,10 +1372,13 @@ static void __devinit it87_init_device(struct platform_device *pdev)
1370 it87_write_value(data, IT87_REG_FAN_16BIT, 1372 it87_write_value(data, IT87_REG_FAN_16BIT,
1371 tmp | 0x07); 1373 tmp | 0x07);
1372 } 1374 }
1373 if (tmp & (1 << 4)) 1375 /* IT8705F only supports three fans. */
1374 data->has_fan |= (1 << 3); /* fan4 enabled */ 1376 if (data->type != it87) {
1375 if (tmp & (1 << 5)) 1377 if (tmp & (1 << 4))
1376 data->has_fan |= (1 << 4); /* fan5 enabled */ 1378 data->has_fan |= (1 << 3); /* fan4 enabled */
1379 if (tmp & (1 << 5))
1380 data->has_fan |= (1 << 4); /* fan5 enabled */
1381 }
1377 } 1382 }
1378 1383
1379 /* Set current fan mode registers and the default settings for the 1384 /* Set current fan mode registers and the default settings for the