Lines Matching refs:tt_zone

54 DEFINE_GUARD(tt_zone, struct tt_thermal_zone *, mutex_lock(&_T->lock), mutex_unlock(&_T->lock))
81 struct tt_thermal_zone *tt_zone; member
112 struct tt_thermal_zone *tt_zone = data; in tt_zone_tz_temp_get() local
114 guard(tt_zone)(tt_zone); in tt_zone_tz_temp_get() local
116 if (!tt_zone->tz) in tt_zone_tz_temp_get()
119 *val = tt_zone->tz_temp; in tt_zone_tz_temp_get()
125 struct tt_thermal_zone *tt_zone = data; in tt_zone_tz_temp_set() local
127 guard(tt_zone)(tt_zone); in tt_zone_tz_temp_set() local
129 if (!tt_zone->tz) in tt_zone_tz_temp_set()
132 WRITE_ONCE(tt_zone->tz_temp, val); in tt_zone_tz_temp_set()
133 thermal_zone_device_update(tt_zone->tz, THERMAL_EVENT_TEMP_SAMPLE); in tt_zone_tz_temp_set()
140 static void tt_zone_free_trips(struct tt_thermal_zone *tt_zone) in tt_zone_free_trips() argument
144 list_for_each_entry_safe(tt_trip, aux, &tt_zone->trips, list_node) { in tt_zone_free_trips()
146 ida_free(&tt_zone->ida, tt_trip->id); in tt_zone_free_trips()
151 static void tt_zone_free(struct tt_thermal_zone *tt_zone) in tt_zone_free() argument
153 tt_zone_free_trips(tt_zone); in tt_zone_free()
154 ida_free(&tt_thermal_zones_ida, tt_zone->id); in tt_zone_free()
155 ida_destroy(&tt_zone->ida); in tt_zone_free()
156 kfree(tt_zone); in tt_zone_free()
162 struct tt_thermal_zone *tt_zone = tt_work->tt_zone; in tt_add_tz_work_fn() local
167 snprintf(f_name, TT_MAX_FILE_NAME_LENGTH, "tz%d", tt_zone->id); in tt_add_tz_work_fn()
168 tt_zone->d_tt_zone = debugfs_create_dir(f_name, d_testing); in tt_add_tz_work_fn()
169 if (IS_ERR(tt_zone->d_tt_zone)) { in tt_add_tz_work_fn()
170 tt_zone_free(tt_zone); in tt_add_tz_work_fn()
174 debugfs_create_file_unsafe("temp", 0600, tt_zone->d_tt_zone, tt_zone, in tt_add_tz_work_fn()
177 debugfs_create_file_unsafe("init_temp", 0600, tt_zone->d_tt_zone, in tt_add_tz_work_fn()
178 &tt_zone->temp, &tt_int_attr); in tt_add_tz_work_fn()
182 list_add_tail(&tt_zone->list_node, &tt_thermal_zones); in tt_add_tz_work_fn()
189 struct tt_thermal_zone *tt_zone __free(kfree) = kzalloc_obj(*tt_zone); in tt_add_tz()
190 if (!tt_zone) in tt_add_tz()
197 INIT_LIST_HEAD(&tt_zone->trips); in tt_add_tz()
198 mutex_init(&tt_zone->lock); in tt_add_tz()
199 ida_init(&tt_zone->ida); in tt_add_tz()
200 tt_zone->temp = THERMAL_TEMP_INVALID; in tt_add_tz()
206 tt_zone->id = ret; in tt_add_tz()
209 tt_work->tt_zone = no_free_ptr(tt_zone); in tt_add_tz()
218 struct tt_thermal_zone *tt_zone = tt_work->tt_zone; in tt_del_tz_work_fn() local
222 debugfs_remove(tt_zone->d_tt_zone); in tt_del_tz_work_fn()
223 tt_zone_free(tt_zone); in tt_del_tz_work_fn()
226 static void tt_zone_unregister_tz(struct tt_thermal_zone *tt_zone) in tt_zone_unregister_tz() argument
228 guard(tt_zone)(tt_zone); in tt_zone_unregister_tz() local
230 if (tt_zone->tz) { in tt_zone_unregister_tz()
231 thermal_zone_device_unregister(tt_zone->tz); in tt_zone_unregister_tz()
232 tt_zone->tz = NULL; in tt_zone_unregister_tz()
238 struct tt_thermal_zone *tt_zone, *aux; in tt_del_tz() local
253 list_for_each_entry_safe(tt_zone, aux, &tt_thermal_zones, list_node) { in tt_del_tz()
254 if (tt_zone->id == id) { in tt_del_tz()
255 if (tt_zone->refcount) { in tt_del_tz()
258 list_del(&tt_zone->list_node); in tt_del_tz()
268 tt_zone_unregister_tz(tt_zone); in tt_del_tz()
271 tt_work->tt_zone = tt_zone; in tt_del_tz()
279 struct tt_thermal_zone *tt_zone; in tt_get_tt_zone() local
288 list_for_each_entry(tt_zone, &tt_thermal_zones, list_node) { in tt_get_tt_zone()
289 if (tt_zone->id == id) { in tt_get_tt_zone()
290 tt_zone->refcount++; in tt_get_tt_zone()
291 return tt_zone; in tt_get_tt_zone()
298 static void tt_put_tt_zone(struct tt_thermal_zone *tt_zone) in tt_put_tt_zone() argument
302 tt_zone->refcount--; in tt_put_tt_zone()
311 struct tt_thermal_zone *tt_zone = tt_work->tt_zone; in tt_zone_add_trip_work_fn() local
318 debugfs_create_file_unsafe(d_name, 0600, tt_zone->d_tt_zone, in tt_zone_add_trip_work_fn()
322 debugfs_create_file_unsafe(d_name, 0600, tt_zone->d_tt_zone, in tt_zone_add_trip_work_fn()
325 tt_put_tt_zone(tt_zone); in tt_zone_add_trip_work_fn()
340 struct tt_thermal_zone *tt_zone __free(put_tt_zone) = tt_get_tt_zone(arg); in tt_zone_add_trip()
341 if (IS_ERR(tt_zone)) in tt_zone_add_trip()
342 return PTR_ERR(tt_zone); in tt_zone_add_trip()
344 id = ida_alloc(&tt_zone->ida, GFP_KERNEL); in tt_zone_add_trip()
353 guard(tt_zone)(tt_zone); in tt_zone_add_trip() local
355 list_add_tail(&tt_trip->list_node, &tt_zone->trips); in tt_zone_add_trip()
356 tt_zone->num_trips++; in tt_zone_add_trip()
359 tt_work->tt_zone = no_free_ptr(tt_zone); in tt_zone_add_trip()
368 struct tt_thermal_zone *tt_zone = thermal_zone_device_priv(tz); in tt_zone_get_temp() local
370 *temp = READ_ONCE(tt_zone->tz_temp); in tt_zone_get_temp()
382 static int tt_zone_register_tz(struct tt_thermal_zone *tt_zone) in tt_zone_register_tz() argument
388 guard(tt_zone)(tt_zone); in tt_zone_register_tz() local
390 if (tt_zone->tz) in tt_zone_register_tz()
394 tt_zone->num_trips); in tt_zone_register_tz()
399 list_for_each_entry(tt_trip, &tt_zone->trips, list_node) in tt_zone_register_tz()
402 tt_zone->tz_temp = tt_zone->temp; in tt_zone_register_tz()
404 tz = thermal_zone_device_register_with_trips("test_tz", trips, i, tt_zone, in tt_zone_register_tz()
409 tt_zone->tz = tz; in tt_zone_register_tz()
418 struct tt_thermal_zone *tt_zone __free(put_tt_zone) = tt_get_tt_zone(arg); in tt_zone_reg()
419 if (IS_ERR(tt_zone)) in tt_zone_reg()
420 return PTR_ERR(tt_zone); in tt_zone_reg()
422 return tt_zone_register_tz(tt_zone); in tt_zone_reg()
427 struct tt_thermal_zone *tt_zone __free(put_tt_zone) = tt_get_tt_zone(arg); in tt_zone_unreg()
428 if (IS_ERR(tt_zone)) in tt_zone_unreg()
429 return PTR_ERR(tt_zone); in tt_zone_unreg()
431 tt_zone_unregister_tz(tt_zone); in tt_zone_unreg()
438 struct tt_thermal_zone *tt_zone, *aux; in tt_zone_cleanup() local
440 list_for_each_entry_safe(tt_zone, aux, &tt_thermal_zones, list_node) { in tt_zone_cleanup()
441 tt_zone_unregister_tz(tt_zone); in tt_zone_cleanup()
443 list_del(&tt_zone->list_node); in tt_zone_cleanup()
445 tt_zone_free(tt_zone); in tt_zone_cleanup()