diff options
author | Yuan Mu <ymu@winbond.com.tw> | 2005-11-26 14:13:18 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-01-06 01:16:20 -0500 |
commit | dd149c52223cfb05cdefb0755d3c2793e8d33ede (patch) | |
tree | 78b0b51586442c66b0d4b948564a6d4863b29766 /drivers/hwmon | |
parent | 9c516ef496c857aa4b1b41dc313010f11d39c496 (diff) |
[PATCH] hwmon: W83627THF VID fixes
This patch fixes the VID reading; no cpu0_vid and vrm files created if
the chip is w83627thf and GPIO5 not enabled.
Signed-off-by: Yuan Mu <ymu@winbond.com.tw>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/hwmon')
-rw-r--r-- | drivers/hwmon/w83627hf.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/drivers/hwmon/w83627hf.c b/drivers/hwmon/w83627hf.c index bbb3dcde146b..27cfde1cd023 100644 --- a/drivers/hwmon/w83627hf.c +++ b/drivers/hwmon/w83627hf.c | |||
@@ -1122,11 +1122,10 @@ static int w83627hf_detect(struct i2c_adapter *adapter) | |||
1122 | if (kind != w83697hf) | 1122 | if (kind != w83697hf) |
1123 | device_create_file_temp(new_client, 3); | 1123 | device_create_file_temp(new_client, 3); |
1124 | 1124 | ||
1125 | if (kind != w83697hf) | 1125 | if (kind != w83697hf && data->vid != 0xff) { |
1126 | device_create_file_vid(new_client); | 1126 | device_create_file_vid(new_client); |
1127 | |||
1128 | if (kind != w83697hf) | ||
1129 | device_create_file_vrm(new_client); | 1127 | device_create_file_vrm(new_client); |
1128 | } | ||
1130 | 1129 | ||
1131 | device_create_file_fan_div(new_client, 1); | 1130 | device_create_file_fan_div(new_client, 1); |
1132 | device_create_file_fan_div(new_client, 2); | 1131 | device_create_file_fan_div(new_client, 2); |
@@ -1232,7 +1231,7 @@ static int w83627thf_read_gpio5(struct i2c_client *client) | |||
1232 | 1231 | ||
1233 | /* Make sure the pins are configured for input | 1232 | /* Make sure the pins are configured for input |
1234 | There must be at least five (VRM 9), and possibly 6 (VRM 10) */ | 1233 | There must be at least five (VRM 9), and possibly 6 (VRM 10) */ |
1235 | sel = superio_inb(W83627THF_GPIO5_IOSR); | 1234 | sel = superio_inb(W83627THF_GPIO5_IOSR) & 0x3f; |
1236 | if ((sel & 0x1f) != 0x1f) { | 1235 | if ((sel & 0x1f) != 0x1f) { |
1237 | dev_dbg(&client->dev, "GPIO5 not configured for VID " | 1236 | dev_dbg(&client->dev, "GPIO5 not configured for VID " |
1238 | "function\n"); | 1237 | "function\n"); |
@@ -1323,19 +1322,18 @@ static void w83627hf_init_client(struct i2c_client *client) | |||
1323 | int hi = w83627hf_read_value(client, W83781D_REG_CHIPID); | 1322 | int hi = w83627hf_read_value(client, W83781D_REG_CHIPID); |
1324 | data->vid = (lo & 0x0f) | ((hi & 0x01) << 4); | 1323 | data->vid = (lo & 0x0f) | ((hi & 0x01) << 4); |
1325 | } else if (w83627thf == data->type) { | 1324 | } else if (w83627thf == data->type) { |
1326 | data->vid = w83627thf_read_gpio5(client) & 0x3f; | 1325 | data->vid = w83627thf_read_gpio5(client); |
1327 | } | 1326 | } |
1328 | 1327 | ||
1329 | /* Read VRM & OVT Config only once */ | 1328 | /* Read VRM & OVT Config only once */ |
1330 | if (w83627thf == data->type || w83637hf == data->type) { | 1329 | if (w83627thf == data->type || w83637hf == data->type) { |
1331 | data->vrm_ovt = | 1330 | data->vrm_ovt = |
1332 | w83627hf_read_value(client, W83627THF_REG_VRM_OVT_CFG); | 1331 | w83627hf_read_value(client, W83627THF_REG_VRM_OVT_CFG); |
1333 | data->vrm = (data->vrm_ovt & 0x01) ? 90 : 82; | ||
1334 | } else { | ||
1335 | /* Convert VID to voltage based on default VRM */ | ||
1336 | data->vrm = vid_which_vrm(); | ||
1337 | } | 1332 | } |
1338 | 1333 | ||
1334 | /* Convert VID to voltage based on VRM */ | ||
1335 | data->vrm = vid_which_vrm(); | ||
1336 | |||
1339 | tmp = w83627hf_read_value(client, W83781D_REG_SCFG1); | 1337 | tmp = w83627hf_read_value(client, W83781D_REG_SCFG1); |
1340 | for (i = 1; i <= 3; i++) { | 1338 | for (i = 1; i <= 3; i++) { |
1341 | if (!(tmp & BIT_SCFG1[i - 1])) { | 1339 | if (!(tmp & BIT_SCFG1[i - 1])) { |