[libata] ACPI: Properly handle bay devices in dock stations
authorHolger Macht <hmacht@suse.de>
Tue, 3 Jun 2008 18:27:59 +0000 (20:27 +0200)
committerJeff Garzik <jgarzik@redhat.com>
Wed, 4 Jun 2008 10:28:50 +0000 (06:28 -0400)
commit664d080c41463570b95717b5ad86e79dc1be0877
tree6843884af68ebc586200eb5e26f2799f3c5c893e
parentc3b25b32e8bef526cca748e1ba023c6bdd705a99
[libata] ACPI: Properly handle bay devices in dock stations

* Differentiate between bay devices in dock stations and others:

 - When an ACPI_NOTIFY_EJECT_REQUEST appears, just signal uevent to
   userspace (that is when the optional eject button on a bay device is
   pressed/pulled) giving the possibility to unmount file systems and to
   clean up. Also, only send uevent in case we get an EJECT_REQUEST
   without doing anything else. In other cases, you'll get an add/remove
   event because libata attaches/detaches the device.

 - In case of a dock event, which in turn signals an
   ACPI_NOTIFY_EJECT_REQUEST, immediately detach the device, because it
   may already have been gone

* In case of an ACPI_NOTIFY_DEVICE/BUS_CHECK, evaluate _STA to check if
  the device has been plugged or unplugged. If plugged, hotplug it, if
  unplugged, just signal event to userspace
  (initial patch by Matthew Garrett <mjg59@srcf.ucam.org>)

* Call ACPI _EJ0 for detached devices

Signed-off-by: Holger Macht <hmacht@suse.de>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/libata-acpi.c