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()
1178 struct ahci_host_priv *hpriv = dev->link->ap->host->private_data; in ahci_dev_config()
1301 int ahci_do_softreset(struct ata_link *link, unsigned int *class, in ahci_do_softreset() argument
1303 int (*check_ready)(struct ata_link *link)) in ahci_do_softreset() argument
1305 struct ata_port *ap = link->ap; in ahci_do_softreset()
1319 ata_link_warn(link, "failed to reset engine (errno=%d)\n", rc); in ahci_do_softreset()
1326 if (!ata_is_host_link(link) && pp->fbs_enabled) { in ahci_do_softreset()
1331 ata_tf_init(link->device, &tf); in ahci_do_softreset()
1355 rc = ata_wait_after_reset(link, deadline, check_ready); in ahci_do_softreset()
1362 ata_link_info(link, "device not ready, treating as offline\n"); in ahci_do_softreset()
1379 ata_link_err(link, "softreset failed (%s)\n", reason); in ahci_do_softreset()
1383 int ahci_check_ready(struct ata_link *link) in ahci_check_ready() argument
1385 void __iomem *port_mmio = ahci_port_base(link->ap); in ahci_check_ready()
1392 static int ahci_softreset(struct ata_link *link, unsigned int *class, in ahci_softreset() argument
1395 int pmp = sata_srst_pmp(link); in ahci_softreset()
1399 return ahci_do_softreset(link, class, pmp, deadline, ahci_check_ready); in ahci_softreset()
1403 static int ahci_bad_pmp_check_ready(struct ata_link *link) in ahci_bad_pmp_check_ready() argument
1405 void __iomem *port_mmio = ahci_port_base(link->ap); in ahci_bad_pmp_check_ready()
1419 static int ahci_pmp_retry_softreset(struct ata_link *link, unsigned int *class, in ahci_pmp_retry_softreset() argument
1422 struct ata_port *ap = link->ap; in ahci_pmp_retry_softreset()
1424 int pmp = sata_srst_pmp(link); in ahci_pmp_retry_softreset()
1430 rc = ahci_do_softreset(link, class, pmp, deadline, in ahci_pmp_retry_softreset()
1441 ata_link_warn(link, in ahci_pmp_retry_softreset()
1444 rc = ahci_do_softreset(link, class, 0, deadline, in ahci_pmp_retry_softreset()
1452 static int ahci_hardreset(struct ata_link *link, unsigned int *class, in ahci_hardreset() argument
1455 const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context); in ahci_hardreset()
1456 struct ata_port *ap = link->ap; in ahci_hardreset()
1469 ata_tf_init(link->device, &tf); in ahci_hardreset()
1473 rc = sata_link_hardreset(link, timing, deadline, &online, in ahci_hardreset()
1485 static void ahci_postreset(struct ata_link *link, unsigned int *class) in ahci_postreset() argument
1487 struct ata_port *ap = link->ap; in ahci_postreset()
1491 ata_std_postreset(link, class); in ahci_postreset()
1555 ata_tf_to_fis(&qc->tf, qc->dev->link->pmp, 1, cmd_tbl); in ahci_qc_prep()
1568 opts = cmd_fis_len | n_elem << 16 | (qc->dev->link->pmp << 12); in ahci_qc_prep()
1605 struct ata_eh_info *host_ehi = &ap->link.eh_info; in ahci_error_intr()
1606 struct ata_link *link = NULL; in ahci_error_intr() local
1619 link = &ap->pmp_link[pmp]; in ahci_error_intr()
1624 ata_for_each_link(link, ap, EDGE) in ahci_error_intr()
1625 if (ata_link_active(link)) in ahci_error_intr()
1628 if (!link) in ahci_error_intr()
1629 link = &ap->link; in ahci_error_intr()
1631 active_qc = ata_qc_from_tag(ap, link->active_tag); in ahci_error_intr()
1632 active_ehi = &link->eh_info; in ahci_error_intr()
1639 ahci_scr_read(&ap->link, SCR_ERROR, &serror); in ahci_error_intr()
1640 ahci_scr_write(&ap->link, SCR_ERROR, serror); in ahci_error_intr()
1706 ata_link_abort(link); in ahci_error_intr()
1715 struct ata_eh_info *ehi = &ap->link.eh_info; in ahci_handle_port_interrupt()
1726 if (sata_lpm_ignore_phy_events(&ap->link)) { in ahci_handle_port_interrupt()
1728 ahci_scr_write(&ap->link, SCR_ERROR, SERR_PHYRDY_CHG); in ahci_handle_port_interrupt()
1960 pp->active_link = qc->dev->link; in ahci_qc_issue()
1965 if (pp->fbs_enabled && pp->fbs_last_dev != qc->dev->link->pmp) { in ahci_qc_issue()
1968 fbs |= qc->dev->link->pmp << PORT_FBS_DEV_OFFSET; in ahci_qc_issue()
1970 pp->fbs_last_dev = qc->dev->link->pmp; in ahci_qc_issue()
1975 ahci_sw_activity(qc->dev->link); in ahci_qc_issue()
1987 rx_fis += qc->dev->link->pmp * AHCI_RX_FIS_SZ; in ahci_qc_fill_rtf()
2042 if (!ata_dev_enabled(ap->link.device)) in ahci_error_handler()
2060 struct ata_device *dev = ap->link.device; in ahci_set_aggressive_devslp()