Files
android_kernel_samsung_msm8226/include/linux/msm_thermal.h
T
Jennifer Liu 4ff4094472 msm: thermal: Enable hotplug support in kernel
Enable hotplug support in kernel after msm_thermal is disabled.
msm_thermal will register a call back function with tsens driver
for different sensors. When the threshold is reached, tsens will
generate an interrupt and notify hotplug_notify which will then
send out a complete object signal. Create do_hotplug kthread which
waits for the completion object signal, and check the new state
of hotplug mask to decide if cpu will be hotplugged. When hotplug
is done, call sysfs_notify to update cpus_offlined mask.
store_cpus_offlined and store_cc_enabled will also send complete
object siganl to do_hotplug kthread to update cpus_offlined mask.
Whenever user write into cpus_offlined mask through sysfs node,
the vote will be there until user remove the mask. show_cpus_offlined
will return the OR results of KTM and user space vote.

The sensor mapping is provided in device tree.

Retain the core control part of the kernel module that polls the
temperature to decide to offline cores.

CRs-Fixed: 515110
Change-Id: I7f644088ef4d2683c5bf960df10723a628789aa5
Signed-off-by: Jennifer Liu <chihning@codeaurora.org>
2013-08-20 10:55:02 -07:00

50 lines
1.3 KiB
C

/*
* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef __MSM_THERMAL_H
#define __MSM_THERMAL_H
struct msm_thermal_data {
uint32_t sensor_id;
uint32_t poll_ms;
int32_t limit_temp_degC;
int32_t temp_hysteresis_degC;
uint32_t freq_step;
uint32_t freq_control_mask;
int32_t core_limit_temp_degC;
int32_t core_temp_hysteresis_degC;
int32_t hotplug_temp_degC;
int32_t hotplug_temp_hysteresis_degC;
uint32_t core_control_mask;
int32_t vdd_rstr_temp_degC;
int32_t vdd_rstr_temp_hyst_degC;
int32_t psm_temp_degC;
int32_t psm_temp_hyst_degC;
};
#ifdef CONFIG_THERMAL_MONITOR
extern int msm_thermal_init(struct msm_thermal_data *pdata);
extern int msm_thermal_device_init(void);
#else
static inline int msm_thermal_init(struct msm_thermal_data *pdata)
{
return -ENOSYS;
}
static inline int msm_thermal_device_init(void)
{
return -ENOSYS;
}
#endif
#endif /*__MSM_THERMAL_H*/