diff options
author | Andrew Paprocki <andrew@ishiboo.com> | 2008-08-06 16:41:06 -0400 |
---|---|---|
committer | Jean Delvare <khali@mahadeva.delvare> | 2008-08-06 16:41:06 -0400 |
commit | 816d8c6a2580562698cf0fa0b9e5b4dd570e636e (patch) | |
tree | 6f2b41ba4e144a04315fe56cb50998e8cd3ae24d | |
parent | 0475169c13e177e1af5a02f5e9f30fda13dc0b86 (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/it87 | 6 | ||||
-rw-r--r-- | drivers/hwmon/it87.c | 19 |
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 | |||
97 | The IT8716F and IT8718F, and late IT8712F and IT8705F also have optional | 97 | The IT8716F and IT8718F, and late IT8712F and IT8705F also have optional |
98 | 16-bit tachometer counters for fans 1 to 3. This is better (no more fan | 98 | 16-bit tachometer counters for fans 1 to 3. This is better (no more fan |
99 | clock divider mess) but not compatible with the older chips and | 99 | clock divider mess) but not compatible with the older chips and |
100 | revisions. For now, the driver only uses the 16-bit mode on the | 100 | revisions. The 16-bit tachometer mode is enabled by the driver when one |
101 | late IT8712F, IT8716F and IT8718F. | 101 | of the above chips is detected. |
102 | 102 | ||
103 | The IT8726F is just bit enhanced IT8716F with additional hardware | 103 | The IT8726F is just bit enhanced IT8716F with additional hardware |
104 | for AMD power sequencing. Therefore the chip will appear as IT8716F | 104 | for 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 | ||
273 | static inline int has_16bit_fans(const struct it87_data *data) | 273 | static 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 |