libata: implement PMP helpers
Implement helpers to test whether PMP is supported, attached and determine pmp number to use when issuing SRST to a link. While at it, move ata_is_host_link() so that it's together with the two new PMP helpers. This change simplifies LLDs and helps making PMP support optional. Signed-off-by: Tejun Heo <htejun@gmail.com>
This commit is contained in:
@@ -411,7 +411,7 @@ int sata_pmp_attach(struct ata_device *dev)
|
||||
int rc;
|
||||
|
||||
/* is it hanging off the right place? */
|
||||
if (!(ap->flags & ATA_FLAG_PMP)) {
|
||||
if (!sata_pmp_supported(ap)) {
|
||||
ata_dev_printk(dev, KERN_ERR,
|
||||
"host does not support Port Multiplier\n");
|
||||
return -EINVAL;
|
||||
@@ -876,7 +876,7 @@ static int sata_pmp_eh_recover(struct ata_port *ap)
|
||||
|
||||
retry:
|
||||
/* PMP attached? */
|
||||
if (!ap->nr_pmp_links) {
|
||||
if (!sata_pmp_attached(ap)) {
|
||||
rc = ata_eh_recover(ap, ops->prereset, ops->softreset,
|
||||
ops->hardreset, ops->postreset, NULL);
|
||||
if (rc) {
|
||||
@@ -983,7 +983,7 @@ static int sata_pmp_eh_recover(struct ata_port *ap)
|
||||
if (ap->pflags & ATA_PFLAG_UNLOADING)
|
||||
return rc;
|
||||
|
||||
if (!ap->nr_pmp_links)
|
||||
if (!sata_pmp_attached(ap))
|
||||
goto retry;
|
||||
|
||||
if (--pmp_tries) {
|
||||
|
Reference in New Issue
Block a user