chp->ch_status = bus_space_read_1(chp->cmd_iot, chp->cmd_ioh, wd_status);  if (chp->ch_status & WDCS_DRQ) { printf ("wdc_atapi_reset: " "DRQ is asserted. We've really messed up\n"); wdc_reset_channel(drvp); }
wdc_atapi_reset(chp, xfer)	struct channel_softc *chp;	struct wdc_xfer *xfer;{	struct ata_drive_datas *drvp = &chp->ch_drive[xfer->drive];	struct scsi_xfer *sc_xfer = xfer->cmd;	chp->ch_status =	    bus_space_read_1(chp->cmd_iot, chp->cmd_ioh, wd_status);	if (chp->ch_status & WDCS_DRQ) {		printf ("wdc_atapi_reset: "		    "DRQ is asserted. We've really messed up\n");		wdc_reset_channel(drvp);	}	wdccommandshort(chp, xfer->drive, ATAPI_SOFT_RESET);	/* Some ATAPI devices need extra time to find their	   brains after a reset	 */	delay(5000);	drvp->state = 0;	if (wait_for_unbusy(chp, WDC_RESET_WAIT) != 0) {		printf("%s:%d:%d: reset failed\n",		    chp->wdc->sc_dev.dv_xname, chp->channel,		    xfer->drive);		sc_xfer->error = XS_SELTIMEOUT;	}	wdc_atapi_done(chp, xfer);	return;}