hwmon: (w83627ehf) Fix multi-line comments

Cc: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
Guenter Roeck 2012-01-19 11:02:27 -08:00 committed by Guenter Roeck
parent 51683ee83e
commit 8969e84d95

View File

@ -1,50 +1,49 @@
/* /*
w83627ehf - Driver for the hardware monitoring functionality of * w83627ehf - Driver for the hardware monitoring functionality of
the Winbond W83627EHF Super-I/O chip * the Winbond W83627EHF Super-I/O chip
Copyright (C) 2005-2011 Jean Delvare <khali@linux-fr.org> * Copyright (C) 2005-2011 Jean Delvare <khali@linux-fr.org>
Copyright (C) 2006 Yuan Mu (Winbond), * Copyright (C) 2006 Yuan Mu (Winbond),
Rudolf Marek <r.marek@assembler.cz> * Rudolf Marek <r.marek@assembler.cz>
David Hubbard <david.c.hubbard@gmail.com> * David Hubbard <david.c.hubbard@gmail.com>
Daniel J Blueman <daniel.blueman@gmail.com> * Daniel J Blueman <daniel.blueman@gmail.com>
Copyright (C) 2010 Sheng-Yuan Huang (Nuvoton) (PS00) * Copyright (C) 2010 Sheng-Yuan Huang (Nuvoton) (PS00)
*
Shamelessly ripped from the w83627hf driver * Shamelessly ripped from the w83627hf driver
Copyright (C) 2003 Mark Studebaker * Copyright (C) 2003 Mark Studebaker
*
Thanks to Leon Moonen, Steve Cliffe and Grant Coady for their help * Thanks to Leon Moonen, Steve Cliffe and Grant Coady for their help
in testing and debugging this driver. * in testing and debugging this driver.
*
This driver also supports the W83627EHG, which is the lead-free * This driver also supports the W83627EHG, which is the lead-free
version of the W83627EHF. * version of the W83627EHF.
*
This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. * (at your option) any later version.
*
This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. * GNU General Public License for more details.
*
You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* Supports the following chips:
Supports the following chips: *
* Chip #vin #fan #pwm #temp chip IDs man ID
Chip #vin #fan #pwm #temp chip IDs man ID * w83627ehf 10 5 4 3 0x8850 0x88 0x5ca3
w83627ehf 10 5 4 3 0x8850 0x88 0x5ca3 * 0x8860 0xa1
0x8860 0xa1 * w83627dhg 9 5 4 3 0xa020 0xc1 0x5ca3
w83627dhg 9 5 4 3 0xa020 0xc1 0x5ca3 * w83627dhg-p 9 5 4 3 0xb070 0xc1 0x5ca3
w83627dhg-p 9 5 4 3 0xb070 0xc1 0x5ca3 * w83627uhg 8 2 2 3 0xa230 0xc1 0x5ca3
w83627uhg 8 2 2 3 0xa230 0xc1 0x5ca3 * w83667hg 9 5 3 3 0xa510 0xc1 0x5ca3
w83667hg 9 5 3 3 0xa510 0xc1 0x5ca3 * w83667hg-b 9 5 3 4 0xb350 0xc1 0x5ca3
w83667hg-b 9 5 3 4 0xb350 0xc1 0x5ca3 * nct6775f 9 4 3 9 0xb470 0xc1 0x5ca3
nct6775f 9 4 3 9 0xb470 0xc1 0x5ca3 * nct6776f 9 5 3 9 0xC330 0xc1 0x5ca3
nct6776f 9 5 3 9 0xC330 0xc1 0x5ca3 */
*/
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
@ -164,11 +163,13 @@ superio_exit(int ioreg)
#define W83627EHF_REG_BANK 0x4E #define W83627EHF_REG_BANK 0x4E
#define W83627EHF_REG_CONFIG 0x40 #define W83627EHF_REG_CONFIG 0x40
/* Not currently used: /*
* Not currently used:
* REG_MAN_ID has the value 0x5ca3 for all supported chips. * REG_MAN_ID has the value 0x5ca3 for all supported chips.
* REG_CHIP_ID == 0x88/0xa1/0xc1 depending on chip model. * REG_CHIP_ID == 0x88/0xa1/0xc1 depending on chip model.
* REG_MAN_ID is at port 0x4f * REG_MAN_ID is at port 0x4f
* REG_CHIP_ID is at port 0x58 */ * REG_CHIP_ID is at port 0x58
*/
static const u16 W83627EHF_REG_FAN[] = { 0x28, 0x29, 0x2a, 0x3f, 0x553 }; static const u16 W83627EHF_REG_FAN[] = { 0x28, 0x29, 0x2a, 0x3f, 0x553 };
static const u16 W83627EHF_REG_FAN_MIN[] = { 0x3b, 0x3c, 0x3d, 0x3e, 0x55c }; static const u16 W83627EHF_REG_FAN_MIN[] = { 0x3b, 0x3c, 0x3d, 0x3e, 0x55c };
@ -393,8 +394,10 @@ div_from_reg(u8 reg)
return 1 << reg; return 1 << reg;
} }
/* Some of the voltage inputs have internal scaling, the tables below /*
* contain 8 (the ADC LSB in mV) * scaling factor * 100 */ * Some of the voltage inputs have internal scaling, the tables below
* contain 8 (the ADC LSB in mV) * scaling factor * 100
*/
static const u16 scale_in_common[10] = { static const u16 scale_in_common[10] = {
800, 800, 1600, 1600, 800, 800, 800, 1600, 1600, 800 800, 800, 1600, 1600, 800, 800, 800, 1600, 1600, 800
}; };
@ -470,12 +473,13 @@ struct w83627ehf_data {
u8 pwm_mode[4]; /* 0->DC variable voltage, 1->PWM variable duty cycle */ u8 pwm_mode[4]; /* 0->DC variable voltage, 1->PWM variable duty cycle */
u8 pwm_enable[4]; /* 1->manual u8 pwm_enable[4]; /* 1->manual
2->thermal cruise mode (also called SmartFan I) * 2->thermal cruise mode (also called SmartFan I)
3->fan speed cruise mode * 3->fan speed cruise mode
4->variable thermal cruise (also called * 4->variable thermal cruise (also called
SmartFan III) * SmartFan III)
5->enhanced variable thermal cruise (also called * 5->enhanced variable thermal cruise (also called
SmartFan IV) */ * SmartFan IV)
*/
u8 pwm_enable_orig[4]; /* original value of pwm_enable */ u8 pwm_enable_orig[4]; /* original value of pwm_enable */
u8 pwm_num; /* number of pwm */ u8 pwm_num; /* number of pwm */
u8 pwm[4]; u8 pwm[4];
@ -816,9 +820,11 @@ static struct w83627ehf_data *w83627ehf_update_device(struct device *dev)
data->fan_min[i] = w83627ehf_read_value(data, data->fan_min[i] = w83627ehf_read_value(data,
data->REG_FAN_MIN[i]); data->REG_FAN_MIN[i]);
/* If we failed to measure the fan speed and clock /*
divider can be increased, let's try that for next * If we failed to measure the fan speed and clock
time */ * divider can be increased, let's try that for next
* time
*/
if (data->has_fan_div if (data->has_fan_div
&& (reg >= 0xff || (sio_data->kind == nct6775 && (reg >= 0xff || (sio_data->kind == nct6775
&& reg == 0x00)) && reg == 0x00))
@ -1081,25 +1087,31 @@ store_fan_min(struct device *dev, struct device_attribute *attr,
new_div = data->fan_div[nr]; /* No change */ new_div = data->fan_div[nr]; /* No change */
dev_info(dev, "fan%u low limit and alarm disabled\n", nr + 1); dev_info(dev, "fan%u low limit and alarm disabled\n", nr + 1);
} else if ((reg = 1350000U / val) >= 128 * 255) { } else if ((reg = 1350000U / val) >= 128 * 255) {
/* Speed below this value cannot possibly be represented, /*
even with the highest divider (128) */ * Speed below this value cannot possibly be represented,
* even with the highest divider (128)
*/
data->fan_min[nr] = 254; data->fan_min[nr] = 254;
new_div = 7; /* 128 == (1 << 7) */ new_div = 7; /* 128 == (1 << 7) */
dev_warn(dev, "fan%u low limit %lu below minimum %u, set to " dev_warn(dev, "fan%u low limit %lu below minimum %u, set to "
"minimum\n", nr + 1, val, "minimum\n", nr + 1, val,
data->fan_from_reg_min(254, 7)); data->fan_from_reg_min(254, 7));
} else if (!reg) { } else if (!reg) {
/* Speed above this value cannot possibly be represented, /*
even with the lowest divider (1) */ * Speed above this value cannot possibly be represented,
* even with the lowest divider (1)
*/
data->fan_min[nr] = 1; data->fan_min[nr] = 1;
new_div = 0; /* 1 == (1 << 0) */ new_div = 0; /* 1 == (1 << 0) */
dev_warn(dev, "fan%u low limit %lu above maximum %u, set to " dev_warn(dev, "fan%u low limit %lu above maximum %u, set to "
"maximum\n", nr + 1, val, "maximum\n", nr + 1, val,
data->fan_from_reg_min(1, 0)); data->fan_from_reg_min(1, 0));
} else { } else {
/* Automatically pick the best divider, i.e. the one such /*
that the min limit will correspond to a register value * Automatically pick the best divider, i.e. the one such
in the 96..192 range */ * that the min limit will correspond to a register value
* in the 96..192 range
*/
new_div = 0; new_div = 0;
while (reg > 192 && new_div < 7) { while (reg > 192 && new_div < 7) {
reg >>= 1; reg >>= 1;
@ -1108,8 +1120,10 @@ store_fan_min(struct device *dev, struct device_attribute *attr,
data->fan_min[nr] = reg; data->fan_min[nr] = reg;
} }
/* Write both the fan clock divider (if it changed) and the new /*
fan min (unconditionally) */ * Write both the fan clock divider (if it changed) and the new
* fan min (unconditionally)
*/
if (new_div != data->fan_div[nr]) { if (new_div != data->fan_div[nr]) {
dev_dbg(dev, "fan%u clock divider changed from %u to %u\n", dev_dbg(dev, "fan%u clock divider changed from %u to %u\n",
nr + 1, div_from_reg(data->fan_div[nr]), nr + 1, div_from_reg(data->fan_div[nr]),
@ -1736,8 +1750,10 @@ static struct sensor_device_attribute_2 sda_caseopen[] = {
static void w83627ehf_device_remove_files(struct device *dev) static void w83627ehf_device_remove_files(struct device *dev)
{ {
/* some entries in the following arrays may not have been used in /*
* device_create_file(), but device_remove_file() will ignore them */ * some entries in the following arrays may not have been used in
* device_create_file(), but device_remove_file() will ignore them
*/
int i; int i;
struct w83627ehf_data *data = dev_get_drvdata(dev); struct w83627ehf_data *data = dev_get_drvdata(dev);
@ -2279,9 +2295,11 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)
/* Read VID value */ /* Read VID value */
if (sio_data->kind == w83667hg || sio_data->kind == w83667hg_b || if (sio_data->kind == w83667hg || sio_data->kind == w83667hg_b ||
sio_data->kind == nct6775 || sio_data->kind == nct6776) { sio_data->kind == nct6775 || sio_data->kind == nct6776) {
/* W83667HG has different pins for VID input and output, so /*
we can get the VID input values directly at logical device D * W83667HG has different pins for VID input and output, so
0xe3. */ * we can get the VID input values directly at logical device D
* 0xe3.
*/
superio_select(sio_data->sioreg, W83667HG_LD_VID); superio_select(sio_data->sioreg, W83667HG_LD_VID);
data->vid = superio_inb(sio_data->sioreg, 0xe3); data->vid = superio_inb(sio_data->sioreg, 0xe3);
err = device_create_file(dev, &dev_attr_cpu0_vid); err = device_create_file(dev, &dev_attr_cpu0_vid);
@ -2290,11 +2308,13 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)
} else if (sio_data->kind != w83627uhg) { } else if (sio_data->kind != w83627uhg) {
superio_select(sio_data->sioreg, W83627EHF_LD_HWM); superio_select(sio_data->sioreg, W83627EHF_LD_HWM);
if (superio_inb(sio_data->sioreg, SIO_REG_VID_CTRL) & 0x80) { if (superio_inb(sio_data->sioreg, SIO_REG_VID_CTRL) & 0x80) {
/* Set VID input sensibility if needed. In theory the /*
BIOS should have set it, but in practice it's not * Set VID input sensibility if needed. In theory the
always the case. We only do it for the W83627EHF/EHG * BIOS should have set it, but in practice it's not
because the W83627DHG is more complex in this * always the case. We only do it for the W83627EHF/EHG
respect. */ * because the W83627DHG is more complex in this
* respect.
*/
if (sio_data->kind == w83627ehf) { if (sio_data->kind == w83627ehf) {
en_vrm10 = superio_inb(sio_data->sioreg, en_vrm10 = superio_inb(sio_data->sioreg,
SIO_REG_EN_VRM10); SIO_REG_EN_VRM10);
@ -2616,10 +2636,12 @@ static int __init w83627ehf_find(int sioaddr, unsigned short *addr,
return 0; return 0;
} }
/* when Super-I/O functions move to a separate file, the Super-I/O /*
* when Super-I/O functions move to a separate file, the Super-I/O
* bus will manage the lifetime of the device and this module will only keep * bus will manage the lifetime of the device and this module will only keep
* track of the w83627ehf driver. But since we platform_device_alloc(), we * track of the w83627ehf driver. But since we platform_device_alloc(), we
* must keep track of the device */ * must keep track of the device
*/
static struct platform_device *pdev; static struct platform_device *pdev;
static int __init sensors_w83627ehf_init(void) static int __init sensors_w83627ehf_init(void)
@ -2629,11 +2651,13 @@ static int __init sensors_w83627ehf_init(void)
struct resource res; struct resource res;
struct w83627ehf_sio_data sio_data; struct w83627ehf_sio_data sio_data;
/* initialize sio_data->kind and sio_data->sioreg. /*
* initialize sio_data->kind and sio_data->sioreg.
* *
* when Super-I/O functions move to a separate file, the Super-I/O * when Super-I/O functions move to a separate file, the Super-I/O
* driver will probe 0x2e and 0x4e and auto-detect the presence of a * driver will probe 0x2e and 0x4e and auto-detect the presence of a
* w83627ehf hardware monitor, and call probe() */ * w83627ehf hardware monitor, and call probe()
*/
if (w83627ehf_find(0x2e, &address, &sio_data) && if (w83627ehf_find(0x2e, &address, &sio_data) &&
w83627ehf_find(0x4e, &address, &sio_data)) w83627ehf_find(0x4e, &address, &sio_data))
return -ENODEV; return -ENODEV;