[LinuxBIOS] m57sli-s4 and i2c

Ward Vandewege ward at gnu.org
Thu Apr 26 22:40:17 CEST 2007


On Wed, Apr 18, 2007 at 11:48:42PM -0400, Ward Vandewege wrote:
> On Thu, Apr 19, 2007 at 05:41:49AM +0200, Peter Stuge wrote:
> > I guess LB doesn't activate the sensors part of the superio?
> 
> That was my guess too.

I've managed to activate the 'environmental controller' (EC) on the gigabyte
m57sli-s4's superio.

This now works:

======================================================================
# perl sensors-detect
Some Super I/O chips may also contain sensors. We have to write to
standard I/O ports to probe them. This is usually safe.
Do you want to scan for Super I/O sensors? (YES/no): 
Probing for Super-I/O at 0x2e/0x2f
Trying family `National Semiconductor'...                   No
Trying family `SMSC'...                                     No
Trying family `VIA/Winbond/Fintek'...                       No
Trying family `ITE'...                                      Yes
Found `ITE IT8716F Super IO Sensors'                        Success!
    (address 0x290, driver `it87')
======================================================================

And I get output with the 'sensors' command:

======================================================================
# sensors
k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp:
             +39°C
Core1 Temp:
             +40°C

it8716-isa-0290
Adapter: ISA adapter
VCore:     +1.30 V  (min =  +0.00 V, max =  +4.08 V)
VDDR:      +1.94 V  (min =  +0.00 V, max =  +4.08 V)
+3.3V:     +3.26 V  (min =  +0.00 V, max =  +4.08 V)
+5V:       +4.87 V  (min =  +0.00 V, max =  +6.85 V)
+12V:     +12.42 V  (min =  +0.00 V, max = +16.32 V)
in5:       +0.54 V  (min =  +0.00 V, max =  +4.08 V)
in6:       +1.07 V  (min =  +0.00 V, max =  +4.08 V)
5VSB:      +4.87 V  (min =  +0.00 V, max =  +6.85 V)
VBat:      +3.09 V
fan1:     1618 RPM  (min =    0 RPM)
fan2:     1333 RPM  (min =    0 RPM)
fan3:        0 RPM  (min =    0 RPM)
temp1:       +25°C  (low  =    -1°C, high =  +127°C)   sensor = thermistor
temp2:      +128°C  (low  =    -1°C, high =  +127°C)   sensor = diode
temp3:       +81°C  (low  =    -1°C, high =  +127°C)   sensor = thermistor
vid:      +1.300 V
======================================================================

Most of these values seem ok or at least plausable - fan3 is not connected so
that's correct; the value for temp2 and possibly temp3 is not correct.

This is what sensors tells me under the proprietary BIOS:
======================================================================
# sensors
k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp:
             +26°C
Core1 Temp:
             +29°C

it8716-isa-0290
Adapter: ISA adapter
VCore:     +1.07 V  (min =  +0.00 V, max =  +4.08 V)
VDDR:      +1.94 V  (min =  +0.00 V, max =  +4.08 V)
+3.3V:     +3.26 V  (min =  +0.00 V, max =  +4.08 V)
+5V:       +4.84 V  (min =  +0.00 V, max =  +6.85 V)
+12V:     +12.42 V  (min =  +0.00 V, max = +16.32 V)
in5:       +0.90 V  (min =  +0.00 V, max =  +4.08 V)
in6:       +0.66 V  (min =  +0.00 V, max =  +4.08 V)
5VSB:      +4.84 V  (min =  +0.00 V, max =  +6.85 V)
VBat:      +3.10 V
fan1:     1622 RPM  (min =    0 RPM)
fan2:     1336 RPM  (min =    0 RPM)
fan3:        0 RPM  (min =    0 RPM)
temp1:       +25°C  (low  =  +127°C, high =  +127°C)   sensor = thermistor
temp2:       -21°C  (low  =  +127°C, high =  +127°C)   sensor = thermistor
temp3:       +31°C  (low  =  +127°C, high =  +127°C)   sensor = diode
vid:      +1.100 V
======================================================================

Some of these are in agreement with what I get under LinuxBIOS - but the
core0/core1 temperatures are more than 10 degrees off (that's in k8temp);
Vcore is different; in5 and in6 are different; temp2 is *also* wrong (funny
:), and temp3 is different; vid is different.

I guess I'm not quite there yet; this is what's logged when loading the
it8716 module:

[   14.860000] it87: Found IT8716F chip at 0x290, revision 0
[   14.864000] it87: in3 is VCC (+5V)
[   14.868000] it87: in7 is VCCH (+5V Stand-By)
[   14.872000] i2c_adapter i2c-9191: Driver it87-isa registered
[   14.872000] i2c_adapter i2c-9191: client [it8716] registered with bus id
9191-0290
[   14.872000] it87-isa 9191-0290: Detected broken BIOS defaults, disabling
PWM interface

Funnily enough, if I load the it87 module with the following parameter

  modprobe it87 fix_pwm_polarity=1

(which is a fix for some broken proprietary BIOS'es out there ;) it seems to
be happier:

[  797.956000] it87: Found IT8716F chip at 0x290, revision 0
[  797.960000] it87: in3 is VCC (+5V)
[  797.964000] it87: in7 is VCCH (+5V Stand-By)
[  797.968000] i2c_adapter i2c-9191: Driver it87-isa registered
[  797.968000] i2c_adapter i2c-9191: client [it8716] registered with bus id
9191-0290
[  797.968000] it87-isa 9191-0290: Reconfiguring PWM to active high polarity

And then I can set the fan speed :)

YH mentioned some initialization might be required for some of these
readouts, so I guess I'll go back to the datasheet to see if I can figure
something out.

In any case, patch attached to get at least this far.

Thanks,
Ward.

-- 
Ward Vandewege <ward at fsf.org>
Free Software Foundation - Senior System Administrator
-------------- next part --------------

Activate EC for access to fan speeds and temperature sensors.

Signed-off-by: Ward Vandewege <ward at gnu.org>

Index: src/mainboard/gigabyte/m57sli/Config.lb
===================================================================
--- src/mainboard/gigabyte/m57sli/Config.lb	(revision 2618)
+++ src/mainboard/gigabyte/m57sli/Config.lb	(working copy)
@@ -256,7 +256,10 @@
                 	                 			io 0x60 = 0x378
                 	                			irq 0x70 = 7
 							end
-                	        			device pnp 2e.4 off #  EC
+                	        			device pnp 2e.4 on #  EC
+                	                 			io 0x60 = 0x290
+                	                 			io 0x62 = 0x230
+                	                			irq 0x70 = 9
 							end
                 	        			device pnp 2e.5 on #  Keyboard
                 	                 			io 0x60 = 0x60
@@ -268,7 +271,7 @@
 							end
                 	        			device pnp 2e.8 off #  MIDI
 								io 0x60 = 0x300
-								irq 0x70 = 9
+								irq 0x70 = 10
 							end
                 	        			device pnp 2e.9 off #  GAME
 								io 0x60 = 0x220


More information about the coreboot mailing list