aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon/lm93.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-03-21 13:37:25 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-03-21 13:37:25 -0400
commit31f6765266417c0d99f0e922fe82848a7c9c2ae9 (patch)
tree2d5914dac0a918baad37decd3845b8c206051420 /drivers/hwmon/lm93.c
parentd15d76448bb58c7832e954b6a8f1e301720b7866 (diff)
parent312869ec935ab3bb67b7ba641a7d11230555aff5 (diff)
Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
Pull hwmon changes for v3.4 from Guenter Roeck: "Mostly cleanup. No new drivers this time around, but support for several chips added to existing drivers: TPS40400, TPS40422, MTD040, MAX34446, ZL9101M, ZL9117M, and LM96080. Also, added watchdog support for SCH56xx, and additional attributes for a couple of drivers." * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: (137 commits) hwmon: (sch56xx) Add support for the integrated watchdog (v2) hwmon: (w83627ehf) Add support for temperature offset registers hwmon: (jc42) Remove unnecessary device IDs hwmon: (zl6100) Add support for ZL9101M and ZL9117M hwmon: (adm1275) Add support for ADM1075 hwmon: (max34440) Add support for MAX34446 hwmon: (pmbus) Add more virtual registers hwmon: (pmbus) Add support for Lineage Power MDT040 hwmon: (pmbus) Add support for TI TPS40400 and TPS40422 hwmon: (max34440) Add support for 'lowest' output voltage attribute hwmon: (jc42) Convert to use devm_kzalloc hwmon: (max16065) Convert to use devm_kzalloc hwmon: (smm665) Convert to use devm_kzalloc hwmon: (ltc4261) Convert to use devm_kzalloc hwmon: (pmbus) Simplify remove functions hwmon: (pmbus) Convert pmbus drivers to use devm_kzalloc hwmon: (lineage-pem) Convert to use devm_kzalloc hwmon: (hwmon-vid) Fix checkpatch issues hwmon: (hwmon-vid) Add new entries to VRM model table hwmon: (lm80) Add detection of NatSemi/TI LM96080 ...
Diffstat (limited to 'drivers/hwmon/lm93.c')
-rw-r--r--drivers/hwmon/lm93.c696
1 files changed, 428 insertions, 268 deletions
diff --git a/drivers/hwmon/lm93.c b/drivers/hwmon/lm93.c
index 8bd6c5c9e05b..67e8fe256e02 100644
--- a/drivers/hwmon/lm93.c
+++ b/drivers/hwmon/lm93.c
@@ -1,42 +1,42 @@
1/* 1/*
2 lm93.c - Part of lm_sensors, Linux kernel modules for hardware monitoring 2 * lm93.c - Part of lm_sensors, Linux kernel modules for hardware monitoring
3 3 *
4 Author/Maintainer: Mark M. Hoffman <mhoffman@lightlink.com> 4 * Author/Maintainer: Mark M. Hoffman <mhoffman@lightlink.com>
5 Copyright (c) 2004 Utilitek Systems, Inc. 5 * Copyright (c) 2004 Utilitek Systems, Inc.
6 6 *
7 derived in part from lm78.c: 7 * derived in part from lm78.c:
8 Copyright (c) 1998, 1999 Frodo Looijaard <frodol@dds.nl> 8 * Copyright (c) 1998, 1999 Frodo Looijaard <frodol@dds.nl>
9 9 *
10 derived in part from lm85.c: 10 * derived in part from lm85.c:
11 Copyright (c) 2002, 2003 Philip Pokorny <ppokorny@penguincomputing.com> 11 * Copyright (c) 2002, 2003 Philip Pokorny <ppokorny@penguincomputing.com>
12 Copyright (c) 2003 Margit Schubert-While <margitsw@t-online.de> 12 * Copyright (c) 2003 Margit Schubert-While <margitsw@t-online.de>
13 13 *
14 derived in part from w83l785ts.c: 14 * derived in part from w83l785ts.c:
15 Copyright (c) 2003-2004 Jean Delvare <khali@linux-fr.org> 15 * Copyright (c) 2003-2004 Jean Delvare <khali@linux-fr.org>
16 16 *
17 Ported to Linux 2.6 by Eric J. Bowersox <ericb@aspsys.com> 17 * Ported to Linux 2.6 by Eric J. Bowersox <ericb@aspsys.com>
18 Copyright (c) 2005 Aspen Systems, Inc. 18 * Copyright (c) 2005 Aspen Systems, Inc.
19 19 *
20 Adapted to 2.6.20 by Carsten Emde <cbe@osadl.org> 20 * Adapted to 2.6.20 by Carsten Emde <cbe@osadl.org>
21 Copyright (c) 2006 Carsten Emde, Open Source Automation Development Lab 21 * Copyright (c) 2006 Carsten Emde, Open Source Automation Development Lab
22 22 *
23 Modified for mainline integration by Hans J. Koch <hjk@hansjkoch.de> 23 * Modified for mainline integration by Hans J. Koch <hjk@hansjkoch.de>
24 Copyright (c) 2007 Hans J. Koch, Linutronix GmbH 24 * Copyright (c) 2007 Hans J. Koch, Linutronix GmbH
25 25 *
26 This program is free software; you can redistribute it and/or modify 26 * This program is free software; you can redistribute it and/or modify
27 it under the terms of the GNU General Public License as published by 27 * it under the terms of the GNU General Public License as published by
28 the Free Software Foundation; either version 2 of the License, or 28 * the Free Software Foundation; either version 2 of the License, or
29 (at your option) any later version. 29 * (at your option) any later version.
30 30 *
31 This program is distributed in the hope that it will be useful, 31 * This program is distributed in the hope that it will be useful,
32 but WITHOUT ANY WARRANTY; without even the implied warranty of 32 * but WITHOUT ANY WARRANTY; without even the implied warranty of
33 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 33 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
34 GNU General Public License for more details. 34 * GNU General Public License for more details.
35 35 *
36 You should have received a copy of the GNU General Public License 36 * You should have received a copy of the GNU General Public License
37 along with this program; if not, write to the Free Software 37 * along with this program; if not, write to the Free Software
38 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 38 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
39*/ 39 */
40 40
41#include <linux/module.h> 41#include <linux/module.h>
42#include <linux/init.h> 42#include <linux/init.h>
@@ -83,7 +83,7 @@
83#define LM93_REG_FAN_MIN(nr) (0xb4 + (nr) * 2) 83#define LM93_REG_FAN_MIN(nr) (0xb4 + (nr) * 2)
84 84
85/* pwm outputs: pwm1-pwm2 (nr => 0-1, reg => 0-3) */ 85/* pwm outputs: pwm1-pwm2 (nr => 0-1, reg => 0-3) */
86#define LM93_REG_PWM_CTL(nr,reg) (0xc8 + (reg) + (nr) * 4) 86#define LM93_REG_PWM_CTL(nr, reg) (0xc8 + (reg) + (nr) * 4)
87#define LM93_PWM_CTL1 0x0 87#define LM93_PWM_CTL1 0x0
88#define LM93_PWM_CTL2 0x1 88#define LM93_PWM_CTL2 0x1
89#define LM93_PWM_CTL3 0x2 89#define LM93_PWM_CTL3 0x2
@@ -160,7 +160,7 @@ static bool init;
160module_param(init, bool, 0); 160module_param(init, bool, 0);
161MODULE_PARM_DESC(init, "Set to non-zero to force chip initialization."); 161MODULE_PARM_DESC(init, "Set to non-zero to force chip initialization.");
162 162
163static int vccp_limit_type[2] = {0,0}; 163static int vccp_limit_type[2] = {0, 0};
164module_param_array(vccp_limit_type, int, NULL, 0); 164module_param_array(vccp_limit_type, int, NULL, 0);
165MODULE_PARM_DESC(vccp_limit_type, "Configures in7 and in8 limit modes."); 165MODULE_PARM_DESC(vccp_limit_type, "Configures in7 and in8 limit modes.");
166 166
@@ -187,8 +187,10 @@ static const struct { u8 cmd; u8 len; } lm93_block_read_cmds[12] = {
187 { 0xfd, 9 }, 187 { 0xfd, 9 },
188}; 188};
189 189
190/* ALARMS: SYSCTL format described further below 190/*
191 REG: 64 bits in 8 registers, as immediately below */ 191 * ALARMS: SYSCTL format described further below
192 * REG: 64 bits in 8 registers, as immediately below
193 */
192struct block1_t { 194struct block1_t {
193 u8 host_status_1; 195 u8 host_status_1;
194 u8 host_status_2; 196 u8 host_status_2;
@@ -217,8 +219,10 @@ struct lm93_data {
217 /* register values, arranged by block read groups */ 219 /* register values, arranged by block read groups */
218 struct block1_t block1; 220 struct block1_t block1;
219 221
220 /* temp1 - temp4: unfiltered readings 222 /*
221 temp1 - temp2: filtered readings */ 223 * temp1 - temp4: unfiltered readings
224 * temp1 - temp2: filtered readings
225 */
222 u8 block2[6]; 226 u8 block2[6];
223 227
224 /* vin1 - vin16: readings */ 228 /* vin1 - vin16: readings */
@@ -295,14 +299,18 @@ struct lm93_data {
295 u8 sfc2; 299 u8 sfc2;
296 u8 sf_tach_to_pwm; 300 u8 sf_tach_to_pwm;
297 301
298 /* The two PWM CTL2 registers can read something other than what was 302 /*
299 last written for the OVR_DC field (duty cycle override). So, we 303 * The two PWM CTL2 registers can read something other than what was
300 save the user-commanded value here. */ 304 * last written for the OVR_DC field (duty cycle override). So, we
305 * save the user-commanded value here.
306 */
301 u8 pwm_override[2]; 307 u8 pwm_override[2];
302}; 308};
303 309
304/* VID: mV 310/*
305 REG: 6-bits, right justified, *always* using Intel VRM/VRD 10 */ 311 * VID: mV
312 * REG: 6-bits, right justified, *always* using Intel VRM/VRD 10
313 */
306static int LM93_VID_FROM_REG(u8 reg) 314static int LM93_VID_FROM_REG(u8 reg)
307{ 315{
308 return vid_from_reg((reg & 0x3f), 100); 316 return vid_from_reg((reg & 0x3f), 100);
@@ -317,12 +325,13 @@ static const u8 lm93_vin_reg_max[16] = {
317 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 325 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
318 0xff, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd1, 326 0xff, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd1,
319}; 327};
320/* Values from the datasheet. They're here for documentation only. 328/*
321static const u8 lm93_vin_reg_nom[16] = { 329 * Values from the datasheet. They're here for documentation only.
322 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 330 * static const u8 lm93_vin_reg_nom[16] = {
323 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x40, 0xc0, 331 * 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
324}; 332 * 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x40, 0xc0,
325*/ 333 * };
334 */
326 335
327/* min, max, and nominal voltage readings, per channel (mV)*/ 336/* min, max, and nominal voltage readings, per channel (mV)*/
328static const unsigned long lm93_vin_val_min[16] = { 337static const unsigned long lm93_vin_val_min[16] = {
@@ -334,12 +343,13 @@ static const unsigned long lm93_vin_val_max[16] = {
334 1236, 1236, 1236, 1600, 2000, 2000, 1600, 1600, 343 1236, 1236, 1236, 1600, 2000, 2000, 1600, 1600,
335 4400, 6500, 3333, 2625, 1312, 1312, 1236, 3600, 344 4400, 6500, 3333, 2625, 1312, 1312, 1236, 3600,
336}; 345};
337/* Values from the datasheet. They're here for documentation only. 346/*
338static const unsigned long lm93_vin_val_nom[16] = { 347 * Values from the datasheet. They're here for documentation only.
339 927, 927, 927, 1200, 1500, 1500, 1200, 1200, 348 * static const unsigned long lm93_vin_val_nom[16] = {
340 3300, 5000, 2500, 1969, 984, 984, 309, 3300, 349 * 927, 927, 927, 1200, 1500, 1500, 1200, 1200,
341}; 350 * 3300, 5000, 2500, 1969, 984, 984, 309, 3300,
342*/ 351 * };
352 */
343 353
344static unsigned LM93_IN_FROM_REG(int nr, u8 reg) 354static unsigned LM93_IN_FROM_REG(int nr, u8 reg)
345{ 355{
@@ -353,8 +363,10 @@ static unsigned LM93_IN_FROM_REG(int nr, u8 reg)
353 return (slope * reg + intercept + 500) / 1000; 363 return (slope * reg + intercept + 500) / 1000;
354} 364}
355 365
356/* IN: mV, limits determined by channel nr 366/*
357 REG: scaling determined by channel nr */ 367 * IN: mV, limits determined by channel nr
368 * REG: scaling determined by channel nr
369 */
358static u8 LM93_IN_TO_REG(int nr, unsigned val) 370static u8 LM93_IN_TO_REG(int nr, unsigned val)
359{ 371{
360 /* range limit */ 372 /* range limit */
@@ -386,12 +398,14 @@ static unsigned LM93_IN_REL_FROM_REG(u8 reg, int upper, int vid)
386 return (uV_vid + uV_offset + 5000) / 10000; 398 return (uV_vid + uV_offset + 5000) / 10000;
387} 399}
388 400
389#define LM93_IN_MIN_FROM_REG(reg,vid) LM93_IN_REL_FROM_REG(reg,0,vid) 401#define LM93_IN_MIN_FROM_REG(reg, vid) LM93_IN_REL_FROM_REG((reg), 0, (vid))
390#define LM93_IN_MAX_FROM_REG(reg,vid) LM93_IN_REL_FROM_REG(reg,1,vid) 402#define LM93_IN_MAX_FROM_REG(reg, vid) LM93_IN_REL_FROM_REG((reg), 1, (vid))
391 403
392/* vid in mV , upper == 0 indicates low limit, otherwise upper limit 404/*
393 upper also determines which nibble of the register is returned 405 * vid in mV , upper == 0 indicates low limit, otherwise upper limit
394 (the other nibble will be 0x0) */ 406 * upper also determines which nibble of the register is returned
407 * (the other nibble will be 0x0)
408 */
395static u8 LM93_IN_REL_TO_REG(unsigned val, int upper, int vid) 409static u8 LM93_IN_REL_TO_REG(unsigned val, int upper, int vid)
396{ 410{
397 long uV_offset = vid * 1000 - val * 10000; 411 long uV_offset = vid * 1000 - val * 10000;
@@ -404,22 +418,26 @@ static u8 LM93_IN_REL_TO_REG(unsigned val, int upper, int vid)
404 } 418 }
405} 419}
406 420
407/* TEMP: 1/1000 degrees C (-128C to +127C) 421/*
408 REG: 1C/bit, two's complement */ 422 * TEMP: 1/1000 degrees C (-128C to +127C)
423 * REG: 1C/bit, two's complement
424 */
409static int LM93_TEMP_FROM_REG(u8 reg) 425static int LM93_TEMP_FROM_REG(u8 reg)
410{ 426{
411 return (s8)reg * 1000; 427 return (s8)reg * 1000;
412} 428}
413 429
414#define LM93_TEMP_MIN (-128000) 430#define LM93_TEMP_MIN (-128000)
415#define LM93_TEMP_MAX ( 127000) 431#define LM93_TEMP_MAX (127000)
416 432
417/* TEMP: 1/1000 degrees C (-128C to +127C) 433/*
418 REG: 1C/bit, two's complement */ 434 * TEMP: 1/1000 degrees C (-128C to +127C)
435 * REG: 1C/bit, two's complement
436 */
419static u8 LM93_TEMP_TO_REG(long temp) 437static u8 LM93_TEMP_TO_REG(long temp)
420{ 438{
421 int ntemp = SENSORS_LIMIT(temp, LM93_TEMP_MIN, LM93_TEMP_MAX); 439 int ntemp = SENSORS_LIMIT(temp, LM93_TEMP_MIN, LM93_TEMP_MAX);
422 ntemp += (ntemp<0 ? -500 : 500); 440 ntemp += (ntemp < 0 ? -500 : 500);
423 return (u8)(ntemp / 1000); 441 return (u8)(ntemp / 1000);
424} 442}
425 443
@@ -430,21 +448,25 @@ static int LM93_TEMP_OFFSET_MODE_FROM_REG(u8 sfc2, int nr)
430 return sfc2 & (nr < 2 ? 0x10 : 0x20); 448 return sfc2 & (nr < 2 ? 0x10 : 0x20);
431} 449}
432 450
433/* This function is common to all 4-bit temperature offsets 451/*
434 reg is 4 bits right justified 452 * This function is common to all 4-bit temperature offsets
435 mode 0 => 1C/bit, mode !0 => 0.5C/bit */ 453 * reg is 4 bits right justified
454 * mode 0 => 1C/bit, mode !0 => 0.5C/bit
455 */
436static int LM93_TEMP_OFFSET_FROM_REG(u8 reg, int mode) 456static int LM93_TEMP_OFFSET_FROM_REG(u8 reg, int mode)
437{ 457{
438 return (reg & 0x0f) * (mode ? 5 : 10); 458 return (reg & 0x0f) * (mode ? 5 : 10);
439} 459}
440 460
441#define LM93_TEMP_OFFSET_MIN ( 0) 461#define LM93_TEMP_OFFSET_MIN (0)
442#define LM93_TEMP_OFFSET_MAX0 (150) 462#define LM93_TEMP_OFFSET_MAX0 (150)
443#define LM93_TEMP_OFFSET_MAX1 ( 75) 463#define LM93_TEMP_OFFSET_MAX1 (75)
444 464
445/* This function is common to all 4-bit temperature offsets 465/*
446 returns 4 bits right justified 466 * This function is common to all 4-bit temperature offsets
447 mode 0 => 1C/bit, mode !0 => 0.5C/bit */ 467 * returns 4 bits right justified
468 * mode 0 => 1C/bit, mode !0 => 0.5C/bit
469 */
448static u8 LM93_TEMP_OFFSET_TO_REG(int off, int mode) 470static u8 LM93_TEMP_OFFSET_TO_REG(int off, int mode)
449{ 471{
450 int factor = mode ? 5 : 10; 472 int factor = mode ? 5 : 10;
@@ -466,9 +488,11 @@ static int LM93_TEMP_AUTO_OFFSET_FROM_REG(u8 reg, int nr, int mode)
466 return LM93_TEMP_OFFSET_FROM_REG(reg >> 4 & 0x0f, mode); 488 return LM93_TEMP_OFFSET_FROM_REG(reg >> 4 & 0x0f, mode);
467} 489}
468 490
469/* TEMP: 1/10 degrees C (0C to +15C (mode 0) or +7.5C (mode non-zero)) 491/*
470 REG: 1.0C/bit (mode 0) or 0.5C/bit (mode non-zero) 492 * TEMP: 1/10 degrees C (0C to +15C (mode 0) or +7.5C (mode non-zero))
471 0 <= nr <= 3 */ 493 * REG: 1.0C/bit (mode 0) or 0.5C/bit (mode non-zero)
494 * 0 <= nr <= 3
495 */
472static u8 LM93_TEMP_AUTO_OFFSET_TO_REG(u8 old, int off, int nr, int mode) 496static u8 LM93_TEMP_AUTO_OFFSET_TO_REG(u8 old, int off, int nr, int mode)
473{ 497{
474 u8 new = LM93_TEMP_OFFSET_TO_REG(off, mode); 498 u8 new = LM93_TEMP_OFFSET_TO_REG(off, mode);
@@ -532,9 +556,12 @@ static u8 LM93_AUTO_BOOST_HYST_TO_REG(struct lm93_data *data, long hyst,
532 return reg; 556 return reg;
533} 557}
534 558
535/* PWM: 0-255 per sensors documentation 559/*
536 REG: 0-13 as mapped below... right justified */ 560 * PWM: 0-255 per sensors documentation
537typedef enum { LM93_PWM_MAP_HI_FREQ, LM93_PWM_MAP_LO_FREQ } pwm_freq_t; 561 * REG: 0-13 as mapped below... right justified
562 */
563enum pwm_freq { LM93_PWM_MAP_HI_FREQ, LM93_PWM_MAP_LO_FREQ };
564
538static int lm93_pwm_map[2][16] = { 565static int lm93_pwm_map[2][16] = {
539 { 566 {
540 0x00, /* 0.00% */ 0x40, /* 25.00% */ 567 0x00, /* 0.00% */ 0x40, /* 25.00% */
@@ -558,13 +585,13 @@ static int lm93_pwm_map[2][16] = {
558 }, 585 },
559}; 586};
560 587
561static int LM93_PWM_FROM_REG(u8 reg, pwm_freq_t freq) 588static int LM93_PWM_FROM_REG(u8 reg, enum pwm_freq freq)
562{ 589{
563 return lm93_pwm_map[freq][reg & 0x0f]; 590 return lm93_pwm_map[freq][reg & 0x0f];
564} 591}
565 592
566/* round up to nearest match */ 593/* round up to nearest match */
567static u8 LM93_PWM_TO_REG(int pwm, pwm_freq_t freq) 594static u8 LM93_PWM_TO_REG(int pwm, enum pwm_freq freq)
568{ 595{
569 int i; 596 int i;
570 for (i = 0; i < 13; i++) 597 for (i = 0; i < 13; i++)
@@ -578,7 +605,7 @@ static u8 LM93_PWM_TO_REG(int pwm, pwm_freq_t freq)
578static int LM93_FAN_FROM_REG(u16 regs) 605static int LM93_FAN_FROM_REG(u16 regs)
579{ 606{
580 const u16 count = le16_to_cpu(regs) >> 2; 607 const u16 count = le16_to_cpu(regs) >> 2;
581 return count==0 ? -1 : count==0x3fff ? 0: 1350000 / count; 608 return count == 0 ? -1 : count == 0x3fff ? 0 : 1350000 / count;
582} 609}
583 610
584/* 611/*
@@ -600,8 +627,10 @@ static u16 LM93_FAN_TO_REG(long rpm)
600 return cpu_to_le16(regs); 627 return cpu_to_le16(regs);
601} 628}
602 629
603/* PWM FREQ: HZ 630/*
604 REG: 0-7 as mapped below */ 631 * PWM FREQ: HZ
632 * REG: 0-7 as mapped below
633 */
605static int lm93_pwm_freq_map[8] = { 634static int lm93_pwm_freq_map[8] = {
606 22500, 96, 84, 72, 60, 48, 36, 12 635 22500, 96, 84, 72, 60, 48, 36, 12
607}; 636};
@@ -623,8 +652,10 @@ static u8 LM93_PWM_FREQ_TO_REG(int freq)
623 return (u8)i; 652 return (u8)i;
624} 653}
625 654
626/* TIME: 1/100 seconds 655/*
627 * REG: 0-7 as mapped below */ 656 * TIME: 1/100 seconds
657 * REG: 0-7 as mapped below
658 */
628static int lm93_spinup_time_map[8] = { 659static int lm93_spinup_time_map[8] = {
629 0, 10, 25, 40, 70, 100, 200, 400, 660 0, 10, 25, 40, 70, 100, 200, 400,
630}; 661};
@@ -654,24 +685,30 @@ static int LM93_RAMP_FROM_REG(u8 reg)
654 return (reg & 0x0f) * 5; 685 return (reg & 0x0f) * 5;
655} 686}
656 687
657/* RAMP: 1/100 seconds 688/*
658 REG: 50mS/bit 4-bits right justified */ 689 * RAMP: 1/100 seconds
690 * REG: 50mS/bit 4-bits right justified
691 */
659static u8 LM93_RAMP_TO_REG(int ramp) 692static u8 LM93_RAMP_TO_REG(int ramp)
660{ 693{
661 ramp = SENSORS_LIMIT(ramp, LM93_RAMP_MIN, LM93_RAMP_MAX); 694 ramp = SENSORS_LIMIT(ramp, LM93_RAMP_MIN, LM93_RAMP_MAX);
662 return (u8)((ramp + 2) / 5); 695 return (u8)((ramp + 2) / 5);
663} 696}
664 697
665/* PROCHOT: 0-255, 0 => 0%, 255 => > 96.6% 698/*
666 * REG: (same) */ 699 * PROCHOT: 0-255, 0 => 0%, 255 => > 96.6%
700 * REG: (same)
701 */
667static u8 LM93_PROCHOT_TO_REG(long prochot) 702static u8 LM93_PROCHOT_TO_REG(long prochot)
668{ 703{
669 prochot = SENSORS_LIMIT(prochot, 0, 255); 704 prochot = SENSORS_LIMIT(prochot, 0, 255);
670 return (u8)prochot; 705 return (u8)prochot;
671} 706}
672 707
673/* PROCHOT-INTERVAL: 73 - 37200 (1/100 seconds) 708/*
674 * REG: 0-9 as mapped below */ 709 * PROCHOT-INTERVAL: 73 - 37200 (1/100 seconds)
710 * REG: 0-9 as mapped below
711 */
675static int lm93_interval_map[10] = { 712static int lm93_interval_map[10] = {
676 73, 146, 290, 580, 1170, 2330, 4660, 9320, 18600, 37200, 713 73, 146, 290, 580, 1170, 2330, 4660, 9320, 18600, 37200,
677}; 714};
@@ -693,22 +730,25 @@ static u8 LM93_INTERVAL_TO_REG(long interval)
693 return (u8)i; 730 return (u8)i;
694} 731}
695 732
696/* GPIO: 0-255, GPIO0 is LSB 733/*
697 * REG: inverted */ 734 * GPIO: 0-255, GPIO0 is LSB
735 * REG: inverted
736 */
698static unsigned LM93_GPI_FROM_REG(u8 reg) 737static unsigned LM93_GPI_FROM_REG(u8 reg)
699{ 738{
700 return ~reg & 0xff; 739 return ~reg & 0xff;
701} 740}
702 741
703/* alarm bitmask definitions 742/*
704 The LM93 has nearly 64 bits of error status... I've pared that down to 743 * alarm bitmask definitions
705 what I think is a useful subset in order to fit it into 32 bits. 744 * The LM93 has nearly 64 bits of error status... I've pared that down to
706 745 * what I think is a useful subset in order to fit it into 32 bits.
707 Especially note that the #VRD_HOT alarms are missing because we provide 746 *
708 that information as values in another sysfs file. 747 * Especially note that the #VRD_HOT alarms are missing because we provide
709 748 * that information as values in another sysfs file.
710 If libsensors is extended to support 64 bit values, this could be revisited. 749 *
711*/ 750 * If libsensors is extended to support 64 bit values, this could be revisited.
751 */
712#define LM93_ALARM_IN1 0x00000001 752#define LM93_ALARM_IN1 0x00000001
713#define LM93_ALARM_IN2 0x00000002 753#define LM93_ALARM_IN2 0x00000002
714#define LM93_ALARM_IN3 0x00000004 754#define LM93_ALARM_IN3 0x00000004
@@ -772,11 +812,12 @@ static u8 lm93_read_byte(struct i2c_client *client, u8 reg)
772 int value, i; 812 int value, i;
773 813
774 /* retry in case of read errors */ 814 /* retry in case of read errors */
775 for (i=1; i<=MAX_RETRIES; i++) { 815 for (i = 1; i <= MAX_RETRIES; i++) {
776 if ((value = i2c_smbus_read_byte_data(client, reg)) >= 0) { 816 value = i2c_smbus_read_byte_data(client, reg);
817 if (value >= 0) {
777 return value; 818 return value;
778 } else { 819 } else {
779 dev_warn(&client->dev,"lm93: read byte data failed, " 820 dev_warn(&client->dev, "lm93: read byte data failed, "
780 "address 0x%02x.\n", reg); 821 "address 0x%02x.\n", reg);
781 mdelay(i + 3); 822 mdelay(i + 3);
782 } 823 }
@@ -784,7 +825,7 @@ static u8 lm93_read_byte(struct i2c_client *client, u8 reg)
784 } 825 }
785 826
786 /* <TODO> what to return in case of error? */ 827 /* <TODO> what to return in case of error? */
787 dev_err(&client->dev,"lm93: All read byte retries failed!!\n"); 828 dev_err(&client->dev, "lm93: All read byte retries failed!!\n");
788 return 0; 829 return 0;
789} 830}
790 831
@@ -796,7 +837,7 @@ static int lm93_write_byte(struct i2c_client *client, u8 reg, u8 value)
796 result = i2c_smbus_write_byte_data(client, reg, value); 837 result = i2c_smbus_write_byte_data(client, reg, value);
797 838
798 if (result < 0) 839 if (result < 0)
799 dev_warn(&client->dev,"lm93: write byte data failed, " 840 dev_warn(&client->dev, "lm93: write byte data failed, "
800 "0x%02x at address 0x%02x.\n", value, reg); 841 "0x%02x at address 0x%02x.\n", value, reg);
801 842
802 return result; 843 return result;
@@ -807,11 +848,12 @@ static u16 lm93_read_word(struct i2c_client *client, u8 reg)
807 int value, i; 848 int value, i;
808 849
809 /* retry in case of read errors */ 850 /* retry in case of read errors */
810 for (i=1; i<=MAX_RETRIES; i++) { 851 for (i = 1; i <= MAX_RETRIES; i++) {
811 if ((value = i2c_smbus_read_word_data(client, reg)) >= 0) { 852 value = i2c_smbus_read_word_data(client, reg);
853 if (value >= 0) {
812 return value; 854 return value;
813 } else { 855 } else {
814 dev_warn(&client->dev,"lm93: read word data failed, " 856 dev_warn(&client->dev, "lm93: read word data failed, "
815 "address 0x%02x.\n", reg); 857 "address 0x%02x.\n", reg);
816 mdelay(i + 3); 858 mdelay(i + 3);
817 } 859 }
@@ -819,7 +861,7 @@ static u16 lm93_read_word(struct i2c_client *client, u8 reg)
819 } 861 }
820 862
821 /* <TODO> what to return in case of error? */ 863 /* <TODO> what to return in case of error? */
822 dev_err(&client->dev,"lm93: All read word retries failed!!\n"); 864 dev_err(&client->dev, "lm93: All read word retries failed!!\n");
823 return 0; 865 return 0;
824} 866}
825 867
@@ -831,7 +873,7 @@ static int lm93_write_word(struct i2c_client *client, u8 reg, u16 value)
831 result = i2c_smbus_write_word_data(client, reg, value); 873 result = i2c_smbus_write_word_data(client, reg, value);
832 874
833 if (result < 0) 875 if (result < 0)
834 dev_warn(&client->dev,"lm93: write word data failed, " 876 dev_warn(&client->dev, "lm93: write word data failed, "
835 "0x%04x at address 0x%02x.\n", value, reg); 877 "0x%04x at address 0x%02x.\n", value, reg);
836 878
837 return result; 879 return result;
@@ -840,13 +882,13 @@ static int lm93_write_word(struct i2c_client *client, u8 reg, u16 value)
840static u8 lm93_block_buffer[I2C_SMBUS_BLOCK_MAX]; 882static u8 lm93_block_buffer[I2C_SMBUS_BLOCK_MAX];
841 883
842/* 884/*
843 read block data into values, retry if not expected length 885 * read block data into values, retry if not expected length
844 fbn => index to lm93_block_read_cmds table 886 * fbn => index to lm93_block_read_cmds table
845 (Fixed Block Number - section 14.5.2 of LM93 datasheet) 887 * (Fixed Block Number - section 14.5.2 of LM93 datasheet)
846*/ 888 */
847static void lm93_read_block(struct i2c_client *client, u8 fbn, u8 *values) 889static void lm93_read_block(struct i2c_client *client, u8 fbn, u8 *values)
848{ 890{
849 int i, result=0; 891 int i, result = 0;
850 892
851 for (i = 1; i <= MAX_RETRIES; i++) { 893 for (i = 1; i <= MAX_RETRIES; i++) {
852 result = i2c_smbus_read_block_data(client, 894 result = i2c_smbus_read_block_data(client,
@@ -855,7 +897,7 @@ static void lm93_read_block(struct i2c_client *client, u8 fbn, u8 *values)
855 if (result == lm93_block_read_cmds[fbn].len) { 897 if (result == lm93_block_read_cmds[fbn].len) {
856 break; 898 break;
857 } else { 899 } else {
858 dev_warn(&client->dev,"lm93: block read data failed, " 900 dev_warn(&client->dev, "lm93: block read data failed, "
859 "command 0x%02x.\n", 901 "command 0x%02x.\n",
860 lm93_block_read_cmds[fbn].cmd); 902 lm93_block_read_cmds[fbn].cmd);
861 mdelay(i + 3); 903 mdelay(i + 3);
@@ -863,7 +905,8 @@ static void lm93_read_block(struct i2c_client *client, u8 fbn, u8 *values)
863 } 905 }
864 906
865 if (result == lm93_block_read_cmds[fbn].len) { 907 if (result == lm93_block_read_cmds[fbn].len) {
866 memcpy(values,lm93_block_buffer,lm93_block_read_cmds[fbn].len); 908 memcpy(values, lm93_block_buffer,
909 lm93_block_read_cmds[fbn].len);
867 } else { 910 } else {
868 /* <TODO> what to do in case of error? */ 911 /* <TODO> what to do in case of error? */
869 } 912 }
@@ -964,7 +1007,7 @@ static void lm93_update_client_common(struct lm93_data *data,
964static void lm93_update_client_full(struct lm93_data *data, 1007static void lm93_update_client_full(struct lm93_data *data,
965 struct i2c_client *client) 1008 struct i2c_client *client)
966{ 1009{
967 dev_dbg(&client->dev,"starting device update (block data enabled)\n"); 1010 dev_dbg(&client->dev, "starting device update (block data enabled)\n");
968 1011
969 /* in1 - in16: values & limits */ 1012 /* in1 - in16: values & limits */
970 lm93_read_block(client, 3, (u8 *)(data->block3)); 1013 lm93_read_block(client, 3, (u8 *)(data->block3));
@@ -996,10 +1039,10 @@ static void lm93_update_client_full(struct lm93_data *data,
996static void lm93_update_client_min(struct lm93_data *data, 1039static void lm93_update_client_min(struct lm93_data *data,
997 struct i2c_client *client) 1040 struct i2c_client *client)
998{ 1041{
999 int i,j; 1042 int i, j;
1000 u8 *ptr; 1043 u8 *ptr;
1001 1044
1002 dev_dbg(&client->dev,"starting device update (block data disabled)\n"); 1045 dev_dbg(&client->dev, "starting device update (block data disabled)\n");
1003 1046
1004 /* in1 - in16: values & limits */ 1047 /* in1 - in16: values & limits */
1005 for (i = 0; i < 16; i++) { 1048 for (i = 0; i < 16; i++) {
@@ -1037,7 +1080,7 @@ static void lm93_update_client_min(struct lm93_data *data,
1037 for (i = 0; i < 2; i++) { 1080 for (i = 0; i < 2; i++) {
1038 for (j = 0; j < 4; j++) { 1081 for (j = 0; j < 4; j++) {
1039 data->block9[i][j] = 1082 data->block9[i][j] =
1040 lm93_read_byte(client, LM93_REG_PWM_CTL(i,j)); 1083 lm93_read_byte(client, LM93_REG_PWM_CTL(i, j));
1041 } 1084 }
1042 } 1085 }
1043 1086
@@ -1097,14 +1140,13 @@ static ssize_t show_in_min(struct device *dev,
1097 int vccp = nr - 6; 1140 int vccp = nr - 6;
1098 long rc, vid; 1141 long rc, vid;
1099 1142
1100 if ((nr==6 || nr==7) && (vccp_limit_type[vccp])) { 1143 if ((nr == 6 || nr == 7) && vccp_limit_type[vccp]) {
1101 vid = LM93_VID_FROM_REG(data->vid[vccp]); 1144 vid = LM93_VID_FROM_REG(data->vid[vccp]);
1102 rc = LM93_IN_MIN_FROM_REG(data->vccp_limits[vccp], vid); 1145 rc = LM93_IN_MIN_FROM_REG(data->vccp_limits[vccp], vid);
1146 } else {
1147 rc = LM93_IN_FROM_REG(nr, data->block7[nr].min);
1103 } 1148 }
1104 else { 1149 return sprintf(buf, "%ld\n", rc);
1105 rc = LM93_IN_FROM_REG(nr, data->block7[nr].min); \
1106 }
1107 return sprintf(buf, "%ld\n", rc); \
1108} 1150}
1109 1151
1110static ssize_t store_in_min(struct device *dev, struct device_attribute *attr, 1152static ssize_t store_in_min(struct device *dev, struct device_attribute *attr,
@@ -1113,20 +1155,24 @@ static ssize_t store_in_min(struct device *dev, struct device_attribute *attr,
1113 int nr = (to_sensor_dev_attr(attr))->index; 1155 int nr = (to_sensor_dev_attr(attr))->index;
1114 struct i2c_client *client = to_i2c_client(dev); 1156 struct i2c_client *client = to_i2c_client(dev);
1115 struct lm93_data *data = i2c_get_clientdata(client); 1157 struct lm93_data *data = i2c_get_clientdata(client);
1116 u32 val = simple_strtoul(buf, NULL, 10);
1117 int vccp = nr - 6; 1158 int vccp = nr - 6;
1118 long vid; 1159 long vid;
1160 unsigned long val;
1161 int err;
1162
1163 err = kstrtoul(buf, 10, &val);
1164 if (err)
1165 return err;
1119 1166
1120 mutex_lock(&data->update_lock); 1167 mutex_lock(&data->update_lock);
1121 if ((nr==6 || nr==7) && (vccp_limit_type[vccp])) { 1168 if ((nr == 6 || nr == 7) && vccp_limit_type[vccp]) {
1122 vid = LM93_VID_FROM_REG(data->vid[vccp]); 1169 vid = LM93_VID_FROM_REG(data->vid[vccp]);
1123 data->vccp_limits[vccp] = (data->vccp_limits[vccp] & 0xf0) | 1170 data->vccp_limits[vccp] = (data->vccp_limits[vccp] & 0xf0) |
1124 LM93_IN_REL_TO_REG(val, 0, vid); 1171 LM93_IN_REL_TO_REG(val, 0, vid);
1125 lm93_write_byte(client, LM93_REG_VCCP_LIMIT_OFF(vccp), 1172 lm93_write_byte(client, LM93_REG_VCCP_LIMIT_OFF(vccp),
1126 data->vccp_limits[vccp]); 1173 data->vccp_limits[vccp]);
1127 } 1174 } else {
1128 else { 1175 data->block7[nr].min = LM93_IN_TO_REG(nr, val);
1129 data->block7[nr].min = LM93_IN_TO_REG(nr,val);
1130 lm93_write_byte(client, LM93_REG_IN_MIN(nr), 1176 lm93_write_byte(client, LM93_REG_IN_MIN(nr),
1131 data->block7[nr].min); 1177 data->block7[nr].min);
1132 } 1178 }
@@ -1175,14 +1221,13 @@ static ssize_t show_in_max(struct device *dev,
1175 int vccp = nr - 6; 1221 int vccp = nr - 6;
1176 long rc, vid; 1222 long rc, vid;
1177 1223
1178 if ((nr==6 || nr==7) && (vccp_limit_type[vccp])) { 1224 if ((nr == 6 || nr == 7) && vccp_limit_type[vccp]) {
1179 vid = LM93_VID_FROM_REG(data->vid[vccp]); 1225 vid = LM93_VID_FROM_REG(data->vid[vccp]);
1180 rc = LM93_IN_MAX_FROM_REG(data->vccp_limits[vccp],vid); 1226 rc = LM93_IN_MAX_FROM_REG(data->vccp_limits[vccp], vid);
1181 } 1227 } else {
1182 else { 1228 rc = LM93_IN_FROM_REG(nr, data->block7[nr].max);
1183 rc = LM93_IN_FROM_REG(nr,data->block7[nr].max); \
1184 } 1229 }
1185 return sprintf(buf,"%ld\n",rc); \ 1230 return sprintf(buf, "%ld\n", rc);
1186} 1231}
1187 1232
1188static ssize_t store_in_max(struct device *dev, struct device_attribute *attr, 1233static ssize_t store_in_max(struct device *dev, struct device_attribute *attr,
@@ -1191,20 +1236,24 @@ static ssize_t store_in_max(struct device *dev, struct device_attribute *attr,
1191 int nr = (to_sensor_dev_attr(attr))->index; 1236 int nr = (to_sensor_dev_attr(attr))->index;
1192 struct i2c_client *client = to_i2c_client(dev); 1237 struct i2c_client *client = to_i2c_client(dev);
1193 struct lm93_data *data = i2c_get_clientdata(client); 1238 struct lm93_data *data = i2c_get_clientdata(client);
1194 u32 val = simple_strtoul(buf, NULL, 10);
1195 int vccp = nr - 6; 1239 int vccp = nr - 6;
1196 long vid; 1240 long vid;
1241 unsigned long val;
1242 int err;
1243
1244 err = kstrtoul(buf, 10, &val);
1245 if (err)
1246 return err;
1197 1247
1198 mutex_lock(&data->update_lock); 1248 mutex_lock(&data->update_lock);
1199 if ((nr==6 || nr==7) && (vccp_limit_type[vccp])) { 1249 if ((nr == 6 || nr == 7) && vccp_limit_type[vccp]) {
1200 vid = LM93_VID_FROM_REG(data->vid[vccp]); 1250 vid = LM93_VID_FROM_REG(data->vid[vccp]);
1201 data->vccp_limits[vccp] = (data->vccp_limits[vccp] & 0x0f) | 1251 data->vccp_limits[vccp] = (data->vccp_limits[vccp] & 0x0f) |
1202 LM93_IN_REL_TO_REG(val, 1, vid); 1252 LM93_IN_REL_TO_REG(val, 1, vid);
1203 lm93_write_byte(client, LM93_REG_VCCP_LIMIT_OFF(vccp), 1253 lm93_write_byte(client, LM93_REG_VCCP_LIMIT_OFF(vccp),
1204 data->vccp_limits[vccp]); 1254 data->vccp_limits[vccp]);
1205 } 1255 } else {
1206 else { 1256 data->block7[nr].max = LM93_IN_TO_REG(nr, val);
1207 data->block7[nr].max = LM93_IN_TO_REG(nr,val);
1208 lm93_write_byte(client, LM93_REG_IN_MAX(nr), 1257 lm93_write_byte(client, LM93_REG_IN_MAX(nr),
1209 data->block7[nr].max); 1258 data->block7[nr].max);
1210 } 1259 }
@@ -1250,7 +1299,7 @@ static ssize_t show_temp(struct device *dev,
1250{ 1299{
1251 int nr = (to_sensor_dev_attr(attr))->index; 1300 int nr = (to_sensor_dev_attr(attr))->index;
1252 struct lm93_data *data = lm93_update_device(dev); 1301 struct lm93_data *data = lm93_update_device(dev);
1253 return sprintf(buf,"%d\n",LM93_TEMP_FROM_REG(data->block2[nr])); 1302 return sprintf(buf, "%d\n", LM93_TEMP_FROM_REG(data->block2[nr]));
1254} 1303}
1255 1304
1256static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, 0); 1305static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, 0);
@@ -1262,7 +1311,7 @@ static ssize_t show_temp_min(struct device *dev,
1262{ 1311{
1263 int nr = (to_sensor_dev_attr(attr))->index; 1312 int nr = (to_sensor_dev_attr(attr))->index;
1264 struct lm93_data *data = lm93_update_device(dev); 1313 struct lm93_data *data = lm93_update_device(dev);
1265 return sprintf(buf,"%d\n",LM93_TEMP_FROM_REG(data->temp_lim[nr].min)); 1314 return sprintf(buf, "%d\n", LM93_TEMP_FROM_REG(data->temp_lim[nr].min));
1266} 1315}
1267 1316
1268static ssize_t store_temp_min(struct device *dev, struct device_attribute *attr, 1317static ssize_t store_temp_min(struct device *dev, struct device_attribute *attr,
@@ -1271,7 +1320,12 @@ static ssize_t store_temp_min(struct device *dev, struct device_attribute *attr,
1271 int nr = (to_sensor_dev_attr(attr))->index; 1320 int nr = (to_sensor_dev_attr(attr))->index;
1272 struct i2c_client *client = to_i2c_client(dev); 1321 struct i2c_client *client = to_i2c_client(dev);
1273 struct lm93_data *data = i2c_get_clientdata(client); 1322 struct lm93_data *data = i2c_get_clientdata(client);
1274 long val = simple_strtol(buf, NULL, 10); 1323 long val;
1324 int err;
1325
1326 err = kstrtol(buf, 10, &val);
1327 if (err)
1328 return err;
1275 1329
1276 mutex_lock(&data->update_lock); 1330 mutex_lock(&data->update_lock);
1277 data->temp_lim[nr].min = LM93_TEMP_TO_REG(val); 1331 data->temp_lim[nr].min = LM93_TEMP_TO_REG(val);
@@ -1292,7 +1346,7 @@ static ssize_t show_temp_max(struct device *dev,
1292{ 1346{
1293 int nr = (to_sensor_dev_attr(attr))->index; 1347 int nr = (to_sensor_dev_attr(attr))->index;
1294 struct lm93_data *data = lm93_update_device(dev); 1348 struct lm93_data *data = lm93_update_device(dev);
1295 return sprintf(buf,"%d\n",LM93_TEMP_FROM_REG(data->temp_lim[nr].max)); 1349 return sprintf(buf, "%d\n", LM93_TEMP_FROM_REG(data->temp_lim[nr].max));
1296} 1350}
1297 1351
1298static ssize_t store_temp_max(struct device *dev, struct device_attribute *attr, 1352static ssize_t store_temp_max(struct device *dev, struct device_attribute *attr,
@@ -1301,7 +1355,12 @@ static ssize_t store_temp_max(struct device *dev, struct device_attribute *attr,
1301 int nr = (to_sensor_dev_attr(attr))->index; 1355 int nr = (to_sensor_dev_attr(attr))->index;
1302 struct i2c_client *client = to_i2c_client(dev); 1356 struct i2c_client *client = to_i2c_client(dev);
1303 struct lm93_data *data = i2c_get_clientdata(client); 1357 struct lm93_data *data = i2c_get_clientdata(client);
1304 long val = simple_strtol(buf, NULL, 10); 1358 long val;
1359 int err;
1360
1361 err = kstrtol(buf, 10, &val);
1362 if (err)
1363 return err;
1305 1364
1306 mutex_lock(&data->update_lock); 1365 mutex_lock(&data->update_lock);
1307 data->temp_lim[nr].max = LM93_TEMP_TO_REG(val); 1366 data->temp_lim[nr].max = LM93_TEMP_TO_REG(val);
@@ -1322,7 +1381,7 @@ static ssize_t show_temp_auto_base(struct device *dev,
1322{ 1381{
1323 int nr = (to_sensor_dev_attr(attr))->index; 1382 int nr = (to_sensor_dev_attr(attr))->index;
1324 struct lm93_data *data = lm93_update_device(dev); 1383 struct lm93_data *data = lm93_update_device(dev);
1325 return sprintf(buf,"%d\n",LM93_TEMP_FROM_REG(data->block10.base[nr])); 1384 return sprintf(buf, "%d\n", LM93_TEMP_FROM_REG(data->block10.base[nr]));
1326} 1385}
1327 1386
1328static ssize_t store_temp_auto_base(struct device *dev, 1387static ssize_t store_temp_auto_base(struct device *dev,
@@ -1332,7 +1391,12 @@ static ssize_t store_temp_auto_base(struct device *dev,
1332 int nr = (to_sensor_dev_attr(attr))->index; 1391 int nr = (to_sensor_dev_attr(attr))->index;
1333 struct i2c_client *client = to_i2c_client(dev); 1392 struct i2c_client *client = to_i2c_client(dev);
1334 struct lm93_data *data = i2c_get_clientdata(client); 1393 struct lm93_data *data = i2c_get_clientdata(client);
1335 long val = simple_strtol(buf, NULL, 10); 1394 long val;
1395 int err;
1396
1397 err = kstrtol(buf, 10, &val);
1398 if (err)
1399 return err;
1336 1400
1337 mutex_lock(&data->update_lock); 1401 mutex_lock(&data->update_lock);
1338 data->block10.base[nr] = LM93_TEMP_TO_REG(val); 1402 data->block10.base[nr] = LM93_TEMP_TO_REG(val);
@@ -1349,11 +1413,11 @@ static SENSOR_DEVICE_ATTR(temp3_auto_base, S_IWUSR | S_IRUGO,
1349 show_temp_auto_base, store_temp_auto_base, 2); 1413 show_temp_auto_base, store_temp_auto_base, 2);
1350 1414
1351static ssize_t show_temp_auto_boost(struct device *dev, 1415static ssize_t show_temp_auto_boost(struct device *dev,
1352 struct device_attribute *attr,char *buf) 1416 struct device_attribute *attr, char *buf)
1353{ 1417{
1354 int nr = (to_sensor_dev_attr(attr))->index; 1418 int nr = (to_sensor_dev_attr(attr))->index;
1355 struct lm93_data *data = lm93_update_device(dev); 1419 struct lm93_data *data = lm93_update_device(dev);
1356 return sprintf(buf,"%d\n",LM93_TEMP_FROM_REG(data->boost[nr])); 1420 return sprintf(buf, "%d\n", LM93_TEMP_FROM_REG(data->boost[nr]));
1357} 1421}
1358 1422
1359static ssize_t store_temp_auto_boost(struct device *dev, 1423static ssize_t store_temp_auto_boost(struct device *dev,
@@ -1363,7 +1427,12 @@ static ssize_t store_temp_auto_boost(struct device *dev,
1363 int nr = (to_sensor_dev_attr(attr))->index; 1427 int nr = (to_sensor_dev_attr(attr))->index;
1364 struct i2c_client *client = to_i2c_client(dev); 1428 struct i2c_client *client = to_i2c_client(dev);
1365 struct lm93_data *data = i2c_get_clientdata(client); 1429 struct lm93_data *data = i2c_get_clientdata(client);
1366 long val = simple_strtol(buf, NULL, 10); 1430 long val;
1431 int err;
1432
1433 err = kstrtol(buf, 10, &val);
1434 if (err)
1435 return err;
1367 1436
1368 mutex_lock(&data->update_lock); 1437 mutex_lock(&data->update_lock);
1369 data->boost[nr] = LM93_TEMP_TO_REG(val); 1438 data->boost[nr] = LM93_TEMP_TO_REG(val);
@@ -1386,7 +1455,7 @@ static ssize_t show_temp_auto_boost_hyst(struct device *dev,
1386 int nr = (to_sensor_dev_attr(attr))->index; 1455 int nr = (to_sensor_dev_attr(attr))->index;
1387 struct lm93_data *data = lm93_update_device(dev); 1456 struct lm93_data *data = lm93_update_device(dev);
1388 int mode = LM93_TEMP_OFFSET_MODE_FROM_REG(data->sfc2, nr); 1457 int mode = LM93_TEMP_OFFSET_MODE_FROM_REG(data->sfc2, nr);
1389 return sprintf(buf,"%d\n", 1458 return sprintf(buf, "%d\n",
1390 LM93_AUTO_BOOST_HYST_FROM_REGS(data, nr, mode)); 1459 LM93_AUTO_BOOST_HYST_FROM_REGS(data, nr, mode));
1391} 1460}
1392 1461
@@ -1397,7 +1466,12 @@ static ssize_t store_temp_auto_boost_hyst(struct device *dev,
1397 int nr = (to_sensor_dev_attr(attr))->index; 1466 int nr = (to_sensor_dev_attr(attr))->index;
1398 struct i2c_client *client = to_i2c_client(dev); 1467 struct i2c_client *client = to_i2c_client(dev);
1399 struct lm93_data *data = i2c_get_clientdata(client); 1468 struct lm93_data *data = i2c_get_clientdata(client);
1400 u32 val = simple_strtoul(buf, NULL, 10); 1469 unsigned long val;
1470 int err;
1471
1472 err = kstrtoul(buf, 10, &val);
1473 if (err)
1474 return err;
1401 1475
1402 mutex_lock(&data->update_lock); 1476 mutex_lock(&data->update_lock);
1403 /* force 0.5C/bit mode */ 1477 /* force 0.5C/bit mode */
@@ -1429,9 +1503,9 @@ static ssize_t show_temp_auto_offset(struct device *dev,
1429 int ofs = s_attr->nr; 1503 int ofs = s_attr->nr;
1430 struct lm93_data *data = lm93_update_device(dev); 1504 struct lm93_data *data = lm93_update_device(dev);
1431 int mode = LM93_TEMP_OFFSET_MODE_FROM_REG(data->sfc2, nr); 1505 int mode = LM93_TEMP_OFFSET_MODE_FROM_REG(data->sfc2, nr);
1432 return sprintf(buf,"%d\n", 1506 return sprintf(buf, "%d\n",
1433 LM93_TEMP_AUTO_OFFSET_FROM_REG(data->block10.offset[ofs], 1507 LM93_TEMP_AUTO_OFFSET_FROM_REG(data->block10.offset[ofs],
1434 nr,mode)); 1508 nr, mode));
1435} 1509}
1436 1510
1437static ssize_t store_temp_auto_offset(struct device *dev, 1511static ssize_t store_temp_auto_offset(struct device *dev,
@@ -1443,7 +1517,12 @@ static ssize_t store_temp_auto_offset(struct device *dev,
1443 int ofs = s_attr->nr; 1517 int ofs = s_attr->nr;
1444 struct i2c_client *client = to_i2c_client(dev); 1518 struct i2c_client *client = to_i2c_client(dev);
1445 struct lm93_data *data = i2c_get_clientdata(client); 1519 struct lm93_data *data = i2c_get_clientdata(client);
1446 u32 val = simple_strtoul(buf, NULL, 10); 1520 unsigned long val;
1521 int err;
1522
1523 err = kstrtoul(buf, 10, &val);
1524 if (err)
1525 return err;
1447 1526
1448 mutex_lock(&data->update_lock); 1527 mutex_lock(&data->update_lock);
1449 /* force 0.5C/bit mode */ 1528 /* force 0.5C/bit mode */
@@ -1539,7 +1618,7 @@ static ssize_t show_temp_auto_pwm_min(struct device *dev,
1539 struct lm93_data *data = lm93_update_device(dev); 1618 struct lm93_data *data = lm93_update_device(dev);
1540 reg = data->auto_pwm_min_hyst[nr/2] >> 4 & 0x0f; 1619 reg = data->auto_pwm_min_hyst[nr/2] >> 4 & 0x0f;
1541 ctl4 = data->block9[nr][LM93_PWM_CTL4]; 1620 ctl4 = data->block9[nr][LM93_PWM_CTL4];
1542 return sprintf(buf,"%d\n",LM93_PWM_FROM_REG(reg, (ctl4 & 0x07) ? 1621 return sprintf(buf, "%d\n", LM93_PWM_FROM_REG(reg, (ctl4 & 0x07) ?
1543 LM93_PWM_MAP_LO_FREQ : LM93_PWM_MAP_HI_FREQ)); 1622 LM93_PWM_MAP_LO_FREQ : LM93_PWM_MAP_HI_FREQ));
1544} 1623}
1545 1624
@@ -1550,12 +1629,17 @@ static ssize_t store_temp_auto_pwm_min(struct device *dev,
1550 int nr = (to_sensor_dev_attr(attr))->index; 1629 int nr = (to_sensor_dev_attr(attr))->index;
1551 struct i2c_client *client = to_i2c_client(dev); 1630 struct i2c_client *client = to_i2c_client(dev);
1552 struct lm93_data *data = i2c_get_clientdata(client); 1631 struct lm93_data *data = i2c_get_clientdata(client);
1553 u32 val = simple_strtoul(buf, NULL, 10);
1554 u8 reg, ctl4; 1632 u8 reg, ctl4;
1633 unsigned long val;
1634 int err;
1635
1636 err = kstrtoul(buf, 10, &val);
1637 if (err)
1638 return err;
1555 1639
1556 mutex_lock(&data->update_lock); 1640 mutex_lock(&data->update_lock);
1557 reg = lm93_read_byte(client, LM93_REG_PWM_MIN_HYST(nr)); 1641 reg = lm93_read_byte(client, LM93_REG_PWM_MIN_HYST(nr));
1558 ctl4 = lm93_read_byte(client, LM93_REG_PWM_CTL(nr,LM93_PWM_CTL4)); 1642 ctl4 = lm93_read_byte(client, LM93_REG_PWM_CTL(nr, LM93_PWM_CTL4));
1559 reg = (reg & 0x0f) | 1643 reg = (reg & 0x0f) |
1560 LM93_PWM_TO_REG(val, (ctl4 & 0x07) ? 1644 LM93_PWM_TO_REG(val, (ctl4 & 0x07) ?
1561 LM93_PWM_MAP_LO_FREQ : 1645 LM93_PWM_MAP_LO_FREQ :
@@ -1582,8 +1666,8 @@ static ssize_t show_temp_auto_offset_hyst(struct device *dev,
1582 int nr = (to_sensor_dev_attr(attr))->index; 1666 int nr = (to_sensor_dev_attr(attr))->index;
1583 struct lm93_data *data = lm93_update_device(dev); 1667 struct lm93_data *data = lm93_update_device(dev);
1584 int mode = LM93_TEMP_OFFSET_MODE_FROM_REG(data->sfc2, nr); 1668 int mode = LM93_TEMP_OFFSET_MODE_FROM_REG(data->sfc2, nr);
1585 return sprintf(buf,"%d\n",LM93_TEMP_OFFSET_FROM_REG( 1669 return sprintf(buf, "%d\n", LM93_TEMP_OFFSET_FROM_REG(
1586 data->auto_pwm_min_hyst[nr/2], mode)); 1670 data->auto_pwm_min_hyst[nr / 2], mode));
1587} 1671}
1588 1672
1589static ssize_t store_temp_auto_offset_hyst(struct device *dev, 1673static ssize_t store_temp_auto_offset_hyst(struct device *dev,
@@ -1593,8 +1677,13 @@ static ssize_t store_temp_auto_offset_hyst(struct device *dev,
1593 int nr = (to_sensor_dev_attr(attr))->index; 1677 int nr = (to_sensor_dev_attr(attr))->index;
1594 struct i2c_client *client = to_i2c_client(dev); 1678 struct i2c_client *client = to_i2c_client(dev);
1595 struct lm93_data *data = i2c_get_clientdata(client); 1679 struct lm93_data *data = i2c_get_clientdata(client);
1596 u32 val = simple_strtoul(buf, NULL, 10);
1597 u8 reg; 1680 u8 reg;
1681 unsigned long val;
1682 int err;
1683
1684 err = kstrtoul(buf, 10, &val);
1685 if (err)
1686 return err;
1598 1687
1599 mutex_lock(&data->update_lock); 1688 mutex_lock(&data->update_lock);
1600 /* force 0.5C/bit mode */ 1689 /* force 0.5C/bit mode */
@@ -1626,7 +1715,7 @@ static ssize_t show_fan_input(struct device *dev,
1626 int nr = s_attr->index; 1715 int nr = s_attr->index;
1627 struct lm93_data *data = lm93_update_device(dev); 1716 struct lm93_data *data = lm93_update_device(dev);
1628 1717
1629 return sprintf(buf,"%d\n",LM93_FAN_FROM_REG(data->block5[nr])); 1718 return sprintf(buf, "%d\n", LM93_FAN_FROM_REG(data->block5[nr]));
1630} 1719}
1631 1720
1632static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, show_fan_input, NULL, 0); 1721static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, show_fan_input, NULL, 0);
@@ -1640,7 +1729,7 @@ static ssize_t show_fan_min(struct device *dev,
1640 int nr = (to_sensor_dev_attr(attr))->index; 1729 int nr = (to_sensor_dev_attr(attr))->index;
1641 struct lm93_data *data = lm93_update_device(dev); 1730 struct lm93_data *data = lm93_update_device(dev);
1642 1731
1643 return sprintf(buf,"%d\n",LM93_FAN_FROM_REG(data->block8[nr])); 1732 return sprintf(buf, "%d\n", LM93_FAN_FROM_REG(data->block8[nr]));
1644} 1733}
1645 1734
1646static ssize_t store_fan_min(struct device *dev, struct device_attribute *attr, 1735static ssize_t store_fan_min(struct device *dev, struct device_attribute *attr,
@@ -1649,11 +1738,16 @@ static ssize_t store_fan_min(struct device *dev, struct device_attribute *attr,
1649 int nr = (to_sensor_dev_attr(attr))->index; 1738 int nr = (to_sensor_dev_attr(attr))->index;
1650 struct i2c_client *client = to_i2c_client(dev); 1739 struct i2c_client *client = to_i2c_client(dev);
1651 struct lm93_data *data = i2c_get_clientdata(client); 1740 struct lm93_data *data = i2c_get_clientdata(client);
1652 u32 val = simple_strtoul(buf, NULL, 10); 1741 unsigned long val;
1742 int err;
1743
1744 err = kstrtoul(buf, 10, &val);
1745 if (err)
1746 return err;
1653 1747
1654 mutex_lock(&data->update_lock); 1748 mutex_lock(&data->update_lock);
1655 data->block8[nr] = LM93_FAN_TO_REG(val); 1749 data->block8[nr] = LM93_FAN_TO_REG(val);
1656 lm93_write_word(client,LM93_REG_FAN_MIN(nr),data->block8[nr]); 1750 lm93_write_word(client, LM93_REG_FAN_MIN(nr), data->block8[nr]);
1657 mutex_unlock(&data->update_lock); 1751 mutex_unlock(&data->update_lock);
1658 return count; 1752 return count;
1659} 1753}
@@ -1667,18 +1761,19 @@ static SENSOR_DEVICE_ATTR(fan3_min, S_IWUSR | S_IRUGO,
1667static SENSOR_DEVICE_ATTR(fan4_min, S_IWUSR | S_IRUGO, 1761static SENSOR_DEVICE_ATTR(fan4_min, S_IWUSR | S_IRUGO,
1668 show_fan_min, store_fan_min, 3); 1762 show_fan_min, store_fan_min, 3);
1669 1763
1670/* some tedious bit-twiddling here to deal with the register format: 1764/*
1671 1765 * some tedious bit-twiddling here to deal with the register format:
1672 data->sf_tach_to_pwm: (tach to pwm mapping bits) 1766 *
1673 1767 * data->sf_tach_to_pwm: (tach to pwm mapping bits)
1674 bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 1768 *
1675 T4:P2 T4:P1 T3:P2 T3:P1 T2:P2 T2:P1 T1:P2 T1:P1 1769 * bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
1676 1770 * T4:P2 T4:P1 T3:P2 T3:P1 T2:P2 T2:P1 T1:P2 T1:P1
1677 data->sfc2: (enable bits) 1771 *
1678 1772 * data->sfc2: (enable bits)
1679 bit | 3 | 2 | 1 | 0 1773 *
1680 T4 T3 T2 T1 1774 * bit | 3 | 2 | 1 | 0
1681*/ 1775 * T4 T3 T2 T1
1776 */
1682 1777
1683static ssize_t show_fan_smart_tach(struct device *dev, 1778static ssize_t show_fan_smart_tach(struct device *dev,
1684 struct device_attribute *attr, char *buf) 1779 struct device_attribute *attr, char *buf)
@@ -1694,11 +1789,13 @@ static ssize_t show_fan_smart_tach(struct device *dev,
1694 /* if there's a mapping and it's enabled */ 1789 /* if there's a mapping and it's enabled */
1695 if (mapping && ((data->sfc2 >> nr) & 0x01)) 1790 if (mapping && ((data->sfc2 >> nr) & 0x01))
1696 rc = mapping; 1791 rc = mapping;
1697 return sprintf(buf,"%ld\n",rc); 1792 return sprintf(buf, "%ld\n", rc);
1698} 1793}
1699 1794
1700/* helper function - must grab data->update_lock before calling 1795/*
1701 fan is 0-3, indicating fan1-fan4 */ 1796 * helper function - must grab data->update_lock before calling
1797 * fan is 0-3, indicating fan1-fan4
1798 */
1702static void lm93_write_fan_smart_tach(struct i2c_client *client, 1799static void lm93_write_fan_smart_tach(struct i2c_client *client,
1703 struct lm93_data *data, int fan, long value) 1800 struct lm93_data *data, int fan, long value)
1704{ 1801{
@@ -1724,7 +1821,12 @@ static ssize_t store_fan_smart_tach(struct device *dev,
1724 int nr = (to_sensor_dev_attr(attr))->index; 1821 int nr = (to_sensor_dev_attr(attr))->index;
1725 struct i2c_client *client = to_i2c_client(dev); 1822 struct i2c_client *client = to_i2c_client(dev);
1726 struct lm93_data *data = i2c_get_clientdata(client); 1823 struct lm93_data *data = i2c_get_clientdata(client);
1727 u32 val = simple_strtoul(buf, NULL, 10); 1824 unsigned long val;
1825 int err;
1826
1827 err = kstrtoul(buf, 10, &val);
1828 if (err)
1829 return err;
1728 1830
1729 mutex_lock(&data->update_lock); 1831 mutex_lock(&data->update_lock);
1730 /* sanity test, ignore the write otherwise */ 1832 /* sanity test, ignore the write otherwise */
@@ -1732,7 +1834,7 @@ static ssize_t store_fan_smart_tach(struct device *dev,
1732 /* can't enable if pwm freq is 22.5KHz */ 1834 /* can't enable if pwm freq is 22.5KHz */
1733 if (val) { 1835 if (val) {
1734 u8 ctl4 = lm93_read_byte(client, 1836 u8 ctl4 = lm93_read_byte(client,
1735 LM93_REG_PWM_CTL(val-1,LM93_PWM_CTL4)); 1837 LM93_REG_PWM_CTL(val - 1, LM93_PWM_CTL4));
1736 if ((ctl4 & 0x07) == 0) 1838 if ((ctl4 & 0x07) == 0)
1737 val = 0; 1839 val = 0;
1738 } 1840 }
@@ -1766,7 +1868,7 @@ static ssize_t show_pwm(struct device *dev, struct device_attribute *attr,
1766 else /* show present h/w value if manual pwm disabled */ 1868 else /* show present h/w value if manual pwm disabled */
1767 rc = LM93_PWM_FROM_REG(ctl2 >> 4, (ctl4 & 0x07) ? 1869 rc = LM93_PWM_FROM_REG(ctl2 >> 4, (ctl4 & 0x07) ?
1768 LM93_PWM_MAP_LO_FREQ : LM93_PWM_MAP_HI_FREQ); 1870 LM93_PWM_MAP_LO_FREQ : LM93_PWM_MAP_HI_FREQ);
1769 return sprintf(buf,"%ld\n",rc); 1871 return sprintf(buf, "%ld\n", rc);
1770} 1872}
1771 1873
1772static ssize_t store_pwm(struct device *dev, struct device_attribute *attr, 1874static ssize_t store_pwm(struct device *dev, struct device_attribute *attr,
@@ -1775,19 +1877,24 @@ static ssize_t store_pwm(struct device *dev, struct device_attribute *attr,
1775 int nr = (to_sensor_dev_attr(attr))->index; 1877 int nr = (to_sensor_dev_attr(attr))->index;
1776 struct i2c_client *client = to_i2c_client(dev); 1878 struct i2c_client *client = to_i2c_client(dev);
1777 struct lm93_data *data = i2c_get_clientdata(client); 1879 struct lm93_data *data = i2c_get_clientdata(client);
1778 u32 val = simple_strtoul(buf, NULL, 10);
1779 u8 ctl2, ctl4; 1880 u8 ctl2, ctl4;
1881 unsigned long val;
1882 int err;
1883
1884 err = kstrtoul(buf, 10, &val);
1885 if (err)
1886 return err;
1780 1887
1781 mutex_lock(&data->update_lock); 1888 mutex_lock(&data->update_lock);
1782 ctl2 = lm93_read_byte(client,LM93_REG_PWM_CTL(nr,LM93_PWM_CTL2)); 1889 ctl2 = lm93_read_byte(client, LM93_REG_PWM_CTL(nr, LM93_PWM_CTL2));
1783 ctl4 = lm93_read_byte(client, LM93_REG_PWM_CTL(nr,LM93_PWM_CTL4)); 1890 ctl4 = lm93_read_byte(client, LM93_REG_PWM_CTL(nr, LM93_PWM_CTL4));
1784 ctl2 = (ctl2 & 0x0f) | LM93_PWM_TO_REG(val,(ctl4 & 0x07) ? 1891 ctl2 = (ctl2 & 0x0f) | LM93_PWM_TO_REG(val, (ctl4 & 0x07) ?
1785 LM93_PWM_MAP_LO_FREQ : LM93_PWM_MAP_HI_FREQ) << 4; 1892 LM93_PWM_MAP_LO_FREQ : LM93_PWM_MAP_HI_FREQ) << 4;
1786 /* save user commanded value */ 1893 /* save user commanded value */
1787 data->pwm_override[nr] = LM93_PWM_FROM_REG(ctl2 >> 4, 1894 data->pwm_override[nr] = LM93_PWM_FROM_REG(ctl2 >> 4,
1788 (ctl4 & 0x07) ? LM93_PWM_MAP_LO_FREQ : 1895 (ctl4 & 0x07) ? LM93_PWM_MAP_LO_FREQ :
1789 LM93_PWM_MAP_HI_FREQ); 1896 LM93_PWM_MAP_HI_FREQ);
1790 lm93_write_byte(client,LM93_REG_PWM_CTL(nr,LM93_PWM_CTL2),ctl2); 1897 lm93_write_byte(client, LM93_REG_PWM_CTL(nr, LM93_PWM_CTL2), ctl2);
1791 mutex_unlock(&data->update_lock); 1898 mutex_unlock(&data->update_lock);
1792 return count; 1899 return count;
1793} 1900}
@@ -1808,7 +1915,7 @@ static ssize_t show_pwm_enable(struct device *dev,
1808 rc = ((ctl2 & 0xF0) == 0xF0) ? 0 : 1; 1915 rc = ((ctl2 & 0xF0) == 0xF0) ? 0 : 1;
1809 else 1916 else
1810 rc = 2; 1917 rc = 2;
1811 return sprintf(buf,"%ld\n",rc); 1918 return sprintf(buf, "%ld\n", rc);
1812} 1919}
1813 1920
1814static ssize_t store_pwm_enable(struct device *dev, 1921static ssize_t store_pwm_enable(struct device *dev,
@@ -1818,26 +1925,33 @@ static ssize_t store_pwm_enable(struct device *dev,
1818 int nr = (to_sensor_dev_attr(attr))->index; 1925 int nr = (to_sensor_dev_attr(attr))->index;
1819 struct i2c_client *client = to_i2c_client(dev); 1926 struct i2c_client *client = to_i2c_client(dev);
1820 struct lm93_data *data = i2c_get_clientdata(client); 1927 struct lm93_data *data = i2c_get_clientdata(client);
1821 u32 val = simple_strtoul(buf, NULL, 10);
1822 u8 ctl2; 1928 u8 ctl2;
1929 unsigned long val;
1930 int err;
1931
1932 err = kstrtoul(buf, 10, &val);
1933 if (err)
1934 return err;
1823 1935
1824 mutex_lock(&data->update_lock); 1936 mutex_lock(&data->update_lock);
1825 ctl2 = lm93_read_byte(client,LM93_REG_PWM_CTL(nr,LM93_PWM_CTL2)); 1937 ctl2 = lm93_read_byte(client, LM93_REG_PWM_CTL(nr, LM93_PWM_CTL2));
1826 1938
1827 switch (val) { 1939 switch (val) {
1828 case 0: 1940 case 0:
1829 ctl2 |= 0xF1; /* enable manual override, set PWM to max */ 1941 ctl2 |= 0xF1; /* enable manual override, set PWM to max */
1830 break; 1942 break;
1831 case 1: ctl2 |= 0x01; /* enable manual override */ 1943 case 1:
1944 ctl2 |= 0x01; /* enable manual override */
1832 break; 1945 break;
1833 case 2: ctl2 &= ~0x01; /* disable manual override */ 1946 case 2:
1947 ctl2 &= ~0x01; /* disable manual override */
1834 break; 1948 break;
1835 default: 1949 default:
1836 mutex_unlock(&data->update_lock); 1950 mutex_unlock(&data->update_lock);
1837 return -EINVAL; 1951 return -EINVAL;
1838 } 1952 }
1839 1953
1840 lm93_write_byte(client,LM93_REG_PWM_CTL(nr,LM93_PWM_CTL2),ctl2); 1954 lm93_write_byte(client, LM93_REG_PWM_CTL(nr, LM93_PWM_CTL2), ctl2);
1841 mutex_unlock(&data->update_lock); 1955 mutex_unlock(&data->update_lock);
1842 return count; 1956 return count;
1843} 1957}
@@ -1855,12 +1969,14 @@ static ssize_t show_pwm_freq(struct device *dev, struct device_attribute *attr,
1855 u8 ctl4; 1969 u8 ctl4;
1856 1970
1857 ctl4 = data->block9[nr][LM93_PWM_CTL4]; 1971 ctl4 = data->block9[nr][LM93_PWM_CTL4];
1858 return sprintf(buf,"%d\n",LM93_PWM_FREQ_FROM_REG(ctl4)); 1972 return sprintf(buf, "%d\n", LM93_PWM_FREQ_FROM_REG(ctl4));
1859} 1973}
1860 1974
1861/* helper function - must grab data->update_lock before calling 1975/*
1862 pwm is 0-1, indicating pwm1-pwm2 1976 * helper function - must grab data->update_lock before calling
1863 this disables smart tach for all tach channels bound to the given pwm */ 1977 * pwm is 0-1, indicating pwm1-pwm2
1978 * this disables smart tach for all tach channels bound to the given pwm
1979 */
1864static void lm93_disable_fan_smart_tach(struct i2c_client *client, 1980static void lm93_disable_fan_smart_tach(struct i2c_client *client,
1865 struct lm93_data *data, int pwm) 1981 struct lm93_data *data, int pwm)
1866{ 1982{
@@ -1887,17 +2003,22 @@ static ssize_t store_pwm_freq(struct device *dev,
1887 int nr = (to_sensor_dev_attr(attr))->index; 2003 int nr = (to_sensor_dev_attr(attr))->index;
1888 struct i2c_client *client = to_i2c_client(dev); 2004 struct i2c_client *client = to_i2c_client(dev);
1889 struct lm93_data *data = i2c_get_clientdata(client); 2005 struct lm93_data *data = i2c_get_clientdata(client);
1890 u32 val = simple_strtoul(buf, NULL, 10);
1891 u8 ctl4; 2006 u8 ctl4;
2007 unsigned long val;
2008 int err;
2009
2010 err = kstrtoul(buf, 10, &val);
2011 if (err)
2012 return err;
1892 2013
1893 mutex_lock(&data->update_lock); 2014 mutex_lock(&data->update_lock);
1894 ctl4 = lm93_read_byte(client,LM93_REG_PWM_CTL(nr,LM93_PWM_CTL4)); 2015 ctl4 = lm93_read_byte(client, LM93_REG_PWM_CTL(nr, LM93_PWM_CTL4));
1895 ctl4 = (ctl4 & 0xf8) | LM93_PWM_FREQ_TO_REG(val); 2016 ctl4 = (ctl4 & 0xf8) | LM93_PWM_FREQ_TO_REG(val);
1896 data->block9[nr][LM93_PWM_CTL4] = ctl4; 2017 data->block9[nr][LM93_PWM_CTL4] = ctl4;
1897 /* ctl4 == 0 -> 22.5KHz -> disable smart tach */ 2018 /* ctl4 == 0 -> 22.5KHz -> disable smart tach */
1898 if (!ctl4) 2019 if (!ctl4)
1899 lm93_disable_fan_smart_tach(client, data, nr); 2020 lm93_disable_fan_smart_tach(client, data, nr);
1900 lm93_write_byte(client, LM93_REG_PWM_CTL(nr,LM93_PWM_CTL4), ctl4); 2021 lm93_write_byte(client, LM93_REG_PWM_CTL(nr, LM93_PWM_CTL4), ctl4);
1901 mutex_unlock(&data->update_lock); 2022 mutex_unlock(&data->update_lock);
1902 return count; 2023 return count;
1903} 2024}
@@ -1912,7 +2033,7 @@ static ssize_t show_pwm_auto_channels(struct device *dev,
1912{ 2033{
1913 int nr = (to_sensor_dev_attr(attr))->index; 2034 int nr = (to_sensor_dev_attr(attr))->index;
1914 struct lm93_data *data = lm93_update_device(dev); 2035 struct lm93_data *data = lm93_update_device(dev);
1915 return sprintf(buf,"%d\n",data->block9[nr][LM93_PWM_CTL1]); 2036 return sprintf(buf, "%d\n", data->block9[nr][LM93_PWM_CTL1]);
1916} 2037}
1917 2038
1918static ssize_t store_pwm_auto_channels(struct device *dev, 2039static ssize_t store_pwm_auto_channels(struct device *dev,
@@ -1922,11 +2043,16 @@ static ssize_t store_pwm_auto_channels(struct device *dev,
1922 int nr = (to_sensor_dev_attr(attr))->index; 2043 int nr = (to_sensor_dev_attr(attr))->index;
1923 struct i2c_client *client = to_i2c_client(dev); 2044 struct i2c_client *client = to_i2c_client(dev);
1924 struct lm93_data *data = i2c_get_clientdata(client); 2045 struct lm93_data *data = i2c_get_clientdata(client);
1925 u32 val = simple_strtoul(buf, NULL, 10); 2046 unsigned long val;
2047 int err;
2048
2049 err = kstrtoul(buf, 10, &val);
2050 if (err)
2051 return err;
1926 2052
1927 mutex_lock(&data->update_lock); 2053 mutex_lock(&data->update_lock);
1928 data->block9[nr][LM93_PWM_CTL1] = SENSORS_LIMIT(val, 0, 255); 2054 data->block9[nr][LM93_PWM_CTL1] = SENSORS_LIMIT(val, 0, 255);
1929 lm93_write_byte(client, LM93_REG_PWM_CTL(nr,LM93_PWM_CTL1), 2055 lm93_write_byte(client, LM93_REG_PWM_CTL(nr, LM93_PWM_CTL1),
1930 data->block9[nr][LM93_PWM_CTL1]); 2056 data->block9[nr][LM93_PWM_CTL1]);
1931 mutex_unlock(&data->update_lock); 2057 mutex_unlock(&data->update_lock);
1932 return count; 2058 return count;
@@ -1938,7 +2064,7 @@ static SENSOR_DEVICE_ATTR(pwm2_auto_channels, S_IWUSR | S_IRUGO,
1938 show_pwm_auto_channels, store_pwm_auto_channels, 1); 2064 show_pwm_auto_channels, store_pwm_auto_channels, 1);
1939 2065
1940static ssize_t show_pwm_auto_spinup_min(struct device *dev, 2066static ssize_t show_pwm_auto_spinup_min(struct device *dev,
1941 struct device_attribute *attr,char *buf) 2067 struct device_attribute *attr, char *buf)
1942{ 2068{
1943 int nr = (to_sensor_dev_attr(attr))->index; 2069 int nr = (to_sensor_dev_attr(attr))->index;
1944 struct lm93_data *data = lm93_update_device(dev); 2070 struct lm93_data *data = lm93_update_device(dev);
@@ -1946,7 +2072,7 @@ static ssize_t show_pwm_auto_spinup_min(struct device *dev,
1946 2072
1947 ctl3 = data->block9[nr][LM93_PWM_CTL3]; 2073 ctl3 = data->block9[nr][LM93_PWM_CTL3];
1948 ctl4 = data->block9[nr][LM93_PWM_CTL4]; 2074 ctl4 = data->block9[nr][LM93_PWM_CTL4];
1949 return sprintf(buf,"%d\n", 2075 return sprintf(buf, "%d\n",
1950 LM93_PWM_FROM_REG(ctl3 & 0x0f, (ctl4 & 0x07) ? 2076 LM93_PWM_FROM_REG(ctl3 & 0x0f, (ctl4 & 0x07) ?
1951 LM93_PWM_MAP_LO_FREQ : LM93_PWM_MAP_HI_FREQ)); 2077 LM93_PWM_MAP_LO_FREQ : LM93_PWM_MAP_HI_FREQ));
1952} 2078}
@@ -1958,17 +2084,22 @@ static ssize_t store_pwm_auto_spinup_min(struct device *dev,
1958 int nr = (to_sensor_dev_attr(attr))->index; 2084 int nr = (to_sensor_dev_attr(attr))->index;
1959 struct i2c_client *client = to_i2c_client(dev); 2085 struct i2c_client *client = to_i2c_client(dev);
1960 struct lm93_data *data = i2c_get_clientdata(client); 2086 struct lm93_data *data = i2c_get_clientdata(client);
1961 u32 val = simple_strtoul(buf, NULL, 10);
1962 u8 ctl3, ctl4; 2087 u8 ctl3, ctl4;
2088 unsigned long val;
2089 int err;
2090
2091 err = kstrtoul(buf, 10, &val);
2092 if (err)
2093 return err;
1963 2094
1964 mutex_lock(&data->update_lock); 2095 mutex_lock(&data->update_lock);
1965 ctl3 = lm93_read_byte(client,LM93_REG_PWM_CTL(nr, LM93_PWM_CTL3)); 2096 ctl3 = lm93_read_byte(client, LM93_REG_PWM_CTL(nr, LM93_PWM_CTL3));
1966 ctl4 = lm93_read_byte(client,LM93_REG_PWM_CTL(nr, LM93_PWM_CTL4)); 2097 ctl4 = lm93_read_byte(client, LM93_REG_PWM_CTL(nr, LM93_PWM_CTL4));
1967 ctl3 = (ctl3 & 0xf0) | LM93_PWM_TO_REG(val, (ctl4 & 0x07) ? 2098 ctl3 = (ctl3 & 0xf0) | LM93_PWM_TO_REG(val, (ctl4 & 0x07) ?
1968 LM93_PWM_MAP_LO_FREQ : 2099 LM93_PWM_MAP_LO_FREQ :
1969 LM93_PWM_MAP_HI_FREQ); 2100 LM93_PWM_MAP_HI_FREQ);
1970 data->block9[nr][LM93_PWM_CTL3] = ctl3; 2101 data->block9[nr][LM93_PWM_CTL3] = ctl3;
1971 lm93_write_byte(client,LM93_REG_PWM_CTL(nr, LM93_PWM_CTL3), ctl3); 2102 lm93_write_byte(client, LM93_REG_PWM_CTL(nr, LM93_PWM_CTL3), ctl3);
1972 mutex_unlock(&data->update_lock); 2103 mutex_unlock(&data->update_lock);
1973 return count; 2104 return count;
1974} 2105}
@@ -1985,7 +2116,7 @@ static ssize_t show_pwm_auto_spinup_time(struct device *dev,
1985{ 2116{
1986 int nr = (to_sensor_dev_attr(attr))->index; 2117 int nr = (to_sensor_dev_attr(attr))->index;
1987 struct lm93_data *data = lm93_update_device(dev); 2118 struct lm93_data *data = lm93_update_device(dev);
1988 return sprintf(buf,"%d\n",LM93_SPINUP_TIME_FROM_REG( 2119 return sprintf(buf, "%d\n", LM93_SPINUP_TIME_FROM_REG(
1989 data->block9[nr][LM93_PWM_CTL3])); 2120 data->block9[nr][LM93_PWM_CTL3]));
1990} 2121}
1991 2122
@@ -1996,14 +2127,19 @@ static ssize_t store_pwm_auto_spinup_time(struct device *dev,
1996 int nr = (to_sensor_dev_attr(attr))->index; 2127 int nr = (to_sensor_dev_attr(attr))->index;
1997 struct i2c_client *client = to_i2c_client(dev); 2128 struct i2c_client *client = to_i2c_client(dev);
1998 struct lm93_data *data = i2c_get_clientdata(client); 2129 struct lm93_data *data = i2c_get_clientdata(client);
1999 u32 val = simple_strtoul(buf, NULL, 10);
2000 u8 ctl3; 2130 u8 ctl3;
2131 unsigned long val;
2132 int err;
2133
2134 err = kstrtoul(buf, 10, &val);
2135 if (err)
2136 return err;
2001 2137
2002 mutex_lock(&data->update_lock); 2138 mutex_lock(&data->update_lock);
2003 ctl3 = lm93_read_byte(client,LM93_REG_PWM_CTL(nr, LM93_PWM_CTL3)); 2139 ctl3 = lm93_read_byte(client, LM93_REG_PWM_CTL(nr, LM93_PWM_CTL3));
2004 ctl3 = (ctl3 & 0x1f) | (LM93_SPINUP_TIME_TO_REG(val) << 5 & 0xe0); 2140 ctl3 = (ctl3 & 0x1f) | (LM93_SPINUP_TIME_TO_REG(val) << 5 & 0xe0);
2005 data->block9[nr][LM93_PWM_CTL3] = ctl3; 2141 data->block9[nr][LM93_PWM_CTL3] = ctl3;
2006 lm93_write_byte(client,LM93_REG_PWM_CTL(nr, LM93_PWM_CTL3), ctl3); 2142 lm93_write_byte(client, LM93_REG_PWM_CTL(nr, LM93_PWM_CTL3), ctl3);
2007 mutex_unlock(&data->update_lock); 2143 mutex_unlock(&data->update_lock);
2008 return count; 2144 return count;
2009} 2145}
@@ -2019,7 +2155,7 @@ static ssize_t show_pwm_auto_prochot_ramp(struct device *dev,
2019 struct device_attribute *attr, char *buf) 2155 struct device_attribute *attr, char *buf)
2020{ 2156{
2021 struct lm93_data *data = lm93_update_device(dev); 2157 struct lm93_data *data = lm93_update_device(dev);
2022 return sprintf(buf,"%d\n", 2158 return sprintf(buf, "%d\n",
2023 LM93_RAMP_FROM_REG(data->pwm_ramp_ctl >> 4 & 0x0f)); 2159 LM93_RAMP_FROM_REG(data->pwm_ramp_ctl >> 4 & 0x0f));
2024} 2160}
2025 2161
@@ -2029,8 +2165,13 @@ static ssize_t store_pwm_auto_prochot_ramp(struct device *dev,
2029{ 2165{
2030 struct i2c_client *client = to_i2c_client(dev); 2166 struct i2c_client *client = to_i2c_client(dev);
2031 struct lm93_data *data = i2c_get_clientdata(client); 2167 struct lm93_data *data = i2c_get_clientdata(client);
2032 u32 val = simple_strtoul(buf, NULL, 10);
2033 u8 ramp; 2168 u8 ramp;
2169 unsigned long val;
2170 int err;
2171
2172 err = kstrtoul(buf, 10, &val);
2173 if (err)
2174 return err;
2034 2175
2035 mutex_lock(&data->update_lock); 2176 mutex_lock(&data->update_lock);
2036 ramp = lm93_read_byte(client, LM93_REG_PWM_RAMP_CTL); 2177 ramp = lm93_read_byte(client, LM93_REG_PWM_RAMP_CTL);
@@ -2048,7 +2189,7 @@ static ssize_t show_pwm_auto_vrdhot_ramp(struct device *dev,
2048 struct device_attribute *attr, char *buf) 2189 struct device_attribute *attr, char *buf)
2049{ 2190{
2050 struct lm93_data *data = lm93_update_device(dev); 2191 struct lm93_data *data = lm93_update_device(dev);
2051 return sprintf(buf,"%d\n", 2192 return sprintf(buf, "%d\n",
2052 LM93_RAMP_FROM_REG(data->pwm_ramp_ctl & 0x0f)); 2193 LM93_RAMP_FROM_REG(data->pwm_ramp_ctl & 0x0f));
2053} 2194}
2054 2195
@@ -2058,8 +2199,13 @@ static ssize_t store_pwm_auto_vrdhot_ramp(struct device *dev,
2058{ 2199{
2059 struct i2c_client *client = to_i2c_client(dev); 2200 struct i2c_client *client = to_i2c_client(dev);
2060 struct lm93_data *data = i2c_get_clientdata(client); 2201 struct lm93_data *data = i2c_get_clientdata(client);
2061 u32 val = simple_strtoul(buf, NULL, 10);
2062 u8 ramp; 2202 u8 ramp;
2203 unsigned long val;
2204 int err;
2205
2206 err = kstrtoul(buf, 10, &val);
2207 if (err)
2208 return err;
2063 2209
2064 mutex_lock(&data->update_lock); 2210 mutex_lock(&data->update_lock);
2065 ramp = lm93_read_byte(client, LM93_REG_PWM_RAMP_CTL); 2211 ramp = lm93_read_byte(client, LM93_REG_PWM_RAMP_CTL);
@@ -2078,7 +2224,7 @@ static ssize_t show_vid(struct device *dev, struct device_attribute *attr,
2078{ 2224{
2079 int nr = (to_sensor_dev_attr(attr))->index; 2225 int nr = (to_sensor_dev_attr(attr))->index;
2080 struct lm93_data *data = lm93_update_device(dev); 2226 struct lm93_data *data = lm93_update_device(dev);
2081 return sprintf(buf,"%d\n",LM93_VID_FROM_REG(data->vid[nr])); 2227 return sprintf(buf, "%d\n", LM93_VID_FROM_REG(data->vid[nr]));
2082} 2228}
2083 2229
2084static SENSOR_DEVICE_ATTR(cpu0_vid, S_IRUGO, show_vid, NULL, 0); 2230static SENSOR_DEVICE_ATTR(cpu0_vid, S_IRUGO, show_vid, NULL, 0);
@@ -2089,7 +2235,7 @@ static ssize_t show_prochot(struct device *dev, struct device_attribute *attr,
2089{ 2235{
2090 int nr = (to_sensor_dev_attr(attr))->index; 2236 int nr = (to_sensor_dev_attr(attr))->index;
2091 struct lm93_data *data = lm93_update_device(dev); 2237 struct lm93_data *data = lm93_update_device(dev);
2092 return sprintf(buf,"%d\n",data->block4[nr].cur); 2238 return sprintf(buf, "%d\n", data->block4[nr].cur);
2093} 2239}
2094 2240
2095static SENSOR_DEVICE_ATTR(prochot1, S_IRUGO, show_prochot, NULL, 0); 2241static SENSOR_DEVICE_ATTR(prochot1, S_IRUGO, show_prochot, NULL, 0);
@@ -2100,7 +2246,7 @@ static ssize_t show_prochot_avg(struct device *dev,
2100{ 2246{
2101 int nr = (to_sensor_dev_attr(attr))->index; 2247 int nr = (to_sensor_dev_attr(attr))->index;
2102 struct lm93_data *data = lm93_update_device(dev); 2248 struct lm93_data *data = lm93_update_device(dev);
2103 return sprintf(buf,"%d\n",data->block4[nr].avg); 2249 return sprintf(buf, "%d\n", data->block4[nr].avg);
2104} 2250}
2105 2251
2106static SENSOR_DEVICE_ATTR(prochot1_avg, S_IRUGO, show_prochot_avg, NULL, 0); 2252static SENSOR_DEVICE_ATTR(prochot1_avg, S_IRUGO, show_prochot_avg, NULL, 0);
@@ -2111,7 +2257,7 @@ static ssize_t show_prochot_max(struct device *dev,
2111{ 2257{
2112 int nr = (to_sensor_dev_attr(attr))->index; 2258 int nr = (to_sensor_dev_attr(attr))->index;
2113 struct lm93_data *data = lm93_update_device(dev); 2259 struct lm93_data *data = lm93_update_device(dev);
2114 return sprintf(buf,"%d\n",data->prochot_max[nr]); 2260 return sprintf(buf, "%d\n", data->prochot_max[nr]);
2115} 2261}
2116 2262
2117static ssize_t store_prochot_max(struct device *dev, 2263static ssize_t store_prochot_max(struct device *dev,
@@ -2121,7 +2267,12 @@ static ssize_t store_prochot_max(struct device *dev,
2121 int nr = (to_sensor_dev_attr(attr))->index; 2267 int nr = (to_sensor_dev_attr(attr))->index;
2122 struct i2c_client *client = to_i2c_client(dev); 2268 struct i2c_client *client = to_i2c_client(dev);
2123 struct lm93_data *data = i2c_get_clientdata(client); 2269 struct lm93_data *data = i2c_get_clientdata(client);
2124 u32 val = simple_strtoul(buf, NULL, 10); 2270 unsigned long val;
2271 int err;
2272
2273 err = kstrtoul(buf, 10, &val);
2274 if (err)
2275 return err;
2125 2276
2126 mutex_lock(&data->update_lock); 2277 mutex_lock(&data->update_lock);
2127 data->prochot_max[nr] = LM93_PROCHOT_TO_REG(val); 2278 data->prochot_max[nr] = LM93_PROCHOT_TO_REG(val);
@@ -2143,7 +2294,7 @@ static ssize_t show_prochot_override(struct device *dev,
2143{ 2294{
2144 int nr = (to_sensor_dev_attr(attr))->index; 2295 int nr = (to_sensor_dev_attr(attr))->index;
2145 struct lm93_data *data = lm93_update_device(dev); 2296 struct lm93_data *data = lm93_update_device(dev);
2146 return sprintf(buf,"%d\n", 2297 return sprintf(buf, "%d\n",
2147 (data->prochot_override & prochot_override_mask[nr]) ? 1 : 0); 2298 (data->prochot_override & prochot_override_mask[nr]) ? 1 : 0);
2148} 2299}
2149 2300
@@ -2154,7 +2305,12 @@ static ssize_t store_prochot_override(struct device *dev,
2154 int nr = (to_sensor_dev_attr(attr))->index; 2305 int nr = (to_sensor_dev_attr(attr))->index;
2155 struct i2c_client *client = to_i2c_client(dev); 2306 struct i2c_client *client = to_i2c_client(dev);
2156 struct lm93_data *data = i2c_get_clientdata(client); 2307 struct lm93_data *data = i2c_get_clientdata(client);
2157 u32 val = simple_strtoul(buf, NULL, 10); 2308 unsigned long val;
2309 int err;
2310
2311 err = kstrtoul(buf, 10, &val);
2312 if (err)
2313 return err;
2158 2314
2159 mutex_lock(&data->update_lock); 2315 mutex_lock(&data->update_lock);
2160 if (val) 2316 if (val)
@@ -2178,11 +2334,11 @@ static ssize_t show_prochot_interval(struct device *dev,
2178 int nr = (to_sensor_dev_attr(attr))->index; 2334 int nr = (to_sensor_dev_attr(attr))->index;
2179 struct lm93_data *data = lm93_update_device(dev); 2335 struct lm93_data *data = lm93_update_device(dev);
2180 u8 tmp; 2336 u8 tmp;
2181 if (nr==1) 2337 if (nr == 1)
2182 tmp = (data->prochot_interval & 0xf0) >> 4; 2338 tmp = (data->prochot_interval & 0xf0) >> 4;
2183 else 2339 else
2184 tmp = data->prochot_interval & 0x0f; 2340 tmp = data->prochot_interval & 0x0f;
2185 return sprintf(buf,"%d\n",LM93_INTERVAL_FROM_REG(tmp)); 2341 return sprintf(buf, "%d\n", LM93_INTERVAL_FROM_REG(tmp));
2186} 2342}
2187 2343
2188static ssize_t store_prochot_interval(struct device *dev, 2344static ssize_t store_prochot_interval(struct device *dev,
@@ -2192,12 +2348,17 @@ static ssize_t store_prochot_interval(struct device *dev,
2192 int nr = (to_sensor_dev_attr(attr))->index; 2348 int nr = (to_sensor_dev_attr(attr))->index;
2193 struct i2c_client *client = to_i2c_client(dev); 2349 struct i2c_client *client = to_i2c_client(dev);
2194 struct lm93_data *data = i2c_get_clientdata(client); 2350 struct lm93_data *data = i2c_get_clientdata(client);
2195 u32 val = simple_strtoul(buf, NULL, 10);
2196 u8 tmp; 2351 u8 tmp;
2352 unsigned long val;
2353 int err;
2354
2355 err = kstrtoul(buf, 10, &val);
2356 if (err)
2357 return err;
2197 2358
2198 mutex_lock(&data->update_lock); 2359 mutex_lock(&data->update_lock);
2199 tmp = lm93_read_byte(client, LM93_REG_PROCHOT_INTERVAL); 2360 tmp = lm93_read_byte(client, LM93_REG_PROCHOT_INTERVAL);
2200 if (nr==1) 2361 if (nr == 1)
2201 tmp = (tmp & 0x0f) | (LM93_INTERVAL_TO_REG(val) << 4); 2362 tmp = (tmp & 0x0f) | (LM93_INTERVAL_TO_REG(val) << 4);
2202 else 2363 else
2203 tmp = (tmp & 0xf0) | LM93_INTERVAL_TO_REG(val); 2364 tmp = (tmp & 0xf0) | LM93_INTERVAL_TO_REG(val);
@@ -2217,7 +2378,7 @@ static ssize_t show_prochot_override_duty_cycle(struct device *dev,
2217 char *buf) 2378 char *buf)
2218{ 2379{
2219 struct lm93_data *data = lm93_update_device(dev); 2380 struct lm93_data *data = lm93_update_device(dev);
2220 return sprintf(buf,"%d\n",data->prochot_override & 0x0f); 2381 return sprintf(buf, "%d\n", data->prochot_override & 0x0f);
2221} 2382}
2222 2383
2223static ssize_t store_prochot_override_duty_cycle(struct device *dev, 2384static ssize_t store_prochot_override_duty_cycle(struct device *dev,
@@ -2226,7 +2387,12 @@ static ssize_t store_prochot_override_duty_cycle(struct device *dev,
2226{ 2387{
2227 struct i2c_client *client = to_i2c_client(dev); 2388 struct i2c_client *client = to_i2c_client(dev);
2228 struct lm93_data *data = i2c_get_clientdata(client); 2389 struct lm93_data *data = i2c_get_clientdata(client);
2229 u32 val = simple_strtoul(buf, NULL, 10); 2390 unsigned long val;
2391 int err;
2392
2393 err = kstrtoul(buf, 10, &val);
2394 if (err)
2395 return err;
2230 2396
2231 mutex_lock(&data->update_lock); 2397 mutex_lock(&data->update_lock);
2232 data->prochot_override = (data->prochot_override & 0xf0) | 2398 data->prochot_override = (data->prochot_override & 0xf0) |
@@ -2245,7 +2411,7 @@ static ssize_t show_prochot_short(struct device *dev,
2245 struct device_attribute *attr, char *buf) 2411 struct device_attribute *attr, char *buf)
2246{ 2412{
2247 struct lm93_data *data = lm93_update_device(dev); 2413 struct lm93_data *data = lm93_update_device(dev);
2248 return sprintf(buf,"%d\n",(data->config & 0x10) ? 1 : 0); 2414 return sprintf(buf, "%d\n", (data->config & 0x10) ? 1 : 0);
2249} 2415}
2250 2416
2251static ssize_t store_prochot_short(struct device *dev, 2417static ssize_t store_prochot_short(struct device *dev,
@@ -2254,7 +2420,12 @@ static ssize_t store_prochot_short(struct device *dev,
2254{ 2420{
2255 struct i2c_client *client = to_i2c_client(dev); 2421 struct i2c_client *client = to_i2c_client(dev);
2256 struct lm93_data *data = i2c_get_clientdata(client); 2422 struct lm93_data *data = i2c_get_clientdata(client);
2257 u32 val = simple_strtoul(buf, NULL, 10); 2423 unsigned long val;
2424 int err;
2425
2426 err = kstrtoul(buf, 10, &val);
2427 if (err)
2428 return err;
2258 2429
2259 mutex_lock(&data->update_lock); 2430 mutex_lock(&data->update_lock);
2260 if (val) 2431 if (val)
@@ -2274,8 +2445,8 @@ static ssize_t show_vrdhot(struct device *dev, struct device_attribute *attr,
2274{ 2445{
2275 int nr = (to_sensor_dev_attr(attr))->index; 2446 int nr = (to_sensor_dev_attr(attr))->index;
2276 struct lm93_data *data = lm93_update_device(dev); 2447 struct lm93_data *data = lm93_update_device(dev);
2277 return sprintf(buf,"%d\n", 2448 return sprintf(buf, "%d\n",
2278 data->block1.host_status_1 & (1 << (nr+4)) ? 1 : 0); 2449 data->block1.host_status_1 & (1 << (nr + 4)) ? 1 : 0);
2279} 2450}
2280 2451
2281static SENSOR_DEVICE_ATTR(vrdhot1, S_IRUGO, show_vrdhot, NULL, 0); 2452static SENSOR_DEVICE_ATTR(vrdhot1, S_IRUGO, show_vrdhot, NULL, 0);
@@ -2285,7 +2456,7 @@ static ssize_t show_gpio(struct device *dev, struct device_attribute *attr,
2285 char *buf) 2456 char *buf)
2286{ 2457{
2287 struct lm93_data *data = lm93_update_device(dev); 2458 struct lm93_data *data = lm93_update_device(dev);
2288 return sprintf(buf,"%d\n",LM93_GPI_FROM_REG(data->gpi)); 2459 return sprintf(buf, "%d\n", LM93_GPI_FROM_REG(data->gpi));
2289} 2460}
2290 2461
2291static DEVICE_ATTR(gpio, S_IRUGO, show_gpio, NULL); 2462static DEVICE_ATTR(gpio, S_IRUGO, show_gpio, NULL);
@@ -2294,7 +2465,7 @@ static ssize_t show_alarms(struct device *dev, struct device_attribute *attr,
2294 char *buf) 2465 char *buf)
2295{ 2466{
2296 struct lm93_data *data = lm93_update_device(dev); 2467 struct lm93_data *data = lm93_update_device(dev);
2297 return sprintf(buf,"%d\n",LM93_ALARMS_FROM_REG(data->block1)); 2468 return sprintf(buf, "%d\n", LM93_ALARMS_FROM_REG(data->block1));
2298} 2469}
2299 2470
2300static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL); 2471static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL);
@@ -2494,13 +2665,13 @@ static void lm93_init_client(struct i2c_client *client)
2494 lm93_write_byte(client, LM93_REG_CONFIG, reg | 0x01); 2665 lm93_write_byte(client, LM93_REG_CONFIG, reg | 0x01);
2495 2666
2496 /* spin until ready */ 2667 /* spin until ready */
2497 for (i=0; i<20; i++) { 2668 for (i = 0; i < 20; i++) {
2498 msleep(10); 2669 msleep(10);
2499 if ((lm93_read_byte(client, LM93_REG_CONFIG) & 0x80) == 0x80) 2670 if ((lm93_read_byte(client, LM93_REG_CONFIG) & 0x80) == 0x80)
2500 return; 2671 return;
2501 } 2672 }
2502 2673
2503 dev_warn(&client->dev,"timed out waiting for sensor " 2674 dev_warn(&client->dev, "timed out waiting for sensor "
2504 "chip to signal ready!\n"); 2675 "chip to signal ready!\n");
2505} 2676}
2506 2677
@@ -2540,7 +2711,7 @@ static int lm93_detect(struct i2c_client *client, struct i2c_board_info *info)
2540 } 2711 }
2541 2712
2542 strlcpy(info->type, name, I2C_NAME_SIZE); 2713 strlcpy(info->type, name, I2C_NAME_SIZE);
2543 dev_dbg(&adapter->dev,"loading %s at %d,0x%02x\n", 2714 dev_dbg(&adapter->dev, "loading %s at %d, 0x%02x\n",
2544 client->name, i2c_adapter_id(client->adapter), 2715 client->name, i2c_adapter_id(client->adapter),
2545 client->addr); 2716 client->addr);
2546 2717
@@ -2593,7 +2764,7 @@ static int lm93_probe(struct i2c_client *client,
2593 2764
2594 /* Register hwmon driver class */ 2765 /* Register hwmon driver class */
2595 data->hwmon_dev = hwmon_device_register(&client->dev); 2766 data->hwmon_dev = hwmon_device_register(&client->dev);
2596 if ( !IS_ERR(data->hwmon_dev)) 2767 if (!IS_ERR(data->hwmon_dev))
2597 return 0; 2768 return 0;
2598 2769
2599 err = PTR_ERR(data->hwmon_dev); 2770 err = PTR_ERR(data->hwmon_dev);
@@ -2635,20 +2806,9 @@ static struct i2c_driver lm93_driver = {
2635 .address_list = normal_i2c, 2806 .address_list = normal_i2c,
2636}; 2807};
2637 2808
2638static int __init lm93_init(void) 2809module_i2c_driver(lm93_driver);
2639{
2640 return i2c_add_driver(&lm93_driver);
2641}
2642
2643static void __exit lm93_exit(void)
2644{
2645 i2c_del_driver(&lm93_driver);
2646}
2647 2810
2648MODULE_AUTHOR("Mark M. Hoffman <mhoffman@lightlink.com>, " 2811MODULE_AUTHOR("Mark M. Hoffman <mhoffman@lightlink.com>, "
2649 "Hans J. Koch <hjk@hansjkoch.de>"); 2812 "Hans J. Koch <hjk@hansjkoch.de>");
2650MODULE_DESCRIPTION("LM93 driver"); 2813MODULE_DESCRIPTION("LM93 driver");
2651MODULE_LICENSE("GPL"); 2814MODULE_LICENSE("GPL");
2652
2653module_init(lm93_init);
2654module_exit(lm93_exit);