Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 350847
b: refs/heads/master
c: 05404d8
h: refs/heads/master
i:
  350845: ae7cea1
  350843: 2c343ec
  350839: e212871
  350831: 8c69ade
  350815: bb606af
  350783: 0062aa9
  350719: 15e90ca
v: v3
  • Loading branch information
Rafael J. Wysocki committed Jan 15, 2013
1 parent ff8ae8a commit 21bf59e
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 17 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: cecdb193c8d91a42d9489d00618cc3dfff92e55a
refs/heads/master: 05404d8f7b5c831e1a2c24bb782f0fe8ea02354c
46 changes: 30 additions & 16 deletions trunk/drivers/acpi/scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -1374,22 +1374,6 @@ static int acpi_device_set_context(struct acpi_device *device)
return -ENODEV;
}

static acpi_status acpi_bus_remove(acpi_handle handle, u32 lvl_not_used,
void *not_used, void **ret_not_used)
{
struct acpi_device *dev = NULL;

if (acpi_bus_get_device(handle, &dev))
return AE_OK;

dev->removal_type = ACPI_BUS_REMOVAL_EJECT;
device_release_driver(&dev->dev);

acpi_device_unregister(dev);

return AE_OK;
}

static int acpi_add_single_object(struct acpi_device **child,
acpi_handle handle, int type,
unsigned long long sta, bool match_driver)
Expand Down Expand Up @@ -1642,8 +1626,38 @@ int acpi_bus_add(acpi_handle handle)
}
EXPORT_SYMBOL(acpi_bus_add);

static acpi_status acpi_bus_device_detach(acpi_handle handle, u32 lvl_not_used,
void *not_used, void **ret_not_used)
{
struct acpi_device *device = NULL;

if (!acpi_bus_get_device(handle, &device)) {
device->removal_type = ACPI_BUS_REMOVAL_EJECT;
device_release_driver(&device->dev);
}
return AE_OK;
}

static acpi_status acpi_bus_remove(acpi_handle handle, u32 lvl_not_used,
void *not_used, void **ret_not_used)
{
struct acpi_device *device = NULL;

if (!acpi_bus_get_device(handle, &device))
acpi_device_unregister(device);

return AE_OK;
}

int acpi_bus_trim(struct acpi_device *start)
{
/*
* Execute acpi_bus_device_detach() as a post-order callback to detach
* all ACPI drivers from the device nodes being removed.
*/
acpi_walk_namespace(ACPI_TYPE_ANY, start->handle, ACPI_UINT32_MAX, NULL,
acpi_bus_device_detach, NULL, NULL);
acpi_bus_device_detach(start->handle, 0, NULL, NULL);
/*
* Execute acpi_bus_remove() as a post-order callback to remove device
* nodes in the given namespace scope.
Expand Down

0 comments on commit 21bf59e

Please sign in to comment.