Home | History | Annotate | Download | only in ata

Lines Matching refs:drvp

487 				struct ata_drive_datas *drvp;
489 drvp = &chp->ch_drive[i];
491 if (drvp->drive_flags & ATA_DRIVE_TH_RESET) {
814 ata_get_params(struct ata_drive_datas *drvp, uint8_t flags,
818 struct ata_channel *chp = drvp->chnl_softc;
836 if (drvp->drive_type == ATA_DRIVET_ATA) {
841 } else if (drvp->drive_type == ATA_DRIVET_ATAPI) {
855 (*atac->atac_bustype_ata->ata_exec_command)(drvp, xfer);
887 ((drvp->drive_type == ATA_DRIVET_ATAPI) ?
917 ata_set_mode(struct ata_drive_datas *drvp, uint8_t mode, uint8_t flags)
921 struct ata_channel *chp = drvp->chnl_softc;
940 (*atac->atac_bustype_ata->ata_exec_command)(drvp, xfer);
956 ata_dmaerr(struct ata_drive_datas *drvp, int flags)
958 ata_channel_lock_owned(drvp->chnl_softc);
967 drvp->n_dmaerrs++;
968 if (drvp->n_dmaerrs >= NERRS_MAX && drvp->n_xfers <= NXFER) {
970 ata_downgrade_mode(drvp, flags);
971 drvp->n_dmaerrs = NERRS_MAX-1;
977 device_printf(drvp->drv_softc,
979 drvp->n_dmaerrs, drvp->n_xfers);
982 drvp->n_xfers = 0;
985 if (drvp->n_xfers > NXFER) {
986 drvp->n_dmaerrs = 1; /* just got an error */
987 drvp->n_xfers = 1; /* restart counting from this error */
1158 struct ata_drive_datas * const drvp = &chp->ch_drive[xfer->c_drive];
1168 ? drvp->drv_openings : ATA_MAX_OPENINGS;
1195 if (drvp->drive_flags & ATA_DRIVE_RESET) {
1196 drvp->drive_flags &= ~ATA_DRIVE_RESET;
1197 drvp->state = 0;
1409 struct ata_drive_datas *drvp = &chp->ch_drive[xfer->c_drive];
1421 device_printf(drvp->drv_softc,
1432 device_printf(drvp->drv_softc,
1468 ata_kill_pending(struct ata_drive_datas *drvp)
1470 struct ata_channel * const chp = drvp->chnl_softc;
1480 if (xfer->c_drive != drvp->drive)
1501 if (xfer->c_drive == drvp->drive) {
1512 drvp->drive_flags |= ATA_DRIVE_WAITDRAIN;
1558 struct ata_drive_datas *drvp;
1581 drvp = &chp->ch_drive[drive];
1583 if (drvp->drive_flags & ATA_DRIVE_TH_RESET) {
1587 drvp->drive_flags |= ATA_DRIVE_TH_RESET;
1643 drvp = &chp->ch_drive[drive];
1644 (*atac->atac_bustype_ata->ata_reset_drive)(drvp, flags, NULL);
1645 drvp->state = 0;
1718 struct ata_drive_datas *drvp;
1722 drvp = &chp->ch_drive[drive];
1723 if (drvp->drive_type == ATA_DRIVET_NONE ||
1724 drvp->drv_softc == NULL)
1727 device_xname(drvp->drv_softc),
1729 chp->ch_channel, drvp->drive, drvp->PIO_mode);
1731 if (drvp->drive_flags & ATA_DRIVE_DMA)
1732 aprint_verbose(", DMA mode %d", drvp->DMA_mode);
1734 if (drvp->drive_flags & ATA_DRIVE_UDMA) {
1735 aprint_verbose(", Ultra-DMA mode %d", drvp->UDMA_mode);
1736 if (drvp->UDMA_mode == 2)
1738 else if (drvp->UDMA_mode == 4)
1740 else if (drvp->UDMA_mode == 5)
1742 else if (drvp->UDMA_mode == 6)
1750 || (drvp->drive_flags & (ATA_DRIVE_DMA | ATA_DRIVE_UDMA))
1759 if (drvp->drive_flags & ATA_DRIVE_NCQ) {
1762 (drvp->drive_flags & ATA_DRIVE_NCQ_PRIO)
1764 } else if (drvp->drive_flags & ATA_DRIVE_WFUA)
1780 ata_downgrade_mode(struct ata_drive_datas *drvp, int flags)
1782 struct ata_channel *chp = drvp->chnl_softc;
1784 device_t drv_dev = drvp->drv_softc;
1787 ata_channel_lock_owned(drvp->chnl_softc);
1790 if ((drvp->drive_flags & ATA_DRIVE_MODE) == 0 ||
1803 if ((drvp->drive_flags & ATA_DRIVE_UDMA) && drvp->UDMA_mode >= 2) {
1804 drvp->UDMA_mode--;
1807 drvp->UDMA_mode);
1814 else if (drvp->drive_flags & (ATA_DRIVE_DMA | ATA_DRIVE_UDMA)) {
1815 drvp->drive_flags &= ~(ATA_DRIVE_DMA | ATA_DRIVE_UDMA);
1816 drvp->PIO_mode = drvp->PIO_cap;
1819 drvp->PIO_mode);
1833 * Assumes drvp points to an existing drive.
1836 ata_probe_caps(struct ata_drive_datas *drvp)
1839 struct ata_channel *chp = drvp->chnl_softc;
1841 device_t drv_dev = drvp->drv_softc;
1846 if (ata_get_params(drvp, AT_WAIT, &params) != CMD_OK) {
1858 drvp->drive_flags |= ATA_DRIVE_CAP32;
1860 ata_get_params(drvp, AT_WAIT, &params2);
1864 drvp->drive_flags &= ~ATA_DRIVE_CAP32;
1877 drvp->ata_vers = i;
1885 if (drvp->drive_type == ATA_DRIVET_ATAPI)
1886 drvp->PIO_mode = 3;
1916 if (ata_set_mode(drvp, 0x08 | (i + 3),
1931 drvp->PIO_mode = i + 3;
1932 drvp->PIO_cap = i + 3;
1944 drvp->drive_flags |= ATA_DRIVE_MODE;
1953 if (ata_set_mode(drvp, 0x20 | i, AT_WAIT)
1967 drvp->DMA_mode = i;
1968 drvp->DMA_cap = i;
1970 drvp->drive_flags |= ATA_DRIVE_DMA;
1985 if (ata_set_mode(drvp, 0x40 | i,
2008 drvp->UDMA_mode = i;
2009 drvp->UDMA_cap = i;
2011 drvp->drive_flags |= ATA_DRIVE_UDMA;
2021 drvp->drive_flags &= ~ATA_DRIVE_NOSTREAM;
2022 if (drvp->drive_type == ATA_DRIVET_ATAPI) {
2024 drvp->drive_flags |= ATA_DRIVE_NOSTREAM;
2027 drvp->drive_flags |= ATA_DRIVE_NOSTREAM;
2032 if (drvp->ata_vers == 0) {
2034 if (drvp->drive_flags & ATA_DRIVE_UDMA)
2035 drvp->ata_vers = 4; /* should be at last ATA-4 */
2038 if (drvp->PIO_cap > 2)
2039 drvp->ata_vers = 2; /* should be at last ATA-2 */
2044 drvp->PIO_mode =
2046 drvp->drive_flags |= ATA_DRIVE_MODE;
2058 drvp->drive_flags &= ~ATA_DRIVE_DMA;
2060 drvp->DMA_mode = (cf_flags & ATA_CONFIG_DMA_MODES) >>
2062 drvp->drive_flags |= ATA_DRIVE_DMA | ATA_DRIVE_MODE;
2071 if (drvp->drive_flags & ATA_DRIVE_DMA) {
2074 drvp->drive_flags |= ATA_DRIVE_WFUA;
2082 drvp->drv_openings = 1;
2085 drvp->drive_flags |= ATA_DRIVE_NCQ;
2086 drvp->drv_openings =
2088 aprint_verbose("%s NCQ (%d tags)", sep, drvp->drv_openings);
2092 drvp->drive_flags |= ATA_DRIVE_NCQ_PRIO;
2107 drvp->drive_flags &= ~ATA_DRIVE_UDMA;
2109 drvp->UDMA_mode = (cf_flags & ATA_CONFIG_UDMA_MODES) >>
2111 drvp->drive_flags |= ATA_DRIVE_UDMA | ATA_DRIVE_MODE;