Kernel driver w83627hf
======================

Supported chips:
  * Winbond W83627HF (ISA accesses ONLY)
    Prefix: 'w83627hf'
    Addresses scanned: ISA address retrieved from Super I/O registers
  * Winbond W83627THF
    Prefix: 'w83627thf'
    Addresses scanned: ISA address retrieved from Super I/O registers
  * Winbond W83697HF
    Prefix: 'w83697hf'
    Addresses scanned: ISA address retrieved from Super I/O registers
  * Winbond W83637HF
    Prefix: 'w83637hf'
    Addresses scanned: ISA address retrieved from Super I/O registers
  * Winbond W83687THF
    Prefix: 'w83687thf'
    Addresses scanned: ISA address retrieved from Super I/O registers
    Datasheet: Provided by Winbond on request(http://www.winbond.com/hq/enu)

Authors:
        Frodo Looijaard <frodol@dds.nl>,
        Philip Edelbrock <phil@netroedge.com>,
        Mark Studebaker <mdsxyz123@yahoo.com>,
        Bernhard C. Schrenk <clemy@clemy.org>

Module Parameters
-----------------

* force_i2c: int
  Initialize the I2C address of the sensors
* init: int
  (default is 1)
  Use 'init=0' to bypass initializing the chip.
  Try this if your computer crashes when you load the module.

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

This driver implements support for ISA accesses *only* for
the Winbond W83627HF, W83627THF, W83697HF and W83637HF Super I/O chips.
We will refer to them collectively as Winbond chips.

This driver supports ISA accesses, which should be more reliable
than i2c accesses. Also, for Tyan boards which contain both a
Super I/O chip and a second i2c-only Winbond chip (often a W83782D),
using this driver will avoid i2c address conflicts and complex
initialization that were required in the w83781d driver.

If you really want i2c accesses for these Super I/O chips,
use the w83781d driver. However this is not the preferred method
now that this ISA driver has been developed.

The w83627_HF_ uses pins 110-106 as VID0-VID4. The w83627_THF_ uses the
same pins as GPIO[0:4]. Technically, the w83627_THF_ does not support a
VID reading. However the two chips have the identical 128 pin package. So,
it is possible or even likely for a w83627thf to have the VID signals routed
to these pins despite their not being labeled for that purpose. Therefore,
the w83627thf driver interprets these as VID. If the VID on your board
doesn't work, first see doc/vid in the lm_sensors package[1]. If that still
doesn't help, you may just ignore the bogus VID reading with no harm done.

For further information on this driver see the w83781d driver documentation.

[1] http://www.lm-sensors.org/browser/lm-sensors/trunk/doc/vid

Forcing the address
-------------------

The driver used to have a module parameter named force_addr, which could
be used to force the base I/O address of the hardware monitoring block.
This was meant as a workaround for mainboards with a broken BIOS. This
module parameter is gone for technical reasons. If you need this feature,
you can obtain the same result by using the isaset tool (part of
lm-sensors) before loading the driver:

# Enter the Super I/O config space
isaset -y -f 0x2e 0x87
isaset -y -f 0x2e 0x87

# Select the hwmon logical device
isaset -y 0x2e 0x2f 0x07 0x0b

# Set the base I/O address (to 0x290 in this example)
isaset -y 0x2e 0x2f 0x60 0x02
isaset -y 0x2e 0x2f 0x61 0x90

# Exit the Super-I/O config space
isaset -y -f 0x2e 0xaa

The above sequence assumes a Super-I/O config space at 0x2e/0x2f, but
0x4e/0x4f is also possible.

Voltage pin mapping
-------------------

Here is a summary of the voltage pin mapping for the W83627THF. This
can be useful to convert data provided by board manufacturers into
working libsensors configuration statements.

    W83627THF		|
  Pin	| Name		| Register	| Sysfs attribute
-----------------------------------------------------
  100	| CPUVCORE	| 20h		| in0
   99	| VIN0		| 21h		| in1
   98	| VIN1		| 22h		| in2
   97	| VIN2		| 24h		| in4
  114	| AVCC		| 23h		| in3
   61	| 5VSB		| 50h (bank 5)	| in7
   74	| VBAT		| 51h (bank 5)	| in8

For other supported devices, you'll have to take the hard path and
look up the information in the datasheet yourself (and then add it
to this document please.)
