Commit 0b221259 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

Merge branches 'acpi-scan', 'acpi-drivers', 'acpi-pm' and 'acpi-resources'

* acpi-scan:
  ACPI: bus: Introduce acpi_dev_get() and reuse it in ACPI code
  ACPI: scan: Utilize match_string() API
  ACPI: scan: Call acpi_get_object_info() from acpi_set_pnp_ids()
  ACPI: scan: Drop sta argument from acpi_init_device_object()
  ACPI: scan: Drop sta argument from acpi_add_single_object()
  ACPI: scan: Rearrange checks in acpi_bus_check_add()
  ACPI: scan: Fold acpi_bus_type_and_status() into its caller

* acpi-drivers:
  ACPI: HED: Drop unused ACPI_MODULE_NAME() definition

* acpi-pm:
  ACPI: power: Turn off unused power resources unconditionally
  ACPI: scan: Turn off unused power resources during initialization

* acpi-resources:
  resource: Prevent irqresource_disabled() from erasing flags
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -376,12 +376,12 @@ eject_store(struct device *d, struct device_attribute *attr,
	if (ACPI_FAILURE(status) || !acpi_device->flags.ejectable)
	if (ACPI_FAILURE(status) || !acpi_device->flags.ejectable)
		return -ENODEV;
		return -ENODEV;


	get_device(&acpi_device->dev);
	acpi_dev_get(acpi_device);
	status = acpi_hotplug_schedule(acpi_device, ACPI_OST_EC_OSPM_EJECT);
	status = acpi_hotplug_schedule(acpi_device, ACPI_OST_EC_OSPM_EJECT);
	if (ACPI_SUCCESS(status))
	if (ACPI_SUCCESS(status))
		return count;
		return count;


	put_device(&acpi_device->dev);
	acpi_dev_put(acpi_device);
	acpi_evaluate_ost(acpi_device->handle, ACPI_OST_EC_OSPM_EJECT,
	acpi_evaluate_ost(acpi_device->handle, ACPI_OST_EC_OSPM_EJECT,
			  ACPI_OST_SC_NON_SPECIFIC_FAILURE, NULL);
			  ACPI_OST_SC_NON_SPECIFIC_FAILURE, NULL);
	return status == AE_NO_MEMORY ? -ENOMEM : -EAGAIN;
	return status == AE_NO_MEMORY ? -ENOMEM : -EAGAIN;
+4 −4
Original line number Original line Diff line number Diff line
@@ -190,7 +190,7 @@ int acpi_bind_one(struct device *dev, struct acpi_device *acpi_dev)
	if (!acpi_dev)
	if (!acpi_dev)
		return -EINVAL;
		return -EINVAL;


	get_device(&acpi_dev->dev);
	acpi_dev_get(acpi_dev);
	get_device(dev);
	get_device(dev);
	physical_node = kzalloc(sizeof(*physical_node), GFP_KERNEL);
	physical_node = kzalloc(sizeof(*physical_node), GFP_KERNEL);
	if (!physical_node) {
	if (!physical_node) {
@@ -217,7 +217,7 @@ int acpi_bind_one(struct device *dev, struct acpi_device *acpi_dev)
				goto err;
				goto err;


			put_device(dev);
			put_device(dev);
			put_device(&acpi_dev->dev);
			acpi_dev_put(acpi_dev);
			return 0;
			return 0;
		}
		}
		if (pn->node_id == node_id) {
		if (pn->node_id == node_id) {
@@ -257,7 +257,7 @@ int acpi_bind_one(struct device *dev, struct acpi_device *acpi_dev)
 err:
 err:
	ACPI_COMPANION_SET(dev, NULL);
	ACPI_COMPANION_SET(dev, NULL);
	put_device(dev);
	put_device(dev);
	put_device(&acpi_dev->dev);
	acpi_dev_put(acpi_dev);
	return retval;
	return retval;
}
}
EXPORT_SYMBOL_GPL(acpi_bind_one);
EXPORT_SYMBOL_GPL(acpi_bind_one);
@@ -285,7 +285,7 @@ int acpi_unbind_one(struct device *dev)
			ACPI_COMPANION_SET(dev, NULL);
			ACPI_COMPANION_SET(dev, NULL);
			/* Drop references taken by acpi_bind_one(). */
			/* Drop references taken by acpi_bind_one(). */
			put_device(dev);
			put_device(dev);
			put_device(&acpi_dev->dev);
			acpi_dev_put(acpi_dev);
			kfree(entry);
			kfree(entry);
			break;
			break;
		}
		}
+0 −1
Original line number Original line Diff line number Diff line
@@ -74,7 +74,6 @@ static struct acpi_driver acpi_hed_driver = {
};
};
module_acpi_driver(acpi_hed_driver);
module_acpi_driver(acpi_hed_driver);


ACPI_MODULE_NAME("hed");
MODULE_AUTHOR("Huang Ying");
MODULE_AUTHOR("Huang Ying");
MODULE_DESCRIPTION("ACPI Hardware Error Device Driver");
MODULE_DESCRIPTION("ACPI Hardware Error Device Driver");
MODULE_LICENSE("GPL");
MODULE_LICENSE("GPL");
+2 −2
Original line number Original line Diff line number Diff line
@@ -109,8 +109,7 @@ struct acpi_device_bus_id {
int acpi_device_add(struct acpi_device *device,
int acpi_device_add(struct acpi_device *device,
		    void (*release)(struct device *));
		    void (*release)(struct device *));
void acpi_init_device_object(struct acpi_device *device, acpi_handle handle,
void acpi_init_device_object(struct acpi_device *device, acpi_handle handle,
			     int type, unsigned long long sta,
			     int type);
			     struct acpi_device_info *info);
int acpi_device_setup_files(struct acpi_device *dev);
int acpi_device_setup_files(struct acpi_device *dev);
void acpi_device_remove_files(struct acpi_device *dev);
void acpi_device_remove_files(struct acpi_device *dev);
void acpi_device_add_finalize(struct acpi_device *device);
void acpi_device_add_finalize(struct acpi_device *device);
@@ -143,6 +142,7 @@ int acpi_device_sleep_wake(struct acpi_device *dev,
int acpi_power_get_inferred_state(struct acpi_device *device, int *state);
int acpi_power_get_inferred_state(struct acpi_device *device, int *state);
int acpi_power_on_resources(struct acpi_device *device, int state);
int acpi_power_on_resources(struct acpi_device *device, int state);
int acpi_power_transition(struct acpi_device *device, int state);
int acpi_power_transition(struct acpi_device *device, int state);
void acpi_turn_off_unused_power_resources(void);


/* --------------------------------------------------------------------------
/* --------------------------------------------------------------------------
                              Device Power Management
                              Device Power Management
+3 −13
Original line number Original line Diff line number Diff line
@@ -925,8 +925,7 @@ int acpi_add_power_resource(acpi_handle handle)
		return -ENOMEM;
		return -ENOMEM;


	device = &resource->device;
	device = &resource->device;
	acpi_init_device_object(device, handle, ACPI_BUS_TYPE_POWER,
	acpi_init_device_object(device, handle, ACPI_BUS_TYPE_POWER);
				ACPI_STA_DEFAULT, NULL);
	mutex_init(&resource->resource_lock);
	mutex_init(&resource->resource_lock);
	INIT_LIST_HEAD(&resource->list_node);
	INIT_LIST_HEAD(&resource->list_node);
	INIT_LIST_HEAD(&resource->dependents);
	INIT_LIST_HEAD(&resource->dependents);
@@ -996,6 +995,7 @@ void acpi_resume_power_resources(void)


	mutex_unlock(&power_resource_list_lock);
	mutex_unlock(&power_resource_list_lock);
}
}
#endif


void acpi_turn_off_unused_power_resources(void)
void acpi_turn_off_unused_power_resources(void)
{
{
@@ -1004,18 +1004,9 @@ void acpi_turn_off_unused_power_resources(void)
	mutex_lock(&power_resource_list_lock);
	mutex_lock(&power_resource_list_lock);


	list_for_each_entry_reverse(resource, &acpi_power_resource_list, list_node) {
	list_for_each_entry_reverse(resource, &acpi_power_resource_list, list_node) {
		int result, state;

		mutex_lock(&resource->resource_lock);
		mutex_lock(&resource->resource_lock);


		result = acpi_power_get_state(resource->device.handle, &state);
		if (!resource->ref_count) {
		if (result) {
			mutex_unlock(&resource->resource_lock);
			continue;
		}

		if (state == ACPI_POWER_RESOURCE_STATE_ON
		    && !resource->ref_count) {
			dev_info(&resource->device.dev, "Turning OFF\n");
			dev_info(&resource->device.dev, "Turning OFF\n");
			__acpi_power_off(resource);
			__acpi_power_off(resource);
		}
		}
@@ -1025,4 +1016,3 @@ void acpi_turn_off_unused_power_resources(void)


	mutex_unlock(&power_resource_list_lock);
	mutex_unlock(&power_resource_list_lock);
}
}
#endif
Loading