aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/bus.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2014-04-30 19:16:06 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2014-05-06 19:00:19 -0400
commitd0103387bc21644d297cb61ee623c7114e395575 (patch)
tree452d94ec3da44e394e75e0821ceceafcc2ae4b56 /drivers/acpi/bus.c
parent89ca3b881987f5a4be4c5dbaa7f0df12bbdde2fd (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.c18
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