mirror of
https://github.com/LineageOS/android_kernel_samsung_msm8226.git
synced 2026-09-29 00:00:25 +02:00
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>
50 lines
1.3 KiB
C
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*/
|