Lines Matching refs:ap

40 	struct ata_port *ap = link->ap;  in sata_pmp_read()  local
41 struct ata_device *pmp_dev = ap->link.device; in sata_pmp_read()
77 struct ata_port *ap = link->ap; in sata_pmp_write() local
78 struct ata_device *pmp_dev = ap->link.device; in sata_pmp_write()
112 struct ata_port *ap = link->ap; in sata_pmp_qc_defer_cmd_switch() local
114 if (ap->excl_link == NULL || ap->excl_link == link) { in sata_pmp_qc_defer_cmd_switch()
115 if (ap->nr_active_links == 0 || ata_link_active(link)) { in sata_pmp_qc_defer_cmd_switch()
120 ap->excl_link = link; in sata_pmp_qc_defer_cmd_switch()
260 struct ata_port *ap = dev->link->ap; in sata_pmp_configure() local
276 if ((ap->flags & ATA_FLAG_AN) && in sata_pmp_configure()
298 err_mask = sata_pmp_read(&ap->link, PMP_GSCR_SII_POL, &reg); in sata_pmp_configure()
305 err_mask = sata_pmp_write(&ap->link, PMP_GSCR_SII_POL, reg); in sata_pmp_configure()
336 static int sata_pmp_init_links (struct ata_port *ap, int nr_ports) in sata_pmp_init_links() argument
338 struct ata_link *pmp_link = ap->pmp_link; in sata_pmp_init_links()
348 ata_link_init(ap, &pmp_link[i], i); in sata_pmp_init_links()
350 ap->pmp_link = pmp_link; in sata_pmp_init_links()
374 ap->pmp_link = NULL; in sata_pmp_init_links()
378 static void sata_pmp_quirks(struct ata_port *ap) in sata_pmp_quirks() argument
380 u32 *gscr = ap->link.device->gscr; in sata_pmp_quirks()
387 ata_for_each_link(link, ap, EDGE) { in sata_pmp_quirks()
412 ata_for_each_link(link, ap, EDGE) in sata_pmp_quirks()
418 ata_for_each_link(link, ap, EDGE) { in sata_pmp_quirks()
448 ap->pmp_link[ap->nr_pmp_links - 1].flags |= ATA_LFLAG_NO_RETRY; in sata_pmp_quirks()
454 ata_for_each_link(link, ap, EDGE) { in sata_pmp_quirks()
464 ata_for_each_link(link, ap, EDGE) { in sata_pmp_quirks()
488 struct ata_port *ap = link->ap; in sata_pmp_attach() local
494 if (!sata_pmp_supported(ap)) { in sata_pmp_attach()
522 rc = sata_pmp_init_links(ap, sata_pmp_gscr_ports(dev->gscr)); in sata_pmp_attach()
529 spin_lock_irqsave(ap->lock, flags); in sata_pmp_attach()
530 WARN_ON(ap->nr_pmp_links); in sata_pmp_attach()
531 ap->nr_pmp_links = sata_pmp_gscr_ports(dev->gscr); in sata_pmp_attach()
532 spin_unlock_irqrestore(ap->lock, flags); in sata_pmp_attach()
534 sata_pmp_quirks(ap); in sata_pmp_attach()
536 if (ap->ops->pmp_attach) in sata_pmp_attach()
537 ap->ops->pmp_attach(ap); in sata_pmp_attach()
539 ata_for_each_link(tlink, ap, EDGE) in sata_pmp_attach()
562 struct ata_port *ap = link->ap; in sata_pmp_detach() local
571 if (ap->ops->pmp_detach) in sata_pmp_detach()
572 ap->ops->pmp_detach(ap); in sata_pmp_detach()
574 ata_for_each_link(tlink, ap, EDGE) in sata_pmp_detach()
577 spin_lock_irqsave(ap->lock, flags); in sata_pmp_detach()
578 ap->nr_pmp_links = 0; in sata_pmp_detach()
580 spin_unlock_irqrestore(ap->lock, flags); in sata_pmp_detach()
651 struct ata_port *ap = link->ap; in sata_pmp_revalidate() local
652 u32 *gscr = (void *)ap->sector_buf; in sata_pmp_revalidate()
751 static int sata_pmp_eh_recover_pmp(struct ata_port *ap, in sata_pmp_eh_recover_pmp() argument
755 struct ata_link *link = &ap->link; in sata_pmp_eh_recover_pmp()
784 ata_for_each_link(tlink, ap, EDGE) { in sata_pmp_eh_recover_pmp()
844 static int sata_pmp_eh_handle_disabled_links(struct ata_port *ap) in sata_pmp_eh_handle_disabled_links() argument
850 spin_lock_irqsave(ap->lock, flags); in sata_pmp_eh_handle_disabled_links()
852 ata_for_each_link(link, ap, EDGE) { in sata_pmp_eh_handle_disabled_links()
856 spin_unlock_irqrestore(ap->lock, flags); in sata_pmp_eh_handle_disabled_links()
874 spin_lock_irqsave(ap->lock, flags); in sata_pmp_eh_handle_disabled_links()
877 spin_unlock_irqrestore(ap->lock, flags); in sata_pmp_eh_handle_disabled_links()
884 struct ata_port *ap = link->ap; in sata_pmp_handle_link_fail() local
896 spin_lock_irqsave(ap->lock, flags); in sata_pmp_handle_link_fail()
898 spin_unlock_irqrestore(ap->lock, flags); in sata_pmp_handle_link_fail()
922 static int sata_pmp_eh_recover(struct ata_port *ap) in sata_pmp_eh_recover() argument
924 struct ata_port_operations *ops = ap->ops; in sata_pmp_eh_recover()
926 struct ata_link *pmp_link = &ap->link; in sata_pmp_eh_recover()
937 ata_for_each_link(link, ap, EDGE) in sata_pmp_eh_recover()
942 if (!sata_pmp_attached(ap)) { in sata_pmp_eh_recover()
943 rc = ata_eh_recover(ap, ops->prereset, ops->softreset, in sata_pmp_eh_recover()
946 ata_for_each_dev(dev, &ap->link, ALL) in sata_pmp_eh_recover()
955 ata_for_each_link(link, ap, EDGE) in sata_pmp_eh_recover()
962 rc = sata_pmp_eh_recover_pmp(ap, ops->prereset, ops->softreset, in sata_pmp_eh_recover()
984 rc = sata_pmp_eh_handle_disabled_links(ap); in sata_pmp_eh_recover()
989 rc = ata_eh_recover(ap, ops->pmp_prereset, ops->pmp_softreset, in sata_pmp_eh_recover()
995 rc = sata_scr_read(&ap->link, SCR_NOTIFICATION, &sntf); in sata_pmp_eh_recover()
997 sata_scr_write(&ap->link, SCR_NOTIFICATION, sntf); in sata_pmp_eh_recover()
1003 ata_for_each_link(link, ap, EDGE) in sata_pmp_eh_recover()
1039 ata_for_each_link(link, ap, EDGE) { in sata_pmp_eh_recover()
1055 ata_port_info(ap, in sata_pmp_eh_recover()
1073 if (ap->pflags & ATA_PFLAG_UNLOADING) in sata_pmp_eh_recover()
1076 if (!sata_pmp_attached(ap)) in sata_pmp_eh_recover()
1084 ata_port_err(ap, "failed to recover PMP after %d tries, giving up\n", in sata_pmp_eh_recover()
1102 void sata_pmp_error_handler(struct ata_port *ap) in sata_pmp_error_handler() argument
1104 ata_eh_autopsy(ap); in sata_pmp_error_handler()
1105 ata_eh_report(ap); in sata_pmp_error_handler()
1106 sata_pmp_eh_recover(ap); in sata_pmp_error_handler()
1107 ata_eh_finish(ap); in sata_pmp_error_handler()