thermal: msm8960_tsens: Read TSENS temperature

Add kernel API to read TSENS temperature for clients
in the kernel space. Currently the TSENS driver only
supports reading the TSENS temperature from the
thermal sys.

Split the TSENS initialization into two parts.
First is to perform the initial calibration that is
used to convert the raw ADC code to Degrees Celcius
and initialize the TSENS HW. Second is to register the
TSENS driver to the linux thermal framework and create
the temperature zones that will be accessed by the
Thermal daemon to set thresholds, read the temperature
and receive notifications.

Change-Id: Id2305a7aa755e1e9cfaecd8b5c1870ed05d9b5e9
Signed-off-by: Praveen Chidambaram <pchidamb@codeaurora.org>
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>

Conflicts:

	drivers/thermal/msm8x60_tsens.c
	include/linux/msm_tsens.h
msm: spm: Allow setting of voltages across cpus

The original intent of disallowing voltage set across cpus is to prevent
setting of voltages on a core when its idle thread. The cpufreq
framework ensures that the frequency changes and hence the voltage
changes happens on the respective cpus. By allowing setting of voltages
from others cpus, the secondary cores can be brought out of reset by the
non-primary CPUs after boot and thereby help mitigate any thermal issues
associated wth multicores.

The regulator framework that calls into msm_spm_set_vdd provides the
necessary access restrictions to prevent simultaneous calls into
msm_spm_set_vdd.And hence the spinlocks around the set_vdd calls have
been removed.

CRs-Fixed: 374783
Signed-off-by: Mahesh Sivasubramanian <msivasub@codeaurora.org>
(cherry picked from commit 896d25353b95d647ba8f6cf3ea12e3170cd00f55)

Change-Id: If9b642be3ed4e4cfe4239ce7f845c16a8996c05b
Signed-off-by: Sridhar Gujje <sgujje@codeaurora.org>
modified for HTC kernels from CAF reference by faux123