cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

f71805f.rst (6887B)


      1Kernel driver f71805f
      2=====================
      3
      4Supported chips:
      5
      6  * Fintek F71805F/FG
      7
      8    Prefix: 'f71805f'
      9
     10    Addresses scanned: none, address read from Super I/O config space
     11
     12    Datasheet: Available from the Fintek website
     13
     14  * Fintek F71806F/FG
     15
     16    Prefix: 'f71872f'
     17
     18    Addresses scanned: none, address read from Super I/O config space
     19
     20    Datasheet: Available from the Fintek website
     21
     22  * Fintek F71872F/FG
     23
     24    Prefix: 'f71872f'
     25
     26    Addresses scanned: none, address read from Super I/O config space
     27
     28    Datasheet: Available from the Fintek website
     29
     30Author: Jean Delvare <jdelvare@suse.de>
     31
     32Thanks to Denis Kieft from Barracuda Networks for the donation of a
     33test system (custom Jetway K8M8MS motherboard, with CPU and RAM) and
     34for providing initial documentation.
     35
     36Thanks to Kris Chen and Aaron Huang from Fintek for answering technical
     37questions and providing additional documentation.
     38
     39Thanks to Chris Lin from Jetway for providing wiring schematics and
     40answering technical questions.
     41
     42
     43Description
     44-----------
     45
     46The Fintek F71805F/FG Super I/O chip includes complete hardware monitoring
     47capabilities. It can monitor up to 9 voltages (counting its own power
     48source), 3 fans and 3 temperature sensors.
     49
     50This chip also has fan controlling features, using either DC or PWM, in
     51three different modes (one manual, two automatic).
     52
     53The Fintek F71872F/FG Super I/O chip is almost the same, with two
     54additional internal voltages monitored (VSB and battery). It also features
     556 VID inputs. The VID inputs are not yet supported by this driver.
     56
     57The Fintek F71806F/FG Super-I/O chip is essentially the same as the
     58F71872F/FG, and is undistinguishable therefrom.
     59
     60The driver assumes that no more than one chip is present, which seems
     61reasonable.
     62
     63
     64Voltage Monitoring
     65------------------
     66
     67Voltages are sampled by an 8-bit ADC with a LSB of 8 mV. The supported
     68range is thus from 0 to 2.040 V. Voltage values outside of this range
     69need external resistors. An exception is in0, which is used to monitor
     70the chip's own power source (+3.3V), and is divided internally by a
     71factor 2. For the F71872F/FG, in9 (VSB) and in10 (battery) are also
     72divided internally by a factor 2.
     73
     74The two LSB of the voltage limit registers are not used (always 0), so
     75you can only set the limits in steps of 32 mV (before scaling).
     76
     77The wirings and resistor values suggested by Fintek are as follow:
     78
     79======= ======= =========== ==== ======= ============ ==============
     80in      pin                                           expected
     81	name    use           R1      R2     divider  raw val.
     82======= ======= =========== ==== ======= ============ ==============
     83in0     VCC     VCC3.3V     int.    int.        2.00    1.65 V
     84in1     VIN1    VTT1.2V      10K       -        1.00    1.20 V
     85in2     VIN2    VRAM        100K    100K        2.00   ~1.25 V [1]_
     86in3     VIN3    VCHIPSET     47K    100K        1.47    2.24 V [2]_
     87in4     VIN4    VCC5V       200K     47K        5.25    0.95 V
     88in5     VIN5    +12V        200K     20K       11.00    1.05 V
     89in6     VIN6    VCC1.5V      10K       -        1.00    1.50 V
     90in7     VIN7    VCORE        10K       -        1.00   ~1.40 V [1]_
     91in8     VIN8    VSB5V       200K     47K        1.00    0.95 V
     92in10    VSB     VSB3.3V     int.    int.        2.00    1.65 V [3]_
     93in9     VBAT    VBATTERY    int.    int.        2.00    1.50 V [3]_
     94======= ======= =========== ==== ======= ============ ==============
     95
     96.. [1] Depends on your hardware setup.
     97.. [2] Obviously not correct, swapping R1 and R2 would make more sense.
     98.. [3] F71872F/FG only.
     99
    100These values can be used as hints at best, as motherboard manufacturers
    101are free to use a completely different setup. As a matter of fact, the
    102Jetway K8M8MS uses a significantly different setup. You will have to
    103find out documentation about your own motherboard, and edit sensors.conf
    104accordingly.
    105
    106Each voltage measured has associated low and high limits, each of which
    107triggers an alarm when crossed.
    108
    109
    110Fan Monitoring
    111--------------
    112
    113Fan rotation speeds are reported as 12-bit values from a gated clock
    114signal. Speeds down to 366 RPM can be measured. There is no theoretical
    115high limit, but values over 6000 RPM seem to cause problem. The effective
    116resolution is much lower than you would expect, the step between different
    117register values being 10 rather than 1.
    118
    119The chip assumes 2 pulse-per-revolution fans.
    120
    121An alarm is triggered if the rotation speed drops below a programmable
    122limit or is too low to be measured.
    123
    124
    125Temperature Monitoring
    126----------------------
    127
    128Temperatures are reported in degrees Celsius. Each temperature measured
    129has a high limit, those crossing triggers an alarm. There is an associated
    130hysteresis value, below which the temperature has to drop before the
    131alarm is cleared.
    132
    133All temperature channels are external, there is no embedded temperature
    134sensor. Each channel can be used for connecting either a thermal diode
    135or a thermistor. The driver reports the currently selected mode, but
    136doesn't allow changing it. In theory, the BIOS should have configured
    137everything properly.
    138
    139
    140Fan Control
    141-----------
    142
    143Both PWM (pulse-width modulation) and DC fan speed control methods are
    144supported. The right one to use depends on external circuitry on the
    145motherboard, so the driver assumes that the BIOS set the method
    146properly. The driver will report the method, but won't let you change
    147it.
    148
    149When the PWM method is used, you can select the operating frequency,
    150from 187.5 kHz (default) to 31 Hz. The best frequency depends on the
    151fan model. As a rule of thumb, lower frequencies seem to give better
    152control, but may generate annoying high-pitch noise. So a frequency just
    153above the audible range, such as 25 kHz, may be a good choice; if this
    154doesn't give you good linear control, try reducing it. Fintek recommends
    155not going below 1 kHz, as the fan tachometers get confused by lower
    156frequencies as well.
    157
    158When the DC method is used, Fintek recommends not going below 5 V, which
    159corresponds to a pwm value of 106 for the driver. The driver doesn't
    160enforce this limit though.
    161
    162Three different fan control modes are supported; the mode number is written
    163to the pwm<n>_enable file.
    164
    165* 1: Manual mode
    166  You ask for a specific PWM duty cycle or DC voltage by writing to the
    167  pwm<n> file.
    168
    169* 2: Temperature mode
    170  You define 3 temperature/fan speed trip points using the
    171  pwm<n>_auto_point<m>_temp and _fan files. These define a staircase
    172  relationship between temperature and fan speed with two additional points
    173  interpolated between the values that you define. When the temperature
    174  is below auto_point1_temp the fan is switched off.
    175
    176* 3: Fan speed mode
    177  You ask for a specific fan speed by writing to the fan<n>_target file.
    178
    179Both of the automatic modes require that pwm1 corresponds to fan1, pwm2 to
    180fan2 and pwm3 to fan3. Temperature mode also requires that temp1 corresponds
    181to pwm1 and fan1, etc.