Lines Matching refs:resource
72 struct acpi_power_resource *resource; member
101 struct acpi_power_resource *resource = acpi_power_get_context(handle); in acpi_power_resources_list_add() local
104 if (!resource || !list) in acpi_power_resources_list_add()
111 entry->resource = resource; in acpi_power_resources_list_add()
116 if (e->resource->order > resource->order) { in acpi_power_resources_list_add()
205 struct acpi_power_resource *resource = entry->resource; in acpi_power_get_list_state() local
206 acpi_handle handle = resource->device.handle; in acpi_power_get_list_state()
209 mutex_lock(&resource->resource_lock); in acpi_power_get_list_state()
211 mutex_unlock(&resource->resource_lock); in acpi_power_get_list_state()
226 static int __acpi_power_on(struct acpi_power_resource *resource) in __acpi_power_on() argument
230 status = acpi_evaluate_object(resource->device.handle, "_ON", NULL, NULL); in __acpi_power_on()
235 resource->name)); in __acpi_power_on()
240 static int acpi_power_on_unlocked(struct acpi_power_resource *resource) in acpi_power_on_unlocked() argument
244 if (resource->ref_count++) { in acpi_power_on_unlocked()
247 resource->name)); in acpi_power_on_unlocked()
249 result = __acpi_power_on(resource); in acpi_power_on_unlocked()
251 resource->ref_count--; in acpi_power_on_unlocked()
256 static int acpi_power_on(struct acpi_power_resource *resource) in acpi_power_on() argument
260 mutex_lock(&resource->resource_lock); in acpi_power_on()
261 result = acpi_power_on_unlocked(resource); in acpi_power_on()
262 mutex_unlock(&resource->resource_lock); in acpi_power_on()
266 static int __acpi_power_off(struct acpi_power_resource *resource) in __acpi_power_off() argument
270 status = acpi_evaluate_object(resource->device.handle, "_OFF", in __acpi_power_off()
276 resource->name)); in __acpi_power_off()
280 static int acpi_power_off_unlocked(struct acpi_power_resource *resource) in acpi_power_off_unlocked() argument
284 if (!resource->ref_count) { in acpi_power_off_unlocked()
287 resource->name)); in acpi_power_off_unlocked()
291 if (--resource->ref_count) { in acpi_power_off_unlocked()
294 resource->name)); in acpi_power_off_unlocked()
296 result = __acpi_power_off(resource); in acpi_power_off_unlocked()
298 resource->ref_count++; in acpi_power_off_unlocked()
303 static int acpi_power_off(struct acpi_power_resource *resource) in acpi_power_off() argument
307 mutex_lock(&resource->resource_lock); in acpi_power_off()
308 result = acpi_power_off_unlocked(resource); in acpi_power_off()
309 mutex_unlock(&resource->resource_lock); in acpi_power_off()
319 result = acpi_power_off(entry->resource); in acpi_power_off_list()
327 acpi_power_on(entry->resource); in acpi_power_off_list()
338 result = acpi_power_on(entry->resource); in acpi_power_on_list()
346 acpi_power_off(entry->resource); in acpi_power_on_list()
389 struct acpi_device *res_dev = &entry->resource->device; in acpi_power_hide_list()
413 struct acpi_device *res_dev = &entry->resource->device; in acpi_power_expose_list()
460 struct acpi_power_resource *resource = entry->resource; in acpi_power_wakeup_list_init() local
461 acpi_handle handle = resource->device.handle; in acpi_power_wakeup_list_init()
465 mutex_lock(&resource->resource_lock); in acpi_power_wakeup_list_init()
469 mutex_unlock(&resource->resource_lock); in acpi_power_wakeup_list_init()
473 resource->ref_count++; in acpi_power_wakeup_list_init()
474 resource->wakeup_enabled = true; in acpi_power_wakeup_list_init()
476 if (system_level > resource->system_level) in acpi_power_wakeup_list_init()
477 system_level = resource->system_level; in acpi_power_wakeup_list_init()
479 mutex_unlock(&resource->resource_lock); in acpi_power_wakeup_list_init()
570 struct acpi_power_resource *resource = entry->resource; in acpi_enable_wakeup_device_power() local
572 mutex_lock(&resource->resource_lock); in acpi_enable_wakeup_device_power()
574 if (!resource->wakeup_enabled) { in acpi_enable_wakeup_device_power()
575 err = acpi_power_on_unlocked(resource); in acpi_enable_wakeup_device_power()
577 resource->wakeup_enabled = true; in acpi_enable_wakeup_device_power()
580 mutex_unlock(&resource->resource_lock); in acpi_enable_wakeup_device_power()
633 struct acpi_power_resource *resource = entry->resource; in acpi_disable_wakeup_device_power() local
635 mutex_lock(&resource->resource_lock); in acpi_disable_wakeup_device_power()
637 if (resource->wakeup_enabled) { in acpi_disable_wakeup_device_power()
638 err = acpi_power_off_unlocked(resource); in acpi_disable_wakeup_device_power()
640 resource->wakeup_enabled = false; in acpi_disable_wakeup_device_power()
643 mutex_unlock(&resource->resource_lock); in acpi_disable_wakeup_device_power()
737 struct acpi_power_resource *resource; in acpi_release_power_resource() local
739 resource = container_of(device, struct acpi_power_resource, device); in acpi_release_power_resource()
742 list_del(&resource->list_node); in acpi_release_power_resource()
746 kfree(resource); in acpi_release_power_resource()
752 struct acpi_power_resource *resource; in acpi_power_in_use_show() local
754 resource = to_power_resource(to_acpi_device(dev)); in acpi_power_in_use_show()
755 return sprintf(buf, "%u\n", !!resource->ref_count); in acpi_power_in_use_show()
766 struct acpi_power_resource *resource; in acpi_add_power_resource() local
777 resource = kzalloc(sizeof(*resource), GFP_KERNEL); in acpi_add_power_resource()
778 if (!resource) in acpi_add_power_resource()
781 device = &resource->device; in acpi_add_power_resource()
784 mutex_init(&resource->resource_lock); in acpi_add_power_resource()
785 INIT_LIST_HEAD(&resource->list_node); in acpi_add_power_resource()
786 resource->name = device->pnp.bus_id; in acpi_add_power_resource()
796 resource->system_level = acpi_object.power_resource.system_level; in acpi_add_power_resource()
797 resource->order = acpi_object.power_resource.resource_order; in acpi_add_power_resource()
815 list_add(&resource->list_node, &acpi_power_resource_list); in acpi_add_power_resource()
828 struct acpi_power_resource *resource; in acpi_resume_power_resources() local
832 list_for_each_entry(resource, &acpi_power_resource_list, list_node) { in acpi_resume_power_resources()
835 mutex_lock(&resource->resource_lock); in acpi_resume_power_resources()
837 result = acpi_power_get_state(resource->device.handle, &state); in acpi_resume_power_resources()
839 mutex_unlock(&resource->resource_lock); in acpi_resume_power_resources()
844 && resource->ref_count) { in acpi_resume_power_resources()
845 dev_info(&resource->device.dev, "Turning ON\n"); in acpi_resume_power_resources()
846 __acpi_power_on(resource); in acpi_resume_power_resources()
848 && !resource->ref_count) { in acpi_resume_power_resources()
849 dev_info(&resource->device.dev, "Turning OFF\n"); in acpi_resume_power_resources()
850 __acpi_power_off(resource); in acpi_resume_power_resources()
853 mutex_unlock(&resource->resource_lock); in acpi_resume_power_resources()