Kernel driver smsc47m192
========================

Supported chips:
  * SMSC LPC47M192 and LPC47M997
    Prefix: 'smsc47m192'
    Addresses scanned: I2C 0x2c - 0x2d
    Datasheet: The datasheet for LPC47M192 is publicly available from
               http://www.smsc.com/
               The LPC47M997 is compatible for hardware monitoring.

Author: Hartmut Rick <linux@rick.claranet.de>
        Special thanks to Jean Delvare for careful checking
        of the code and many helpful comments and suggestions.


Description
-----------

This driver implements support for the hardware sensor capabilities
of the SMSC LPC47M192 and LPC47M997 Super-I/O chips.

These chips support 3 temperature channels and 8 voltage inputs
as well as CPU voltage VID input.

They do also have fan monitoring and control capabilities, but the
these features are accessed via ISA bus and are not supported by this
driver. Use the 'smsc47m1' driver for fan monitoring and control.

Voltages and temperatures are measured by an 8-bit ADC, the resolution
of the temperatures is 1 bit per degree C.
Voltages are scaled such that the nominal voltage corresponds to
192 counts, i.e. 3/4 of the full range. Thus the available range for
each voltage channel is 0V ... 255/192*(nominal voltage), the resolution
is 1 bit per (nominal voltage)/192.
Both voltage and temperature values are scaled by 1000, the sys files
show voltages in mV and temperatures in units of 0.001 degC.

The +12V analog voltage input channel (in4_input) is multiplexed with
bit 4 of the encoded CPU voltage. This means that you either get
a +12V voltage measurement or a 5 bit CPU VID, but not both.
The default setting is to use the pin as 12V input, and use only 4 bit VID.
This driver assumes that the information in the configuration register
is correct, i.e. that the BIOS has updated the configuration if
the motherboard has this input wired to VID4.

The temperature and voltage readings are updated once every 1.5 seconds.
Reading them more often repeats the same values.


sysfs interface
---------------

in0_input	- +2.5V voltage input
in1_input	- CPU voltage input (nominal 2.25V)
in2_input	- +3.3V voltage input
in3_input	- +5V voltage input
in4_input	- +12V voltage input (may be missing if used as VID4)
in5_input	- Vcc voltage input (nominal 3.3V)
		  This is the supply voltage of the sensor chip itself.
in6_input	- +1.5V voltage input
in7_input	- +1.8V voltage input

in[0-7]_min,
in[0-7]_max	- lower and upper alarm thresholds for in[0-7]_input reading

		  All voltages are read and written in mV.

in[0-7]_alarm	- alarm flags for voltage inputs
		  These files read '1' in case of alarm, '0' otherwise.

temp1_input	- chip temperature measured by on-chip diode
temp[2-3]_input	- temperature measured by external diodes (one of these would
		  typically be wired to the diode inside the CPU)

temp[1-3]_min,
temp[1-3]_max	- lower and upper alarm thresholds for temperatures

temp[1-3]_offset - temperature offset registers
		  The chip adds the offsets stored in these registers to
		  the corresponding temperature readings.
		  Note that temp1 and temp2 offsets share the same register,
		  they cannot both be different from zero at the same time.
		  Writing a non-zero number to one of them will reset the other
		  offset to zero.

		  All temperatures and offsets are read and written in
		  units of 0.001 degC.

temp[1-3]_alarm - alarm flags for temperature inputs, '1' in case of alarm,
		  '0' otherwise.
temp[2-3]_input_fault - diode fault flags for temperature inputs 2 and 3.
		  A fault is detected if the two pins for the corresponding
		  sensor are open or shorted, or any of the two is shorted
		  to ground or Vcc. '1' indicates a diode fault.

cpu0_vid	- CPU voltage as received from the CPU

vrm		- CPU VID standard used for decoding CPU voltage

		  The *_min, *_max, *_offset and vrm files can be read and
		  written, all others are read-only.
