static int __init omap_die_governor_init(void) { struct thermal_dev *thermal_fw; omap_gov = kzalloc(sizeof(struct omap_die_governor), GFP_KERNEL); if (!omap_gov) { pr_err("%s:Cannot allocate memory\n", __func__); return -ENOMEM; } thermal_fw = kzalloc(sizeof(struct thermal_dev), GFP_KERNEL); if (thermal_fw) { thermal_fw->name = "omap_ondie_governor"; thermal_fw->domain_name = "cpu"; thermal_fw->dev_ops = &omap_gov_ops; thermal_governor_dev_register(thermal_fw); therm_fw = thermal_fw; } else { pr_err("%s: Cannot allocate memory\n", __func__); kfree(omap_gov); return -ENOMEM; } pcb_sensor = NULL; /* Init delayed work to average on-die temperature */ INIT_DELAYED_WORK(&omap_gov->average_cpu_sensor_work, average_cpu_sensor_delayed_work_fn); omap_gov->average_period = NORMAL_TEMP_MONITORING_RATE; omap_gov->avg_is_valid = 0; schedule_delayed_work(&omap_gov->average_cpu_sensor_work, msecs_to_jiffies(0)); return 0; }
static int __init omap_die_governor_init(void) { struct thermal_dev *thermal_fw; omap_gov = kzalloc(sizeof(struct omap_die_governor), GFP_KERNEL); if (!omap_gov) { pr_err("%s:Cannot allocate memory\n", __func__); return -ENOMEM; } thermal_fw = kzalloc(sizeof(struct thermal_dev), GFP_KERNEL); if (thermal_fw) { thermal_fw->name = "omap_ondie_governor"; thermal_fw->domain_name = "cpu"; thermal_fw->dev_ops = &omap_gov_ops; thermal_governor_dev_register(thermal_fw); therm_fw = thermal_fw; } else { pr_err("%s: Cannot allocate memory\n", __func__); kfree(omap_gov); return -ENOMEM; } return 0; }
static int __init omap_die_governor_init(void) { struct thermal_dev *thermal_fw; omap_gov = kzalloc(sizeof(struct omap_die_governor), GFP_KERNEL); if (!omap_gov) { pr_err("%s:Cannot allocate memory\n", __func__); return -ENOMEM; } thermal_fw = kzalloc(sizeof(struct thermal_dev), GFP_KERNEL); if (thermal_fw) { thermal_fw->name = "omap_ondie_governor"; thermal_fw->domain_name = "cpu"; thermal_fw->dev_ops = &omap_gov_ops; thermal_governor_dev_register(thermal_fw); therm_fw = thermal_fw; } else { pr_err("%s: Cannot allocate memory\n", __func__); kfree(omap_gov); return -ENOMEM; } if (cpu_is_omap446x()) { omap_gov->gradient_slope = OMAP_GRADIENT_SLOPE_4460; omap_gov->gradient_const = OMAP_GRADIENT_CONST_4460; omap_gov->gradient_slope_w_pcb = OMAP_GRADIENT_SLOPE_W_PCB_4460; omap_gov->gradient_const_w_pcb = OMAP_GRADIENT_CONST_W_PCB_4460; } else if (cpu_is_omap447x()) { omap_gov->gradient_slope = OMAP_GRADIENT_SLOPE_4470; omap_gov->gradient_const = OMAP_GRADIENT_CONST_4470; omap_gov->gradient_slope_w_pcb = OMAP_GRADIENT_SLOPE_W_PCB_4470; omap_gov->gradient_const_w_pcb = OMAP_GRADIENT_CONST_W_PCB_4470; } else { omap_gov->gradient_slope = 0; omap_gov->gradient_const = 0; omap_gov->gradient_slope_w_pcb = 0; omap_gov->gradient_const_w_pcb = 0; } /* Init delayed work to average on-die temperature */ INIT_DELAYED_WORK(&omap_gov->average_cpu_sensor_work, average_cpu_sensor_delayed_work_fn); INIT_DELAYED_WORK(&omap_gov->decrease_mpu_freq_work, decrease_mpu_freq_fn); omap_gov->average_period = NORMAL_TEMP_MONITORING_RATE; omap_gov->decrease_mpu_freq_period = DECREASE_MPU_FREQ_PERIOD; omap_gov->avg_is_valid = 0; if (register_pm_notifier(&omap_die_pm_notifier)) pr_err("%s: omap_die pm registration failed!\n", __func__); schedule_delayed_work(&omap_gov->average_cpu_sensor_work, msecs_to_jiffies(0)); return 0; }