Lines Matching refs:power_zone
37 struct powercap_zone *power_zone = to_powercap_zone(dev); \
39 if (power_zone->ops->get_##_attr) { \
40 if (!power_zone->ops->get_##_attr(power_zone, &value)) \
54 struct powercap_zone *power_zone = to_powercap_zone(dev); \
62 if (power_zone->ops->reset_##_attr) { \
63 if (!power_zone->ops->reset_##_attr(power_zone)) \
78 struct powercap_zone *power_zone = to_powercap_zone(dev); \
84 if (id >= power_zone->const_id_cnt) \
86 pconst = &power_zone->constraints[id]; \
88 if (!pconst->ops->get_##_attr(power_zone, id, &value)) \
103 struct powercap_zone *power_zone = to_powercap_zone(dev); \
109 if (id >= power_zone->const_id_cnt) \
111 pconst = &power_zone->constraints[id]; \
116 if (!pconst->ops->set_##_attr(power_zone, id, value)) \
171 struct powercap_zone *power_zone = to_powercap_zone(dev); in show_constraint_name() local
178 if (id >= power_zone->const_id_cnt) in show_constraint_name()
180 pconst = &power_zone->constraints[id]; in show_constraint_name()
183 name = pconst->ops->get_name(power_zone, id); in show_constraint_name()
295 static int create_constraints(struct powercap_zone *power_zone, in create_constraints() argument
304 if (!power_zone || !const_ops || !const_ops->get_power_limit_uw || in create_constraints()
310 count = power_zone->zone_attr_count; in create_constraints()
312 pconst = &power_zone->constraints[i]; in create_constraints()
314 pconst->id = power_zone->const_id_cnt; in create_constraints()
315 power_zone->const_id_cnt++; in create_constraints()
316 power_zone->zone_dev_attrs[count++] = in create_constraints()
318 power_zone->zone_dev_attrs[count++] = in create_constraints()
321 power_zone->zone_dev_attrs[count++] = in create_constraints()
324 power_zone->zone_dev_attrs[count++] = in create_constraints()
327 power_zone->zone_dev_attrs[count++] = in create_constraints()
330 power_zone->zone_dev_attrs[count++] = in create_constraints()
333 power_zone->zone_dev_attrs[count++] = in create_constraints()
336 power_zone->zone_attr_count = count; in create_constraints()
363 struct powercap_zone *power_zone = to_powercap_zone(dev); in name_show() local
365 return sprintf(buf, "%s\n", power_zone->name); in name_show()
372 struct powercap_zone *power_zone) in create_power_zone_common_attributes() argument
376 power_zone->zone_dev_attrs[count++] = &dev_attr_name.attr; in create_power_zone_common_attributes()
377 if (power_zone->ops->get_max_energy_range_uj) in create_power_zone_common_attributes()
378 power_zone->zone_dev_attrs[count++] = in create_power_zone_common_attributes()
380 if (power_zone->ops->get_energy_uj) { in create_power_zone_common_attributes()
381 if (power_zone->ops->reset_energy_uj) in create_power_zone_common_attributes()
385 power_zone->zone_dev_attrs[count++] = in create_power_zone_common_attributes()
388 if (power_zone->ops->get_power_uw) in create_power_zone_common_attributes()
389 power_zone->zone_dev_attrs[count++] = in create_power_zone_common_attributes()
391 if (power_zone->ops->get_max_power_range_uw) in create_power_zone_common_attributes()
392 power_zone->zone_dev_attrs[count++] = in create_power_zone_common_attributes()
394 power_zone->zone_dev_attrs[count] = NULL; in create_power_zone_common_attributes()
395 power_zone->zone_attr_count = count; in create_power_zone_common_attributes()
403 struct powercap_zone *power_zone = to_powercap_zone(dev); in powercap_release() local
406 allocated = power_zone->allocated; in powercap_release()
408 idr_remove(power_zone->parent_idr, power_zone->id); in powercap_release()
410 idr_destroy(&power_zone->idr); in powercap_release()
411 kfree(power_zone->name); in powercap_release()
412 kfree(power_zone->zone_dev_attrs); in powercap_release()
413 kfree(power_zone->constraints); in powercap_release()
414 if (power_zone->ops->release) in powercap_release()
415 power_zone->ops->release(power_zone); in powercap_release()
417 kfree(power_zone); in powercap_release()
441 struct powercap_zone *power_zone = to_powercap_zone(dev); in enabled_show() local
442 if (power_zone->ops->get_enable) in enabled_show()
443 if (power_zone->ops->get_enable(power_zone, &mode)) in enabled_show()
465 struct powercap_zone *power_zone = to_powercap_zone(dev); in enabled_store() local
466 if (power_zone->ops->set_enable) in enabled_store()
467 if (!power_zone->ops->set_enable(power_zone, mode)) in enabled_store()
495 struct powercap_zone *power_zone, in powercap_register_zone() argument
512 if (power_zone) { in powercap_register_zone()
515 memset(power_zone, 0, sizeof(*power_zone)); in powercap_register_zone()
517 power_zone = kzalloc(sizeof(*power_zone), GFP_KERNEL); in powercap_register_zone()
518 if (!power_zone) in powercap_register_zone()
520 power_zone->allocated = true; in powercap_register_zone()
522 power_zone->ops = ops; in powercap_register_zone()
523 power_zone->control_type_inst = control_type; in powercap_register_zone()
525 power_zone->dev.parent = &control_type->dev; in powercap_register_zone()
526 power_zone->parent_idr = &control_type->idr; in powercap_register_zone()
528 power_zone->dev.parent = &parent->dev; in powercap_register_zone()
529 power_zone->parent_idr = &parent->idr; in powercap_register_zone()
531 power_zone->dev.class = &powercap_class; in powercap_register_zone()
535 result = idr_alloc(power_zone->parent_idr, NULL, 0, 0, GFP_KERNEL); in powercap_register_zone()
539 power_zone->id = result; in powercap_register_zone()
540 idr_init(&power_zone->idr); in powercap_register_zone()
541 power_zone->name = kstrdup(name, GFP_KERNEL); in powercap_register_zone()
542 if (!power_zone->name) in powercap_register_zone()
544 dev_set_name(&power_zone->dev, "%s:%x", in powercap_register_zone()
545 dev_name(power_zone->dev.parent), in powercap_register_zone()
546 power_zone->id); in powercap_register_zone()
547 power_zone->constraints = kzalloc(sizeof(*power_zone->constraints) * in powercap_register_zone()
549 if (!power_zone->constraints) in powercap_register_zone()
554 power_zone->zone_dev_attrs = kzalloc(sizeof(void *) * in powercap_register_zone()
556 if (!power_zone->zone_dev_attrs) in powercap_register_zone()
558 create_power_zone_common_attributes(power_zone); in powercap_register_zone()
559 result = create_constraints(power_zone, nr_constraints, const_ops); in powercap_register_zone()
563 power_zone->zone_dev_attrs[power_zone->zone_attr_count] = NULL; in powercap_register_zone()
564 power_zone->dev_zone_attr_group.attrs = power_zone->zone_dev_attrs; in powercap_register_zone()
565 power_zone->dev_attr_groups[0] = &power_zone->dev_zone_attr_group; in powercap_register_zone()
566 power_zone->dev_attr_groups[1] = NULL; in powercap_register_zone()
567 power_zone->dev.groups = power_zone->dev_attr_groups; in powercap_register_zone()
568 result = device_register(&power_zone->dev); in powercap_register_zone()
575 return power_zone; in powercap_register_zone()
578 kfree(power_zone->zone_dev_attrs); in powercap_register_zone()
580 kfree(power_zone->constraints); in powercap_register_zone()
582 kfree(power_zone->name); in powercap_register_zone()
584 idr_remove(power_zone->parent_idr, power_zone->id); in powercap_register_zone()
586 if (power_zone->allocated) in powercap_register_zone()
587 kfree(power_zone); in powercap_register_zone()
595 struct powercap_zone *power_zone) in powercap_unregister_zone() argument
597 if (!power_zone || !control_type) in powercap_unregister_zone()
604 device_unregister(&power_zone->dev); in powercap_unregister_zone()