Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) Kernel driver f71882fg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) ======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) Supported chips:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)   * Fintek F71808E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)     Prefix: 'f71808e'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)     Addresses scanned: none, address read from Super I/O config space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)     Datasheet: Not public
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14)   * Fintek F71808A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16)     Prefix: 'f71808a'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18)     Addresses scanned: none, address read from Super I/O config space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20)     Datasheet: Not public
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22)   * Fintek F71858FG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24)     Prefix: 'f71858fg'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26)     Addresses scanned: none, address read from Super I/O config space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28)     Datasheet: Available from the Fintek website
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30)   * Fintek F71862FG and F71863FG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32)     Prefix: 'f71862fg'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34)     Addresses scanned: none, address read from Super I/O config space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36)     Datasheet: Available from the Fintek website
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38)   * Fintek F71869F and F71869E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40)     Prefix: 'f71869'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42)     Addresses scanned: none, address read from Super I/O config space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44)     Datasheet: Available from the Fintek website
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46)   * Fintek F71869A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48)     Prefix: 'f71869a'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50)     Addresses scanned: none, address read from Super I/O config space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52)     Datasheet: Not public
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54)   * Fintek F71882FG and F71883FG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56)     Prefix: 'f71882fg'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58)     Addresses scanned: none, address read from Super I/O config space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60)     Datasheet: Available from the Fintek website
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62)   * Fintek F71889FG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64)     Prefix: 'f71889fg'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66)     Addresses scanned: none, address read from Super I/O config space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68)     Datasheet: Available from the Fintek website
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70)   * Fintek F71889ED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72)     Prefix: 'f71889ed'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74)     Addresses scanned: none, address read from Super I/O config space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76)     Datasheet: Should become available on the Fintek website soon
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78)   * Fintek F71889A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80)     Prefix: 'f71889a'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82)     Addresses scanned: none, address read from Super I/O config space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84)     Datasheet: Should become available on the Fintek website soon
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86)   * Fintek F8000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88)     Prefix: 'f8000'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90)     Addresses scanned: none, address read from Super I/O config space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92)     Datasheet: Not public
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94)   * Fintek F81801U
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96)     Prefix: 'f71889fg'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98)     Addresses scanned: none, address read from Super I/O config space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)     Datasheet: Not public
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)     Note:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	  This is the 64-pin variant of the F71889FG, they have the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	  same device ID and are fully compatible as far as hardware
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	  monitoring is concerned.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107)   * Fintek F81865F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)     Prefix: 'f81865f'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)     Addresses scanned: none, address read from Super I/O config space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)     Datasheet: Available from the Fintek website
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) Author: Hans de Goede <hdegoede@redhat.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) Description
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) -----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) Fintek F718xx/F8000 Super I/O chips include complete hardware monitoring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) capabilities. They can monitor up to 9 voltages, 4 fans and 3 temperature
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) sensors.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) These chips also have fan controlling features, using either DC or PWM, in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) three different modes (one manual, two automatic).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) The driver assumes that no more than one chip is present, which seems
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) reasonable.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) Monitoring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) ----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) The Voltage, Fan and Temperature Monitoring uses the standard sysfs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) interface as documented in sysfs-interface, without any exceptions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) Fan Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) -----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) Both PWM (pulse-width modulation) and DC fan speed control methods are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) supported. The right one to use depends on external circuitry on the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) motherboard, so the driver assumes that the BIOS set the method
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) properly.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) Note that the lowest numbered temperature zone trip point corresponds to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) the border between the highest and one but highest temperature zones, and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) vica versa. So the temperature zone trip points 1-4 (or 1-2) go from high temp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) to low temp! This is how things are implemented in the IC, and the driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) mimics this.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) There are 2 modes to specify the speed of the fan, PWM duty cycle (or DC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) voltage) mode, where 0-100% duty cycle (0-100% of 12V) is specified. And RPM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) mode where the actual RPM of the fan (as measured) is controlled and the speed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) gets specified as 0-100% of the fan#_full_speed file.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) Since both modes work in a 0-100% (mapped to 0-255) scale, there isn't a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) whole lot of a difference when modifying fan control settings. The only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) important difference is that in RPM mode the 0-100% controls the fan speed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) between 0-100% of fan#_full_speed. It is assumed that if the BIOS programs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) RPM mode, it will also set fan#_full_speed properly, if it does not then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) fan control will not work properly, unless you set a sane fan#_full_speed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) value yourself.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) Switching between these modes requires re-initializing a whole bunch of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) registers, so the mode which the BIOS has set is kept. The mode is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) printed when loading the driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) Three different fan control modes are supported; the mode number is written
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) to the pwm#_enable file. Note that not all modes are supported on all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) chips, and some modes may only be available in RPM / PWM mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) Writing an unsupported mode will result in an invalid parameter error.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) * 1: Manual mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176)   You ask for a specific PWM duty cycle / DC voltage or a specific % of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177)   fan#_full_speed by writing to the pwm# file. This mode is only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)   available on the F71858FG / F8000 if the fan channel is in RPM mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) * 2: Normal auto mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181)   You can define a number of temperature/fan speed trip points, which % the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182)   fan should run at at this temp and which temp a fan should follow using the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183)   standard sysfs interface. The number and type of trip points is chip
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184)   depended, see which files are available in sysfs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185)   Fan/PWM channel 3 of the F8000 is always in this mode!
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) * 3: Thermostat mode (Only available on the F8000 when in duty cycle mode)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188)   The fan speed is regulated to keep the temp the fan is mapped to between
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189)   temp#_auto_point2_temp and temp#_auto_point3_temp.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) All of the automatic modes require that pwm1 corresponds to fan1, pwm2 to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) fan2 and pwm3 to fan3.