Lines Matching refs:ata_bio
114 static int wdc_ata_err(struct ata_drive_datas *, struct ata_bio *, int);
123 .ata_bio = wdc_ata_bio,
150 struct ata_bio *ata_bio = &xfer->c_bio;
153 ata_bio->flags |= ATA_POLL;
154 if (ata_bio->flags & ATA_POLL)
158 (ata_bio->flags & ATA_SINGLE) == 0)
169 xfer->c_databuf = ata_bio->databuf;
170 xfer->c_bcount = ata_bio->bcount;
181 struct ata_bio *ata_bio = &xfer->c_bio;
270 if (ata_bio->flags & ATA_LBA)
310 ata_bio->error = TIMEOUT;
318 ata_bio->error = ERR_DF;
320 ata_bio->r_error = ATACH_ERR(tfd);
321 ata_bio->error = ERROR;
322 printf("error (%x)\n", ata_bio->r_error);
339 struct ata_bio *ata_bio = &xfer->c_bio;
359 dma_flags = (ata_bio->flags & ATA_READ) ? WDC_DMA_READ : 0;
360 if (ata_bio->flags & ATA_LBA48)
369 if (xfer->c_skip == 0 || (ata_bio->flags & ATA_SINGLE) != 0) {
370 if (ata_bio->flags & ATA_SINGLE)
380 blkdiff -= ata_bio->blkno;
385 ata_bio->blkno =
391 ata_bio->flags |= ATA_SINGLE;
398 if (ata_bio->flags & ATA_LBA48) {
402 } else if (ata_bio->flags & ATA_LBA) {
403 sect = (ata_bio->blkno >> 0) & 0xff;
404 cyl = (ata_bio->blkno >> 8) & 0xffff;
405 head = (ata_bio->blkno >> 24) & 0x0f;
408 int blkno = ata_bio->blkno;
421 ata_bio->nblks = nblks;
422 ata_bio->nbytes = xfer->c_bcount;
423 cmd = (ata_bio->flags & ATA_READ) ?
429 ata_bio->nbytes, dma_flags);
441 ata_bio->error = ERR_DMA;
442 ata_bio->r_error = 0;
463 if (ata_bio->flags & ATA_LBA48) {
471 ata_bio->blkno, count, features, device);
488 if (ata_bio->flags & ATA_POLL) {
508 ata_bio->error = ERR_DMA;
509 ata_bio->r_error = 0;
516 ata_bio->nblks = uimin(nblks, drvp->multi);
517 ata_bio->nbytes = ata_bio->nblks * drvp->lp->d_secsize;
518 KASSERT(nblks == 1 || (ata_bio->flags & ATA_SINGLE) == 0);
519 if (ata_bio->nblks > 1) {
520 cmd = (ata_bio->flags & ATA_READ) ?
523 cmd = (ata_bio->flags & ATA_READ) ?
539 if (ata_bio->flags & ATA_LBA48) {
541 ata_bio->blkno, nblks, 0, WDSD_LBA);
548 } else if (ata_bio->nblks > 1) {
551 if (ata_bio->nblks > nblks) {
552 ata_bio->nblks = nblks;
553 ata_bio->nbytes = xfer->c_bcount;
557 if ((ata_bio->flags & ATA_READ) == 0) {
568 if (wdc_ata_err(drvp, ata_bio, tfd) != WDC_ATA_ERR)
569 ata_bio->error = TIMEOUT;
572 if (wdc_ata_err(drvp, ata_bio, tfd) == WDC_ATA_ERR) {
580 xfer->c_skip, ata_bio->nbytes, 0);
586 (char *)xfer->c_databuf + xfer->c_skip, ata_bio->nbytes);
607 if (wdc_ata_err(drvp, ata_bio, tfd) != WDC_ATA_ERR)
608 ata_bio->error = TIMEOUT;
632 struct ata_bio *ata_bio = &xfer->c_bio;
655 ata_bio->error = TIMEOUT;
677 ata_bio->error = TIMEOUT;
683 drv_err = wdc_ata_err(drvp, ata_bio, tfd);
688 if (ata_bio->flags & ATA_POLL) {
702 ata_bio->error = TIMEOUT;
708 ata_bio->error = ERR_DMA;
718 ata_bio->error = TIMEOUT;
724 if (ata_bio->r_error & WDCE_CRC || ata_bio->error == ERR_DMA) {
737 if ((ata_bio->flags & ATA_READ) != 0) {
742 ata_bio->error = TIMEOUT;
750 xfer->c_skip, ata_bio->nbytes,
758 (char *)xfer->c_databuf + xfer->c_skip, ata_bio->nbytes);
764 ata_bio->blkno += ata_bio->nblks;
765 ata_bio->blkdone += ata_bio->nblks;
766 xfer->c_skip += ata_bio->nbytes;
767 xfer->c_bcount -= ata_bio->nbytes;
771 if ((ata_bio->flags & ATA_POLL) == 0) {
787 ata_bio->error = NOERROR;
797 struct ata_bio *ata_bio = &xfer->c_bio;
801 ata_bio->flags |= ATA_ITSDONE;
807 ata_bio->error = ERR_NODEV;
810 ata_bio->error = ERR_RESET;
817 ata_bio->r_error = WDCE_ABRT;
829 struct ata_bio *ata_bio = &xfer->c_bio;
841 ata_bio->bcount = xfer->c_bcount;
846 ata_bio->flags |= ATA_ITSDONE;
855 wdc_ata_err(struct ata_drive_datas *drvp, struct ata_bio *ata_bio, int tfd)
857 ata_bio->error = 0;
859 ata_bio->error = TIMEOUT;
864 ata_bio->error = ERR_DF;
869 ata_bio->error = ERROR;
870 ata_bio->r_error = ATACH_ERR(tfd);
871 if (ata_bio->r_error & (WDCE_BBK | WDCE_UNC | WDCE_IDNF |
878 ata_bio->flags |= ATA_CORR;