[coreboot] m57sli FAN control [was: GeForce 8600GT with coreboot]

Ronald Hoogenboom ronald at zonnet.nl
Fri Feb 22 23:52:07 CET 2008

On Mon, 2008-02-18 at 15:29 -0500, Ward Vandewege wrote:
> On Mon, Feb 18, 2008 at 09:18:12PM +0100, Ronald Hoogenboom wrote:
> > Something else I noticed is that the CPU fan speed isn't regulated with
> > coreboot. The K8-temp goes over 90 C and the fan is still reving slow at
> > 800 RPM (nice and quiet, but not so good for my athlons health).
> I submitted some code a long time ago (r2620) to set the fans to automatic
> control on the it8716f superio. That was of course based on a PLCC version of
> the board. Check src/superio/ite/it8716f/superio.c.
> Perhaps there's a bug there - or maybe something has changed on the SOIC
> version of the m57sli.
Now with the patched superiotool, I have been able to spot all the
differences for the auto fan control. If I put the following in the
superio.c (init_ec()) file after your code:

    /* set the correct sensor types 1,2 thermistor; 3 diode */
    pnp_write_index(base, 0x51, 0x1c);
    /* set the 'zero' voltage for diode type sensor */
    pnp_write_index(base, 0x5c, 0x80);
    pnp_write_index(base, 0x56, 0xe5);
    pnp_write_index(base, 0x57, 0xe5);
    pnp_write_index(base, 0x59, 0xe5);
    pnp_write_index(base, 0x5c, 0x00);
    /* fan1 (controlled by temp3) control parameters */
    /* fan off limit */
    pnp_write_index(base, 0x60, 0xff);
    /* fan start limit */
    pnp_write_index(base, 0x61, 0x14);
    /* ???? */
    pnp_write_index(base, 0x62, 0x00);
    /* start PWM */
    pnp_write_index(base, 0x63, 0x27);
    /* smooth and slope PWM */
    pnp_write_index(base, 0x64, 0x90);
    /* direct-down and interval */
    pnp_write_index(base, 0x65, 0x03);
    /* fan1 auto controlled by temp3 */
    pnp_write_index(base, 0x15, 0x82);
    /* fan2 soft controlled, max speed */
    pnp_write_index(base, 0x16, 0x7f);
    /* fan3 soft controlled, 75% speed */
    pnp_write_index(base, 0x17, 0x60);
    /* all fans enable, fan1 ctl smart */
    pnp_write_index(base, 0x13, 0x71);

Then the fan is properly controlled. BUT this stuff is far too mainboard
specific (as opposed to superio specific) to be in this file. It should
be in a file in the mainboard/gigabyte/m57sli directory (probably even
V2.0 specific). But I wouldn't know how to link it in so it gets called
in the ec_init routine. Do you have some suggestions?
Maybe there is a way to put it in the Config.lb file?
> Thanks,
> Ward.

More information about the coreboot mailing list