1*4882a593SmuzhiyunKernel driver abituguru 2*4882a593Smuzhiyun======================= 3*4882a593Smuzhiyun 4*4882a593SmuzhiyunSupported chips: 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun * Abit uGuru revision 1 & 2 (Hardware Monitor part only) 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun Prefix: 'abituguru' 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun Addresses scanned: ISA 0x0E0 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun Datasheet: Not available, this driver is based on reverse engineering. 13*4882a593Smuzhiyun A "Datasheet" has been written based on the reverse engineering it 14*4882a593Smuzhiyun should be available in the same dir as this file under the name 15*4882a593Smuzhiyun abituguru-datasheet. 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun Note: 18*4882a593Smuzhiyun The uGuru is a microcontroller with onboard firmware which programs 19*4882a593Smuzhiyun it to behave as a hwmon IC. There are many different revisions of the 20*4882a593Smuzhiyun firmware and thus effectively many different revisions of the uGuru. 21*4882a593Smuzhiyun Below is an incomplete list with which revisions are used for which 22*4882a593Smuzhiyun Motherboards: 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun - uGuru 1.00 ~ 1.24 (AI7, KV8-MAX3, AN7) [1]_ 25*4882a593Smuzhiyun - uGuru 2.0.0.0 ~ 2.0.4.2 (KV8-PRO) 26*4882a593Smuzhiyun - uGuru 2.1.0.0 ~ 2.1.2.8 (AS8, AV8, AA8, AG8, AA8XE, AX8) 27*4882a593Smuzhiyun - uGuru 2.2.0.0 ~ 2.2.0.6 (AA8 Fatal1ty) 28*4882a593Smuzhiyun - uGuru 2.3.0.0 ~ 2.3.0.9 (AN8) 29*4882a593Smuzhiyun - uGuru 3.0.0.0 ~ 3.0.x.x (AW8, AL8, AT8, NI8 SLI, AT8 32X, AN8 32X, 30*4882a593Smuzhiyun AW9D-MAX) [2]_ 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun.. [1] For revisions 2 and 3 uGuru's the driver can autodetect the 33*4882a593Smuzhiyun sensortype (Volt or Temp) for bank1 sensors, for revision 1 uGuru's 34*4882a593Smuzhiyun this does not always work. For these uGuru's the autodetection can 35*4882a593Smuzhiyun be overridden with the bank1_types module param. For all 3 known 36*4882a593Smuzhiyun revision 1 motherboards the correct use of this param is: 37*4882a593Smuzhiyun bank1_types=1,1,0,0,0,0,0,2,0,0,0,0,2,0,0,1 38*4882a593Smuzhiyun You may also need to specify the fan_sensors option for these boards 39*4882a593Smuzhiyun fan_sensors=5 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun.. [2] There is a separate abituguru3 driver for these motherboards, 42*4882a593Smuzhiyun the abituguru (without the 3 !) driver will not work on these 43*4882a593Smuzhiyun motherboards (and visa versa)! 44*4882a593Smuzhiyun 45*4882a593SmuzhiyunAuthors: 46*4882a593Smuzhiyun - Hans de Goede <j.w.r.degoede@hhs.nl>, 47*4882a593Smuzhiyun - (Initial reverse engineering done by Olle Sandberg 48*4882a593Smuzhiyun <ollebull@gmail.com>) 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun 51*4882a593SmuzhiyunModule Parameters 52*4882a593Smuzhiyun----------------- 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun* force: bool 55*4882a593Smuzhiyun Force detection. Note this parameter only causes the 56*4882a593Smuzhiyun detection to be skipped, and thus the insmod to 57*4882a593Smuzhiyun succeed. If the uGuru can't be read the actual hwmon 58*4882a593Smuzhiyun driver will not load and thus no hwmon device will get 59*4882a593Smuzhiyun registered. 60*4882a593Smuzhiyun* bank1_types: int[] 61*4882a593Smuzhiyun Bank1 sensortype autodetection override: 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun * -1 autodetect (default) 64*4882a593Smuzhiyun * 0 volt sensor 65*4882a593Smuzhiyun * 1 temp sensor 66*4882a593Smuzhiyun * 2 not connected 67*4882a593Smuzhiyun* fan_sensors: int 68*4882a593Smuzhiyun Tell the driver how many fan speed sensors there are 69*4882a593Smuzhiyun on your motherboard. Default: 0 (autodetect). 70*4882a593Smuzhiyun* pwms: int 71*4882a593Smuzhiyun Tell the driver how many fan speed controls (fan 72*4882a593Smuzhiyun pwms) your motherboard has. Default: 0 (autodetect). 73*4882a593Smuzhiyun* verbose: int 74*4882a593Smuzhiyun How verbose should the driver be? (0-3): 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun * 0 normal output 77*4882a593Smuzhiyun * 1 + verbose error reporting 78*4882a593Smuzhiyun * 2 + sensors type probing info (default) 79*4882a593Smuzhiyun * 3 + retryable error reporting 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun Default: 2 (the driver is still in the testing phase) 82*4882a593Smuzhiyun 83*4882a593SmuzhiyunNotice: if you need any of the first three options above please insmod the 84*4882a593Smuzhiyundriver with verbose set to 3 and mail me <j.w.r.degoede@hhs.nl> the output of: 85*4882a593Smuzhiyundmesg | grep abituguru 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun 88*4882a593SmuzhiyunDescription 89*4882a593Smuzhiyun----------- 90*4882a593Smuzhiyun 91*4882a593SmuzhiyunThis driver supports the hardware monitoring features of the first and 92*4882a593Smuzhiyunsecond revision of the Abit uGuru chip found on Abit uGuru featuring 93*4882a593Smuzhiyunmotherboards (most modern Abit motherboards). 94*4882a593Smuzhiyun 95*4882a593SmuzhiyunThe first and second revision of the uGuru chip in reality is a Winbond 96*4882a593SmuzhiyunW83L950D in disguise (despite Abit claiming it is "a new microprocessor 97*4882a593Smuzhiyundesigned by the ABIT Engineers"). Unfortunately this doesn't help since the 98*4882a593SmuzhiyunW83L950D is a generic microcontroller with a custom Abit application running 99*4882a593Smuzhiyunon it. 100*4882a593Smuzhiyun 101*4882a593SmuzhiyunDespite Abit not releasing any information regarding the uGuru, Olle 102*4882a593SmuzhiyunSandberg <ollebull@gmail.com> has managed to reverse engineer the sensor part 103*4882a593Smuzhiyunof the uGuru. Without his work this driver would not have been possible. 104*4882a593Smuzhiyun 105*4882a593SmuzhiyunKnown Issues 106*4882a593Smuzhiyun------------ 107*4882a593Smuzhiyun 108*4882a593SmuzhiyunThe voltage and frequency control parts of the Abit uGuru are not supported. 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun.. toctree:: 111*4882a593Smuzhiyun :maxdepth: 1 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun abituguru-datasheet.rst 114