diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-04-30 19:16:06 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-05-06 19:00:19 -0400 |
commit | d0103387bc21644d297cb61ee623c7114e395575 (patch) | |
tree | 452d94ec3da44e394e75e0821ceceafcc2ae4b56 /drivers/acpi/bus.c | |
parent | 89ca3b881987f5a4be4c5dbaa7f0df12bbdde2fd (diff) |
ACPI / notify: Clean up handling of hotplug events
Make the handling of hotplug events in acpi_bus_notify() slightly
cleaner by using an extra local variable to indicate when
acpi_hotplug_schedule() should be called.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi/bus.c')
-rw-r--r-- | drivers/acpi/bus.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index cf925c4f36b7..610261a1b6c8 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c | |||
@@ -340,16 +340,18 @@ static void acpi_bus_notify(acpi_handle handle, u32 type, void *data) | |||
340 | { | 340 | { |
341 | struct acpi_device *adev; | 341 | struct acpi_device *adev; |
342 | struct acpi_driver *driver; | 342 | struct acpi_driver *driver; |
343 | acpi_status status; | ||
344 | u32 ost_code = ACPI_OST_SC_NON_SPECIFIC_FAILURE; | 343 | u32 ost_code = ACPI_OST_SC_NON_SPECIFIC_FAILURE; |
344 | bool hotplug_event = false; | ||
345 | 345 | ||
346 | switch (type) { | 346 | switch (type) { |
347 | case ACPI_NOTIFY_BUS_CHECK: | 347 | case ACPI_NOTIFY_BUS_CHECK: |
348 | acpi_handle_debug(handle, "ACPI_NOTIFY_BUS_CHECK event\n"); | 348 | acpi_handle_debug(handle, "ACPI_NOTIFY_BUS_CHECK event\n"); |
349 | hotplug_event = true; | ||
349 | break; | 350 | break; |
350 | 351 | ||
351 | case ACPI_NOTIFY_DEVICE_CHECK: | 352 | case ACPI_NOTIFY_DEVICE_CHECK: |
352 | acpi_handle_debug(handle, "ACPI_NOTIFY_DEVICE_CHECK event\n"); | 353 | acpi_handle_debug(handle, "ACPI_NOTIFY_DEVICE_CHECK event\n"); |
354 | hotplug_event = true; | ||
353 | break; | 355 | break; |
354 | 356 | ||
355 | case ACPI_NOTIFY_DEVICE_WAKE: | 357 | case ACPI_NOTIFY_DEVICE_WAKE: |
@@ -358,6 +360,7 @@ static void acpi_bus_notify(acpi_handle handle, u32 type, void *data) | |||
358 | 360 | ||
359 | case ACPI_NOTIFY_EJECT_REQUEST: | 361 | case ACPI_NOTIFY_EJECT_REQUEST: |
360 | acpi_handle_debug(handle, "ACPI_NOTIFY_EJECT_REQUEST event\n"); | 362 | acpi_handle_debug(handle, "ACPI_NOTIFY_EJECT_REQUEST event\n"); |
363 | hotplug_event = true; | ||
361 | break; | 364 | break; |
362 | 365 | ||
363 | case ACPI_NOTIFY_DEVICE_CHECK_LIGHT: | 366 | case ACPI_NOTIFY_DEVICE_CHECK_LIGHT: |
@@ -393,16 +396,9 @@ static void acpi_bus_notify(acpi_handle handle, u32 type, void *data) | |||
393 | (driver->flags & ACPI_DRIVER_ALL_NOTIFY_EVENTS)) | 396 | (driver->flags & ACPI_DRIVER_ALL_NOTIFY_EVENTS)) |
394 | driver->ops.notify(adev, type); | 397 | driver->ops.notify(adev, type); |
395 | 398 | ||
396 | switch (type) { | 399 | if (hotplug_event && ACPI_SUCCESS(acpi_hotplug_schedule(adev, type))) |
397 | case ACPI_NOTIFY_BUS_CHECK: | 400 | return; |
398 | case ACPI_NOTIFY_DEVICE_CHECK: | 401 | |
399 | case ACPI_NOTIFY_EJECT_REQUEST: | ||
400 | status = acpi_hotplug_schedule(adev, type); | ||
401 | if (ACPI_SUCCESS(status)) | ||
402 | return; | ||
403 | default: | ||
404 | break; | ||
405 | } | ||
406 | acpi_bus_put_acpi_device(adev); | 402 | acpi_bus_put_acpi_device(adev); |
407 | return; | 403 | return; |
408 | 404 | ||