Lines Matching refs:data
108 static void imx_set_panic_temp(struct imx_thermal_data *data, in imx_set_panic_temp() argument
111 struct regmap *map = data->tempmon; in imx_set_panic_temp()
114 critical_value = (data->c2 - panic_temp) / data->c1; in imx_set_panic_temp()
120 static void imx_set_alarm_temp(struct imx_thermal_data *data, in imx_set_alarm_temp() argument
123 struct regmap *map = data->tempmon; in imx_set_alarm_temp()
126 data->alarm_temp = alarm_temp; in imx_set_alarm_temp()
127 alarm_value = (data->c2 - alarm_temp) / data->c1; in imx_set_alarm_temp()
135 struct imx_thermal_data *data = tz->devdata; in imx_get_temp() local
136 struct regmap *map = data->tempmon; in imx_get_temp()
141 if (data->mode == THERMAL_DEVICE_ENABLED) { in imx_get_temp()
166 if (data->mode != THERMAL_DEVICE_ENABLED) { in imx_get_temp()
179 *temp = data->c2 - n_meas * data->c1; in imx_get_temp()
182 if (data->socdata->version == TEMPMON_IMX6Q) { in imx_get_temp()
183 if (data->alarm_temp == data->temp_passive && in imx_get_temp()
184 *temp >= data->temp_passive) in imx_get_temp()
185 imx_set_alarm_temp(data, data->temp_critical); in imx_get_temp()
186 if (data->alarm_temp == data->temp_critical && in imx_get_temp()
187 *temp < data->temp_passive) { in imx_get_temp()
188 imx_set_alarm_temp(data, data->temp_passive); in imx_get_temp()
190 data->alarm_temp / 1000); in imx_get_temp()
194 if (*temp != data->last_temp) { in imx_get_temp()
196 data->last_temp = *temp; in imx_get_temp()
200 if (!data->irq_enabled && *temp < data->alarm_temp) { in imx_get_temp()
201 data->irq_enabled = true; in imx_get_temp()
202 enable_irq(data->irq); in imx_get_temp()
211 struct imx_thermal_data *data = tz->devdata; in imx_get_mode() local
213 *mode = data->mode; in imx_get_mode()
221 struct imx_thermal_data *data = tz->devdata; in imx_set_mode() local
222 struct regmap *map = data->tempmon; in imx_set_mode()
231 if (!data->irq_enabled) { in imx_set_mode()
232 data->irq_enabled = true; in imx_set_mode()
233 enable_irq(data->irq); in imx_set_mode()
242 if (data->irq_enabled) { in imx_set_mode()
243 disable_irq(data->irq); in imx_set_mode()
244 data->irq_enabled = false; in imx_set_mode()
248 data->mode = mode; in imx_set_mode()
264 struct imx_thermal_data *data = tz->devdata; in imx_get_crit_temp() local
266 *temp = data->temp_critical; in imx_get_crit_temp()
273 struct imx_thermal_data *data = tz->devdata; in imx_get_trip_temp() local
275 *temp = (trip == IMX_TRIP_PASSIVE) ? data->temp_passive : in imx_get_trip_temp()
276 data->temp_critical; in imx_get_trip_temp()
283 struct imx_thermal_data *data = tz->devdata; in imx_set_trip_temp() local
290 if (temp < 0 || temp > data->temp_critical) in imx_set_trip_temp()
293 data->temp_passive = temp; in imx_set_trip_temp()
295 imx_set_alarm_temp(data, temp); in imx_set_trip_temp()
349 struct imx_thermal_data *data = platform_get_drvdata(pdev); in imx_get_sensor_data() local
403 data->c1 = temp64; in imx_get_sensor_data()
404 data->c2 = n1 * data->c1 + 1000 * t1; in imx_get_sensor_data()
416 data->temp_grade = "Commercial"; in imx_get_sensor_data()
417 data->temp_max = 95000; in imx_get_sensor_data()
420 data->temp_grade = "Extended Commercial"; in imx_get_sensor_data()
421 data->temp_max = 105000; in imx_get_sensor_data()
424 data->temp_grade = "Industrial"; in imx_get_sensor_data()
425 data->temp_max = 105000; in imx_get_sensor_data()
428 data->temp_grade = "Automotive"; in imx_get_sensor_data()
429 data->temp_max = 125000; in imx_get_sensor_data()
437 data->temp_critical = data->temp_max - (1000 * 5); in imx_get_sensor_data()
438 data->temp_passive = data->temp_max - (1000 * 10); in imx_get_sensor_data()
445 struct imx_thermal_data *data = dev; in imx_thermal_alarm_irq() local
448 data->irq_enabled = false; in imx_thermal_alarm_irq()
455 struct imx_thermal_data *data = dev; in imx_thermal_alarm_irq_thread() local
457 dev_dbg(&data->tz->device, "THERMAL ALARM: T > %d\n", in imx_thermal_alarm_irq_thread()
458 data->alarm_temp / 1000); in imx_thermal_alarm_irq_thread()
460 thermal_zone_device_update(data->tz); in imx_thermal_alarm_irq_thread()
466 { .compatible = "fsl,imx6q-tempmon", .data = &thermal_imx6q_data, },
467 { .compatible = "fsl,imx6sx-tempmon", .data = &thermal_imx6sx_data, },
476 struct imx_thermal_data *data; in imx_thermal_probe() local
481 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); in imx_thermal_probe()
482 if (!data) in imx_thermal_probe()
491 data->tempmon = map; in imx_thermal_probe()
493 data->socdata = of_id->data; in imx_thermal_probe()
496 if (data->socdata->version == TEMPMON_IMX6SX) { in imx_thermal_probe()
507 data->irq = platform_get_irq(pdev, 0); in imx_thermal_probe()
508 if (data->irq < 0) in imx_thermal_probe()
509 return data->irq; in imx_thermal_probe()
511 platform_set_drvdata(pdev, data); in imx_thermal_probe()
526 data->cdev = cpufreq_cooling_register(cpu_present_mask); in imx_thermal_probe()
527 if (IS_ERR(data->cdev)) { in imx_thermal_probe()
528 ret = PTR_ERR(data->cdev); in imx_thermal_probe()
536 data->thermal_clk = devm_clk_get(&pdev->dev, NULL); in imx_thermal_probe()
537 if (IS_ERR(data->thermal_clk)) { in imx_thermal_probe()
538 ret = PTR_ERR(data->thermal_clk); in imx_thermal_probe()
542 cpufreq_cooling_unregister(data->cdev); in imx_thermal_probe()
553 ret = clk_prepare_enable(data->thermal_clk); in imx_thermal_probe()
556 cpufreq_cooling_unregister(data->cdev); in imx_thermal_probe()
560 data->tz = thermal_zone_device_register("imx_thermal_zone", in imx_thermal_probe()
562 BIT(IMX_TRIP_PASSIVE), data, in imx_thermal_probe()
566 if (IS_ERR(data->tz)) { in imx_thermal_probe()
567 ret = PTR_ERR(data->tz); in imx_thermal_probe()
570 clk_disable_unprepare(data->thermal_clk); in imx_thermal_probe()
571 cpufreq_cooling_unregister(data->cdev); in imx_thermal_probe()
576 " critical:%dC passive:%dC\n", data->temp_grade, in imx_thermal_probe()
577 data->temp_max / 1000, data->temp_critical / 1000, in imx_thermal_probe()
578 data->temp_passive / 1000); in imx_thermal_probe()
584 imx_set_alarm_temp(data, data->temp_passive); in imx_thermal_probe()
586 if (data->socdata->version == TEMPMON_IMX6SX) in imx_thermal_probe()
587 imx_set_panic_temp(data, data->temp_critical); in imx_thermal_probe()
592 ret = devm_request_threaded_irq(&pdev->dev, data->irq, in imx_thermal_probe()
594 0, "imx_thermal", data); in imx_thermal_probe()
597 clk_disable_unprepare(data->thermal_clk); in imx_thermal_probe()
598 thermal_zone_device_unregister(data->tz); in imx_thermal_probe()
599 cpufreq_cooling_unregister(data->cdev); in imx_thermal_probe()
603 data->irq_enabled = true; in imx_thermal_probe()
604 data->mode = THERMAL_DEVICE_ENABLED; in imx_thermal_probe()
611 struct imx_thermal_data *data = platform_get_drvdata(pdev); in imx_thermal_remove() local
612 struct regmap *map = data->tempmon; in imx_thermal_remove()
616 if (!IS_ERR(data->thermal_clk)) in imx_thermal_remove()
617 clk_disable_unprepare(data->thermal_clk); in imx_thermal_remove()
619 thermal_zone_device_unregister(data->tz); in imx_thermal_remove()
620 cpufreq_cooling_unregister(data->cdev); in imx_thermal_remove()
628 struct imx_thermal_data *data = dev_get_drvdata(dev); in imx_thermal_suspend() local
629 struct regmap *map = data->tempmon; in imx_thermal_suspend()
639 data->mode = THERMAL_DEVICE_DISABLED; in imx_thermal_suspend()
640 clk_disable_unprepare(data->thermal_clk); in imx_thermal_suspend()
647 struct imx_thermal_data *data = dev_get_drvdata(dev); in imx_thermal_resume() local
648 struct regmap *map = data->tempmon; in imx_thermal_resume()
650 clk_prepare_enable(data->thermal_clk); in imx_thermal_resume()
654 data->mode = THERMAL_DEVICE_ENABLED; in imx_thermal_resume()