Lines Matching refs:resource
71 struct acpi_power_resource *resource; member
100 struct acpi_power_resource *resource = acpi_power_get_context(handle); in acpi_power_resources_list_add() local
103 if (!resource || !list) in acpi_power_resources_list_add()
110 entry->resource = resource; in acpi_power_resources_list_add()
115 if (e->resource->order > resource->order) { in acpi_power_resources_list_add()
204 struct acpi_power_resource *resource = entry->resource; in acpi_power_get_list_state() local
205 acpi_handle handle = resource->device.handle; in acpi_power_get_list_state()
208 mutex_lock(&resource->resource_lock); in acpi_power_get_list_state()
210 mutex_unlock(&resource->resource_lock); in acpi_power_get_list_state()
225 static int __acpi_power_on(struct acpi_power_resource *resource) in __acpi_power_on() argument
229 status = acpi_evaluate_object(resource->device.handle, "_ON", NULL, NULL); in __acpi_power_on()
234 resource->name)); in __acpi_power_on()
239 static int acpi_power_on_unlocked(struct acpi_power_resource *resource) in acpi_power_on_unlocked() argument
243 if (resource->ref_count++) { in acpi_power_on_unlocked()
246 resource->name)); in acpi_power_on_unlocked()
248 result = __acpi_power_on(resource); in acpi_power_on_unlocked()
250 resource->ref_count--; in acpi_power_on_unlocked()
255 static int acpi_power_on(struct acpi_power_resource *resource) in acpi_power_on() argument
259 mutex_lock(&resource->resource_lock); in acpi_power_on()
260 result = acpi_power_on_unlocked(resource); in acpi_power_on()
261 mutex_unlock(&resource->resource_lock); in acpi_power_on()
265 static int __acpi_power_off(struct acpi_power_resource *resource) in __acpi_power_off() argument
269 status = acpi_evaluate_object(resource->device.handle, "_OFF", in __acpi_power_off()
275 resource->name)); in __acpi_power_off()
279 static int acpi_power_off_unlocked(struct acpi_power_resource *resource) in acpi_power_off_unlocked() argument
283 if (!resource->ref_count) { in acpi_power_off_unlocked()
286 resource->name)); in acpi_power_off_unlocked()
290 if (--resource->ref_count) { in acpi_power_off_unlocked()
293 resource->name)); in acpi_power_off_unlocked()
295 result = __acpi_power_off(resource); in acpi_power_off_unlocked()
297 resource->ref_count++; in acpi_power_off_unlocked()
302 static int acpi_power_off(struct acpi_power_resource *resource) in acpi_power_off() argument
306 mutex_lock(&resource->resource_lock); in acpi_power_off()
307 result = acpi_power_off_unlocked(resource); in acpi_power_off()
308 mutex_unlock(&resource->resource_lock); in acpi_power_off()
318 result = acpi_power_off(entry->resource); in acpi_power_off_list()
326 acpi_power_on(entry->resource); in acpi_power_off_list()
337 result = acpi_power_on(entry->resource); in acpi_power_on_list()
345 acpi_power_off(entry->resource); in acpi_power_on_list()
388 struct acpi_device *res_dev = &entry->resource->device; in acpi_power_hide_list()
412 struct acpi_device *res_dev = &entry->resource->device; in acpi_power_expose_list()
459 struct acpi_power_resource *resource = entry->resource; in acpi_power_wakeup_list_init() local
460 acpi_handle handle = resource->device.handle; in acpi_power_wakeup_list_init()
464 mutex_lock(&resource->resource_lock); in acpi_power_wakeup_list_init()
468 mutex_unlock(&resource->resource_lock); in acpi_power_wakeup_list_init()
472 resource->ref_count++; in acpi_power_wakeup_list_init()
473 resource->wakeup_enabled = true; in acpi_power_wakeup_list_init()
475 if (system_level > resource->system_level) in acpi_power_wakeup_list_init()
476 system_level = resource->system_level; in acpi_power_wakeup_list_init()
478 mutex_unlock(&resource->resource_lock); in acpi_power_wakeup_list_init()
569 struct acpi_power_resource *resource = entry->resource; in acpi_enable_wakeup_device_power() local
571 mutex_lock(&resource->resource_lock); in acpi_enable_wakeup_device_power()
573 if (!resource->wakeup_enabled) { in acpi_enable_wakeup_device_power()
574 err = acpi_power_on_unlocked(resource); in acpi_enable_wakeup_device_power()
576 resource->wakeup_enabled = true; in acpi_enable_wakeup_device_power()
579 mutex_unlock(&resource->resource_lock); in acpi_enable_wakeup_device_power()
632 struct acpi_power_resource *resource = entry->resource; in acpi_disable_wakeup_device_power() local
634 mutex_lock(&resource->resource_lock); in acpi_disable_wakeup_device_power()
636 if (resource->wakeup_enabled) { in acpi_disable_wakeup_device_power()
637 err = acpi_power_off_unlocked(resource); in acpi_disable_wakeup_device_power()
639 resource->wakeup_enabled = false; in acpi_disable_wakeup_device_power()
642 mutex_unlock(&resource->resource_lock); in acpi_disable_wakeup_device_power()
735 struct acpi_power_resource *resource; in acpi_release_power_resource() local
737 resource = container_of(device, struct acpi_power_resource, device); in acpi_release_power_resource()
740 list_del(&resource->list_node); in acpi_release_power_resource()
744 kfree(resource); in acpi_release_power_resource()
750 struct acpi_power_resource *resource; in acpi_power_in_use_show() local
752 resource = to_power_resource(to_acpi_device(dev)); in acpi_power_in_use_show()
753 return sprintf(buf, "%u\n", !!resource->ref_count); in acpi_power_in_use_show()
762 static void acpi_power_add_resource_to_list(struct acpi_power_resource *resource) in acpi_power_add_resource_to_list() argument
770 if (r->order > resource->order) { in acpi_power_add_resource_to_list()
771 list_add_tail(&resource->list_node, &r->list_node); in acpi_power_add_resource_to_list()
775 list_add_tail(&resource->list_node, &acpi_power_resource_list); in acpi_power_add_resource_to_list()
783 struct acpi_power_resource *resource; in acpi_add_power_resource() local
794 resource = kzalloc(sizeof(*resource), GFP_KERNEL); in acpi_add_power_resource()
795 if (!resource) in acpi_add_power_resource()
798 device = &resource->device; in acpi_add_power_resource()
801 mutex_init(&resource->resource_lock); in acpi_add_power_resource()
802 INIT_LIST_HEAD(&resource->list_node); in acpi_add_power_resource()
803 resource->name = device->pnp.bus_id; in acpi_add_power_resource()
813 resource->system_level = acpi_object.power_resource.system_level; in acpi_add_power_resource()
814 resource->order = acpi_object.power_resource.resource_order; in acpi_add_power_resource()
831 acpi_power_add_resource_to_list(resource); in acpi_add_power_resource()
843 struct acpi_power_resource *resource; in acpi_resume_power_resources() local
847 list_for_each_entry(resource, &acpi_power_resource_list, list_node) { in acpi_resume_power_resources()
850 mutex_lock(&resource->resource_lock); in acpi_resume_power_resources()
852 result = acpi_power_get_state(resource->device.handle, &state); in acpi_resume_power_resources()
854 mutex_unlock(&resource->resource_lock); in acpi_resume_power_resources()
859 && resource->ref_count) { in acpi_resume_power_resources()
860 dev_info(&resource->device.dev, "Turning ON\n"); in acpi_resume_power_resources()
861 __acpi_power_on(resource); in acpi_resume_power_resources()
864 mutex_unlock(&resource->resource_lock); in acpi_resume_power_resources()
866 list_for_each_entry_reverse(resource, &acpi_power_resource_list, list_node) { in acpi_resume_power_resources()
869 mutex_lock(&resource->resource_lock); in acpi_resume_power_resources()
871 result = acpi_power_get_state(resource->device.handle, &state); in acpi_resume_power_resources()
873 mutex_unlock(&resource->resource_lock); in acpi_resume_power_resources()
878 && !resource->ref_count) { in acpi_resume_power_resources()
879 dev_info(&resource->device.dev, "Turning OFF\n"); in acpi_resume_power_resources()
880 __acpi_power_off(resource); in acpi_resume_power_resources()
883 mutex_unlock(&resource->resource_lock); in acpi_resume_power_resources()