The thermal driver is pretty straight forward and simple. What exactly do we need? I haven't been able to reproduce any throttling so far on my device. Is it throttling too soon? When it throttles it decreases the CPU frequencies too much and causes lag? Does it take time to detect the actual temperature?
The more info the better, as soon as I understand whats up I'll fix it.
The throttle logic isnt that great as others have said. Right now it *can* decrease all the way down to something like 400MHz, which is really low. The majority of devices can run at 1.2GHz and be at a low enough speed not to raise the temperature past the thermal threshold, while some devices need to be around the 1GHz range. It is hard to see because these tablets are so different from each other. The thermal and electrical properties of these processors have a huge range of values and everyone's stock voltages are different. Which is one of the reasons some people hit throttling after 1 minute of playing a game, while others it takes 15-20 minutes.
What would be better for the thermal control logic would be that when it first starts throttling the speed should drop by 1 step every 2 sample periods until it reaches 1GHz. This will provide a gradual enough decrease that frames wont be as choppy from such sudden and drastic uneven rendering times. Once the temperature has dropped by 2 degrees then the speed cap could be raised from 1GHz to 1.2GHz. If the temperature then goes down enough at this speed to reach the stop throttle point then the frequency cap can be released and speed allowed to climb.
Doing the logic this way would probably keep the majority of users who hit severe thermal throttling in a constant state of locked down frequency. This is actually better than constantly dropping a lot and then releasing back to max speed because it provides a smoother ramp down and then keeps the device held in an area where you have enough performance to still play fairly smoothly yet not enough speed to have the temperature keep rising.
I have opened my tablet up completely and measured the temperature of different areas. I found the exact same results as the first person to open their tablet for the same purpose. When the tablet hits 80 degrees and starts throttling, readings from the CPU are between 45-47 degrees. Another person who had a thermal imaging device took pictures of his tablet and his pictures showed the heat sources to be right in that same spot of 45 degrees. So the outside of the processor at least is much cooler than the temp sensor suggests. However, there could be a sensor embedded directly into the processor itself right in there next to the hottest part of the cores and the inside area of the actual core temperatures could be much higher than our readings. Usually real core temperatures are 20-30% higher than external sensor readings. So we do have to be careful about raising the throttle point too much. However, even at 30% higher temp from the readings done by users, that would still not bring us to the supposed 80 degrees being reported. It would in fact be closer to 65 degrees. Everyone has been able to play things fine by bumping their throttle limit just a few degrees (4-5 degrees extra). However most will see graphical corruption if they set their throttling point around 100 (an extra 20 degrees hotter). So I dont recommend going too much higher on the threshold if you do choose to raise the limit.
Another quirk that was found in the temperature reporting is that while the tablets were open and temp being read, if we brought a fan to blow into the processor then our external readings drop dramatically (as expected) yet the temperature reported in the device is still right at 80 degrees and doesnt drop even slightly with the addition of a fan.