Lines Matching defs:resource

32  * An ACPI "power resource object" describes a software controllable power
33 * plane, clock plane, or other resource used by a power managed device.
34 * A device may rely on multiple power resources, and a power resource
104 /* List of devices relying on this power resource */
116 struct acpi_power_resource **resource)
122 if (!resource)
131 *resource = acpi_driver_data(device);
132 if (!*resource)
176 struct acpi_power_resource *resource;
180 result = acpi_power_get_context(handle, &resource);
184 mutex_lock(&resource->resource_lock);
188 mutex_unlock(&resource->resource_lock);
222 static int __acpi_power_on(struct acpi_power_resource *resource)
224 struct acpi_power_resource_device *device_list = resource->devices;
227 status = acpi_evaluate_object(resource->device->handle, "_ON", NULL, NULL);
231 /* Update the power resource's _device_ power state */
232 resource->device->power.state = ACPI_STATE_D0;
234 ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Power resource [%s] turned on\n",
235 resource->name));
249 struct acpi_power_resource *resource = NULL;
251 result = acpi_power_get_context(handle, &resource);
255 mutex_lock(&resource->resource_lock);
257 if (resource->ref_count++) {
259 "Power resource [%s] already on",
260 resource->name));
262 result = __acpi_power_on(resource);
264 resource->ref_count--;
267 mutex_unlock(&resource->resource_lock);
276 struct acpi_power_resource *resource = NULL;
278 result = acpi_power_get_context(handle, &resource);
282 mutex_lock(&resource->resource_lock);
284 if (!resource->ref_count) {
286 "Power resource [%s] already off",
287 resource->name));
291 if (--resource->ref_count) {
293 "Power resource [%s] still in use\n",
294 resource->name));
298 status = acpi_evaluate_object(resource->device->handle, "_OFF", NULL, NULL);
302 /* Update the power resource's _device_ power state */
303 resource->device->power.state = ACPI_STATE_D3;
306 "Power resource [%s] turned off\n",
307 resource->name));
311 mutex_unlock(&resource->resource_lock);
348 struct acpi_power_resource *resource = NULL;
351 if (acpi_power_get_context(res_handle, &resource))
354 mutex_lock(&resource->resource_lock);
356 curr = resource->devices;
360 resource->devices = curr->next;
371 mutex_unlock(&resource->resource_lock);
397 struct acpi_power_resource *resource = NULL;
401 result = acpi_power_get_context(handle, &resource);
412 mutex_lock(&resource->resource_lock);
413 power_resource_device->next = resource->devices;
414 resource->devices = power_resource_device;
415 mutex_unlock(&resource->resource_lock);
545 /* Open power resource */
600 /* Close power resource */
704 struct acpi_power_resource *resource = NULL;
712 resource = kzalloc(sizeof(struct acpi_power_resource), GFP_KERNEL);
713 if (!resource)
716 resource->device = device;
717 mutex_init(&resource->resource_lock);
718 strcpy(resource->name, device->pnp.bus_id);
721 device->driver_data = resource;
723 /* Evalute the object to get the system level and resource order. */
729 resource->system_level = acpi_object.power_resource.system_level;
730 resource->order = acpi_object.power_resource.resource_order;
753 kfree(resource);
760 struct acpi_power_resource *resource;
765 resource = acpi_driver_data(device);
766 if (!resource)
769 kfree(resource);
777 struct acpi_power_resource *resource;
782 resource = acpi_driver_data(device);
783 if (!resource)
786 mutex_lock(&resource->resource_lock);
792 if (state == ACPI_POWER_RESOURCE_STATE_OFF && resource->ref_count)
793 result = __acpi_power_on(resource);
796 mutex_unlock(&resource->resource_lock);