Lines Matching refs:spkt

95 static int nv_sata_start(dev_info_t *dip, sata_pkt_t *spkt);
96 static int nv_sata_abort(dev_info_t *dip, sata_pkt_t *spkt, int);
111 static int nv_start_common(nv_port_t *nvp, sata_pkt_t *spkt);
113 static void nv_intr_nodata(nv_port_t *nvp, nv_slot_t *spkt);
116 static void nv_intr_pio_in(nv_port_t *nvp, nv_slot_t *spkt);
117 static void nv_intr_pio_out(nv_port_t *nvp, nv_slot_t *spkt);
121 static void nv_intr_dma(nv_port_t *nvp, struct nv_slot *spkt);
138 static void nv_complete_io(nv_port_t *nvp, sata_pkt_t *spkt, int slot);
140 static int nv_poll_wait(nv_port_t *nvp, sata_pkt_t *spkt);
147 static int nv_start_sync(nv_port_t *nvp, sata_pkt_t *spkt);
148 static int nv_abort_active(nv_port_t *nvp, sata_pkt_t *spkt, int abort_reason,
151 sata_pkt_t *spkt);
153 static int nv_start_async(nv_port_t *nvp, sata_pkt_t *spkt);
1326 nv_sata_start(dev_info_t *dip, sata_pkt_t *spkt)
1328 int cport = spkt->satapkt_device.satadev_addr.cport;
1334 spkt->satapkt_op_mode, spkt->satapkt_cmd.satacmd_cmd_reg);
1344 spkt->satapkt_reason = SATA_PKT_PORT_ERROR;
1345 nv_copy_registers(nvp, &spkt->satapkt_device, NULL);
1357 spkt->satapkt_reason = SATA_PKT_PORT_ERROR;
1358 nv_copy_registers(nvp, &spkt->satapkt_device, NULL);
1370 spkt->satapkt_reason = SATA_PKT_BUSY;
1396 spkt->satapkt_reason = SATA_PKT_BUSY;
1419 spkt->satapkt_reason = SATA_PKT_PORT_ERROR;
1420 nv_copy_registers(nvp, &spkt->satapkt_device, NULL);
1426 if (spkt->satapkt_device.satadev_type == SATA_DTYPE_PMULT) {
1432 spkt->satapkt_reason = SATA_PKT_CMD_UNSUPPORTED;
1444 if (spkt->satapkt_cmd.satacmd_flags.sata_clear_dev_reset) {
1464 !(spkt->satapkt_cmd.satacmd_flags.sata_ignore_dev_reset) &&
1472 spkt->satapkt_reason = SATA_PKT_BUSY;
1484 spkt->satapkt_reason = SATA_PKT_BUSY;
1496 spkt->satapkt_cmd.satacmd_cmd_reg);
1503 if (spkt->satapkt_op_mode &
1506 ret = nv_start_sync(nvp, spkt);
1516 ret = nv_start_async(nvp, spkt);
1538 nv_start_sync(nv_port_t *nvp, sata_pkt_t *spkt)
1547 spkt->satapkt_reason = SATA_PKT_BUSY;
1550 "ncq_run: %d non_ncq_run: %d spkt: %p",
1560 if (!(spkt->satapkt_op_mode & SATA_OPMODE_POLLING) &&
1562 spkt->satapkt_reason = SATA_PKT_BUSY;
1573 if (spkt->satapkt_op_mode & SATA_OPMODE_POLLING) {
1581 spkt->satapkt_reason = SATA_PKT_BUSY;
1583 if ((ret = nv_start_common(nvp, spkt)) != SATA_TRAN_ACCEPTED) {
1584 if (spkt->satapkt_op_mode & SATA_OPMODE_POLLING) {
1591 if (spkt->satapkt_op_mode & SATA_OPMODE_POLLING) {
1593 ret = nv_poll_wait(nvp, spkt);
1608 while (spkt->satapkt_reason == SATA_PKT_BUSY) {
1614 " done % reason %d", spkt->satapkt_reason);
1621 nv_poll_wait(nv_port_t *nvp, sata_pkt_t *spkt)
1638 NV_SEC2USEC(spkt->satapkt_time), NV_NOSLEEP) == B_FALSE) {
1640 spkt->satapkt_reason = SATA_PKT_TIMEOUT;
1641 nv_copy_registers(nvp, &spkt->satapkt_device, spkt);
1643 nv_complete_io(nvp, spkt, 0);
1665 nv_copy_registers(nvp, &spkt->satapkt_device, spkt);
1667 spkt->satapkt_reason = SATA_PKT_TIMEOUT;
1668 nv_complete_io(nvp, spkt, 0);
1692 nv_sata_abort(dev_info_t *dip, sata_pkt_t *spkt, int flag)
1694 int cport = spkt->satapkt_device.satadev_addr.cport;
1700 NVLOG(NVDBG_ENTRY, nvc, nvp, "nv_sata_abort %d %p", flag, spkt);
1713 * spkt == NULL then abort all commands
1715 c_a = nv_abort_active(nvp, spkt, SATA_PKT_ABORTED, B_TRUE);
1722 if (spkt == NULL) {
1726 "can't find spkt to abort", NULL);
1738 * if spkt == NULL abort all pkts running, otherwise
1743 nv_abort_active(nv_port_t *nvp, sata_pkt_t *spkt, int abort_reason,
1772 if ((spkt != NULL) && (spkt != spkt_slot)) {
2017 nv_start_common(nv_port_t *nvp, sata_pkt_t *spkt)
2019 sata_cmd_t *sata_cmdp = &spkt->satapkt_cmd;
2021 uint8_t cmd = spkt->satapkt_cmd.satacmd_cmd_reg;
2070 nv_slotp->nvslot_spkt = spkt;
2077 switch (spkt->satapkt_cmd.satacmd_cmd_reg) {
2099 } else if (spkt->satapkt_cmd.satacmd_cmd_reg == SATAC_PACKET) {
2106 spkt->satapkt_cmd.satacmd_bp->b_bcount;
2108 spkt->satapkt_cmd.satacmd_bp->b_un.b_addr;
2116 sata_free_dma_resources(spkt);
2127 spkt->satapkt_cmd.satacmd_bp->b_bcount;
2129 spkt->satapkt_cmd.satacmd_bp->b_un.b_addr;
2137 sata_free_dma_resources(spkt);
2143 spkt->satapkt_cmd.satacmd_bp->b_bcount;
2145 spkt->satapkt_cmd.satacmd_bp->b_un.b_addr;
2151 spkt->satapkt_reason = SATA_PKT_CMD_UNSUPPORTED;
2170 ((spkt->satapkt_op_mode & SATA_OPMODE_POLLING) == 0)) {
2175 nvp->nvp_last_cmd = spkt->satapkt_cmd.satacmd_cmd_reg;
2182 spkt->satapkt_reason = SATA_TRAN_PORT_ERROR;
3050 sata_pkt_t *spkt;
3140 spkt = nv_slotp->nvslot_spkt;
3142 if (spkt == NULL) {
3150 nv_copy_registers(nvp, &spkt->satapkt_device, spkt);
3154 nv_complete_io(nvp, spkt, 0);
3517 sata_pkt_t *spkt;
3634 spkt = nv_slotp->nvslot_spkt;
3636 ASSERT(spkt != NULL);
3640 nv_copy_registers(nvp, &spkt->satapkt_device, spkt);
3644 nv_complete_io(nvp, spkt, active_pkt);
3654 nv_complete_io(nv_port_t *nvp, sata_pkt_t *spkt, int slot)
3671 if (spkt->satapkt_op_mode & SATA_OPMODE_SYNCH) {
3677 if ((spkt->satapkt_op_mode & SATA_OPMODE_POLLING) == 0) {
3684 if (spkt->satapkt_comp != NULL) {
3686 (*spkt->satapkt_comp)(spkt);
3698 nv_start_async(nv_port_t *nvp, sata_pkt_t *spkt)
3704 cmd = spkt->satapkt_cmd.satacmd_cmd_reg;
3717 spkt->satapkt_reason = SATA_PKT_QUEUE_FULL;
3722 return (nv_start_common(nvp, spkt));
3733 spkt->satapkt_reason = SATA_PKT_QUEUE_FULL;
3748 spkt->satapkt_device.satadev_qdepth;
3762 spkt->satapkt_reason = SATA_PKT_QUEUE_FULL;
3767 return (nv_start_common(nvp, spkt));
4182 sata_pkt_t *spkt;
4187 spkt = nv_slotp->nvslot_spkt;
4188 satacmd = &spkt->satapkt_cmd;
4212 switch (spkt->satapkt_cmd.satacmd_addr_type) {
4313 sata_pkt_t *spkt = nv_slotp->nvslot_spkt;
4314 sata_cmd_t *sata_cmdp = &spkt->satapkt_cmd;
4399 sata_pkt_t *spkt = nv_slotp->nvslot_spkt;
4400 sata_cmd_t *sata_cmdp = &spkt->satapkt_cmd;
4509 sata_pkt_t *spkt = nv_slotp->nvslot_spkt;
4517 nv_put8(cmdhdl, nvp->nvp_cmd, spkt->satapkt_cmd.satacmd_cmd_reg);
4531 sata_pkt_t *spkt = nv_slotp->nvslot_spkt;
4538 nv_put8(cmdhdl, nvp->nvp_cmd, spkt->satapkt_cmd.satacmd_cmd_reg);
4557 spkt->satapkt_reason = SATA_PKT_TIMEOUT;
4581 nv_copy_registers(nvp, &spkt->satapkt_device, spkt);
4582 nv_complete_io(nvp, spkt, 0);
4596 sata_pkt_t *spkt = nv_slotp->nvslot_spkt;
4598 sata_cmd_t *satacmd = &spkt->satapkt_cmd;
4634 nv_put8(cmdhdl, nvp->nvp_cmd, spkt->satapkt_cmd.satacmd_cmd_reg);
4658 spkt->satapkt_reason = SATA_PKT_DEV_ERROR;
4663 spkt->satapkt_reason = SATA_PKT_TIMEOUT;
4669 nv_copy_registers(nvp, &spkt->satapkt_device, spkt);
4670 nv_complete_io(nvp, spkt, 0);
4681 ddi_rep_put16(cmdhdl, (ushort_t *)spkt->satapkt_cmd.satacmd_acdb,
4683 (spkt->satapkt_cmd.satacmd_acdb_len >> 1), DDI_DEV_NO_AUTOINCR);
4704 sata_pkt_t *spkt = nv_slotp->nvslot_spkt;
4705 sata_cmd_t *sata_cmdp = &spkt->satapkt_cmd;
4717 spkt->satapkt_reason = SATA_PKT_DEV_ERROR;
4722 spkt->satapkt_reason = SATA_PKT_COMPLETED;
4736 sata_pkt_t *spkt = nv_slotp->nvslot_spkt;
4737 sata_cmd_t *sata_cmdp = &spkt->satapkt_cmd;
4745 spkt->satapkt_reason = SATA_PKT_TIMEOUT;
4760 nv_copy_registers(nvp, &spkt->satapkt_device, spkt);
4762 spkt->satapkt_reason = SATA_PKT_DEV_ERROR;
4796 spkt->satapkt_reason = SATA_PKT_COMPLETED;
4807 sata_pkt_t *spkt = nv_slotp->nvslot_spkt;
4808 sata_cmd_t *sata_cmdp = &spkt->satapkt_cmd;
4823 spkt->satapkt_reason = SATA_PKT_TIMEOUT;
4836 nv_copy_registers(nvp, &spkt->satapkt_device, spkt);
4838 spkt->satapkt_reason = SATA_PKT_DEV_ERROR;
4855 spkt->satapkt_reason = SATA_PKT_COMPLETED;
4860 nv_copy_registers(nvp, &spkt->satapkt_device, spkt);
4861 spkt->satapkt_reason = SATA_PKT_DEV_ERROR;
4902 sata_pkt_t *spkt = nv_slotp->nvslot_spkt;
4903 sata_cmd_t *sata_cmdp = &spkt->satapkt_cmd;
4919 spkt->satapkt_reason = SATA_PKT_DEV_ERROR;
4922 spkt->satapkt_reason = SATA_PKT_TIMEOUT;
4939 nv_copy_registers(nvp, &spkt->satapkt_device, spkt);
4943 spkt->satapkt_reason = SATA_PKT_DEV_ERROR;
4967 nv_copy_registers(nvp, &spkt->satapkt_device,
4968 spkt);
4970 spkt->satapkt_reason = SATA_PKT_DEV_ERROR;
4979 spkt->satapkt_reason = SATA_PKT_DEV_ERROR;
4981 nv_copy_registers(nvp, &spkt->satapkt_device, spkt);
5010 spkt->satapkt_reason = SATA_PKT_DEV_ERROR;
5049 spkt->satapkt_cmd.satacmd_rqsense,
5053 spkt->satapkt_reason = SATA_PKT_DEV_ERROR;
5076 spkt->satapkt_reason = SATA_PKT_COMPLETED;
5130 spkt->satapkt_reason = SATA_PKT_COMPLETED;
5146 sata_pkt_t *spkt = nv_slotp->nvslot_spkt;
5147 sata_cmd_t *sata_cmdp = &spkt->satapkt_cmd;
5171 nv_copy_registers(nvp, &spkt->satapkt_device, spkt);
5172 spkt->satapkt_reason = SATA_PKT_DEV_ERROR;
5185 spkt->satapkt_reason = SATA_PKT_PORT_ERROR;
5194 spkt->satapkt_reason = SATA_PKT_COMPLETED;
5778 sata_pkt_t *spkt = nv_slotp->nvslot_spkt;
5779 sata_cmd_t *satacmd = &spkt->satapkt_cmd;
5796 if (spkt->satapkt_op_mode & SATA_OPMODE_POLLING) {
5803 spkt->satapkt_time) {
5818 spkt->satapkt_time), ddi_get_lbolt(),
5870 (void) nv_abort_active(nvp, spkt,
5874 (void) nv_abort_active(nvp, spkt,
6093 nv_copy_registers(nv_port_t *nvp, sata_device_t *sd, sata_pkt_t *spkt)
6096 sata_cmd_t *scmd = &spkt->satapkt_cmd;
6106 if (spkt == NULL) {
6289 sata_pkt_t *spkt = nv_slotp->nvslot_spkt;
6290 sata_cmd_t *satacmd = &spkt->satapkt_cmd;
6292 int cdb_len = spkt->satapkt_cmd.satacmd_acdb_len;
6337 spkt->satapkt_reason = SATA_PKT_DEV_ERROR;
6342 spkt->satapkt_reason = SATA_PKT_TIMEOUT;
6348 nv_copy_registers(nvp, &spkt->satapkt_device, spkt);
6349 nv_complete_io(nvp, spkt, 0);