Note that this patch also makes 2 changes to the code paths for the f71889fg to keep the code unified between the 2 (for simplicities sake). Both of these are harmless for then f71889fg: 1) The first change is to always set the FAN_PROG_SEL bit to 0. This influences accesses to some banked fan / pwm registers. On the f71889fg no registers which we use are banked. On the f71889ed however some more fan registers have been banked including one which we use, by making the FAN_PROG_SEL bit 0, address 0x96 will point to the right register. 2) The second change is to see a FANx_TEMP_SEL value of 0 as pointing to a PECI / AMDSI value, and thus disable our pwm related sysfs attr. This is correct for the f71889ed and on the f71889fg 0 is a reserved value, so we should never see it and if we do, disabling the pwm related sysfs attr is a sane thing to do. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Tested-by: Thomas Greve <tg42@gmx.net> Tested-by: Sander Eikelenboom <linux@eikelenboom.it> Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
108 lines
4.2 KiB
Plaintext
108 lines
4.2 KiB
Plaintext
Kernel driver f71882fg
|
|
======================
|
|
|
|
Supported chips:
|
|
* Fintek F71858FG
|
|
Prefix: 'f71858fg'
|
|
Addresses scanned: none, address read from Super I/O config space
|
|
Datasheet: Available from the Fintek website
|
|
* Fintek F71862FG and F71863FG
|
|
Prefix: 'f71862fg'
|
|
Addresses scanned: none, address read from Super I/O config space
|
|
Datasheet: Available from the Fintek website
|
|
* Fintek F71882FG and F71883FG
|
|
Prefix: 'f71882fg'
|
|
Addresses scanned: none, address read from Super I/O config space
|
|
Datasheet: Available from the Fintek website
|
|
* Fintek F71889FG
|
|
Prefix: 'f71889fg'
|
|
Addresses scanned: none, address read from Super I/O config space
|
|
Datasheet: Available from the Fintek website
|
|
* Fintek F71889ED
|
|
Prefix: 'f71889ed'
|
|
Addresses scanned: none, address read from Super I/O config space
|
|
Datasheet: Should become available on the Fintek website soon
|
|
* Fintek F8000
|
|
Prefix: 'f8000'
|
|
Addresses scanned: none, address read from Super I/O config space
|
|
Datasheet: Not public
|
|
|
|
Author: Hans de Goede <hdegoede@redhat.com>
|
|
|
|
|
|
Description
|
|
-----------
|
|
|
|
Fintek F718xx/F8000 Super I/O chips include complete hardware monitoring
|
|
capabilities. They can monitor up to 9 voltages, 4 fans and 3 temperature
|
|
sensors.
|
|
|
|
These chips also have fan controlling features, using either DC or PWM, in
|
|
three different modes (one manual, two automatic).
|
|
|
|
The driver assumes that no more than one chip is present, which seems
|
|
reasonable.
|
|
|
|
|
|
Monitoring
|
|
----------
|
|
|
|
The Voltage, Fan and Temperature Monitoring uses the standard sysfs
|
|
interface as documented in sysfs-interface, without any exceptions.
|
|
|
|
|
|
Fan Control
|
|
-----------
|
|
|
|
Both PWM (pulse-width modulation) and DC fan speed control methods are
|
|
supported. The right one to use depends on external circuitry on the
|
|
motherboard, so the driver assumes that the BIOS set the method
|
|
properly.
|
|
|
|
Note that the lowest numbered temperature zone trip point corresponds to
|
|
to the border between the highest and one but highest temperature zones, and
|
|
vica versa. So the temperature zone trip points 1-4 (or 1-2) go from high temp
|
|
to low temp! This is how things are implemented in the IC, and the driver
|
|
mimicks this.
|
|
|
|
There are 2 modes to specify the speed of the fan, PWM duty cycle (or DC
|
|
voltage) mode, where 0-100% duty cycle (0-100% of 12V) is specified. And RPM
|
|
mode where the actual RPM of the fan (as measured) is controlled and the speed
|
|
gets specified as 0-100% of the fan#_full_speed file.
|
|
|
|
Since both modes work in a 0-100% (mapped to 0-255) scale, there isn't a
|
|
whole lot of a difference when modifying fan control settings. The only
|
|
important difference is that in RPM mode the 0-100% controls the fan speed
|
|
between 0-100% of fan#_full_speed. It is assumed that if the BIOS programs
|
|
RPM mode, it will also set fan#_full_speed properly, if it does not then
|
|
fan control will not work properly, unless you set a sane fan#_full_speed
|
|
value yourself.
|
|
|
|
Switching between these modes requires re-initializing a whole bunch of
|
|
registers, so the mode which the BIOS has set is kept. The mode is
|
|
printed when loading the driver.
|
|
|
|
Three different fan control modes are supported; the mode number is written
|
|
to the pwm#_enable file. Note that not all modes are supported on all
|
|
chips, and some modes may only be available in RPM / PWM mode.
|
|
Writing an unsupported mode will result in an invalid parameter error.
|
|
|
|
* 1: Manual mode
|
|
You ask for a specific PWM duty cycle / DC voltage or a specific % of
|
|
fan#_full_speed by writing to the pwm# file. This mode is only
|
|
available on the F71858FG / F8000 if the fan channel is in RPM mode.
|
|
|
|
* 2: Normal auto mode
|
|
You can define a number of temperature/fan speed trip points, which % the
|
|
fan should run at at this temp and which temp a fan should follow using the
|
|
standard sysfs interface. The number and type of trip points is chip
|
|
depended, see which files are available in sysfs.
|
|
Fan/PWM channel 3 of the F8000 is always in this mode!
|
|
|
|
* 3: Thermostat mode (Only available on the F8000 when in duty cycle mode)
|
|
The fan speed is regulated to keep the temp the fan is mapped to between
|
|
temp#_auto_point2_temp and temp#_auto_point3_temp.
|
|
|
|
All of the automatic modes require that pwm1 corresponds to fan1, pwm2 to
|
|
fan2 and pwm3 to fan3.
|