thermal: Don't limit CPU frequency after msm_thermal is disabled

There may be an outstanding task to check for threshold crossing
when msm_thermal is disabled and CPU is restored to maximum
frequency. This task can get scheduled after the maximum frequency
is restored, and result in another mitigation that pins CPU
frequencies to 918mHz. This happens in the case that the final
temperature was still above the max temperature threshold.
This patch ensures any outstanding tasks are cancelled and flushed
before finally restoring the CPU frequencies.

CRs-fixed: 351614
Change-Id: Ifce00b379989b78856803ac09c7403207f5c998b
Signed-off-by: Eugene Seah <eseah@codeaurora.org>
drivers: thermal: create kernel thermal readout

Signed-off-by: Dennis Rassmann <showp1984@gmail.com>
Revert "thermal: Don't limit CPU frequency after msm_thermal is disabled"

This reverts commit 4034964ae9202ef6976b72575c2e67203a362f99.
thermal: patch down msm_thermal, pre device

This also removes the cputable freq changes, which
we won't need since we use static values.

Signed-off-by: Dennis Rassmann <showp1984@gmail.com>

Change-Id: I22d75a122050dada75f021fe63156390ad8e77a2
Signed-off-by: Zarboz <zarboz@gmail.com>
msm_thermal: 3-phase thermal throttling

This introduces 3-phase thermal throttling to the existing
msm_thermal driver (it now works more like thermald).
This also changes the sampling rate to check every second
for increased temperatures.
Additionally this adds clear thresholds for the 2 new tripping
points.

Signed-off-by: showp1984 <showp1984@gmail.com>
msm_thermal: add sysfs interface

This adds a sysfs interface to msm_thermal.
I've also restructured the tuneables into a struct
for better overview.

Signed-off-by: showp1984 <showp1984@gmail.com>
msm_thermal: move sysfs to /sys/kernel/msm_thermal/conf/

Signed-off-by: showp1984 <showp1984@gmail.com>
msm_thermal: fix saving pre-throttled freq

Signed-off-by: showp1984 <showp1984@gmail.com>
drivers/thermal: create own unbound (highpri) wq for msm_thermal

Signed-off-by: Dennis Rassmann <showp1984@gmail.com>
drivers/thermal: adapt msm_thermal for quadcore & mako

Signed-off-by: Dennis Rassmann <showp1984@gmail.com>
drivers/thermal: use config variable here

Signed-off-by: Dennis Rassmann <showp1984@gmail.com>
drivers/thermal: add emergency shutdown

Signed-off-by: Dennis Rassmann <showp1984@gmail.com>
thermal: emergency shutdown rework

additionally to initiating the shutdown the lowest possible
frequency should be set. (=max throttle atm)
update the cpufreq and do not cancel the workqueue
+ some small code improvements

Signed-off-by: Dennis Rassmann <showp1984@gmail.com>
thermal: set mid freq to 810Mhz

1026Mhz isn't cooling the device enough @max load

Signed-off-by: Dennis Rassmann <showp1984@gmail.com>
thermal: use temperature1 sensor too
The sensor1 seems to be cpu related too, and it usually
shows higher temps (~2°C). Use the higher value of both
to decide if thermal throttling is neccessary.

Signed-off-by: Dennis Rassmann <showp1984@gmail.com>
thermal: check every 100ms for thermal changes
Tests have shows that the apq8064 likes to jump from
~69°C to ~80°C within 250ms while overclocked.
schedule checks more often to avoid that.
Also increase shutdown temp to 81°C (+1).

Signed-off-by: Dennis Rassmann <showp1984@gmail.com>
thermal: do not wait, unthrottle now

Signed-off-by: Dennis Rassmann <showp1984@gmail.com>
thermal: remove not needed condition

Signed-off-by: Dennis Rassmann <showp1984@gmail.com>
thermal: fix clear thresholds

Signed-off-by: Dennis Rassmann <showp1984@gmail.com>
thermal: only update freq if new is not > than saved_max

Signed-off-by: Dennis Rassmann <showp1984@gmail.com>