aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon/amc6821.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hwmon/amc6821.c')
-rw-r--r--drivers/hwmon/amc6821.c74
1 files changed, 32 insertions, 42 deletions
diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c
index 89a6b9da0ec3..f600fa1f92e3 100644
--- a/drivers/hwmon/amc6821.c
+++ b/drivers/hwmon/amc6821.c
@@ -1,25 +1,25 @@
1/* 1/*
2 amc6821.c - Part of lm_sensors, Linux kernel modules for hardware 2 * amc6821.c - Part of lm_sensors, Linux kernel modules for hardware
3 monitoring 3 * monitoring
4 Copyright (C) 2009 T. Mertelj <tomaz.mertelj@guest.arnes.si> 4 * Copyright (C) 2009 T. Mertelj <tomaz.mertelj@guest.arnes.si>
5 5 *
6 Based on max6650.c: 6 * Based on max6650.c:
7 Copyright (C) 2007 Hans J. Koch <hjk@hansjkoch.de> 7 * Copyright (C) 2007 Hans J. Koch <hjk@hansjkoch.de>
8 8 *
9 This program is free software; you can redistribute it and/or modify 9 * This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by 10 * it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or 11 * the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version. 12 * (at your option) any later version.
13 13 *
14 This program is distributed in the hope that it will be useful, 14 * This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details. 17 * GNU General Public License for more details.
18 18 *
19 You should have received a copy of the GNU General Public License 19 * You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software 20 * along with this program; if not, write to the Free Software
21 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22*/ 22 */
23 23
24 24
25#include <linux/kernel.h> /* Needed for KERN_INFO */ 25#include <linux/kernel.h> /* Needed for KERN_INFO */
@@ -47,7 +47,7 @@ static const unsigned short normal_i2c[] = {0x18, 0x19, 0x1a, 0x2c, 0x2d, 0x2e,
47 * Insmod parameters 47 * Insmod parameters
48 */ 48 */
49 49
50static int pwminv = 0; /*Inverted PWM output. */ 50static int pwminv; /*Inverted PWM output. */
51module_param(pwminv, int, S_IRUGO); 51module_param(pwminv, int, S_IRUGO);
52 52
53static int init = 1; /*Power-on initialization.*/ 53static int init = 1; /*Power-on initialization.*/
@@ -188,7 +188,7 @@ static struct i2c_driver amc6821_driver = {
188 188
189/* 189/*
190 * Client data (each client gets its own) 190 * Client data (each client gets its own)
191 */ 191 */
192 192
193struct amc6821_data { 193struct amc6821_data {
194 struct device *hwmon_dev; 194 struct device *hwmon_dev;
@@ -836,8 +836,10 @@ static int amc6821_detect(
836 return -ENODEV; 836 return -ENODEV;
837 } 837 }
838 838
839 /* Bit 7 of the address register is ignored, so we can check the 839 /*
840 ID registers again */ 840 * Bit 7 of the address register is ignored, so we can check the
841 * ID registers again
842 */
841 dev_id = i2c_smbus_read_byte_data(client, 0x80 | AMC6821_REG_DEV_ID); 843 dev_id = i2c_smbus_read_byte_data(client, 0x80 | AMC6821_REG_DEV_ID);
842 comp_id = i2c_smbus_read_byte_data(client, 0x80 | AMC6821_REG_COMP_ID); 844 comp_id = i2c_smbus_read_byte_data(client, 0x80 | AMC6821_REG_COMP_ID);
843 if (dev_id != 0x21 || comp_id != 0x49) { 845 if (dev_id != 0x21 || comp_id != 0x49) {
@@ -1080,9 +1082,10 @@ static struct amc6821_data *amc6821_update_device(struct device *dev)
1080 data->pwm1_auto_channels_temp = 3; 1082 data->pwm1_auto_channels_temp = 3;
1081 data->pwm1_enable = 3; 1083 data->pwm1_enable = 3;
1082 break; 1084 break;
1083 case 1: /*semi-open loop: software sets rpm, chip controls pwm1, 1085 case 1: /*
1084 *currently not implemented 1086 * semi-open loop: software sets rpm, chip controls
1085 */ 1087 * pwm1, currently not implemented
1088 */
1086 data->pwm1_auto_channels_temp = 0; 1089 data->pwm1_auto_channels_temp = 0;
1087 data->pwm1_enable = 0; 1090 data->pwm1_enable = 0;
1088 break; 1091 break;
@@ -1095,20 +1098,7 @@ static struct amc6821_data *amc6821_update_device(struct device *dev)
1095 return data; 1098 return data;
1096} 1099}
1097 1100
1098 1101module_i2c_driver(amc6821_driver);
1099static int __init amc6821_init(void)
1100{
1101 return i2c_add_driver(&amc6821_driver);
1102}
1103
1104static void __exit amc6821_exit(void)
1105{
1106 i2c_del_driver(&amc6821_driver);
1107}
1108
1109module_init(amc6821_init);
1110module_exit(amc6821_exit);
1111
1112 1102
1113MODULE_LICENSE("GPL"); 1103MODULE_LICENSE("GPL");
1114MODULE_AUTHOR("T. Mertelj <tomaz.mertelj@guest.arnes.si>"); 1104MODULE_AUTHOR("T. Mertelj <tomaz.mertelj@guest.arnes.si>");