diff options
author | Tejun Heo <htejun@gmail.com> | 2007-08-06 05:36:22 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-10-12 14:55:30 -0400 |
commit | 9af5c9c97dc9d599281778864c72b385f0c63341 (patch) | |
tree | 8359986bd42c4a9a5b1993078aa9ee4c7971ac3d /drivers/ata/pdc_adma.c | |
parent | 640fdb504941fa2b9f6f274716fc9f97f2bf6bff (diff) |
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>
Diffstat (limited to 'drivers/ata/pdc_adma.c')
-rw-r--r-- | drivers/ata/pdc_adma.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/ata/pdc_adma.c b/drivers/ata/pdc_adma.c index c95c1bf7df3..064a3b50560 100644 --- a/drivers/ata/pdc_adma.c +++ b/drivers/ata/pdc_adma.c | |||
@@ -485,7 +485,7 @@ static inline unsigned int adma_intr_pkt(struct ata_host *host) | |||
485 | pp = ap->private_data; | 485 | pp = ap->private_data; |
486 | if (!pp || pp->state != adma_state_pkt) | 486 | if (!pp || pp->state != adma_state_pkt) |
487 | continue; | 487 | continue; |
488 | qc = ata_qc_from_tag(ap, ap->active_tag); | 488 | qc = ata_qc_from_tag(ap, ap->link.active_tag); |
489 | if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING))) { | 489 | if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING))) { |
490 | if (status & aPERR) | 490 | if (status & aPERR) |
491 | qc->err_mask |= AC_ERR_HOST_BUS; | 491 | qc->err_mask |= AC_ERR_HOST_BUS; |
@@ -500,7 +500,7 @@ static inline unsigned int adma_intr_pkt(struct ata_host *host) | |||
500 | if (!qc->err_mask) | 500 | if (!qc->err_mask) |
501 | ata_qc_complete(qc); | 501 | ata_qc_complete(qc); |
502 | else { | 502 | else { |
503 | struct ata_eh_info *ehi = &ap->eh_info; | 503 | struct ata_eh_info *ehi = &ap->link.eh_info; |
504 | ata_ehi_clear_desc(ehi); | 504 | ata_ehi_clear_desc(ehi); |
505 | ata_ehi_push_desc(ehi, | 505 | ata_ehi_push_desc(ehi, |
506 | "ADMA-status 0x%02X", status); | 506 | "ADMA-status 0x%02X", status); |
@@ -529,7 +529,7 @@ static inline unsigned int adma_intr_mmio(struct ata_host *host) | |||
529 | struct adma_port_priv *pp = ap->private_data; | 529 | struct adma_port_priv *pp = ap->private_data; |
530 | if (!pp || pp->state != adma_state_mmio) | 530 | if (!pp || pp->state != adma_state_mmio) |
531 | continue; | 531 | continue; |
532 | qc = ata_qc_from_tag(ap, ap->active_tag); | 532 | qc = ata_qc_from_tag(ap, ap->link.active_tag); |
533 | if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING))) { | 533 | if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING))) { |
534 | 534 | ||
535 | /* check main status, clearing INTRQ */ | 535 | /* check main status, clearing INTRQ */ |
@@ -545,7 +545,8 @@ static inline unsigned int adma_intr_mmio(struct ata_host *host) | |||
545 | if (!qc->err_mask) | 545 | if (!qc->err_mask) |
546 | ata_qc_complete(qc); | 546 | ata_qc_complete(qc); |
547 | else { | 547 | else { |
548 | struct ata_eh_info *ehi = &ap->eh_info; | 548 | struct ata_eh_info *ehi = |
549 | &ap->link.eh_info; | ||
549 | ata_ehi_clear_desc(ehi); | 550 | ata_ehi_clear_desc(ehi); |
550 | ata_ehi_push_desc(ehi, | 551 | ata_ehi_push_desc(ehi, |
551 | "status 0x%02X", status); | 552 | "status 0x%02X", status); |