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