Lines Matching refs:data

35 static inline void schedule_monitor(struct abx500_temp *data)  in schedule_monitor()  argument
37 data->work_active = true; in schedule_monitor()
38 schedule_delayed_work(&data->work, DEFAULT_MONITOR_DELAY); in schedule_monitor()
41 static void threshold_updated(struct abx500_temp *data) in threshold_updated() argument
44 for (i = 0; i < data->monitored_sensors; i++) in threshold_updated()
45 if (data->max[i] != 0 || data->min[i] != 0) { in threshold_updated()
46 schedule_monitor(data); in threshold_updated()
50 dev_dbg(&data->pdev->dev, "No active thresholds.\n"); in threshold_updated()
51 cancel_delayed_work_sync(&data->work); in threshold_updated()
52 data->work_active = false; in threshold_updated()
60 struct abx500_temp *data; in gpadc_monitor() local
62 data = container_of(work, struct abx500_temp, work.work); in gpadc_monitor()
63 mutex_lock(&data->lock); in gpadc_monitor()
65 for (i = 0; i < data->monitored_sensors; i++) { in gpadc_monitor()
67 if (data->max[i] == 0 && data->min[i] == 0) in gpadc_monitor()
70 if (data->max[i] < data->min[i]) in gpadc_monitor()
73 ret = data->ops.read_sensor(data, data->gpadc_addr[i], &temp); in gpadc_monitor()
75 dev_err(&data->pdev->dev, "GPADC read failed\n"); in gpadc_monitor()
82 if (data->min[i] != 0) { in gpadc_monitor()
83 if (temp < data->min[i]) { in gpadc_monitor()
84 if (data->min_alarm[i] == false) { in gpadc_monitor()
85 data->min_alarm[i] = true; in gpadc_monitor()
89 if (data->min_alarm[i] == true) { in gpadc_monitor()
90 data->min_alarm[i] = false; in gpadc_monitor()
95 if (data->max[i] != 0) { in gpadc_monitor()
96 if (temp > data->max[i]) { in gpadc_monitor()
97 if (data->max_alarm[i] == false) { in gpadc_monitor()
98 data->max_alarm[i] = true; in gpadc_monitor()
101 } else if (temp < data->max[i] - data->max_hyst[i]) { in gpadc_monitor()
102 if (data->max_alarm[i] == true) { in gpadc_monitor()
103 data->max_alarm[i] = false; in gpadc_monitor()
111 sysfs_notify(&data->pdev->dev.kobj, NULL, alarm_node); in gpadc_monitor()
115 sysfs_notify(&data->pdev->dev.kobj, NULL, alarm_node); in gpadc_monitor()
119 schedule_monitor(data); in gpadc_monitor()
120 mutex_unlock(&data->lock); in gpadc_monitor()
127 struct abx500_temp *data = dev_get_drvdata(dev); in show_name() local
129 return data->ops.show_name(dev, devattr, buf); in show_name()
135 struct abx500_temp *data = dev_get_drvdata(dev); in show_label() local
137 return data->ops.show_label(dev, devattr, buf); in show_label()
144 struct abx500_temp *data = dev_get_drvdata(dev); in show_input() local
146 u8 gpadc_addr = data->gpadc_addr[attr->index]; in show_input()
148 ret = data->ops.read_sensor(data, gpadc_addr, &temp); in show_input()
160 struct abx500_temp *data = dev_get_drvdata(dev); in set_min() local
168 mutex_lock(&data->lock); in set_min()
169 data->min[attr->index] = val; in set_min()
170 threshold_updated(data); in set_min()
171 mutex_unlock(&data->lock); in set_min()
180 struct abx500_temp *data = dev_get_drvdata(dev); in set_max() local
188 mutex_lock(&data->lock); in set_max()
189 data->max[attr->index] = val; in set_max()
190 threshold_updated(data); in set_max()
191 mutex_unlock(&data->lock); in set_max()
201 struct abx500_temp *data = dev_get_drvdata(dev); in set_max_hyst() local
209 mutex_lock(&data->lock); in set_max_hyst()
210 data->max_hyst[attr->index] = val; in set_max_hyst()
211 threshold_updated(data); in set_max_hyst()
212 mutex_unlock(&data->lock); in set_max_hyst()
221 struct abx500_temp *data = dev_get_drvdata(dev); in show_min() local
224 return sprintf(buf, "%lu\n", data->min[attr->index]); in show_min()
230 struct abx500_temp *data = dev_get_drvdata(dev); in show_max() local
233 return sprintf(buf, "%lu\n", data->max[attr->index]); in show_max()
239 struct abx500_temp *data = dev_get_drvdata(dev); in show_max_hyst() local
242 return sprintf(buf, "%lu\n", data->max_hyst[attr->index]); in show_max_hyst()
248 struct abx500_temp *data = dev_get_drvdata(dev); in show_min_alarm() local
251 return sprintf(buf, "%d\n", data->min_alarm[attr->index]); in show_min_alarm()
257 struct abx500_temp *data = dev_get_drvdata(dev); in show_max_alarm() local
260 return sprintf(buf, "%d\n", data->max_alarm[attr->index]); in show_max_alarm()
267 struct abx500_temp *data = dev_get_drvdata(dev); in abx500_attrs_visible() local
269 if (data->ops.is_visible) in abx500_attrs_visible()
270 return data->ops.is_visible(attr, n); in abx500_attrs_visible()
363 struct abx500_temp *data = platform_get_drvdata(pdev); in abx500_temp_irq_handler() local
365 data->ops.irq_handler(irq, data); in abx500_temp_irq_handler()
389 struct abx500_temp *data; in abx500_temp_probe() local
392 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); in abx500_temp_probe()
393 if (!data) in abx500_temp_probe()
396 data->pdev = pdev; in abx500_temp_probe()
397 mutex_init(&data->lock); in abx500_temp_probe()
400 err = abx500_hwmon_init(data); in abx500_temp_probe()
401 if (err < 0 || !data->ops.read_sensor || !data->ops.show_name || in abx500_temp_probe()
402 !data->ops.show_label) in abx500_temp_probe()
405 INIT_DEFERRABLE_WORK(&data->work, gpadc_monitor); in abx500_temp_probe()
407 platform_set_drvdata(pdev, data); in abx500_temp_probe()
415 data->hwmon_dev = hwmon_device_register(&pdev->dev); in abx500_temp_probe()
416 if (IS_ERR(data->hwmon_dev)) { in abx500_temp_probe()
417 err = PTR_ERR(data->hwmon_dev); in abx500_temp_probe()
422 if (data->ops.irq_handler) { in abx500_temp_probe()
430 hwmon_device_unregister(data->hwmon_dev); in abx500_temp_probe()
438 struct abx500_temp *data = platform_get_drvdata(pdev); in abx500_temp_remove() local
440 cancel_delayed_work_sync(&data->work); in abx500_temp_remove()
441 hwmon_device_unregister(data->hwmon_dev); in abx500_temp_remove()
450 struct abx500_temp *data = platform_get_drvdata(pdev); in abx500_temp_suspend() local
452 if (data->work_active) in abx500_temp_suspend()
453 cancel_delayed_work_sync(&data->work); in abx500_temp_suspend()
460 struct abx500_temp *data = platform_get_drvdata(pdev); in abx500_temp_resume() local
462 if (data->work_active) in abx500_temp_resume()
463 schedule_monitor(data); in abx500_temp_resume()