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 asb100
^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)   * Asus ASB100 and ASB100-A "Bach"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8)     Prefix: 'asb100'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)     Addresses scanned: I2C 0x2d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)     Datasheet: none released
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) Author: Mark M. Hoffman <mhoffman@lightlink.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) Description
^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) This driver implements support for the Asus ASB100 and ASB100-A "Bach".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) These are custom ASICs available only on Asus mainboards. Asus refuses to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) supply a datasheet for these chips. Thanks go to many people who helped
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) investigate their hardware, including:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) Vitaly V. Bursov
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) Alexander van Kaam (author of MBM for Windows)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) Bertrik Sikken
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) The ASB100 implements seven voltage sensors, three fan rotation speed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) sensors, four temperature sensors, VID lines and alarms. In addition to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) these, the ASB100-A also implements a single PWM controller for fans 2 and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 3 (i.e. one setting controls both.) If you have a plain ASB100, the PWM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) controller will simply not work (or maybe it will for you... it doesn't for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) me).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) Temperatures are measured and reported in degrees Celsius.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) Fan speeds are reported in RPM (rotations per minute). An alarm is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) triggered if the rotation speed has dropped below a programmable limit.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) Voltage sensors (also known as IN sensors) report values in volts.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) The VID lines encode the core voltage value: the voltage level your
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) processor should work with. This is hardcoded by the mainboard and/or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) processor itself. It is a value in volts.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) Alarms: (TODO question marks indicate may or may not work)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) - 0x0001 => in0 (?)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) - 0x0002 => in1 (?)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) - 0x0004 => in2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) - 0x0008 => in3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) - 0x0010 => temp1 [1]_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) - 0x0020 => temp2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) - 0x0040 => fan1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) - 0x0080 => fan2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) - 0x0100 => in4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) - 0x0200 => in5 (?) [2]_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) - 0x0400 => in6 (?) [2]_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) - 0x0800 => fan3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) - 0x1000 => chassis switch
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) - 0x2000 => temp3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) .. [1]	This alarm will only trigger if the hysteresis value is 127C.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 	I.e. it behaves the same as w83781d.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) .. [2]	The min and max registers for these values appear to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) 	be read-only or otherwise stuck at 0x00.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) TODO:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)   * Experiment with fan divisors > 8.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)   * Experiment with temp. sensor types.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)   * Are there really 13 voltage inputs? Probably not...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)   * Cleanups, no doubt...