Kernel driver abituguru
=======================

Supported chips:
  * Abit uGuru revision 1 & 2 (Hardware Monitor part only)
    Prefix: 'abituguru'
    Addresses scanned: ISA 0x0E0
    Datasheet: Not available, this driver is based on reverse engineering.
	A "Datasheet" has been written based on the reverse engineering it
	should be available in the same dir as this file under the name
	abituguru-datasheet.
    Note:
	The uGuru is a microcontroller with onboard firmware which programs
	it to behave as a hwmon IC. There are many different revisions of the
	firmware and thus effectivly many different revisions of the uGuru.
	Below is an incomplete list with which revisions are used for which
	Motherboards:
	uGuru 1.00    ~ 1.24    (AI7, KV8-MAX3, AN7) (1)
	uGuru 2.0.0.0 ~ 2.0.4.2 (KV8-PRO)
	uGuru 2.1.0.0 ~ 2.1.2.8 (AS8, AV8, AA8, AG8, AA8XE, AX8)
	uGuru 2.2.0.0 ~ 2.2.0.6 (AA8 Fatal1ty)
	uGuru 2.3.0.0 ~ 2.3.0.9 (AN8)
	uGuru 3.0.0.0 ~ 3.0.x.x (AW8, AL8, AT8, NI8 SLI, AT8 32X, AN8 32X,
				 AW9D-MAX) (2)
	1) For revisions 2 and 3 uGuru's the driver can autodetect the
	   sensortype (Volt or Temp) for bank1 sensors, for revision 1 uGuru's
	   this doesnot always work. For these uGuru's the autodection can
	   be overriden with the bank1_types module param. For all 3 known
	   revison 1 motherboards the correct use of this param is:
	   bank1_types=1,1,0,0,0,0,0,2,0,0,0,0,2,0,0,1
	   You may also need to specify the fan_sensors option for these boards
	   fan_sensors=5
	2) There is a separate abituguru3 driver for these motherboards,
	   the abituguru (without the 3 !) driver will not work on these
	   motherboards (and visa versa)!

Authors:
	Hans de Goede <j.w.r.degoede@hhs.nl>,
	(Initial reverse engineering done by Olle Sandberg
	 <ollebull@gmail.com>)


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

* force: bool		Force detection. Note this parameter only causes the
			detection to be skipped, and thus the insmod to
			succeed. If the uGuru can't be read the actual hwmon
			driver will not load and thus no hwmon device will get
			registered.
* bank1_types: int[]	Bank1 sensortype autodetection override:
			  -1 autodetect (default)
			   0 volt sensor
			   1 temp sensor
			   2 not connected
* fan_sensors: int	Tell the driver how many fan speed sensors there are
			on your motherboard. Default: 0 (autodetect).
* pwms: int		Tell the driver how many fan speed controls (fan
			pwms) your motherboard has. Default: 0 (autodetect).
* verbose: int		How verbose should the driver be? (0-3):
			   0 normal output
			   1 + verbose error reporting
			   2 + sensors type probing info (default)
			   3 + retryable error reporting
			Default: 2 (the driver is still in the testing phase)

Notice if you need any of the first three options above please insmod the
driver with verbose set to 3 and mail me <j.w.r.degoede@hhs.nl> the output of:
dmesg | grep abituguru


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

This driver supports the hardware monitoring features of the first and
second revision of the Abit uGuru chip found on Abit uGuru featuring
motherboards (most modern Abit motherboards).

The first and second revision of the uGuru chip in reality is a Winbond
W83L950D in disguise (despite Abit claiming it is "a new microprocessor
designed by the ABIT Engineers"). Unfortunatly this doesn't help since the
W83L950D is a generic microcontroller with a custom Abit application running
on it.

Despite Abit not releasing any information regarding the uGuru, Olle
Sandberg <ollebull@gmail.com> has managed to reverse engineer the sensor part
of the uGuru. Without his work this driver would not have been possible.

Known Issues
------------

The voltage and frequency control parts of the Abit uGuru are not supported.
