libata-link: introduce ata_link

Introduce ata_link.  It abstracts PHY and sits between ata_port and
ata_device.  This new level of abstraction is necessary to support
SATA Port Multiplier, which basically adds a bunch of links (PHYs) to
a ATA host port.  Fields related to command execution, spd_limit and
EH are per-link and thus moved to ata_link.

This patch only defines the host link.  Multiple link handling will be
added later.  Also, a lot of ap->link derefences are added but many of
them will be removed as each part is converted to deal directly with
ata_link instead of ata_port.

This patch introduces no behavior change.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Cc: James Bottomley <James.Bottomley@SteelEye.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
diff --git a/drivers/ata/pdc_adma.c b/drivers/ata/pdc_adma.c
index c95c1bf..064a3b5 100644
--- a/drivers/ata/pdc_adma.c
+++ b/drivers/ata/pdc_adma.c
@@ -485,7 +485,7 @@
 		pp = ap->private_data;
 		if (!pp || pp->state != adma_state_pkt)
 			continue;
-		qc = ata_qc_from_tag(ap, ap->active_tag);
+		qc = ata_qc_from_tag(ap, ap->link.active_tag);
 		if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING))) {
 			if (status & aPERR)
 				qc->err_mask |= AC_ERR_HOST_BUS;
@@ -500,7 +500,7 @@
 			if (!qc->err_mask)
 				ata_qc_complete(qc);
 			else {
-				struct ata_eh_info *ehi = &ap->eh_info;
+				struct ata_eh_info *ehi = &ap->link.eh_info;
 				ata_ehi_clear_desc(ehi);
 				ata_ehi_push_desc(ehi,
 					"ADMA-status 0x%02X", status);
@@ -529,7 +529,7 @@
 			struct adma_port_priv *pp = ap->private_data;
 			if (!pp || pp->state != adma_state_mmio)
 				continue;
-			qc = ata_qc_from_tag(ap, ap->active_tag);
+			qc = ata_qc_from_tag(ap, ap->link.active_tag);
 			if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING))) {
 
 				/* check main status, clearing INTRQ */
@@ -545,7 +545,8 @@
 				if (!qc->err_mask)
 					ata_qc_complete(qc);
 				else {
-					struct ata_eh_info *ehi = &ap->eh_info;
+					struct ata_eh_info *ehi =
+						&ap->link.eh_info;
 					ata_ehi_clear_desc(ehi);
 					ata_ehi_push_desc(ehi,
 						"status 0x%02X", status);