The lm87 driver normally assumes that firmware configured the chip correctly. Since this is not always the case, alllow platform code to set the channel register value via platform_data. All other configuration registers can be changed after driver initialisation. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: Jean Delvare <khali@linux-fr.org>
		
			
				
	
	
		
			77 lines
		
	
	
	
		
			3.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
	
		
			3.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
Kernel driver lm87
 | 
						|
==================
 | 
						|
 | 
						|
Supported chips:
 | 
						|
  * National Semiconductor LM87
 | 
						|
    Prefix: 'lm87'
 | 
						|
    Addresses scanned: I2C 0x2c - 0x2e
 | 
						|
    Datasheet: http://www.national.com/pf/LM/LM87.html
 | 
						|
  * Analog Devices ADM1024
 | 
						|
    Prefix: 'adm1024'
 | 
						|
    Addresses scanned: I2C 0x2c - 0x2e
 | 
						|
    Datasheet: http://www.analog.com/en/prod/0,2877,ADM1024,00.html
 | 
						|
 | 
						|
Authors:
 | 
						|
        Frodo Looijaard <frodol@dds.nl>,
 | 
						|
        Philip Edelbrock <phil@netroedge.com>,
 | 
						|
        Mark Studebaker <mdsxyz123@yahoo.com>,
 | 
						|
        Stephen Rousset <stephen.rousset@rocketlogix.com>,
 | 
						|
        Dan Eaton <dan.eaton@rocketlogix.com>,
 | 
						|
        Jean Delvare <khali@linux-fr.org>,
 | 
						|
        Original 2.6 port Jeff Oliver
 | 
						|
 | 
						|
Description
 | 
						|
-----------
 | 
						|
 | 
						|
This driver implements support for the National Semiconductor LM87
 | 
						|
and the Analog Devices ADM1024.
 | 
						|
 | 
						|
The LM87 implements up to three temperature sensors, up to two fan
 | 
						|
rotation speed sensors, up to seven voltage sensors, alarms, and some
 | 
						|
miscellaneous stuff. The ADM1024 is fully compatible.
 | 
						|
 | 
						|
Temperatures are measured in degrees Celsius. Each input has a high
 | 
						|
and low alarm settings. A high limit produces an alarm when the value
 | 
						|
goes above it, and an alarm is also produced when the value goes below
 | 
						|
the low limit.
 | 
						|
 | 
						|
Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
 | 
						|
triggered if the rotation speed has dropped below a programmable limit. Fan
 | 
						|
readings can be divided by a programmable divider (1, 2, 4 or 8) to give
 | 
						|
the readings more range or accuracy. Not all RPM values can accurately be
 | 
						|
represented, so some rounding is done. With a divider of 2, the lowest
 | 
						|
representable value is around 2600 RPM.
 | 
						|
 | 
						|
Voltage sensors (also known as IN sensors) report their values in
 | 
						|
volts. An alarm is triggered if the voltage has crossed a programmable
 | 
						|
minimum or maximum limit. Note that minimum in this case always means
 | 
						|
'closest to zero'; this is important for negative voltage measurements.
 | 
						|
 | 
						|
If an alarm triggers, it will remain triggered until the hardware register
 | 
						|
is read at least once. This means that the cause for the alarm may
 | 
						|
already have disappeared! Note that in the current implementation, all
 | 
						|
hardware registers are read whenever any data is read (unless it is less
 | 
						|
than 1.0 seconds since the last update). This means that you can easily
 | 
						|
miss once-only alarms.
 | 
						|
 | 
						|
The lm87 driver only updates its values each 1.0 seconds; reading it more
 | 
						|
often will do no harm, but will return 'old' values.
 | 
						|
 | 
						|
 | 
						|
Hardware Configurations
 | 
						|
-----------------------
 | 
						|
 | 
						|
The LM87 has four pins which can serve one of two possible functions,
 | 
						|
depending on the hardware configuration.
 | 
						|
 | 
						|
Some functions share pins, so not all functions are available at the same
 | 
						|
time. Which are depends on the hardware setup. This driver normally
 | 
						|
assumes that firmware configured the chip correctly. Where this is not
 | 
						|
the case, platform code must set the I2C client's platform_data to point
 | 
						|
to a u8 value to be written to the channel register.
 | 
						|
 | 
						|
For reference, here is the list of exclusive functions:
 | 
						|
 - in0+in5 (default) or temp3
 | 
						|
 - fan1 (default) or in6
 | 
						|
 - fan2 (default) or in7
 | 
						|
 - VID lines (default) or IRQ lines (not handled by this driver)
 |