Home
last modified time | relevance | path

Searched refs:pmp (Results 1 - 25 of 59) sorted by relevance

123

/kernel/linux/linux-5.10/drivers/infiniband/hw/qib/
H A Dqib_mad.c1151 static int pma_get_classportinfo(struct ib_pma_mad *pmp, in pma_get_classportinfo() argument
1155 (struct ib_class_port_info *)pmp->data; in pma_get_classportinfo()
1158 memset(pmp->data, 0, sizeof(pmp->data)); in pma_get_classportinfo()
1160 if (pmp->mad_hdr.attr_mod != 0) in pma_get_classportinfo()
1161 pmp->mad_hdr.status |= IB_SMP_INVALID_FIELD; in pma_get_classportinfo()
1179 return reply((struct ib_smp *) pmp); in pma_get_classportinfo()
1182 static int pma_get_portsamplescontrol(struct ib_pma_mad *pmp, in pma_get_portsamplescontrol() argument
1186 (struct ib_pma_portsamplescontrol *)pmp->data; in pma_get_portsamplescontrol()
1194 memset(pmp in pma_get_portsamplescontrol()
1220 pma_set_portsamplescontrol(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_set_portsamplescontrol() argument
1349 pma_get_portsamplesresult(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_get_portsamplesresult() argument
1388 pma_get_portsamplesresult_ext(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_get_portsamplesresult_ext() argument
1430 pma_get_portcounters(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_get_portcounters() argument
1528 pma_get_portcounters_cong(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_get_portcounters_cong() argument
1658 pma_get_portcounters_ext(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_get_portcounters_ext() argument
1705 pma_set_portcounters(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_set_portcounters() argument
1768 pma_set_portcounters_cong(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_set_portcounters_cong() argument
1819 pma_set_portcounters_ext(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_set_portcounters_ext() argument
2016 struct ib_pma_mad *pmp = (struct ib_pma_mad *)out_mad; process_perf() local
[all...]
/kernel/linux/linux-6.6/drivers/infiniband/hw/qib/
H A Dqib_mad.c1151 static int pma_get_classportinfo(struct ib_pma_mad *pmp, in pma_get_classportinfo() argument
1155 (struct ib_class_port_info *)pmp->data; in pma_get_classportinfo()
1158 memset(pmp->data, 0, sizeof(pmp->data)); in pma_get_classportinfo()
1160 if (pmp->mad_hdr.attr_mod != 0) in pma_get_classportinfo()
1161 pmp->mad_hdr.status |= IB_SMP_INVALID_FIELD; in pma_get_classportinfo()
1179 return reply((struct ib_smp *) pmp); in pma_get_classportinfo()
1182 static int pma_get_portsamplescontrol(struct ib_pma_mad *pmp, in pma_get_portsamplescontrol() argument
1186 (struct ib_pma_portsamplescontrol *)pmp->data; in pma_get_portsamplescontrol()
1194 memset(pmp in pma_get_portsamplescontrol()
1220 pma_set_portsamplescontrol(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_set_portsamplescontrol() argument
1349 pma_get_portsamplesresult(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_get_portsamplesresult() argument
1388 pma_get_portsamplesresult_ext(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_get_portsamplesresult_ext() argument
1430 pma_get_portcounters(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_get_portcounters() argument
1528 pma_get_portcounters_cong(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_get_portcounters_cong() argument
1658 pma_get_portcounters_ext(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_get_portcounters_ext() argument
1705 pma_set_portcounters(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_set_portcounters() argument
1768 pma_set_portcounters_cong(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_set_portcounters_cong() argument
1819 pma_set_portcounters_ext(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_set_portcounters_ext() argument
2016 struct ib_pma_mad *pmp = (struct ib_pma_mad *)out_mad; process_perf() local
[all...]
/kernel/linux/linux-5.10/drivers/ata/
H A Dlibata-pmp.c3 * libata-pmp.c - libata port multiplier support
50 tf.device = link->pmp; in sata_pmp_read()
86 tf.device = link->pmp; in sata_pmp_write()
395 if (link->pmp < 5) in sata_pmp_quirks()
400 if (link->pmp == 5) in sata_pmp_quirks()
427 if (link->pmp <= 5) in sata_pmp_quirks()
434 if (link->pmp == 6) in sata_pmp_quirks()
466 if (link->pmp == 4) in sata_pmp_quirks()
509 WARN_ON(link->pmp != 0); in sata_pmp_attach()
510 link->pmp in sata_pmp_attach()
[all...]
H A Dahci_dm816.c106 int pmp, ret; in ahci_dm816_softreset() local
108 pmp = sata_srst_pmp(link); in ahci_dm816_softreset()
115 * sata_srst_pmp(). If this call fails, we retry with pmp = 0. in ahci_dm816_softreset()
117 ret = ahci_do_softreset(link, class, pmp, deadline, ahci_check_ready); in ahci_dm816_softreset()
118 if (pmp && ret == -EBUSY) in ahci_dm816_softreset()
H A Dlibahci.c863 emp = &pp->em_priv[link->pmp]; in ahci_start_port()
967 struct ahci_em_priv *emp = &pp->em_priv[link->pmp]; in ahci_sw_activity()
988 led_message |= ap->port_no | (link->pmp << 8); in ahci_sw_activity_blink()
1025 struct ahci_em_priv *emp = &pp->em_priv[link->pmp]; in ahci_init_sw_activity()
1061 int pmp; in ahci_transmit_led_message() local
1065 pmp = (state & EM_MSG_LED_PMP_SLOT) >> 8; in ahci_transmit_led_message()
1066 if (pmp < EM_MAX_SLOTS) in ahci_transmit_led_message()
1067 emp = &pp->em_priv[pmp]; in ahci_transmit_led_message()
1122 emp = &pp->em_priv[link->pmp]; in ahci_led_show()
1132 int pmp; in ahci_led_store() local
1356 ahci_exec_polled_cmd(struct ata_port *ap, int pmp, struct ata_taskfile *tf, int is_cmd, u16 flags, unsigned long timeout_msec) ahci_exec_polled_cmd() argument
1395 ahci_do_softreset(struct ata_link *link, unsigned int *class, int pmp, unsigned long deadline, int (*check_ready)(struct ata_link *link)) ahci_do_softreset() argument
1489 int pmp = sata_srst_pmp(link); ahci_softreset() local
1518 int pmp = sata_srst_pmp(link); ahci_pmp_retry_softreset() local
1722 int pmp = fbs >> PORT_FBS_DWE_OFFSET; ahci_error_intr() local
[all...]
H A Dahci_da850.c96 int pmp, ret; in ahci_da850_softreset() local
98 pmp = sata_srst_pmp(link); in ahci_da850_softreset()
105 * sata_srst_pmp(). If this call fails, we retry with pmp = 0. in ahci_da850_softreset()
107 ret = ahci_do_softreset(link, class, pmp, deadline, ahci_check_ready); in ahci_da850_softreset()
108 if (pmp && ret == -EBUSY) in ahci_da850_softreset()
H A Dahci_seattle.c86 int pmp; in seattle_transmit_led_message() local
91 pmp = (state & EM_MSG_LED_PMP_SLOT) >> 8; in seattle_transmit_led_message()
92 if (pmp >= EM_MAX_SLOTS) in seattle_transmit_led_message()
94 emp = &pp->em_priv[pmp]; in seattle_transmit_led_message()
H A Dahci_xgene.c186 * workaround is to write the pmp value to PxFBS.DEV field before issuing
199 * Write the pmp value to PxFBS.DEV in xgene_ahci_qc_issue()
205 port_fbs |= qc->dev->link->pmp << PORT_FBS_DEV_OFFSET; in xgene_ahci_qc_issue()
448 * is to write the pmp value to PxFBS.DEV field before issuing any command
454 int pmp = sata_srst_pmp(link); in xgene_ahci_pmp_softreset() local
461 * Set PxFBS.DEV field with pmp in xgene_ahci_pmp_softreset()
466 port_fbs |= pmp << PORT_FBS_DEV_OFFSET; in xgene_ahci_pmp_softreset()
469 rc = ahci_do_softreset(link, class, pmp, deadline, ahci_check_ready); in xgene_ahci_pmp_softreset()
484 * is to write the pmp value to PxFBS.DEV field before issuing any command
488 * 2. Program PxFBS.DEV with pmp valu
498 int pmp = sata_srst_pmp(link); xgene_ahci_softreset() local
[all...]
H A Dsata_sis.c122 if (link->pmp) in get_scr_cfg_addr()
154 void __iomem *base = ap->ioaddr.scr_addr + link->pmp * 0x10; in sis_scr_read()
169 void __iomem *base = ap->ioaddr.scr_addr + link->pmp * 0x10; in sis_scr_write()
H A Dsata_sil24.c594 static int sil24_exec_polled_cmd(struct ata_port *ap, int pmp, in sil24_exec_polled_cmd() argument
607 ata_tf_to_fis(tf, pmp, is_cmd, prb->fis); in sil24_exec_polled_cmd()
650 int pmp = sata_srst_pmp(link); in sil24_softreset() local
669 rc = sil24_exec_polled_cmd(ap, pmp, &tf, 0, PRB_CTRL_SRST, in sil24_softreset()
873 ata_tf_to_fis(&qc->tf, qc->dev->link->pmp, 1, prb->fis); in sil24_qc_prep()
1016 int pmp; in sil24_error_intr() local
1036 pmp = (context >> 5) & 0xf; in sil24_error_intr()
1038 if (pmp < ap->nr_pmp_links) { in sil24_error_intr()
1039 link = &ap->pmp_link[pmp]; in sil24_error_intr()
H A Dsata_fsl.c521 ata_tf_to_fis(&qc->tf, qc->dev->link->pmp, 1, (u8 *) &cd->cfis); in sata_fsl_qc_prep()
567 iowrite32(qc->dev->link->pmp, CQPMP + hcr_base); in sata_fsl_qc_issue()
938 int pmp = sata_srst_pmp(link); in sata_fsl_softreset() local
970 ata_tf_to_fis(&tf, pmp, 0, cfis); in sata_fsl_softreset()
985 if (pmp != SATA_PMP_CTRL_PORT) in sata_fsl_softreset()
986 iowrite32(pmp, CQPMP + hcr_base); in sata_fsl_softreset()
1019 ata_tf_to_fis(&tf, pmp, 0, cfis); in sata_fsl_softreset()
1021 if (pmp != SATA_PMP_CTRL_PORT) in sata_fsl_softreset()
1022 iowrite32(pmp, CQPMP + hcr_base); in sata_fsl_softreset()
H A Dsata_highbank.c135 int pmp, i; in ecx_transmit_led_message() local
140 pmp = (state & EM_MSG_LED_PMP_SLOT) >> 8; in ecx_transmit_led_message()
141 if (pmp < EM_MAX_SLOTS) in ecx_transmit_led_message()
142 emp = &pp->em_priv[pmp]; in ecx_transmit_led_message()
/kernel/linux/linux-6.6/drivers/ata/
H A Dlibata-pmp.c3 * libata-pmp.c - libata port multiplier support
50 tf.device = link->pmp; in sata_pmp_read()
86 tf.device = link->pmp; in sata_pmp_write()
395 if (link->pmp < 5) in sata_pmp_quirks()
400 if (link->pmp == 5) in sata_pmp_quirks()
427 if (link->pmp <= 5) in sata_pmp_quirks()
434 if (link->pmp == 6) in sata_pmp_quirks()
466 if (link->pmp == 4) in sata_pmp_quirks()
509 WARN_ON(link->pmp != 0); in sata_pmp_attach()
510 link->pmp in sata_pmp_attach()
[all...]
H A Dahci_dm816.c106 int pmp, ret; in ahci_dm816_softreset() local
108 pmp = sata_srst_pmp(link); in ahci_dm816_softreset()
115 * sata_srst_pmp(). If this call fails, we retry with pmp = 0. in ahci_dm816_softreset()
117 ret = ahci_do_softreset(link, class, pmp, deadline, ahci_check_ready); in ahci_dm816_softreset()
118 if (pmp && ret == -EBUSY) in ahci_dm816_softreset()
H A Dlibahci.c921 emp = &pp->em_priv[link->pmp]; in ahci_start_port()
1024 struct ahci_em_priv *emp = &pp->em_priv[link->pmp]; in ahci_sw_activity()
1045 led_message |= ap->port_no | (link->pmp << 8); in ahci_sw_activity_blink()
1082 struct ahci_em_priv *emp = &pp->em_priv[link->pmp]; in ahci_init_sw_activity()
1118 int pmp; in ahci_transmit_led_message() local
1122 pmp = (state & EM_MSG_LED_PMP_SLOT) >> 8; in ahci_transmit_led_message()
1123 if (pmp < EM_MAX_SLOTS) in ahci_transmit_led_message()
1124 emp = &pp->em_priv[pmp]; in ahci_transmit_led_message()
1179 emp = &pp->em_priv[link->pmp]; in ahci_led_show()
1189 int pmp; in ahci_led_store() local
1413 ahci_exec_polled_cmd(struct ata_port *ap, int pmp, struct ata_taskfile *tf, int is_cmd, u16 flags, unsigned int timeout_msec) ahci_exec_polled_cmd() argument
1452 ahci_do_softreset(struct ata_link *link, unsigned int *class, int pmp, unsigned long deadline, int (*check_ready)(struct ata_link *link)) ahci_do_softreset() argument
1544 int pmp = sata_srst_pmp(link); ahci_softreset() local
1571 int pmp = sata_srst_pmp(link); ahci_pmp_retry_softreset() local
1767 int pmp = fbs >> PORT_FBS_DWE_OFFSET; ahci_error_intr() local
[all...]
H A Dahci_da850.c96 int pmp, ret; in ahci_da850_softreset() local
98 pmp = sata_srst_pmp(link); in ahci_da850_softreset()
105 * sata_srst_pmp(). If this call fails, we retry with pmp = 0. in ahci_da850_softreset()
107 ret = ahci_do_softreset(link, class, pmp, deadline, ahci_check_ready); in ahci_da850_softreset()
108 if (pmp && ret == -EBUSY) in ahci_da850_softreset()
H A Dahci_seattle.c85 int pmp; in seattle_transmit_led_message() local
90 pmp = (state & EM_MSG_LED_PMP_SLOT) >> 8; in seattle_transmit_led_message()
91 if (pmp >= EM_MAX_SLOTS) in seattle_transmit_led_message()
93 emp = &pp->em_priv[pmp]; in seattle_transmit_led_message()
H A Dahci_xgene.c185 * workaround is to write the pmp value to PxFBS.DEV field before issuing
198 * Write the pmp value to PxFBS.DEV in xgene_ahci_qc_issue()
204 port_fbs |= qc->dev->link->pmp << PORT_FBS_DEV_OFFSET; in xgene_ahci_qc_issue()
447 * is to write the pmp value to PxFBS.DEV field before issuing any command
453 int pmp = sata_srst_pmp(link); in xgene_ahci_pmp_softreset() local
460 * Set PxFBS.DEV field with pmp in xgene_ahci_pmp_softreset()
465 port_fbs |= pmp << PORT_FBS_DEV_OFFSET; in xgene_ahci_pmp_softreset()
468 rc = ahci_do_softreset(link, class, pmp, deadline, ahci_check_ready); in xgene_ahci_pmp_softreset()
483 * is to write the pmp value to PxFBS.DEV field before issuing any command
487 * 2. Program PxFBS.DEV with pmp valu
497 int pmp = sata_srst_pmp(link); xgene_ahci_softreset() local
[all...]
H A Dsata_sis.c122 if (link->pmp) in get_scr_cfg_addr()
154 void __iomem *base = ap->ioaddr.scr_addr + link->pmp * 0x10; in sis_scr_read()
169 void __iomem *base = ap->ioaddr.scr_addr + link->pmp * 0x10; in sis_scr_write()
H A Dsata_fsl.c514 ata_tf_to_fis(&qc->tf, qc->dev->link->pmp, 1, (u8 *) &cd->cfis); in sata_fsl_qc_prep()
552 iowrite32(qc->dev->link->pmp, CQPMP + hcr_base); in sata_fsl_qc_issue()
922 int pmp = sata_srst_pmp(link); in sata_fsl_softreset() local
949 ata_tf_to_fis(&tf, pmp, 0, cfis); in sata_fsl_softreset()
964 if (pmp != SATA_PMP_CTRL_PORT) in sata_fsl_softreset()
965 iowrite32(pmp, CQPMP + hcr_base); in sata_fsl_softreset()
1000 ata_tf_to_fis(&tf, pmp, 0, cfis); in sata_fsl_softreset()
1002 if (pmp != SATA_PMP_CTRL_PORT) in sata_fsl_softreset()
1003 iowrite32(pmp, CQPMP + hcr_base); in sata_fsl_softreset()
H A Dsata_sil24.c597 static int sil24_exec_polled_cmd(struct ata_port *ap, int pmp, in sil24_exec_polled_cmd() argument
610 ata_tf_to_fis(tf, pmp, is_cmd, prb->fis); in sil24_exec_polled_cmd()
653 int pmp = sata_srst_pmp(link); in sil24_softreset() local
670 rc = sil24_exec_polled_cmd(ap, pmp, &tf, 0, PRB_CTRL_SRST, in sil24_softreset()
873 ata_tf_to_fis(&qc->tf, qc->dev->link->pmp, 1, prb->fis); in sil24_qc_prep()
1015 int pmp; in sil24_error_intr() local
1035 pmp = (context >> 5) & 0xf; in sil24_error_intr()
1037 if (pmp < ap->nr_pmp_links) { in sil24_error_intr()
1038 link = &ap->pmp_link[pmp]; in sil24_error_intr()
/kernel/linux/linux-5.10/drivers/infiniband/hw/hfi1/
H A Dmad.c2602 static int pma_get_opa_classportinfo(struct opa_pma_mad *pmp, in pma_get_opa_classportinfo() argument
2606 (struct opa_class_port_info *)pmp->data; in pma_get_opa_classportinfo()
2608 memset(pmp->data, 0, sizeof(pmp->data)); in pma_get_opa_classportinfo()
2610 if (pmp->mad_hdr.attr_mod != 0) in pma_get_opa_classportinfo()
2611 pmp->mad_hdr.status |= IB_SMP_INVALID_FIELD; in pma_get_opa_classportinfo()
2623 return reply((struct ib_mad_hdr *)pmp); in pma_get_opa_classportinfo()
2723 static int pma_get_opa_portstatus(struct opa_pma_mad *pmp, in pma_get_opa_portstatus() argument
2728 (struct opa_port_status_req *)pmp->data; in pma_get_opa_portstatus()
2734 u32 nports = be32_to_cpu(pmp in pma_get_opa_portstatus()
2974 pma_get_opa_datacounters(struct opa_pma_mad *pmp, struct ib_device *ibdev, u8 port, u32 *resp_len) pma_get_opa_datacounters() argument
3125 pma_get_ib_portcounters_ext(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_get_ib_portcounters_ext() argument
3195 pma_get_opa_porterrors(struct opa_pma_mad *pmp, struct ib_device *ibdev, u8 port, u32 *resp_len) pma_get_opa_porterrors() argument
3285 pma_get_ib_portcounters(struct ib_pma_mad *pmp, struct ib_device *ibdev, u8 port) pma_get_ib_portcounters() argument
3370 pma_get_opa_errorinfo(struct opa_pma_mad *pmp, struct ib_device *ibdev, u8 port, u32 *resp_len) pma_get_opa_errorinfo() argument
3469 pma_set_opa_portstatus(struct opa_pma_mad *pmp, struct ib_device *ibdev, u8 port, u32 *resp_len) pma_set_opa_portstatus() argument
3621 pma_set_opa_errorinfo(struct opa_pma_mad *pmp, struct ib_device *ibdev, u8 port, u32 *resp_len) pma_set_opa_errorinfo() argument
4679 struct ib_pma_mad *pmp = (struct ib_pma_mad *)out_mad; process_perf() local
4741 struct opa_pma_mad *pmp = (struct opa_pma_mad *)out_mad; process_perf_opa() local
[all...]
/kernel/linux/linux-6.6/drivers/infiniband/hw/hfi1/
H A Dmad.c2560 static int pma_get_opa_classportinfo(struct opa_pma_mad *pmp, in pma_get_opa_classportinfo() argument
2564 (struct opa_class_port_info *)pmp->data; in pma_get_opa_classportinfo()
2566 memset(pmp->data, 0, sizeof(pmp->data)); in pma_get_opa_classportinfo()
2568 if (pmp->mad_hdr.attr_mod != 0) in pma_get_opa_classportinfo()
2569 pmp->mad_hdr.status |= IB_SMP_INVALID_FIELD; in pma_get_opa_classportinfo()
2581 return reply((struct ib_mad_hdr *)pmp); in pma_get_opa_classportinfo()
2681 static int pma_get_opa_portstatus(struct opa_pma_mad *pmp, in pma_get_opa_portstatus() argument
2686 (struct opa_port_status_req *)pmp->data; in pma_get_opa_portstatus()
2692 u32 nports = be32_to_cpu(pmp in pma_get_opa_portstatus()
2932 pma_get_opa_datacounters(struct opa_pma_mad *pmp, struct ib_device *ibdev, u32 port, u32 *resp_len) pma_get_opa_datacounters() argument
3083 pma_get_ib_portcounters_ext(struct ib_pma_mad *pmp, struct ib_device *ibdev, u32 port) pma_get_ib_portcounters_ext() argument
3153 pma_get_opa_porterrors(struct opa_pma_mad *pmp, struct ib_device *ibdev, u32 port, u32 *resp_len) pma_get_opa_porterrors() argument
3243 pma_get_ib_portcounters(struct ib_pma_mad *pmp, struct ib_device *ibdev, u32 port) pma_get_ib_portcounters() argument
3328 pma_get_opa_errorinfo(struct opa_pma_mad *pmp, struct ib_device *ibdev, u32 port, u32 *resp_len) pma_get_opa_errorinfo() argument
3427 pma_set_opa_portstatus(struct opa_pma_mad *pmp, struct ib_device *ibdev, u32 port, u32 *resp_len) pma_set_opa_portstatus() argument
3579 pma_set_opa_errorinfo(struct opa_pma_mad *pmp, struct ib_device *ibdev, u32 port, u32 *resp_len) pma_set_opa_errorinfo() argument
4637 struct ib_pma_mad *pmp = (struct ib_pma_mad *)out_mad; process_perf() local
4699 struct opa_pma_mad *pmp = (struct opa_pma_mad *)out_mad; process_perf_opa() local
[all...]
/kernel/linux/linux-6.6/include/trace/events/
H A Dlibata.h211 __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
277 __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
455 __entry->ata_dev = dev->link->pmp + dev->devno;
482 __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
508 __entry->ata_dev = link->pmp + devno;
652 __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
697 __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
/kernel/linux/linux-5.10/include/trace/events/
H A Dlibata.h180 __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
238 __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
294 __entry->ata_dev = dev->link->pmp + dev->devno;
321 __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;

Completed in 37 milliseconds

123