Annotate dynamic sysfs attribute in atk_create_files(). This gets
rid of the following lockdep warning:
BUG: key ffff8800379ca670 not in .data!
------------[ cut here ]------------
WARNING: at kernel/lockdep.c:2696 lockdep_init_map+0xd2/0x108()
Hardware name: P5K PRO
Modules linked in: asus_atk0110(+) pata_acpi firewire_ohci ata_generic
dm_multipath firewire_core crc_itu_t pata_marvell floppy
Pid: 599, comm: modprobe Not tainted 2.6.34-rc4 #27
Call Trace:
[<ffffffff8104cdb0>] warn_slowpath_common+0x7c/0x94
[<ffffffff8104cddc>] warn_slowpath_null+0x14/0x16
[<ffffffff81077c4d>] lockdep_init_map+0xd2/0x108
[<ffffffff81165873>] sysfs_add_file_mode+0x66/0xa2
[<ffffffff811658c0>] sysfs_add_file+0x11/0x13
[<ffffffff8116594b>] sysfs_create_file+0x2a/0x2c
[<ffffffff812c1f9c>] device_create_file+0x19/0x1b
[<ffffffffa005b4fd>] atk_add+0x58b/0x72e [asus_atk0110]
[<ffffffff812572a1>] acpi_device_probe+0x50/0x122
[<ffffffff812c46af>] driver_probe_device+0xa2/0x127
[<ffffffff812c4783>] __driver_attach+0x4f/0x6b
[<ffffffff812c4734>] ? __driver_attach+0x0/0x6b
[<ffffffff812c3c94>] bus_for_each_dev+0x59/0x8e
[<ffffffff812c4519>] driver_attach+0x1e/0x20
[<ffffffff812c4152>] bus_add_driver+0xb9/0x207
[<ffffffff812c4a5f>] driver_register+0x9d/0x10e
[<ffffffffa005f000>] ? atk0110_init+0x0/0x31 [asus_atk0110]
[<ffffffff81257c7c>] acpi_bus_register_driver+0x43/0x45
[<ffffffffa005f015>] atk0110_init+0x15/0x31 [asus_atk0110]
[<ffffffffa005f000>] ? atk0110_init+0x0/0x31 [asus_atk0110]
[<ffffffff81002069>] do_one_initcall+0x5e/0x15e
[<ffffffff81085075>] sys_init_module+0xd8/0x239
[<ffffffff81009cf2>] system_call_fastpath+0x16/0x1b
---[ end trace 4d0c84007055efb9 ]---
BUG: key ffff8800379ca638 not in .data!
BUG: key ffff8800379ca6a8 not in .data!
BUG: key ffff8800379ca6e0 not in .data!
BUG: key ffff880036f73670 not in .data!
BUG: key ffff880036f73638 not in .data!
BUG: key ffff880036f736a8 not in .data!
BUG: key ffff880036f736e0 not in .data!
BUG: key ffff880036f76c70 not in .data!
BUG: key ffff880036f76c38 not in .data!
BUG: key ffff880036f76ca8 not in .data!
BUG: key ffff880036f76ce0 not in .data!
BUG: key ffff8800368e7670 not in .data!
BUG: key ffff8800368e7638 not in .data!
BUG: key ffff8800368e76a8 not in .data!
BUG: key ffff8800368e76e0 not in .data!
BUG: key ffff880036ef7670 not in .data!
BUG: key ffff880036ef7638 not in .data!
BUG: key ffff880036ef76a8 not in .data!
BUG: key ffff880036ef76e0 not in .data!
BUG: key ffff8800373ccc70 not in .data!
BUG: key ffff8800373ccc38 not in .data!
BUG: key ffff8800373ccca8 not in .data!
BUG: key ffff8800373ccce0 not in .data!
BUG: key ffff880037a60870 not in .data!
BUG: key ffff880037a60838 not in .data!
BUG: key ffff880037a608a8 not in .data!
BUG: key ffff880037a608e0 not in .data!
BUG: key ffff880037355070 not in .data!
BUG: key ffff880037355038 not in .data!
BUG: key ffff8800373550a8 not in .data!
BUG: key ffff8800373550e0 not in .data!
BUG: key ffff8800378c2670 not in .data!
BUG: key ffff8800378c2638 not in .data!
BUG: key ffff8800378c26a8 not in .data!
BUG: key ffff8800378c26e0 not in .data!
BUG: key ffff880036ef7e70 not in .data!
BUG: key ffff880036ef7e38 not in .data!
BUG: key ffff880036ef7ea8 not in .data!
BUG: key ffff880036ef7ee0 not in .data!
Cc: Eric W. Biederman <ebiederm@xmission.com>
Reported-by: Dhaval Giani <dhaval.giani@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Tested-by: Dhaval Giani <dhaval.giani@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
When any temperature sensor type is changed, the corresponding
temperature value needs to be updated. The register caching mechanism
may delay this update, so we want to invalidate the cache to force an
immediate update.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Currently, if someone tries to set the thermal sensor type to an
unsupported value, subsequent accesses to the chip may temporarily
show the sensor in question as disabled. Use a temporary variable
and only update the cached value on success, to prevent such
confusion.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Temperature channels can be used in 2 different modes (thermistor and
thermal diode) and we don't know which one, if any, is correct for
every given board. So don't arbitrarily choose one. Instead, leave the
temperature channels untouched. They can be configured from user-space
if needed anyway.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
I discovered two issues.
First the previous sht15_calc_temp() loop did not iterate through the
temppoints array since the (data->supply_uV > temppoints[i - 1].vdd)
test is always true in this direction.
Also the two-points linear interpolation function was returning biased
values due to a stray division by 1000 which shouldn't be there.
[JD: Also change the default value for d1 from 0 to something saner.]
Signed-off-by: Jerome Oufella <jerome.oufella@savoirfairelinux.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Cc: stable@kernel.org
percpu.h is included by sched.h and module.h and thus ends up being
included when building most .c files. percpu.h includes slab.h which
in turn includes gfp.h making everything defined by the two files
universally available and complicating inclusion dependencies.
percpu.h -> slab.h dependency is about to be removed. Prepare for
this change by updating users of gfp and slab facilities include those
headers directly instead of assuming availability. As this conversion
needs to touch large number of source files, the following script is
used as the basis of conversion.
http://userweb.kernel.org/~tj/misc/slabh-sweep.py
The script does the followings.
* Scan files for gfp and slab usages and update includes such that
only the necessary includes are there. ie. if only gfp is used,
gfp.h, if slab is used, slab.h.
* When the script inserts a new include, it looks at the include
blocks and try to put the new include such that its order conforms
to its surrounding. It's put in the include block which contains
core kernel includes, in the same order that the rest are ordered -
alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
doesn't seem to be any matching order.
* If the script can't find a place to put a new include (mostly
because the file doesn't have fitting include block), it prints out
an error message indicating which .h file needs to be added to the
file.
The conversion was done in the following steps.
1. The initial automatic conversion of all .c files updated slightly
over 4000 files, deleting around 700 includes and adding ~480 gfp.h
and ~3000 slab.h inclusions. The script emitted errors for ~400
files.
2. Each error was manually checked. Some didn't need the inclusion,
some needed manual addition while adding it to implementation .h or
embedding .c file was more appropriate for others. This step added
inclusions to around 150 files.
3. The script was run again and the output was compared to the edits
from #2 to make sure no file was left behind.
4. Several build tests were done and a couple of problems were fixed.
e.g. lib/decompress_*.c used malloc/free() wrappers around slab
APIs requiring slab.h to be added manually.
5. The script was run on all .h files but without automatically
editing them as sprinkling gfp.h and slab.h inclusions around .h
files could easily lead to inclusion dependency hell. Most gfp.h
inclusion directives were ignored as stuff from gfp.h was usually
wildly available and often used in preprocessor macros. Each
slab.h inclusion directive was examined and added manually as
necessary.
6. percpu.h was updated not to include slab.h.
7. Build test were done on the following configurations and failures
were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
distributed build env didn't work with gcov compiles) and a few
more options had to be turned off depending on archs to make things
build (like ipr on powerpc/64 which failed due to missing writeq).
* x86 and x86_64 UP and SMP allmodconfig and a custom test config.
* powerpc and powerpc64 SMP allmodconfig
* sparc and sparc64 SMP allmodconfig
* ia64 SMP allmodconfig
* s390 SMP allmodconfig
* alpha SMP allmodconfig
* um on x86_64 SMP allmodconfig
8. percpu.h modifications were reverted so that it could be applied as
a separate patch and serve as bisection point.
Given the fact that I had only a couple of failures from tests on step
6, I'm fairly confident about the coverage of this conversion patch.
If there is a breakage, it's likely to be something in one of the arch
headers which should be easily discoverable easily on most builds of
the specific arch.
Signed-off-by: Tejun Heo <tj@kernel.org>
Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
Intel X58 have asc7621a chip. So added X58 entry in Kconfig for asc7621.
Also arranged existing models in ascending order.
Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
"ret" is used to store the return value for watchdog_trigger() and it
should be signed for the error handling to work.
Signed-off-by: Dan Carpenter <error27@gmail.com>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Add missing newline to dev_warn() message string. This is more of an issue
with older kernels that don't automatically add a newline if it was missing
from the end of the previous line.
Signed-off-by: Dean Nelson <dnelson@redhat.com>
Cc: stable@kernel.org
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Avoid hex and decimal confusion when printing out the cpu model.
Signed-off-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
* 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging: (23 commits)
hwmon: Remove the deprecated adt7473 driver
hwmon: Fix off-by-one kind values
hwmon: (tmp421) Fix temperature conversions
hwmon: (tmp421) Restore missing inputs
hwmon: Driver for Andigilog aSC7621 family monitoring chips
hwmon: (adt7411) Improve locking
hwmon: Add driver for ADT7411 voltage and temperature sensor
hwmon: (w83793) Add watchdog functionality
hwmon: (g760a) Make rpm_from_cnt static
hwmon: (it87) Validate auto pwm settings
hwmon: (it87) Add support for old automatic fan speed control
hwmon: (it87) Drop dead web links in documentation
hwmon: (it87) Add an entry in MAINTAINERS
hwmon: (it87) Use strict_strtol instead of simple_strtol
hwmon: (it87) Fix many checkpatch errors and warnings
hwmon: (it87) Add support for beep on alarm
hwmon: (it87) Create vid attributes by group
hwmon: (it87) Refactor attributes creation and removal
hwmon: (it87) Expose the PWM/temperature mappings
hwmon: (it87) Display fan outputs in automatic mode as such
...
While testing an ADC121S021 in an embedded board with a S3C2142 SoC (ARM
core), I have found that the 'adcxx' driver does not handle correctly
single channel ADCs from this chip family. For single channel chips you
must only issue one read transfer for correct measurement.
Signed-off-by: Jose Miguel Goncalves <jose.goncalves@inov.pt>
Cc: Marc Pignat <marc.pignat@hevs.ch>
Cc: Anton Vorontsov <avorontsov@ru.mvista.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
adt7473 driver is obsoleted by adt7475 driver. And it is scheduled
to be removed in Feb 2010.
Signed-off-by: WANG Cong <amwang@redhat.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
The low bits of temperature registers are status bits, they must be
masked out before converting the register values to temperatures.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Tested-by: Andre Prendel <andre.prendel@gmx.de>
Cc: stable@kernel.org
An off-by-one error caused some inputs to not be created by the driver
when they should. TMP421 gets only one input instead of two, TMP422
gets two instead of three, etc. Fix the bug by listing explicitly the
number of inputs each device has.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Tested-by: Andre Prendel <andre.prendel@gmx.de>
Cc: stable@kernel.org
Add proper locking for the cached variables. Also get rid of
ref_is_vdd, which became obsolete.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Add basic support for the ADT7411. Reads out all conversion results (via I2C,
SPI yet missing) and allows some on-the-fly configuration. Tested with a
custom board.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Function rpm_from_cnt is only used internally so it can be made
static. Make it inline while we're here, for performance reasons
(although hopefully gcc would figure out by itself...)
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Cc: Herbert Valerio Riedel <hvr@gnu.org>
Acked-by: Martin Michlmayr <tbm@cyrius.com>