Kernel driver w83793
====================

Supported chips:
  * Winbond W83793G/W83793R
    Prefix: 'w83793'
    Addresses scanned: I2C 0x2c - 0x2f
    Datasheet: Still not published

Authors:
    Yuan Mu (Winbond Electronics)
    Rudolf Marek <r.marek@assembler.cz>


Module parameters
-----------------

* reset int
  (default 0)
  This parameter is not recommended, it will lose motherboard specific
  settings. Use 'reset=1' to reset the chip when loading this module.

* force_subclients=bus,caddr,saddr1,saddr2
  This is used to force the i2c addresses for subclients of
  a certain chip. Typical usage is `force_subclients=0,0x2f,0x4a,0x4b'
  to force the subclients of chip 0x2f on bus 0 to i2c addresses
  0x4a and 0x4b.


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

This driver implements support for Winbond W83793G/W83793R chips.

* Exported features
  This driver exports 10 voltage sensors, up to 12 fan tachometer inputs,
  6 remote temperatures, up to 8 sets of PWM fan controls, SmartFan
  (automatic fan speed control) on all temperature/PWM combinations, 2
  sets of 6-pin CPU VID input.

* Sensor resolutions
  If your motherboard maker used the reference design, the resolution of
  voltage0-2 is 2mV, resolution of voltage3/4/5 is 16mV, 8mV for voltage6,
  24mV for voltage7/8. Temp1-4 have a 0.25 degree Celsius resolution,
  temp5-6 have a 1 degree Celsiis resolution.

* Temperature sensor types
  Temp1-4 have 2 possible types. It can be read from (and written to)
  temp[1-4]_type.
  - If the value is 3, it starts monitoring using a remote termal diode
    (default).
  - If the value is 6, it starts monitoring using the temperature sensor
    in Intel CPU and get result by PECI.
  Temp5-6 can be connected to external thermistors (value of
  temp[5-6]_type is 4).

* Alarm mechanism
  For voltage sensors, an alarm triggers if the measured value is below
  the low voltage limit or over the high voltage limit.
  For temperature sensors, an alarm triggers if the measured value goes
  above the high temperature limit, and wears off only after the measured
  value drops below the hysteresis value.
  For fan sensors, an alarm triggers if the measured value is below the
  low speed limit.

* SmartFan/PWM control
  If you want to set a pwm fan to manual mode, you just need to make sure it
  is not controlled by any temp channel, for example, you want to set fan1
  to manual mode, you need to check the value of temp[1-6]_fan_map, make
  sure bit 0 is cleared in the 6 values. And then set the pwm1 value to
  control the fan.

  Each temperature channel can control all the 8 PWM outputs (by setting the
  corresponding bit in tempX_fan_map), you can set the temperature channel
  mode using temp[1-6]_pwm_enable, 2 is Thermal Cruise mode and 3
  is the SmartFanII mode. Temperature channels will try to speed up or
  slow down all controlled fans, this means one fan can receive different
  PWM value requests from different temperature channels, but the chip
  will always pick the safest (max) PWM value for each fan.

  In Thermal Cruise mode, the chip attempts to keep the temperature at a
  predefined value, within a tolerance margin. So if tempX_input >
  thermal_cruiseX + toleranceX, the chip will increase the PWM value,
  if tempX_input < thermal_cruiseX - toleranceX, the chip will decrease
  the PWM value. If the temperature is within the tolerance range, the PWM
  value is left unchanged.

  SmartFanII works differently, you have to define up to 7 PWM, temperature
  trip points, defining a PWM/temperature curve which the chip will follow.
  While not fundamentally different from the Thermal Cruise mode, the
  implementation is quite different, giving you a finer-grained control.

* Chassis
  If the case open alarm triggers, it will stay in this state unless cleared
  by writing 0 to the sysfs file "intrusion0_alarm".

* VID and VRM
  The VRM version is detected automatically, don't modify the it unless you
  *do* know the cpu VRM version and it's not properly detected.


Notes
-----

  Only Fan1-5 and PWM1-3 are guaranteed to always exist, other fan inputs and
  PWM outputs may or may not exist depending on the chip pin configuration.
