Commit 85a0c0d1 authored by Guenter Roeck's avatar Guenter Roeck Committed by Guenter Roeck

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: default avatarGuenter Roeck <linux@roeck-us.net>
parent 7e612685
/* /*
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 }; ...@@ -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 }; ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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 */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment