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 w83793
^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)   * Winbond W83793G/W83793R
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)     Prefix: 'w83793'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)     Addresses scanned: I2C 0x2c - 0x2f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)     Datasheet: Still not published
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) Authors:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15)     - Yuan Mu (Winbond Electronics)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16)     - Rudolf Marek <r.marek@assembler.cz>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) Module parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) -----------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) * reset int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23)     (default 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25)     This parameter is not recommended, it will lose motherboard specific
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26)     settings. Use 'reset=1' to reset the chip when loading this module.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) * force_subclients=bus,caddr,saddr1,saddr2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29)     This is used to force the i2c addresses for subclients of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30)     a certain chip. Typical usage is `force_subclients=0,0x2f,0x4a,0x4b`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31)     to force the subclients of chip 0x2f on bus 0 to i2c addresses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32)     0x4a and 0x4b.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) Description
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) -----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) This driver implements support for Winbond W83793G/W83793R chips.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) * Exported features
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41)     This driver exports 10 voltage sensors, up to 12 fan tachometer inputs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42)     6 remote temperatures, up to 8 sets of PWM fan controls, SmartFan
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43)     (automatic fan speed control) on all temperature/PWM combinations, 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44)     sets of 6-pin CPU VID input.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) * Sensor resolutions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47)     If your motherboard maker used the reference design, the resolution of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48)     voltage0-2 is 2mV, resolution of voltage3/4/5 is 16mV, 8mV for voltage6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49)     24mV for voltage7/8. Temp1-4 have a 0.25 degree Celsius resolution,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50)     temp5-6 have a 1 degree Celsiis resolution.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) * Temperature sensor types
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53)     Temp1-4 have 2 possible types. It can be read from (and written to)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54)     temp[1-4]_type.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56)     - If the value is 3, it starts monitoring using a remote termal diode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57)       (default).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58)     - If the value is 6, it starts monitoring using the temperature sensor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59)       in Intel CPU and get result by PECI.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61)     Temp5-6 can be connected to external thermistors (value of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62)     temp[5-6]_type is 4).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) * Alarm mechanism
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65)     For voltage sensors, an alarm triggers if the measured value is below
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66)     the low voltage limit or over the high voltage limit.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67)     For temperature sensors, an alarm triggers if the measured value goes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68)     above the high temperature limit, and wears off only after the measured
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69)     value drops below the hysteresis value.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70)     For fan sensors, an alarm triggers if the measured value is below the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71)     low speed limit.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) * SmartFan/PWM control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74)     If you want to set a pwm fan to manual mode, you just need to make sure it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75)     is not controlled by any temp channel, for example, you want to set fan1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76)     to manual mode, you need to check the value of temp[1-6]_fan_map, make
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77)     sure bit 0 is cleared in the 6 values. And then set the pwm1 value to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78)     control the fan.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80)     Each temperature channel can control all the 8 PWM outputs (by setting the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81)     corresponding bit in tempX_fan_map), you can set the temperature channel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82)     mode using temp[1-6]_pwm_enable, 2 is Thermal Cruise mode and 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83)     is the SmartFanII mode. Temperature channels will try to speed up or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84)     slow down all controlled fans, this means one fan can receive different
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85)     PWM value requests from different temperature channels, but the chip
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86)     will always pick the safest (max) PWM value for each fan.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88)     In Thermal Cruise mode, the chip attempts to keep the temperature at a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89)     predefined value, within a tolerance margin. So if tempX_input >
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90)     thermal_cruiseX + toleranceX, the chip will increase the PWM value,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91)     if tempX_input < thermal_cruiseX - toleranceX, the chip will decrease
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92)     the PWM value. If the temperature is within the tolerance range, the PWM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93)     value is left unchanged.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95)     SmartFanII works differently, you have to define up to 7 PWM, temperature
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96)     trip points, defining a PWM/temperature curve which the chip will follow.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97)     While not fundamentally different from the Thermal Cruise mode, the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98)     implementation is quite different, giving you a finer-grained control.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) * Chassis
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)     If the case open alarm triggers, it will stay in this state unless cleared
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)     by writing 0 to the sysfs file "intrusion0_alarm".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) * VID and VRM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)     The VRM version is detected automatically, don't modify the it unless you
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)     *do* know the cpu VRM version and it's not properly detected.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) Notes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) -----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)   Only Fan1-5 and PWM1-3 are guaranteed to always exist, other fan inputs and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)   PWM outputs may or may not exist depending on the chip pin configuration.