Linux Thermal3

6343 ワード

始める前に~
もしあなたが好きなら、歴史を話して、哲学を考えて、詩集を作って、国学を鑑賞します.
では、公衆番号に注目します.2校の5番目のおじさんです.
これはブロガーの文学の公衆番号です.
この主なthermal probeを追跡する過程はまずprobe関数である:msm_thermal_dev_probe(struct platform_device*pdev)関数
static int msm_thermal_dev_probe(struct platform_device *pdev)
{
	struct device_node *node = pdev->dev.of_node;  //          
	struct msm_thermal_data data;  //    driver    
	
	memset(&data, 0, sizeof(struct msm_thermal_data));
	data.pdev = pdev; //         thermal data   

	ret = msm_thermal_pre_init(&pdev->dev); //thermal     ,     tsens_device_list   ,     
	
	//        polled tsens id,      cpu0   tsens
	key = "qcom,sensor-id";ret = of_property_read_u32(node, key, &data.sensor_id);
	//  sensor     ,   ms
	key = "qcom,poll-ms";ret = of_property_read_u32(node, key, &data.poll_ms);
	//    threshold,         cpu  ,      
	key = "qcom,limit-temp";ret = of_property_read_u32(node, key, &data.limit_temp_degC);
	//      , CPU    
	key = "qcom,temp-hysteresis";ret = of_property_read_u32(node, key, &data.temp_hysteresis_degC);
	//  cpu     
	key = "qcom,freq-step";ret = of_property_read_u32(node, key, &data.bootup_freq_step);
	//   online core    hotplug cpu
	key = "qcom,online-hotplug-core";
	if (of_property_read_bool(node, key))
		online_core = true;
	else
		online_core = false;

	probe_sensor_info(node, &data, pdev);//    sensor   ,         struct msm_sensor_info *sensors
	ret = probe_cc(node, &data, pdev);//     threshold   
	ret = probe_freq_mitigation(node, &data, pdev);//          ,        
	ret = probe_cx_phase_ctrl(node, &data, pdev);//   cx_phase control  
	ret = probe_gfx_phase_ctrl(node, &data, pdev);//     gfx_phase control  
	ret = probe_therm_reset(node, &data, pdev);//   reset  
	ret = probe_vdd_mx(node, &data, pdev);//VDD MX restriction   
	//        qcom  
	ret = probe_psm(node, &data, pdev); //  pmic
	update_cpu_topology(&pdev->dev); //         
	ret = probe_vdd_rstr(node, &data, pdev);//VDD restriction   
	ret = probe_ocr(node, &data, pdev); //optimum current request   
	ret = fetch_cpu_mitigaiton_info(&data, pdev);//       enable
	//      node
	msm_thermal_add_psm_nodes();
	msm_thermal_add_vdd_rstr_nodes();
	msm_thermal_add_sensor_info_nodes();
	msm_thermal_add_ocr_nodes();
	create_cpu_topology_sysfs();
	
	msm_thermal_ioctl_init();//        ,  
	ret = msm_thermal_init(&data); //     dts        ,         thermel,  
}
//        
int msm_thermal_ioctl_init()
{
	ret = alloc_chrdev_region(&thermal_dev, 0, 1,MSM_THERMAL_IOCTL_NAME);//             
	msm_thermal_major = MAJOR(thermal_dev);//      

	thermal_class = class_create(THIS_MODULE, "msm_thermal");//           ,      sysfs  ,         ,   device_create()    /dev            
	therm_device = device_create(thermal_class, NULL, thermal_dev, NULL,MSM_THERMAL_IOCTL_NAME);//cat proc/devices    
	msm_thermal_dev = kmalloc(sizeof(struct msm_thermal_ioctl_dev),GFP_KERNEL);//            
	memset(msm_thermal_dev, 0, sizeof(struct msm_thermal_ioctl_dev));//  
	sema_init(&msm_thermal_dev->sem, 1); //      
	cdev_init(&msm_thermal_dev->char_dev, &msm_thermal_fops);  //     cdev   ,  cdev ops     
	ret = cdev_add(&msm_thermal_dev->char_dev, thermal_dev, 1); //         
}
               :
compatible: "qcom,sensor-information"
   :qcom,sensor-information-
        :
qcom,sensor-type:sensor   ,  sensor      :tsens,alarm, adc
		tsens:  msm     
		alarm:  pmic     
qcom,sensor-name:sensor   
qcom,alias-name:        , gpu/pop-men,             sensor     。 cpu       ,       ,thermel     sensor   profile        cpu   
qcom,scaling-factor:                          。         ,           1         。

 probe_cc            :
  num_possible_cpus(), num_present_cpus     1  , core_control_enabled = 1;hotplug_enabled = 1;
qcom,core-limit-temp:  threshold       cpu core,     
qcom,core-temp-hysteresis:cpu core      ,        ,       
qcom,hotplug-temp:  threshold       cpu core,     。           ,  cpu core   polling        。core-limit-temp   early boot  ,   thermal_sys    hotplug  
qcom,hotplug-temp-hysteresis:           ,thermal     cpu core    。    cpu core   online      。
    mit_config(cooling       )          ,cpu       hotplug,  disable   thermal_cpu_hotplug_mit_disable。
 probe_freq_mitigation         ,        :
qcom,freq-mitigation-temp:    ,  threshold      cpu     。polling        disabled        。 limit-temp    ,limit-temp   early boot  ,  thermal_sys       。      ,  emergency                          ,   boot-up            。
qcom,freq-mitigation-temp-hysteresis:     ,      thermal    cpu    
qcom,freq-mitigation-value: freq-mitigation-temp     ,cpu core           ,   hz
 freq_mitigation_enabled 1,
    mit_config       cpufreq,  cpu  disabled   thermal_cpu_freq_mit_disable
probe_cx_phase_ctrl
qcom,disable-cx-phase-ctrl:         ,   cx phase control       ,          
qcom,rpm-phase-resource-type:RPM      ,  	  temperature bands CX and GFX phase selection.        CX and GFX          。
qcom,rpm-phase-resource-id:RPM    id ,  
qcom,cx-phase-resource-key:key name    CX      RPM  
qcom,cx-phase-hot-crit-temp:      threshold ,  HOT_CRITICAL RPM,     RPM  CX rail phases      。
qcom,cx-phase-hot-crit-temp-hyst:       ,   WARM RPM,  
  sensor_mgr_init_threshold  ,         threshold ?     cx_phase_ctrl_notify         
    mit_config      cx_phase,     disable  thermal_cx_phase_ctrl_mit_disable
    probe_gfx_phase_ctrl  
    probe_therm_reset  ,       :
qcom,therm-reset-temp:      ,ktm           ,         ktm   boot       tsens,               ,   tsens       threshold,  reset。          dump  。     therm_reset_notify,         msm_thermal_bite,        

qcom,boot-frequency-mitigate: Enable thermal frequency mitigation during boot.
qcom,emergency-frequency-mitigate: Enable emergency frequency mitigation.
qcom,hotplug-mitigation-enable: Enable hotplug mitigation. This enables hotplug mitigation both during boot and emergency condition.

今は考えを変えて文学のものを見てみよう.
もしあなたが好きなら、歴史を話して、哲学を考えて、詩集を作って、国学を鑑賞します.
では、公衆番号に注目します.2校の5番目のおじさんです.
これはブロガーの文学公众号です^ _ ^