MTK Android 8.1 Thermal Management 溫控策略實現mtktscpu依次使用cpu_adaptive_0和cpu_adaptive_1

MTK Android 8.1 Thermal Management 溫控策略實現mtktscpu依次使用cpu_adaptive_0和cpu_adaptive_1

MTK 默認的溫控策略,thermal zone “mtktscpu”如果設置兩個如下thermal cooler “cpu_adaptive_0”和“cpu_adaptive_1”,則溫度升高的時候,只會執行“cpu_adaptive_1”,不會執行“cpu_adaptive_0”,如圖:

在這裏插入圖片描述
當溫度逐漸升高到100度的時候,開始執行cooler“cpu_adaptive_1”,但是當溫度升高到120度的時候,並沒有執行cooler“cpu_adaptive_0”,依然執行的“cpu_adaptive_1”!!

修改如下代碼,實現溫度升高到120度的時候,執行“cpu_adaptive_0”,溫度降低到100~120度的時候,又執行“cpu_adaptive_1”:
kernel/drivers/misc/mediatek/thermal/common/coolers/mtk_cooler_atm.c


static unsigned int temp_cl_dev_adp_cpu_state = 0;	//add

static int adp_cpu_set_cur_state(struct thermal_cooling_device *cdev, unsigned long state)
{
	int ttj = 117000;

	cl_dev_adp_cpu_state[(cdev->type[13] - '0')] = state;

	//實際測試cpu_adaptive_0和cpu_adaptive_1同時執行的時候,只有cpu_adaptive_1的策略起作用
	//所以在這裏強制,當cpu_adaptive_0和cpu_adaptive_1同時執行的時候,關閉cpu_adaptive_1,讓cpu_adaptive_0起作用
	
	//如果cpu_adaptive_0 = 1,則表示溫度已經升高到120度
	if(cl_dev_adp_cpu_state[0] == 1)
	{
		if(temp_cl_dev_adp_cpu_state == 0)
		{
			//保存目前cpu_adaptive_1的狀態,這個時候cpu_adaptive_1 = 1
			temp_cl_dev_adp_cpu_state = cl_dev_adp_cpu_state[1];
		}
		//強制將cpu_adaptive_1 = 0,則只使用cpu_adaptive_0
		cl_dev_adp_cpu_state[1] = 0;
	}
	//如果cpu_adaptive_0 = 0,則表示溫度已經低於到120度,或者還沒有升高到120度
	else
	{
		if(temp_cl_dev_adp_cpu_state == 1)
		{
			//如果之前cpu_adaptive_1 = 1,則將cpu_adaptive_1恢復
			cl_dev_adp_cpu_state[1] = temp_cl_dev_adp_cpu_state;
			temp_cl_dev_adp_cpu_state = 0;
		}
	}
	//add end
	//printk("cl_dev_adp_cpu_state[0]=%d, cl_dev_adp_cpu_state[1]=%d, cl_dev_adp_cpu_state[2]=%d \n",cl_dev_adp_cpu_state[0], cl_dev_adp_cpu_state[1], cl_dev_adp_cpu_state[2]);
	//printk("adaptive_cpu_power_limit = %d \n", adaptive_cpu_power_limit);

	/* TODO: no exit point can be obtained in mtk_ts_cpu.c */
	ttj = decide_ttj();

	......
	
	return 0;
}

以上修改,就可以實現:
溫度低於100度的時候,CPU正常工作;
溫度達到100度,執行cooler“cpu_adaptive_1”;
溫度達到120度,退出“cpu_adaptive_1”,執行“cpu_adaptive_0”;
溫度降低到120度以下,退出“cpu_adaptive_0”,執行“cpu_adaptive_1”;
溫度降低到100度以下,退出“cpu_adaptive_1”,CPU正常運行!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章