hwmon: (smsc47m1) Fix checkpatch issues
Fixed: ERROR: code indent should use tabs where possible ERROR: do not use assignment in if condition ERROR: space required after that ',' (ctx:VxV) ERROR: spaces required around that '<=' (ctx:VxV) ERROR: spaces required around that '==' (ctx:VxV) ERROR: spaces required around that '>=' (ctx:VxV) ERROR: trailing statements should be on next line ERROR: trailing whitespace WARNING: simple_strtol is obsolete, use kstrtol instead WARNING: static const char * array should probably be static const char * const Modify multi-line comments to follow Documentation/CodingStyle. Also: s/#define^I/#define / Not fixed (false positive): ERROR: Macros with multiple statements should be enclosed in a do - while loop Cc: Jean Delvare <khali@linux-fr.org> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
parent
7e612685a3
commit
85a0c0d1a1
1 changed files with 104 additions and 62 deletions
|
@ -1,30 +1,30 @@
|
||||||
/*
|
/*
|
||||||
smsc47m1.c - Part of lm_sensors, Linux kernel modules
|
* smsc47m1.c - Part of lm_sensors, Linux kernel modules
|
||||||
for hardware monitoring
|
* for hardware monitoring
|
||||||
|
*
|
||||||
Supports the SMSC LPC47B27x, LPC47M10x, LPC47M112, LPC47M13x,
|
* Supports the SMSC LPC47B27x, LPC47M10x, LPC47M112, LPC47M13x,
|
||||||
LPC47M14x, LPC47M15x, LPC47M192, LPC47M292 and LPC47M997
|
* LPC47M14x, LPC47M15x, LPC47M192, LPC47M292 and LPC47M997
|
||||||
Super-I/O chips.
|
* Super-I/O chips.
|
||||||
|
*
|
||||||
Copyright (C) 2002 Mark D. Studebaker <mdsxyz123@yahoo.com>
|
* Copyright (C) 2002 Mark D. Studebaker <mdsxyz123@yahoo.com>
|
||||||
Copyright (C) 2004-2007 Jean Delvare <khali@linux-fr.org>
|
* Copyright (C) 2004-2007 Jean Delvare <khali@linux-fr.org>
|
||||||
Ported to Linux 2.6 by Gabriele Gorla <gorlik@yahoo.com>
|
* Ported to Linux 2.6 by Gabriele Gorla <gorlik@yahoo.com>
|
||||||
and Jean Delvare
|
* and Jean Delvare
|
||||||
|
*
|
||||||
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.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||||
|
|
||||||
|
@ -53,8 +53,8 @@ enum chips { smsc47m1, smsc47m2 };
|
||||||
|
|
||||||
/* Super-I/0 registers and commands */
|
/* Super-I/0 registers and commands */
|
||||||
|
|
||||||
#define REG 0x2e /* The register to read/write */
|
#define REG 0x2e /* The register to read/write */
|
||||||
#define VAL 0x2f /* The value to read/write */
|
#define VAL 0x2f /* The value to read/write */
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
superio_outb(int reg, int val)
|
superio_outb(int reg, int val)
|
||||||
|
@ -111,10 +111,11 @@ static const u8 SMSC47M1_REG_PWM[3] = { 0x56, 0x57, 0x69 };
|
||||||
#define SMSC47M2_REG_PPIN3 0x2c
|
#define SMSC47M2_REG_PPIN3 0x2c
|
||||||
#define SMSC47M2_REG_FANDIV3 0x6a
|
#define SMSC47M2_REG_FANDIV3 0x6a
|
||||||
|
|
||||||
#define MIN_FROM_REG(reg,div) ((reg)>=192 ? 0 : \
|
#define MIN_FROM_REG(reg, div) ((reg) >= 192 ? 0 : \
|
||||||
983040/((192-(reg))*(div)))
|
983040 / ((192 - (reg)) * (div)))
|
||||||
#define FAN_FROM_REG(reg,div,preload) ((reg)<=(preload) || (reg)==255 ? 0 : \
|
#define FAN_FROM_REG(reg, div, preload) ((reg) <= (preload) || (reg) == 255 ? \
|
||||||
983040/(((reg)-(preload))*(div)))
|
0 : \
|
||||||
|
983040 / (((reg) - (preload)) * (div)))
|
||||||
#define DIV_FROM_REG(reg) (1 << (reg))
|
#define DIV_FROM_REG(reg) (1 << (reg))
|
||||||
#define PWM_FROM_REG(reg) (((reg) & 0x7E) << 1)
|
#define PWM_FROM_REG(reg) (((reg) & 0x7E) << 1)
|
||||||
#define PWM_EN_FROM_REG(reg) ((~(reg)) & 0x01)
|
#define PWM_EN_FROM_REG(reg) ((~(reg)) & 0x01)
|
||||||
|
@ -171,10 +172,12 @@ static ssize_t get_fan(struct device *dev, struct device_attribute
|
||||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||||
struct smsc47m1_data *data = smsc47m1_update_device(dev, 0);
|
struct smsc47m1_data *data = smsc47m1_update_device(dev, 0);
|
||||||
int nr = attr->index;
|
int nr = attr->index;
|
||||||
/* This chip (stupidly) stops monitoring fan speed if PWM is
|
/*
|
||||||
enabled and duty cycle is 0%. This is fine if the monitoring
|
* This chip (stupidly) stops monitoring fan speed if PWM is
|
||||||
and control concern the same fan, but troublesome if they are
|
* enabled and duty cycle is 0%. This is fine if the monitoring
|
||||||
not (which could as well happen). */
|
* and control concern the same fan, but troublesome if they are
|
||||||
|
* not (which could as well happen).
|
||||||
|
*/
|
||||||
int rpm = (data->pwm[nr] & 0x7F) == 0x00 ? 0 :
|
int rpm = (data->pwm[nr] & 0x7F) == 0x00 ? 0 :
|
||||||
FAN_FROM_REG(data->fan[nr],
|
FAN_FROM_REG(data->fan[nr],
|
||||||
DIV_FROM_REG(data->fan_div[nr]),
|
DIV_FROM_REG(data->fan_div[nr]),
|
||||||
|
@ -238,7 +241,13 @@ static ssize_t set_fan_min(struct device *dev, struct device_attribute
|
||||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||||
struct smsc47m1_data *data = dev_get_drvdata(dev);
|
struct smsc47m1_data *data = dev_get_drvdata(dev);
|
||||||
int nr = attr->index;
|
int nr = attr->index;
|
||||||
long rpmdiv, val = simple_strtol(buf, NULL, 10);
|
long rpmdiv;
|
||||||
|
long val;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
err = kstrtol(buf, 10, &val);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
mutex_lock(&data->update_lock);
|
mutex_lock(&data->update_lock);
|
||||||
rpmdiv = val * DIV_FROM_REG(data->fan_div[nr]);
|
rpmdiv = val * DIV_FROM_REG(data->fan_div[nr]);
|
||||||
|
@ -256,28 +265,44 @@ static ssize_t set_fan_min(struct device *dev, struct device_attribute
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Note: we save and restore the fan minimum here, because its value is
|
/*
|
||||||
determined in part by the fan clock divider. This follows the principle
|
* Note: we save and restore the fan minimum here, because its value is
|
||||||
of least surprise; the user doesn't expect the fan minimum to change just
|
* determined in part by the fan clock divider. This follows the principle
|
||||||
because the divider changed. */
|
* of least surprise; the user doesn't expect the fan minimum to change just
|
||||||
|
* because the divider changed.
|
||||||
|
*/
|
||||||
static ssize_t set_fan_div(struct device *dev, struct device_attribute
|
static ssize_t set_fan_div(struct device *dev, struct device_attribute
|
||||||
*devattr, const char *buf, size_t count)
|
*devattr, const char *buf, size_t count)
|
||||||
{
|
{
|
||||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||||
struct smsc47m1_data *data = dev_get_drvdata(dev);
|
struct smsc47m1_data *data = dev_get_drvdata(dev);
|
||||||
int nr = attr->index;
|
int nr = attr->index;
|
||||||
long new_div = simple_strtol(buf, NULL, 10), tmp;
|
long new_div;
|
||||||
|
int err;
|
||||||
|
long tmp;
|
||||||
u8 old_div = DIV_FROM_REG(data->fan_div[nr]);
|
u8 old_div = DIV_FROM_REG(data->fan_div[nr]);
|
||||||
|
|
||||||
|
err = kstrtol(buf, 10, &new_div);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
if (new_div == old_div) /* No change */
|
if (new_div == old_div) /* No change */
|
||||||
return count;
|
return count;
|
||||||
|
|
||||||
mutex_lock(&data->update_lock);
|
mutex_lock(&data->update_lock);
|
||||||
switch (new_div) {
|
switch (new_div) {
|
||||||
case 1: data->fan_div[nr] = 0; break;
|
case 1:
|
||||||
case 2: data->fan_div[nr] = 1; break;
|
data->fan_div[nr] = 0;
|
||||||
case 4: data->fan_div[nr] = 2; break;
|
break;
|
||||||
case 8: data->fan_div[nr] = 3; break;
|
case 2:
|
||||||
|
data->fan_div[nr] = 1;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
data->fan_div[nr] = 2;
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
data->fan_div[nr] = 3;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
mutex_unlock(&data->update_lock);
|
mutex_unlock(&data->update_lock);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -315,7 +340,12 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute
|
||||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||||
struct smsc47m1_data *data = dev_get_drvdata(dev);
|
struct smsc47m1_data *data = dev_get_drvdata(dev);
|
||||||
int nr = attr->index;
|
int nr = attr->index;
|
||||||
long val = simple_strtol(buf, NULL, 10);
|
long val;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
err = kstrtol(buf, 10, &val);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
if (val < 0 || val > 255)
|
if (val < 0 || val > 255)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -336,9 +366,14 @@ static ssize_t set_pwm_en(struct device *dev, struct device_attribute
|
||||||
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
|
||||||
struct smsc47m1_data *data = dev_get_drvdata(dev);
|
struct smsc47m1_data *data = dev_get_drvdata(dev);
|
||||||
int nr = attr->index;
|
int nr = attr->index;
|
||||||
long val = simple_strtol(buf, NULL, 10);
|
unsigned long val;
|
||||||
|
int err;
|
||||||
if (val != 0 && val != 1)
|
|
||||||
|
err = kstrtoul(buf, 10, &val);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
if (val > 1)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
mutex_lock(&data->update_lock);
|
mutex_lock(&data->update_lock);
|
||||||
|
@ -519,8 +554,10 @@ static int __init smsc47m1_find(unsigned short *addr,
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Enable only if address is set (needed at least on the
|
/*
|
||||||
* Compaq Presario S4000NX) */
|
* Enable only if address is set (needed at least on the
|
||||||
|
* Compaq Presario S4000NX)
|
||||||
|
*/
|
||||||
sio_data->activate = superio_inb(SUPERIO_REG_ACT);
|
sio_data->activate = superio_inb(SUPERIO_REG_ACT);
|
||||||
if ((sio_data->activate & 0x01) == 0) {
|
if ((sio_data->activate & 0x01) == 0) {
|
||||||
pr_info("Enabling device\n");
|
pr_info("Enabling device\n");
|
||||||
|
@ -646,7 +683,7 @@ static int __init smsc47m1_probe(struct platform_device *pdev)
|
||||||
int err;
|
int err;
|
||||||
int fan1, fan2, fan3, pwm1, pwm2, pwm3;
|
int fan1, fan2, fan3, pwm1, pwm2, pwm3;
|
||||||
|
|
||||||
static const char *names[] = {
|
static const char * const names[] = {
|
||||||
"smsc47m1",
|
"smsc47m1",
|
||||||
"smsc47m2",
|
"smsc47m2",
|
||||||
};
|
};
|
||||||
|
@ -657,7 +694,8 @@ static int __init smsc47m1_probe(struct platform_device *pdev)
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
if (!(data = kzalloc(sizeof(struct smsc47m1_data), GFP_KERNEL))) {
|
data = kzalloc(sizeof(struct smsc47m1_data), GFP_KERNEL);
|
||||||
|
if (!data) {
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
goto error_release;
|
goto error_release;
|
||||||
}
|
}
|
||||||
|
@ -668,8 +706,10 @@ static int __init smsc47m1_probe(struct platform_device *pdev)
|
||||||
mutex_init(&data->update_lock);
|
mutex_init(&data->update_lock);
|
||||||
platform_set_drvdata(pdev, data);
|
platform_set_drvdata(pdev, data);
|
||||||
|
|
||||||
/* If no function is properly configured, there's no point in
|
/*
|
||||||
actually registering the chip. */
|
* If no function is properly configured, there's no point in
|
||||||
|
* actually registering the chip.
|
||||||
|
*/
|
||||||
pwm1 = (smsc47m1_read_value(data, SMSC47M1_REG_PPIN(0)) & 0x05)
|
pwm1 = (smsc47m1_read_value(data, SMSC47M1_REG_PPIN(0)) & 0x05)
|
||||||
== 0x04;
|
== 0x04;
|
||||||
pwm2 = (smsc47m1_read_value(data, SMSC47M1_REG_PPIN(1)) & 0x05)
|
pwm2 = (smsc47m1_read_value(data, SMSC47M1_REG_PPIN(1)) & 0x05)
|
||||||
|
@ -697,12 +737,14 @@ static int __init smsc47m1_probe(struct platform_device *pdev)
|
||||||
goto error_free;
|
goto error_free;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Some values (fan min, clock dividers, pwm registers) may be
|
/*
|
||||||
needed before any update is triggered, so we better read them
|
* Some values (fan min, clock dividers, pwm registers) may be
|
||||||
at least once here. We don't usually do it that way, but in
|
* needed before any update is triggered, so we better read them
|
||||||
this particular case, manually reading 5 registers out of 8
|
* at least once here. We don't usually do it that way, but in
|
||||||
doesn't make much sense and we're better using the existing
|
* this particular case, manually reading 5 registers out of 8
|
||||||
function. */
|
* doesn't make much sense and we're better using the existing
|
||||||
|
* function.
|
||||||
|
*/
|
||||||
smsc47m1_update_device(dev, 1);
|
smsc47m1_update_device(dev, 1);
|
||||||
|
|
||||||
/* Register sysfs hooks */
|
/* Register sysfs hooks */
|
||||||
|
|
Loading…
Reference in a new issue