Re: [PATCH] Acerhdf: fix fan control for BIOS 3309

From: Peter Feuerer
Date: Sun Jul 05 2009 - 12:51:31 EST


Hi Boris,

Borislav Petkov writes:

Hi Len,

please apply.

---
From: Borislav Petkov <petkovbb@xxxxxxxxx>
Date: Sun, 5 Jul 2009 14:35:01 +0200
Subject: [PATCH] Acerhdf: fix fan control for BIOS 3309

With BIOS update v3309, the Aspire One has had some changes to how
the fan is being controlled. Reads to the fanreg (0x55) do not simply
return the on/off values of the fan anymore but rather a different
fan stage based on the current temperature. Empirically, I could
observe the fan stage being 0x1 when booting the machine, then the
temperature went up and the BIOS switched the fan to stage 0x2, making
it rotate faster with final stage being fan state 0x3, aka max.

I think it was already like that before v3309. But in my opinion it doesn't matter how fast the fan spins. As soon as it's spinning it's making too much noise. That's why I like to use only two states for the fan, "on" (noisy, doesn't matter how fast it's spinning) and "off" (quiet ;))

This requires some changes to the controlling code so that it can still
be done adequately. Also, the OFF switch has changed from 0x21 to 0x20.
It seems almost as if they're using the least significant nibble of the
command written to the ioport for the different fan stages.

I've been developping acerhdf with BIOS v3309 since the very beginning. And it was working fine with 0x21 all the time. I'm going to do some further inverstigations next few days. Thanks for reporting!


While at it, convert the fancmd[] array to a real struct thus
disambiguating command handling and making code more readable.

Good!

kind regards,
--peter
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/