[PATCH] libata: improve driver initialization and deinitialization
authorTejun Heo <htejun@gmail.com>
Wed, 26 Jul 2006 06:59:26 +0000 (15:59 +0900)
committerJeff Garzik <jeff@garzik.org>
Sat, 29 Jul 2006 08:01:31 +0000 (04:01 -0400)
commit0be0aa98985dfec42502c0d0af2a1baff9bdb19f
tree110f8d9419bc18370ddc410082e65a634d8a8109
parent9f5920567bfabbd1be26112a31c44652b6587394
[PATCH] libata: improve driver initialization and deinitialization

Implement ahci_[de]init_port() and use it during initialization and
de-initialization.  ahci_[de]init_port() are supersets of what used to
be done during driver [de-]initialization.  This patch makes the
following behavior changes.

* Per-port IRQ mask is cleared on driver load as done in other
  drivers.  The mask will be configured properly during probe.

* During init_one(), HOST_IRQ_STAT is cleared after masking port IRQs
  such that there is no race window.

* CMD_SPIN_UP is cleared during init_one() instead of being set.  It
  is set in port_start().  This is more consistent with overall
  structure of initialization.  Note that CMD_SPIN_UP simply controls
  PHY activation.

* Slumber and staggered spin-up are handled properly.

* All init/deinit operations are done in step-by-step manner as
  described in the spec instead of issued as single merged command.

Original implementation is from Zhao, Forrest <forrest.zhao@intel.com>

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/scsi/ahci.c