term_adt746x: Invert bit required on this Powerbook G4
Max Vozeler
max at hinterhof.net
Wed Nov 4 23:23:55 EST 2009
I installed Ubuntu 8.10 on this Powerbook G4 ("alu" I think)
for a friend of mine. As soon as therm_adt746x got loaded, the
fan turned into a noise steam engine.
This was on Ubuntu's 2.6.31 kernel (2.6.31-14-powerpc) which
includes 0512a9a8e277a9de2. I could reproduce it with latest
mainline as well.
The effect was just as Michel described in the changelog; The
fan was running while temps were well below any of the limits,
and it stopped only when I set ridiculously low limits.
[ 1087.141482] adt746x: version 1 (supported)
[ 1087.141495] adt746x: Thermostat bus: 1, address: 0x2e, limit_adjust: 0, fan_speed: -1
[ 1087.141503] sensor 0: HDD BOTTOMSIDE
[ 1087.141507] sensor 1: CPU TOPSIDE
[ 1087.141512] sensor 2: GPU ON DIE
[ 1087.161365] adt746x: ADT7460 initializing
[ 1087.165245] adt746x: Lowering max temperatures from 73, 80, 109 to 70, 50, 70
[ 1087.165261] adt746x: Setting speed to 0 for CPU TOPSIDE fan.
[ 1087.166302] adt746x: Setting speed to 0 for GPU ON DIE fan.
(What "worked" was limit_adjust=-30, fan did turn off, but so did
the Powerbook shortly after, despite being cold.)
After some poking around, in which everything seemed to be
according to plan including write of 0 to both FAN_SPD_SET regs,
I noticed that explicitly *setting* the invert bit as in
- write_reg(th, MANUAL_MODE[fan],
- (manual|MANUAL_MASK) & (~INVERT_MASK));
+ write_reg(th, MANUAL_MODE[fan],
+ (manual|MANUAL_MASK|INVERT_MASK));
seems to cure it. The fan appears to behave normally now, it
turns on slowly when the temp limits are reached, otherwise it
stays off. The temperature is reasonable (ie, no too hot).
So, puzzeled, I checked the spec, and it appears very clear on
the question of invert: It should be off by default.
I'm about to give the laptop back to my friend, but I suppose I
could borrow it for further tests if anyone could guide me how
to dig further into this.
Any hw/openfirmware details interesting?
Max
More information about the Linuxppc-dev
mailing list