if (chp->ch_drive[xfer->drive].drive_flags & DRIVE_CAP32) { bus_space_write_multi_4(chp->data32iot, chp->data32ioh, 0, (u_int32_t*)data, bcount >> 2); data += bcount & 0xfffffffc; bcount = bcount & 0x03; } if (bcount > 0) bus_space_write_multi_2(chp->cmd_iot, chp->cmd_ioh, wd_data, (u_int16_t *)data, bcount >> 1);
wdc_output_bytes(drvp, data, bcount);
__wdccommand_intr(chp, xfer, irq)	struct channel_softc *chp;	struct wdc_xfer *xfer;	int irq;{	struct wdc_command *wdc_c = xfer->cmd;	int bcount = wdc_c->bcount;	char *data = wdc_c->data;	WDCDEBUG_PRINT(("__wdccommand_intr %s:%d:%d\n",	    chp->wdc->sc_dev.dv_xname, chp->channel, xfer->drive), DEBUG_INTR);	if (wdcwait(chp, wdc_c->r_st_pmask, wdc_c->r_st_pmask,	     (irq == 0)  ? wdc_c->timeout : 0)) {		if (irq && (xfer->c_flags & C_TIMEOU) == 0) 			return 0; /* IRQ was not for us */		wdc_c->flags |= AT_TIMEOU;		__wdccommand_done(chp, xfer);		WDCDEBUG_PRINT(("__wdccommand_intr returned\n"), DEBUG_INTR);		return 1;	}	if (wdc_c->flags & AT_READ) {		if (chp->ch_drive[xfer->drive].drive_flags & DRIVE_CAP32) {			bus_space_read_multi_4(chp->data32iot, chp->data32ioh,			    0, (u_int32_t*)data, bcount >> 2);			data += bcount & 0xfffffffc;			bcount = bcount & 0x03;		}		if (bcount > 0)			bus_space_read_multi_2(chp->cmd_iot, chp->cmd_ioh,			    wd_data, (u_int16_t *)data, bcount >> 1);	} else if (wdc_c->flags & AT_WRITE) {		if (chp->ch_drive[xfer->drive].drive_flags & DRIVE_CAP32) {			bus_space_write_multi_4(chp->data32iot, chp->data32ioh,			    0, (u_int32_t*)data, bcount >> 2);			data += bcount & 0xfffffffc;			bcount = bcount & 0x03;		}		if (bcount > 0)			bus_space_write_multi_2(chp->cmd_iot, chp->cmd_ioh,			    wd_data, (u_int16_t *)data, bcount >> 1);	}	__wdccommand_done(chp, xfer);	WDCDEBUG_PRINT(("__wdccommand_intr returned\n"), DEBUG_INTR);	return 1;}