Lines Matching refs:request
65 static void ata_cam_end_transaction(device_t dev, struct ata_request *request);
66 static void ata_cam_request_sense(device_t dev, struct ata_request *request);
289 struct ata_request *request; in ata_reinit() local
292 if ((request = ch->running)) { in ata_reinit()
296 callout_stop(&request->callout); in ata_reinit()
298 ch->dma.unload(request); in ata_reinit()
299 request->result = ERESTART; in ata_reinit()
300 ata_cam_end_transaction(dev, request); in ata_reinit()
362 struct ata_request *request; in ata_interrupt_locked() local
369 if (!(request = ch->running)) in ata_interrupt_locked()
372 ATA_DEBUG_RQ(request, "interrupt"); in ata_interrupt_locked()
376 device_printf(request->dev, "interrupt on idle channel ignored\n"); in ata_interrupt_locked()
384 if (ch->hw.end_transaction(request) == ATA_OP_FINISHED) { in ata_interrupt_locked()
388 ata_cam_end_transaction(ch->dev, request); in ata_interrupt_locked()
439 ata_cmd2str(struct ata_request *request) in ata_cmd2str() argument
443 if (request->flags & ATA_R_ATAPI) { in ata_cmd2str()
444 switch (request->u.atapi.sense.key ? in ata_cmd2str()
445 request->u.atapi.saved_cmd : request->u.atapi.ccb[0]) { in ata_cmd2str()
500 switch (request->u.ata.command) { in ata_cmd2str()
502 switch (request->u.ata.feature) { in ata_cmd2str()
509 switch (request->u.ata.feature) { in ata_cmd2str()
537 switch (request->u.ata.feature) { in ata_cmd2str()
549 if (request->u.ata.feature == 0xec) in ata_cmd2str()
551 switch (request->u.ata.lba) { in ata_cmd2str()
566 switch(request->u.ata.feature) { in ata_cmd2str()
605 switch (request->u.ata.feature) { in ata_cmd2str()
632 sprintf(buffer, "unknown CMD (0x%02x)", request->u.ata.command); in ata_cmd2str()
705 ata_timeout(struct ata_request *request) in ata_timeout() argument
709 ch = device_get_softc(request->parent); in ata_timeout()
711 ATA_DEBUG_RQ(request, "timeout"); in ata_timeout()
720 request->flags |= ATA_R_TIMEOUT; in ata_timeout()
722 ch->dma.unload(request); in ata_timeout()
725 ata_cam_end_transaction(ch->dev, request); in ata_timeout()
734 struct ata_request *request; in ata_cam_begin_transaction() local
736 request = &ch->request; in ata_cam_begin_transaction()
737 bzero(request, sizeof(*request)); in ata_cam_begin_transaction()
740 request->dev = NULL; in ata_cam_begin_transaction()
741 request->parent = dev; in ata_cam_begin_transaction()
742 request->unit = ccb->ccb_h.target_id; in ata_cam_begin_transaction()
744 request->data = ccb->ataio.data_ptr; in ata_cam_begin_transaction()
745 request->bytecount = ccb->ataio.dxfer_len; in ata_cam_begin_transaction()
746 request->u.ata.command = ccb->ataio.cmd.command; in ata_cam_begin_transaction()
747 request->u.ata.feature = ((uint16_t)ccb->ataio.cmd.features_exp << 8) | in ata_cam_begin_transaction()
749 request->u.ata.count = ((uint16_t)ccb->ataio.cmd.sector_count_exp << 8) | in ata_cam_begin_transaction()
752 request->flags |= ATA_R_48BIT; in ata_cam_begin_transaction()
753 request->u.ata.lba = in ata_cam_begin_transaction()
758 request->u.ata.lba = in ata_cam_begin_transaction()
761 request->u.ata.lba |= ((uint64_t)ccb->ataio.cmd.lba_high << 16) | in ata_cam_begin_transaction()
765 request->flags |= ATA_R_NEEDRESULT; in ata_cam_begin_transaction()
768 request->flags |= ATA_R_DMA; in ata_cam_begin_transaction()
770 request->flags |= ATA_R_READ; in ata_cam_begin_transaction()
772 request->flags |= ATA_R_WRITE; in ata_cam_begin_transaction()
777 request->transfersize = min(request->bytecount, in ata_cam_begin_transaction()
780 request->transfersize = min(request->bytecount, 512); in ata_cam_begin_transaction()
782 request->data = ccb->csio.data_ptr; in ata_cam_begin_transaction()
783 request->bytecount = ccb->csio.dxfer_len; in ata_cam_begin_transaction()
786 request->u.atapi.ccb, ccb->csio.cdb_len); in ata_cam_begin_transaction()
787 request->flags |= ATA_R_ATAPI; in ata_cam_begin_transaction()
789 request->flags |= ATA_R_ATAPI16; in ata_cam_begin_transaction()
792 request->flags |= ATA_R_DMA; in ata_cam_begin_transaction()
794 request->flags |= ATA_R_READ; in ata_cam_begin_transaction()
796 request->flags |= ATA_R_WRITE; in ata_cam_begin_transaction()
797 request->transfersize = min(request->bytecount, in ata_cam_begin_transaction()
800 request->retries = 0; in ata_cam_begin_transaction()
801 request->timeout = (ccb->ccb_h.timeout + 999) / 1000; in ata_cam_begin_transaction()
802 callout_init_mtx(&request->callout, &ch->state_mtx, CALLOUT_RETURNUNLOCKED); in ata_cam_begin_transaction()
803 request->ccb = ccb; in ata_cam_begin_transaction()
804 request->flags |= ATA_R_DATA_IN_CCB; in ata_cam_begin_transaction()
806 ch->running = request; in ata_cam_begin_transaction()
808 if (ch->hw.begin_transaction(request) == ATA_OP_FINISHED) { in ata_cam_begin_transaction()
811 ata_cam_end_transaction(dev, request); in ata_cam_begin_transaction()
817 ata_cam_request_sense(device_t dev, struct ata_request *request) in ata_cam_request_sense() argument
820 union ccb *ccb = request->ccb; in ata_cam_request_sense()
824 bzero(request, sizeof(*request)); in ata_cam_request_sense()
825 request->dev = NULL; in ata_cam_request_sense()
826 request->parent = dev; in ata_cam_request_sense()
827 request->unit = ccb->ccb_h.target_id; in ata_cam_request_sense()
828 request->data = (void *)&ccb->csio.sense_data; in ata_cam_request_sense()
829 request->bytecount = ccb->csio.sense_len; in ata_cam_request_sense()
830 request->u.atapi.ccb[0] = ATAPI_REQUEST_SENSE; in ata_cam_request_sense()
831 request->u.atapi.ccb[4] = ccb->csio.sense_len; in ata_cam_request_sense()
832 request->flags |= ATA_R_ATAPI; in ata_cam_request_sense()
834 request->flags |= ATA_R_ATAPI16; in ata_cam_request_sense()
836 request->flags |= ATA_R_DMA; in ata_cam_request_sense()
837 request->flags |= ATA_R_READ; in ata_cam_request_sense()
838 request->transfersize = min(request->bytecount, in ata_cam_request_sense()
840 request->retries = 0; in ata_cam_request_sense()
841 request->timeout = (ccb->ccb_h.timeout + 999) / 1000; in ata_cam_request_sense()
842 callout_init_mtx(&request->callout, &ch->state_mtx, CALLOUT_RETURNUNLOCKED); in ata_cam_request_sense()
843 request->ccb = ccb; in ata_cam_request_sense()
845 ch->running = request; in ata_cam_request_sense()
847 if (ch->hw.begin_transaction(request) == ATA_OP_FINISHED) { in ata_cam_request_sense()
850 ata_cam_end_transaction(dev, request); in ata_cam_request_sense()
856 ata_cam_process_sense(device_t dev, struct ata_request *request) in ata_cam_process_sense() argument
859 union ccb *ccb = request->ccb; in ata_cam_process_sense()
864 if (request->flags & ATA_R_TIMEOUT) in ata_cam_process_sense()
866 if ((request->flags & ATA_R_TIMEOUT) == 0 && in ata_cam_process_sense()
867 (request->status & ATA_S_ERROR) == 0 && in ata_cam_process_sense()
868 request->result == 0) { in ata_cam_process_sense()
882 ata_cam_end_transaction(device_t dev, struct ata_request *request) in ata_cam_end_transaction() argument
885 union ccb *ccb = request->ccb; in ata_cam_end_transaction()
889 ata_cam_process_sense(dev, request); in ata_cam_end_transaction()
894 if (request->flags & ATA_R_TIMEOUT) { in ata_cam_end_transaction()
899 } else if (request->status & ATA_S_ERROR) { in ata_cam_end_transaction()
906 } else if (request->result == ERESTART) in ata_cam_end_transaction()
908 else if (request->result != 0) in ata_cam_end_transaction()
918 ((request->status & ATA_S_ERROR) || in ata_cam_end_transaction()
921 res->status = request->status; in ata_cam_end_transaction()
922 res->error = request->error; in ata_cam_end_transaction()
923 res->lba_low = request->u.ata.lba; in ata_cam_end_transaction()
924 res->lba_mid = request->u.ata.lba >> 8; in ata_cam_end_transaction()
925 res->lba_high = request->u.ata.lba >> 16; in ata_cam_end_transaction()
926 res->device = request->u.ata.lba >> 24; in ata_cam_end_transaction()
927 res->lba_low_exp = request->u.ata.lba >> 24; in ata_cam_end_transaction()
928 res->lba_mid_exp = request->u.ata.lba >> 32; in ata_cam_end_transaction()
929 res->lba_high_exp = request->u.ata.lba >> 40; in ata_cam_end_transaction()
930 res->sector_count = request->u.ata.count; in ata_cam_end_transaction()
931 res->sector_count_exp = request->u.ata.count >> 8; in ata_cam_end_transaction()
936 ccb->ataio.dxfer_len - request->donecount; in ata_cam_end_transaction()
939 ccb->csio.dxfer_len - request->donecount; in ata_cam_end_transaction()
944 ata_cam_request_sense(dev, request); in ata_cam_end_transaction()