Lines Matching refs:link

59 static int ahci_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
69 static int ahci_scr_read(struct ata_link *link, unsigned int sc_reg, u32 *val);
70 static int ahci_scr_write(struct ata_link *link, unsigned int sc_reg, u32 val);
83 static int ahci_softreset(struct ata_link *link, unsigned int *class,
85 static int ahci_pmp_retry_softreset(struct ata_link *link, unsigned int *class,
87 static int ahci_hardreset(struct ata_link *link, unsigned int *class,
89 static void ahci_postreset(struct ata_link *link, unsigned int *class);
98 static void ahci_init_sw_activity(struct ata_link *link);
556 static int ahci_scr_read(struct ata_link *link, unsigned int sc_reg, u32 *val) in ahci_scr_read() argument
558 void __iomem *port_mmio = ahci_port_base(link->ap); in ahci_scr_read()
559 int offset = ahci_scr_offset(link->ap, sc_reg); in ahci_scr_read()
568 static int ahci_scr_write(struct ata_link *link, unsigned int sc_reg, u32 val) in ahci_scr_write() argument
570 void __iomem *port_mmio = ahci_port_base(link->ap); in ahci_scr_write()
571 int offset = ahci_scr_offset(link->ap, sc_reg); in ahci_scr_write()
683 static int ahci_set_lpm(struct ata_link *link, enum ata_lpm_policy policy, in ahci_set_lpm() argument
686 struct ata_port *ap = link->ap; in ahci_set_lpm()
700 sata_link_scr_lpm(link, policy, false); in ahci_set_lpm()
728 (link->device->flags & ATA_DFLAG_DEVSLP)) { in ahci_set_lpm()
736 sata_link_scr_lpm(link, policy, false); in ahci_set_lpm()
772 struct ata_link *link; in ahci_start_port() local
786 ata_for_each_link(link, ap, EDGE) { in ahci_start_port()
787 emp = &pp->em_priv[link->pmp]; in ahci_start_port()
811 ata_for_each_link(link, ap, EDGE) in ahci_start_port()
812 ahci_init_sw_activity(link); in ahci_start_port()
885 static void ahci_sw_activity(struct ata_link *link) in ahci_sw_activity() argument
887 struct ata_port *ap = link->ap; in ahci_sw_activity()
889 struct ahci_em_priv *emp = &pp->em_priv[link->pmp]; in ahci_sw_activity()
891 if (!(link->flags & ATA_LFLAG_SW_ACTIVITY)) in ahci_sw_activity()
901 struct ata_link *link = (struct ata_link *)arg; in ahci_sw_activity_blink() local
902 struct ata_port *ap = link->ap; in ahci_sw_activity_blink()
904 struct ahci_em_priv *emp = &pp->em_priv[link->pmp]; in ahci_sw_activity_blink()
910 led_message |= ap->port_no | (link->pmp << 8); in ahci_sw_activity_blink()
943 static void ahci_init_sw_activity(struct ata_link *link) in ahci_init_sw_activity() argument
945 struct ata_port *ap = link->ap; in ahci_init_sw_activity()
947 struct ahci_em_priv *emp = &pp->em_priv[link->pmp]; in ahci_init_sw_activity()
951 setup_timer(&emp->timer, ahci_sw_activity_blink, (unsigned long)link); in ahci_init_sw_activity()
955 link->flags |= ATA_LFLAG_SW_ACTIVITY; in ahci_init_sw_activity()
1034 struct ata_link *link; in ahci_led_show() local
1038 ata_for_each_link(link, ap, EDGE) { in ahci_led_show()
1039 emp = &pp->em_priv[link->pmp]; in ahci_led_show()
1075 struct ata_link *link = dev->link; in ahci_activity_store() local
1076 struct ata_port *ap = link->ap; in ahci_activity_store()
1078 struct ahci_em_priv *emp = &pp->em_priv[link->pmp]; in ahci_activity_store()
1084 link->flags &= ~(ATA_LFLAG_SW_ACTIVITY); in ahci_activity_store()
1088 port_led_state |= (ap->port_no | (link->pmp << 8)); in ahci_activity_store()
1091 link->flags |= ATA_LFLAG_SW_ACTIVITY; in ahci_activity_store()
1095 port_led_state |= (ap->port_no | (link->pmp << 8)); in ahci_activity_store()
1106 struct ata_link *link = dev->link; in ahci_activity_show() local
1107 struct ata_port *ap = link->ap; in ahci_activity_show()
1109 struct ahci_em_priv *emp = &pp->em_priv[link->pmp]; in ahci_activity_show()
1172 struct ahci_host_priv *hpriv = dev->link->ap->host->private_data; in ahci_dev_config()
1286 int ahci_do_softreset(struct ata_link *link, unsigned int *class, in ahci_do_softreset() argument
1288 int (*check_ready)(struct ata_link *link)) in ahci_do_softreset() argument
1290 struct ata_port *ap = link->ap; in ahci_do_softreset()
1304 ata_link_warn(link, "failed to reset engine (errno=%d)\n", rc); in ahci_do_softreset()
1311 if (!ata_is_host_link(link) && pp->fbs_enabled) { in ahci_do_softreset()
1316 ata_tf_init(link->device, &tf); in ahci_do_softreset()
1340 rc = ata_wait_after_reset(link, deadline, check_ready); in ahci_do_softreset()
1347 ata_link_info(link, "device not ready, treating as offline\n"); in ahci_do_softreset()
1364 ata_link_err(link, "softreset failed (%s)\n", reason); in ahci_do_softreset()
1368 int ahci_check_ready(struct ata_link *link) in ahci_check_ready() argument
1370 void __iomem *port_mmio = ahci_port_base(link->ap); in ahci_check_ready()
1377 static int ahci_softreset(struct ata_link *link, unsigned int *class, in ahci_softreset() argument
1380 int pmp = sata_srst_pmp(link); in ahci_softreset()
1384 return ahci_do_softreset(link, class, pmp, deadline, ahci_check_ready); in ahci_softreset()
1388 static int ahci_bad_pmp_check_ready(struct ata_link *link) in ahci_bad_pmp_check_ready() argument
1390 void __iomem *port_mmio = ahci_port_base(link->ap); in ahci_bad_pmp_check_ready()
1404 static int ahci_pmp_retry_softreset(struct ata_link *link, unsigned int *class, in ahci_pmp_retry_softreset() argument
1407 struct ata_port *ap = link->ap; in ahci_pmp_retry_softreset()
1409 int pmp = sata_srst_pmp(link); in ahci_pmp_retry_softreset()
1415 rc = ahci_do_softreset(link, class, pmp, deadline, in ahci_pmp_retry_softreset()
1426 ata_link_warn(link, in ahci_pmp_retry_softreset()
1429 rc = ahci_do_softreset(link, class, 0, deadline, in ahci_pmp_retry_softreset()
1437 static int ahci_hardreset(struct ata_link *link, unsigned int *class, in ahci_hardreset() argument
1440 const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context); in ahci_hardreset()
1441 struct ata_port *ap = link->ap; in ahci_hardreset()
1454 ata_tf_init(link->device, &tf); in ahci_hardreset()
1458 rc = sata_link_hardreset(link, timing, deadline, &online, in ahci_hardreset()
1470 static void ahci_postreset(struct ata_link *link, unsigned int *class) in ahci_postreset() argument
1472 struct ata_port *ap = link->ap; in ahci_postreset()
1476 ata_std_postreset(link, class); in ahci_postreset()
1540 ata_tf_to_fis(&qc->tf, qc->dev->link->pmp, 1, cmd_tbl); in ahci_qc_prep()
1553 opts = cmd_fis_len | n_elem << 16 | (qc->dev->link->pmp << 12); in ahci_qc_prep()
1590 struct ata_eh_info *host_ehi = &ap->link.eh_info; in ahci_error_intr()
1591 struct ata_link *link = NULL; in ahci_error_intr() local
1604 link = &ap->pmp_link[pmp]; in ahci_error_intr()
1609 ata_for_each_link(link, ap, EDGE) in ahci_error_intr()
1610 if (ata_link_active(link)) in ahci_error_intr()
1613 if (!link) in ahci_error_intr()
1614 link = &ap->link; in ahci_error_intr()
1616 active_qc = ata_qc_from_tag(ap, link->active_tag); in ahci_error_intr()
1617 active_ehi = &link->eh_info; in ahci_error_intr()
1624 ahci_scr_read(&ap->link, SCR_ERROR, &serror); in ahci_error_intr()
1625 ahci_scr_write(&ap->link, SCR_ERROR, serror); in ahci_error_intr()
1691 ata_link_abort(link); in ahci_error_intr()
1700 struct ata_eh_info *ehi = &ap->link.eh_info; in ahci_handle_port_interrupt()
1711 if (sata_lpm_ignore_phy_events(&ap->link)) { in ahci_handle_port_interrupt()
1713 ahci_scr_write(&ap->link, SCR_ERROR, SERR_PHYRDY_CHG); in ahci_handle_port_interrupt()
1899 pp->active_link = qc->dev->link; in ahci_qc_issue()
1904 if (pp->fbs_enabled && pp->fbs_last_dev != qc->dev->link->pmp) { in ahci_qc_issue()
1907 fbs |= qc->dev->link->pmp << PORT_FBS_DEV_OFFSET; in ahci_qc_issue()
1909 pp->fbs_last_dev = qc->dev->link->pmp; in ahci_qc_issue()
1914 ahci_sw_activity(qc->dev->link); in ahci_qc_issue()
1926 rx_fis += qc->dev->link->pmp * AHCI_RX_FIS_SZ; in ahci_qc_fill_rtf()
1981 if (!ata_dev_enabled(ap->link.device)) in ahci_error_handler()
1999 struct ata_device *dev = ap->link.device; in ahci_set_aggressive_devslp()