diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-02-06 18:25:48 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-02-06 18:25:48 -0500 |
| commit | 105e5180936d69b1aee46ead8a5fc6c68f4d5f65 (patch) | |
| tree | 22f18ca257da17233a757c63fb8e25bb76d6c11a | |
| parent | 96e02d1586782eadf051fa3d6bc4132d2447ac2c (diff) | |
| parent | 585c0fd8216e0c9f98e2434092af7ec0f999522d (diff) | |
Merge tag 'hwmon-fixes-for-3.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
One patch to fix fan detection on NCT6776F.
* tag 'hwmon-fixes-for-3.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
hwmon: (w83627ehf) Fix number of fans for NCT6776F
| -rw-r--r-- | drivers/hwmon/w83627ehf.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c index 2dfae7d7cc5b..4d383e7e051d 100644 --- a/drivers/hwmon/w83627ehf.c +++ b/drivers/hwmon/w83627ehf.c | |||
| @@ -1920,9 +1920,26 @@ w83627ehf_check_fan_inputs(const struct w83627ehf_sio_data *sio_data, | |||
| 1920 | fan4min = 0; | 1920 | fan4min = 0; |
| 1921 | fan5pin = 0; | 1921 | fan5pin = 0; |
| 1922 | } else if (sio_data->kind == nct6776) { | 1922 | } else if (sio_data->kind == nct6776) { |
| 1923 | fan3pin = !(superio_inb(sio_data->sioreg, 0x24) & 0x40); | 1923 | bool gpok = superio_inb(sio_data->sioreg, 0x27) & 0x80; |
| 1924 | fan4pin = !!(superio_inb(sio_data->sioreg, 0x1C) & 0x01); | 1924 | |
| 1925 | fan5pin = !!(superio_inb(sio_data->sioreg, 0x1C) & 0x02); | 1925 | superio_select(sio_data->sioreg, W83627EHF_LD_HWM); |
| 1926 | regval = superio_inb(sio_data->sioreg, SIO_REG_ENABLE); | ||
| 1927 | |||
| 1928 | if (regval & 0x80) | ||
| 1929 | fan3pin = gpok; | ||
| 1930 | else | ||
| 1931 | fan3pin = !(superio_inb(sio_data->sioreg, 0x24) & 0x40); | ||
| 1932 | |||
| 1933 | if (regval & 0x40) | ||
| 1934 | fan4pin = gpok; | ||
| 1935 | else | ||
| 1936 | fan4pin = !!(superio_inb(sio_data->sioreg, 0x1C) & 0x01); | ||
| 1937 | |||
| 1938 | if (regval & 0x20) | ||
| 1939 | fan5pin = gpok; | ||
| 1940 | else | ||
| 1941 | fan5pin = !!(superio_inb(sio_data->sioreg, 0x1C) & 0x02); | ||
| 1942 | |||
| 1926 | fan4min = fan4pin; | 1943 | fan4min = fan4pin; |
| 1927 | } else if (sio_data->kind == w83667hg || sio_data->kind == w83667hg_b) { | 1944 | } else if (sio_data->kind == w83667hg || sio_data->kind == w83667hg_b) { |
| 1928 | fan3pin = 1; | 1945 | fan3pin = 1; |
