mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
ACPI / driver core: Introduce struct acpi_dev_node and related macros
To avoid adding an ACPI handle pointer to struct device on architectures that don't use ACPI, or generally when CONFIG_ACPI is not set, in which cases that pointer is useless, define struct acpi_dev_node that will contain the handle pointer if CONFIG_ACPI is set and will be empty otherwise and use it to represent the ACPI device node field in struct device. In addition to that define macros for reading and setting the ACPI handle of a device that don't generate code when CONFIG_ACPI is unset. Modify the ACPI subsystem to use those macros instead of referring to the given device's ACPI handle directly. Signed-off-by: Rafael J. Wysocki <[email protected]> Reviewed-by: Mika Westerberg <[email protected]> Acked-by: Greg Kroah-Hartman <[email protected]>
This commit is contained in:
parent
f3fd0c8a7f
commit
95f8a082b9
4 changed files with 27 additions and 13 deletions
|
|
@ -134,12 +134,12 @@ static int acpi_bind_one(struct device *dev, acpi_handle handle)
|
|||
char physical_node_name[sizeof(PHYSICAL_NODE_STRING) + 2];
|
||||
int retval = -EINVAL;
|
||||
|
||||
if (dev->acpi_handle) {
|
||||
if (ACPI_HANDLE(dev)) {
|
||||
if (handle) {
|
||||
dev_warn(dev, "ACPI handle is already set\n");
|
||||
return -EINVAL;
|
||||
} else {
|
||||
handle = dev->acpi_handle;
|
||||
handle = ACPI_HANDLE(dev);
|
||||
}
|
||||
}
|
||||
if (!handle)
|
||||
|
|
@ -181,8 +181,8 @@ static int acpi_bind_one(struct device *dev, acpi_handle handle)
|
|||
|
||||
mutex_unlock(&acpi_dev->physical_node_lock);
|
||||
|
||||
if (!dev->acpi_handle)
|
||||
dev->acpi_handle = handle;
|
||||
if (!ACPI_HANDLE(dev))
|
||||
ACPI_HANDLE_SET(dev, acpi_dev->handle);
|
||||
|
||||
if (!physical_node->node_id)
|
||||
strcpy(physical_node_name, PHYSICAL_NODE_STRING);
|
||||
|
|
@ -200,7 +200,7 @@ static int acpi_bind_one(struct device *dev, acpi_handle handle)
|
|||
return 0;
|
||||
|
||||
err:
|
||||
dev->acpi_handle = NULL;
|
||||
ACPI_HANDLE_SET(dev, NULL);
|
||||
put_device(dev);
|
||||
return retval;
|
||||
|
||||
|
|
@ -217,10 +217,10 @@ static int acpi_unbind_one(struct device *dev)
|
|||
acpi_status status;
|
||||
struct list_head *node, *next;
|
||||
|
||||
if (!dev->acpi_handle)
|
||||
if (!ACPI_HANDLE(dev))
|
||||
return 0;
|
||||
|
||||
status = acpi_bus_get_device(dev->acpi_handle, &acpi_dev);
|
||||
status = acpi_bus_get_device(ACPI_HANDLE(dev), &acpi_dev);
|
||||
if (ACPI_FAILURE(status))
|
||||
goto err;
|
||||
|
||||
|
|
@ -246,7 +246,7 @@ static int acpi_unbind_one(struct device *dev)
|
|||
|
||||
sysfs_remove_link(&acpi_dev->dev.kobj, physical_node_name);
|
||||
sysfs_remove_link(&dev->kobj, "firmware_node");
|
||||
dev->acpi_handle = NULL;
|
||||
ACPI_HANDLE_SET(dev, NULL);
|
||||
/* acpi_bind_one increase refcnt by one */
|
||||
put_device(dev);
|
||||
kfree(entry);
|
||||
|
|
|
|||
|
|
@ -386,8 +386,8 @@ const struct acpi_device_id *acpi_match_device(const struct acpi_device_id *ids,
|
|||
{
|
||||
struct acpi_device *adev;
|
||||
|
||||
if (!ids || !dev->acpi_handle
|
||||
|| ACPI_FAILURE(acpi_bus_get_device(dev->acpi_handle, &adev)))
|
||||
if (!ids || !ACPI_HANDLE(dev)
|
||||
|| ACPI_FAILURE(acpi_bus_get_device(ACPI_HANDLE(dev), &adev)))
|
||||
return NULL;
|
||||
|
||||
return __acpi_match_device(adev, ids);
|
||||
|
|
|
|||
Loading…
Reference in a new issue