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);
290 struct ata_request *request; in ata_reinit() local
293 if ((request = ch->running)) { in ata_reinit()
297 callout_stop(&request->callout); in ata_reinit()
299 ch->dma.unload(request); in ata_reinit()
300 request->result = ERESTART; in ata_reinit()
301 ata_cam_end_transaction(dev, request); in ata_reinit()
363 struct ata_request *request; in ata_interrupt_locked() local
370 if (!(request = ch->running)) in ata_interrupt_locked()
373 ATA_DEBUG_RQ(request, "interrupt"); in ata_interrupt_locked()
377 device_printf(request->dev, "interrupt on idle channel ignored\n"); in ata_interrupt_locked()
385 if (ch->hw.end_transaction(request) == ATA_OP_FINISHED) { in ata_interrupt_locked()
389 ata_cam_end_transaction(ch->dev, request); in ata_interrupt_locked()
440 ata_cmd2str(struct ata_request *request) in ata_cmd2str() argument
444 if (request->flags & ATA_R_ATAPI) { in ata_cmd2str()
445 switch (request->u.atapi.sense.key ? in ata_cmd2str()
446 request->u.atapi.saved_cmd : request->u.atapi.ccb[0]) { in ata_cmd2str()
501 switch (request->u.ata.command) { in ata_cmd2str()
503 switch (request->u.ata.feature) { in ata_cmd2str()
510 switch (request->u.ata.feature) { in ata_cmd2str()
538 switch (request->u.ata.feature) { in ata_cmd2str()
550 if (request->u.ata.feature == 0xec) in ata_cmd2str()
552 switch (request->u.ata.lba) { in ata_cmd2str()
567 switch(request->u.ata.feature) { in ata_cmd2str()
606 switch (request->u.ata.feature) { in ata_cmd2str()
633 sprintf(buffer, "unknown CMD (0x%02x)", request->u.ata.command); in ata_cmd2str()
708 struct ata_request *request; in ata_timeout() local
711 request = arg; in ata_timeout()
712 ch = device_get_softc(request->parent); in ata_timeout()
714 ATA_DEBUG_RQ(request, "timeout"); in ata_timeout()
723 request->flags |= ATA_R_TIMEOUT; in ata_timeout()
725 ch->dma.unload(request); in ata_timeout()
728 ata_cam_end_transaction(ch->dev, request); in ata_timeout()
737 struct ata_request *request; in ata_cam_begin_transaction() local
739 request = &ch->request; in ata_cam_begin_transaction()
740 bzero(request, sizeof(*request)); in ata_cam_begin_transaction()
743 request->dev = NULL; in ata_cam_begin_transaction()
744 request->parent = dev; in ata_cam_begin_transaction()
745 request->unit = ccb->ccb_h.target_id; in ata_cam_begin_transaction()
747 request->data = ccb->ataio.data_ptr; in ata_cam_begin_transaction()
748 request->bytecount = ccb->ataio.dxfer_len; in ata_cam_begin_transaction()
749 request->u.ata.command = ccb->ataio.cmd.command; in ata_cam_begin_transaction()
750 request->u.ata.feature = ((uint16_t)ccb->ataio.cmd.features_exp << 8) | in ata_cam_begin_transaction()
752 request->u.ata.count = ((uint16_t)ccb->ataio.cmd.sector_count_exp << 8) | in ata_cam_begin_transaction()
755 request->flags |= ATA_R_48BIT; in ata_cam_begin_transaction()
756 request->u.ata.lba = in ata_cam_begin_transaction()
761 request->u.ata.lba = in ata_cam_begin_transaction()
764 request->u.ata.lba |= ((uint64_t)ccb->ataio.cmd.lba_high << 16) | in ata_cam_begin_transaction()
768 request->flags |= ATA_R_NEEDRESULT; in ata_cam_begin_transaction()
771 request->flags |= ATA_R_DMA; in ata_cam_begin_transaction()
773 request->flags |= ATA_R_READ; in ata_cam_begin_transaction()
775 request->flags |= ATA_R_WRITE; in ata_cam_begin_transaction()
780 request->transfersize = min(request->bytecount, in ata_cam_begin_transaction()
783 request->transfersize = min(request->bytecount, 512); in ata_cam_begin_transaction()
785 request->data = ccb->csio.data_ptr; in ata_cam_begin_transaction()
786 request->bytecount = ccb->csio.dxfer_len; in ata_cam_begin_transaction()
789 request->u.atapi.ccb, ccb->csio.cdb_len); in ata_cam_begin_transaction()
790 request->flags |= ATA_R_ATAPI; in ata_cam_begin_transaction()
792 request->flags |= ATA_R_ATAPI16; in ata_cam_begin_transaction()
795 request->flags |= ATA_R_DMA; in ata_cam_begin_transaction()
797 request->flags |= ATA_R_READ; in ata_cam_begin_transaction()
799 request->flags |= ATA_R_WRITE; in ata_cam_begin_transaction()
800 request->transfersize = min(request->bytecount, in ata_cam_begin_transaction()
803 request->retries = 0; in ata_cam_begin_transaction()
804 request->timeout = (ccb->ccb_h.timeout + 999) / 1000; in ata_cam_begin_transaction()
805 callout_init_mtx(&request->callout, &ch->state_mtx, CALLOUT_RETURNUNLOCKED); in ata_cam_begin_transaction()
806 request->ccb = ccb; in ata_cam_begin_transaction()
807 request->flags |= ATA_R_DATA_IN_CCB; in ata_cam_begin_transaction()
809 ch->running = request; in ata_cam_begin_transaction()
811 if (ch->hw.begin_transaction(request) == ATA_OP_FINISHED) { in ata_cam_begin_transaction()
814 ata_cam_end_transaction(dev, request); in ata_cam_begin_transaction()
820 ata_cam_request_sense(device_t dev, struct ata_request *request) in ata_cam_request_sense() argument
823 union ccb *ccb = request->ccb; in ata_cam_request_sense()
827 bzero(request, sizeof(*request)); in ata_cam_request_sense()
828 request->dev = NULL; in ata_cam_request_sense()
829 request->parent = dev; in ata_cam_request_sense()
830 request->unit = ccb->ccb_h.target_id; in ata_cam_request_sense()
831 request->data = (void *)&ccb->csio.sense_data; in ata_cam_request_sense()
832 request->bytecount = ccb->csio.sense_len; in ata_cam_request_sense()
833 request->u.atapi.ccb[0] = ATAPI_REQUEST_SENSE; in ata_cam_request_sense()
834 request->u.atapi.ccb[4] = ccb->csio.sense_len; in ata_cam_request_sense()
835 request->flags |= ATA_R_ATAPI; in ata_cam_request_sense()
837 request->flags |= ATA_R_ATAPI16; in ata_cam_request_sense()
839 request->flags |= ATA_R_DMA; in ata_cam_request_sense()
840 request->flags |= ATA_R_READ; in ata_cam_request_sense()
841 request->transfersize = min(request->bytecount, in ata_cam_request_sense()
843 request->retries = 0; in ata_cam_request_sense()
844 request->timeout = (ccb->ccb_h.timeout + 999) / 1000; in ata_cam_request_sense()
845 callout_init_mtx(&request->callout, &ch->state_mtx, CALLOUT_RETURNUNLOCKED); in ata_cam_request_sense()
846 request->ccb = ccb; in ata_cam_request_sense()
848 ch->running = request; in ata_cam_request_sense()
850 if (ch->hw.begin_transaction(request) == ATA_OP_FINISHED) { in ata_cam_request_sense()
853 ata_cam_end_transaction(dev, request); in ata_cam_request_sense()
859 ata_cam_process_sense(device_t dev, struct ata_request *request) in ata_cam_process_sense() argument
862 union ccb *ccb = request->ccb; in ata_cam_process_sense()
867 if (request->flags & ATA_R_TIMEOUT) in ata_cam_process_sense()
869 if ((request->flags & ATA_R_TIMEOUT) == 0 && in ata_cam_process_sense()
870 (request->status & ATA_S_ERROR) == 0 && in ata_cam_process_sense()
871 request->result == 0) { in ata_cam_process_sense()
885 ata_cam_end_transaction(device_t dev, struct ata_request *request) in ata_cam_end_transaction() argument
888 union ccb *ccb = request->ccb; in ata_cam_end_transaction()
892 ata_cam_process_sense(dev, request); in ata_cam_end_transaction()
897 if (request->flags & ATA_R_TIMEOUT) { in ata_cam_end_transaction()
902 } else if (request->status & ATA_S_ERROR) { in ata_cam_end_transaction()
909 } else if (request->result == ERESTART) in ata_cam_end_transaction()
911 else if (request->result != 0) in ata_cam_end_transaction()
921 ((request->status & ATA_S_ERROR) || in ata_cam_end_transaction()
924 res->status = request->status; in ata_cam_end_transaction()
925 res->error = request->error; in ata_cam_end_transaction()
926 res->lba_low = request->u.ata.lba; in ata_cam_end_transaction()
927 res->lba_mid = request->u.ata.lba >> 8; in ata_cam_end_transaction()
928 res->lba_high = request->u.ata.lba >> 16; in ata_cam_end_transaction()
929 res->device = request->u.ata.lba >> 24; in ata_cam_end_transaction()
930 res->lba_low_exp = request->u.ata.lba >> 24; in ata_cam_end_transaction()
931 res->lba_mid_exp = request->u.ata.lba >> 32; in ata_cam_end_transaction()
932 res->lba_high_exp = request->u.ata.lba >> 40; in ata_cam_end_transaction()
933 res->sector_count = request->u.ata.count; in ata_cam_end_transaction()
934 res->sector_count_exp = request->u.ata.count >> 8; in ata_cam_end_transaction()
939 ccb->ataio.dxfer_len - request->donecount; in ata_cam_end_transaction()
942 ccb->csio.dxfer_len - request->donecount; in ata_cam_end_transaction()
947 ata_cam_request_sense(dev, request); in ata_cam_end_transaction()