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()
747 static int sata_pmp_eh_recover_pmp(struct ata_port *ap, in sata_pmp_eh_recover_pmp() argument
751 struct ata_link *link = &ap->link; in sata_pmp_eh_recover_pmp()
779 ata_for_each_link(tlink, ap, EDGE) { in sata_pmp_eh_recover_pmp()
837 static int sata_pmp_eh_handle_disabled_links(struct ata_port *ap) in sata_pmp_eh_handle_disabled_links() argument
843 spin_lock_irqsave(ap->lock, flags); in sata_pmp_eh_handle_disabled_links()
845 ata_for_each_link(link, ap, EDGE) { in sata_pmp_eh_handle_disabled_links()
849 spin_unlock_irqrestore(ap->lock, flags); in sata_pmp_eh_handle_disabled_links()
867 spin_lock_irqsave(ap->lock, flags); in sata_pmp_eh_handle_disabled_links()
870 spin_unlock_irqrestore(ap->lock, flags); in sata_pmp_eh_handle_disabled_links()
877 struct ata_port *ap = link->ap; in sata_pmp_handle_link_fail() local
889 spin_lock_irqsave(ap->lock, flags); in sata_pmp_handle_link_fail()
891 spin_unlock_irqrestore(ap->lock, flags); in sata_pmp_handle_link_fail()
915 static int sata_pmp_eh_recover(struct ata_port *ap) in sata_pmp_eh_recover() argument
917 struct ata_port_operations *ops = ap->ops; in sata_pmp_eh_recover()
919 struct ata_link *pmp_link = &ap->link; in sata_pmp_eh_recover()
930 ata_for_each_link(link, ap, EDGE) in sata_pmp_eh_recover()
935 if (!sata_pmp_attached(ap)) { in sata_pmp_eh_recover()
936 rc = ata_eh_recover(ap, ops->prereset, ops->softreset, in sata_pmp_eh_recover()
939 ata_for_each_dev(dev, &ap->link, ALL) in sata_pmp_eh_recover()
948 ata_for_each_link(link, ap, EDGE) in sata_pmp_eh_recover()
955 rc = sata_pmp_eh_recover_pmp(ap, ops->prereset, ops->softreset, in sata_pmp_eh_recover()
977 rc = sata_pmp_eh_handle_disabled_links(ap); in sata_pmp_eh_recover()
982 rc = ata_eh_recover(ap, ops->pmp_prereset, ops->pmp_softreset, in sata_pmp_eh_recover()
988 rc = sata_scr_read(&ap->link, SCR_NOTIFICATION, &sntf); in sata_pmp_eh_recover()
990 sata_scr_write(&ap->link, SCR_NOTIFICATION, sntf); in sata_pmp_eh_recover()
996 ata_for_each_link(link, ap, EDGE) in sata_pmp_eh_recover()
1032 ata_for_each_link(link, ap, EDGE) { in sata_pmp_eh_recover()
1048 ata_port_info(ap, in sata_pmp_eh_recover()
1066 if (ap->pflags & ATA_PFLAG_UNLOADING) in sata_pmp_eh_recover()
1069 if (!sata_pmp_attached(ap)) in sata_pmp_eh_recover()
1077 ata_port_err(ap, "failed to recover PMP after %d tries, giving up\n", in sata_pmp_eh_recover()
1095 void sata_pmp_error_handler(struct ata_port *ap) in sata_pmp_error_handler() argument
1097 ata_eh_autopsy(ap); in sata_pmp_error_handler()
1098 ata_eh_report(ap); in sata_pmp_error_handler()
1099 sata_pmp_eh_recover(ap); in sata_pmp_error_handler()
1100 ata_eh_finish(ap); in sata_pmp_error_handler()