libata-pmp: implement Port Multiplier support
authorTejun Heo <htejun@gmail.com>
Sun, 23 Sep 2007 04:19:54 +0000 (13:19 +0900)
committerJeff Garzik <jeff@garzik.org>
Fri, 12 Oct 2007 18:55:44 +0000 (14:55 -0400)
commit3af9a77af9e2b72366363864bfcd3d51465ff98a
treef6a311a56353cf81d34d64cf1a3f86aa6f659246
parent3495de733633d24ee97852080b737b436c110d6e
libata-pmp: implement Port Multiplier support

Implement Port Multiplier support.  To support PMP, a LLDD has to
supply ops->pmp_read() and pmp_write().  If non-null, ->pmp_attach and
->pmp_detach are called on PMP attach and detach, respectively.

->pmp_read/write() can be called while the port is frozen, so they
must be implemented by polling.  This patch supplies several helpers
to ease ->pmp_read/write() implementation.

Also, irq_handler and error_handler must be PMP aware.  Most of PMP
aware EH can be done by calling ata_pmp_do_eh() with appropriate
methods.  PMP EH uses separate set of reset methods and this patch
implements standard prereset, hardreset and postreset methods.

This patch only implements PMP support.  The next patch will integrate
PMP into the reset of libata and thus enable PMP support.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/ata/Makefile
drivers/ata/libata-core.c
drivers/ata/libata-pmp.c [new file with mode: 0644]
drivers/ata/libata.h
include/linux/libata.h