Lines Matching refs:drvp
618 mvsata_reset_drive(struct ata_drive_datas *drvp, int flags, uint32_t *sigp) in mvsata_reset_drive() argument
620 struct ata_channel *chp = drvp->chnl_softc; in mvsata_reset_drive()
631 device_xname(MVSATA_DEV2(mvport)), chp->ch_channel, drvp->drive, in mvsata_reset_drive()
637 mvsata_pmp_select(mvport, drvp->drive); in mvsata_reset_drive()
693 mvsata_addref(struct ata_drive_datas *drvp) in mvsata_addref() argument
700 mvsata_delref(struct ata_drive_datas *drvp) in mvsata_delref() argument
707 mvsata_killpending(struct ata_drive_datas *drvp) in mvsata_killpending() argument
768 struct ata_drive_datas *drvp = &chp->ch_drive[target]; in mvsata_atapi_probe_device() local
778 if (drvp->drive_type != ATA_DRIVET_ATAPI) { in mvsata_atapi_probe_device()
787 if (ata_get_params(drvp, AT_WAIT, id) == 0) { in mvsata_atapi_probe_device()
812 drvp->drive_flags |= ATA_DRIVE_ATAPIDSCW; in mvsata_atapi_probe_device()
838 drvp->drv_softc = atapi_probe_device(sc, target, periph, &sa); in mvsata_atapi_probe_device()
840 if (drvp->drv_softc) in mvsata_atapi_probe_device()
841 ata_probe_caps(drvp); in mvsata_atapi_probe_device()
844 drvp->drive_type = ATA_DRIVET_NONE; in mvsata_atapi_probe_device()
852 drvp->drive_type = ATA_DRIVET_NONE; in mvsata_atapi_probe_device()
886 struct ata_drive_datas *drvp; in mvsata_setup_channel() local
898 drvp = &chp->ch_drive[drive]; in mvsata_setup_channel()
901 if (drvp->drive_type == ATA_DRIVET_NONE) in mvsata_setup_channel()
904 if (drvp->drive_flags & ATA_DRIVE_UDMA) { in mvsata_setup_channel()
907 drvp->drive_flags &= ~ATA_DRIVE_DMA; in mvsata_setup_channel()
911 if (drvp->drive_flags & (ATA_DRIVE_UDMA | ATA_DRIVE_DMA)) { in mvsata_setup_channel()
912 if (drvp->drive_flags & ATA_DRIVE_NCQ) in mvsata_setup_channel()
914 else if (drvp->drive_type == ATA_DRIVET_ATA) in mvsata_setup_channel()
961 drvp = &chp->ch_drive[drive]; in mvsata_setup_channel()
964 if (drvp->drive_type == ATA_DRIVET_NONE) in mvsata_setup_channel()
967 drvp->drive_flags &= ~(ATA_DRIVE_UDMA | ATA_DRIVE_DMA); in mvsata_setup_channel()
989 mvsata_bio(struct ata_drive_datas *drvp, struct ata_xfer *xfer) in mvsata_bio() argument
991 struct ata_channel *chp = drvp->chnl_softc; in mvsata_bio()
998 drvp->drive, ata_bio->blkno, ata_bio->bcount)); in mvsata_bio()
1004 if ((drvp->drive_flags & (ATA_DRIVE_DMA | ATA_DRIVE_UDMA)) && in mvsata_bio()
1007 xfer->c_drive = drvp->drive; in mvsata_bio()
1022 struct ata_drive_datas *drvp = &chp->ch_drive[xfer->c_drive]; in mvsata_bio_start() local
1034 if (drvp->n_xfers <= NXFER) in mvsata_bio_start()
1035 drvp->n_xfers++; in mvsata_bio_start()
1046 nblks = xfer->c_bcount / drvp->lp->d_secsize; in mvsata_bio_start()
1048 if ((drvp->lp->d_flags & D_BADSECT) != 0) { in mvsata_bio_start()
1052 for (i = 0; (blkdiff = drvp->badsect[i]) != -1; in mvsata_bio_start()
1060 drvp->lp->d_secperunit - in mvsata_bio_start()
1061 drvp->lp->d_nsectors - i - 1; in mvsata_bio_start()
1126 sect = blkno % drvp->lp->d_nsectors; in mvsata_bio_start()
1128 blkno /= drvp->lp->d_nsectors; in mvsata_bio_start()
1129 head = blkno % drvp->lp->d_ntracks; in mvsata_bio_start()
1130 blkno /= drvp->lp->d_ntracks; in mvsata_bio_start()
1134 ata_bio->nblks = uimin(nblks, drvp->multi); in mvsata_bio_start()
1135 ata_bio->nbytes = ata_bio->nblks * drvp->lp->d_secsize; in mvsata_bio_start()
1152 if (__predict_false(drvp->state < READY)) { in mvsata_bio_start()
1189 (drvp->lp->d_type == DKTYPE_ST506) ? in mvsata_bio_start()
1190 drvp->lp->d_precompcyl / 4 : 0); in mvsata_bio_start()
1193 nblks = xfer->c_bcount / drvp->lp->d_secsize; in mvsata_bio_start()
1221 wdc->dataout_pio(chp, drvp->drive_flags, in mvsata_bio_start()
1273 struct ata_drive_datas *drvp = &chp->ch_drive[xfer->c_drive]; in mvsata_bio_intr() local
1316 if (!(xfer->c_flags & C_DMA) && drvp->state < READY) { in mvsata_bio_intr()
1319 chp->ch_channel, xfer->c_drive, drvp->state, __func__); in mvsata_bio_intr()
1345 ata_dmaerr(drvp, in mvsata_bio_intr()
1371 wdc->datain_pio(chp, drvp->drive_flags, in mvsata_bio_intr()
1487 struct ata_drive_datas *drvp = &chp->ch_drive[drive]; in mvsata_bio_ready() local
1517 if ((drvp->drive_flags & ATA_DRIVE_MODE) == 0) in mvsata_bio_ready()
1520 0x08 | drvp->PIO_mode, WDSF_SET_MODE); in mvsata_bio_ready()
1526 if (drvp->drive_flags & ATA_DRIVE_UDMA) in mvsata_bio_ready()
1528 0x40 | drvp->UDMA_mode, WDSF_SET_MODE); in mvsata_bio_ready()
1529 else if (drvp->drive_flags & ATA_DRIVE_DMA) in mvsata_bio_ready()
1531 0x20 | drvp->DMA_mode, WDSF_SET_MODE); in mvsata_bio_ready()
1542 wdccommand(chp, 0, WDCC_IDP, drvp->lp->d_ncylinders, in mvsata_bio_ready()
1543 drvp->lp->d_ntracks - 1, 0, drvp->lp->d_nsectors, in mvsata_bio_ready()
1544 (drvp->lp->d_type == DKTYPE_ST506) ? in mvsata_bio_ready()
1545 drvp->lp->d_precompcyl / 4 : 0); in mvsata_bio_ready()
1552 if (drvp->multi == 1) in mvsata_bio_ready()
1554 wdccommand(chp, 0, WDCC_SETMULTI, 0, 0, 0, drvp->multi, 0); in mvsata_bio_ready()
1561 drvp->state = READY; in mvsata_bio_ready()
1586 drvp->state = 0; in mvsata_bio_ready()
1600 mvsata_exec_command(struct ata_drive_datas *drvp, struct ata_xfer *xfer) in mvsata_exec_command() argument
1602 struct ata_channel *chp = drvp->chnl_softc; in mvsata_exec_command()
1611 drvp->drive, ata_c->bcount, ata_c->r_lba, ata_c->r_count, in mvsata_exec_command()
1618 xfer->c_drive = drvp->drive; in mvsata_exec_command()
2010 struct ata_drive_datas *drvp = &chp->ch_drive[xfer->c_drive]; in mvsata_atapi_start() local
2028 if ((xfer->c_flags & C_DMA) && (drvp->n_xfers <= NXFER)) in mvsata_atapi_start()
2029 drvp->n_xfers++; in mvsata_atapi_start()
2032 if (__predict_false(drvp->state < READY)) { in mvsata_atapi_start()
2049 if ((drvp->drive_flags & ATA_DRIVE_MODE) == 0) in mvsata_atapi_start()
2055 0x08 | drvp->PIO_mode, WDSF_SET_MODE); in mvsata_atapi_start()
2071 drvp->PIO_mode); in mvsata_atapi_start()
2072 if (drvp->PIO_mode > 3) in mvsata_atapi_start()
2073 drvp->PIO_mode = 3; in mvsata_atapi_start()
2077 if (drvp->drive_flags & ATA_DRIVE_UDMA) in mvsata_atapi_start()
2079 0x40 | drvp->UDMA_mode, WDSF_SET_MODE); in mvsata_atapi_start()
2081 if (drvp->drive_flags & ATA_DRIVE_DMA) in mvsata_atapi_start()
2083 0x20 | drvp->DMA_mode, WDSF_SET_MODE); in mvsata_atapi_start()
2092 if (drvp->drive_flags & ATA_DRIVE_UDMA) in mvsata_atapi_start()
2104 drvp->DMA_mode); in mvsata_atapi_start()
2105 if (drvp->DMA_mode > 0) in mvsata_atapi_start()
2106 drvp->DMA_mode = 0; in mvsata_atapi_start()
2112 drvp->state = READY; in mvsata_atapi_start()
2209 struct ata_drive_datas *drvp = &chp->ch_drive[xfer->c_drive]; in mvsata_atapi_intr() local
2221 if (drvp->state < READY) { in mvsata_atapi_intr()
2224 chp->ch_channel, xfer->c_drive, drvp->state); in mvsata_atapi_intr()
2250 ata_dmaerr(drvp, in mvsata_atapi_intr()
2263 ata_dmaerr(drvp, (xfer->c_flags & C_POLL) ? AT_POLL : 0); in mvsata_atapi_intr()
2307 wdc->dataout_pio(chp, drvp->drive_flags, cmd, sc_xfer->cmdlen); in mvsata_atapi_intr()
2326 ata_dmaerr(drvp, in mvsata_atapi_intr()
2342 wdc->dataout_pio(chp, drvp->drive_flags, in mvsata_atapi_intr()
2362 ata_dmaerr(drvp, in mvsata_atapi_intr()
2378 wdc->datain_pio(chp, drvp->drive_flags, in mvsata_atapi_intr()
2416 ata_dmaerr(drvp, in mvsata_atapi_intr()
2473 struct ata_drive_datas *drvp = &chp->ch_drive[xfer->c_drive]; in mvsata_atapi_reset() local
2482 drvp->state = 0; in mvsata_atapi_reset()
2502 struct ata_drive_datas *drvp = &chp->ch_drive[xfer->c_drive]; in mvsata_atapi_phase_complete() local
2507 if (drvp->drive_flags & ATA_DRIVE_ATAPIDSCW) { in mvsata_atapi_phase_complete()
2553 ata_dmaerr(drvp, in mvsata_atapi_phase_complete()