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.
