So after lot of tries to fix this in DSDT i has decided to develop own driver and see what is going on ...
The problem was in _ALx methods in thermal zone - them returns NULL in lion(in snow they works as expected), but must return fan devices list.
Any ideas about this behavior?
So I have added methods to thermal zone in DSDT:
- EALx - to enable cooling for _ACx
- DALx - to disable cooling for _ACx
(Thermal Zones TZ1 and TZ2 in my DSDT came from SSDT)
And added use of them to my driver.
Now I have tested driver in lion and snow - works good, I have active cooling on my laptop.
The only things implemented in driver at this moment:
1. Check zone temperature.
2. Get _ACx values, and if need enable/disable cooling form them with EACx/DACx methods(_ALx - not used at this moment)
Also thermal zone driver, may be, need to implement some actions for passive cooling(such as cpu throttling) - but i do not know how...
Any suggestions and fixes are welcome =)
Also this driver is diqused projectosx.