Lines Matching defs:wi
1442 struct wd_ioctl *wi;
1446 wi = wi_get(wd);
1447 wi->wi_atareq = *atareq;
1455 wi->wi_iov.iov_base = tbuf;
1456 wi->wi_iov.iov_len = DEV_BSIZE;
1457 UIO_SETUP_SYSSPACE(&wi->wi_uio);
1460 wi->wi_iov.iov_base = atareq->databuf;
1461 wi->wi_iov.iov_len = atareq->datalen;
1462 wi->wi_uio.uio_vmspace = l->l_proc->p_vmspace;
1464 wi->wi_uio.uio_iov = &wi->wi_iov;
1465 wi->wi_uio.uio_iovcnt = 1;
1466 wi->wi_uio.uio_resid = atareq->datalen;
1467 wi->wi_uio.uio_offset = 0;
1468 wi->wi_uio.uio_rw =
1470 error1 = physio(wdioctlstrategy, &wi->wi_bp, dev,
1472 wdminphys, &wi->wi_uio);
1481 wi->wi_bp.b_flags = 0;
1482 wi->wi_bp.b_data = 0;
1483 wi->wi_bp.b_bcount = 0;
1484 wi->wi_bp.b_dev = dev;
1485 wi->wi_bp.b_proc = l->l_proc;
1486 wdioctlstrategy(&wi->wi_bp);
1487 error1 = wi->wi_bp.b_error;
1489 *atareq = wi->wi_atareq;
1490 wi_free(wi);
2011 struct wd_ioctl *wi;
2013 wi = kmem_zalloc(sizeof(struct wd_ioctl), KM_SLEEP);
2014 wi->wi_softc = wd;
2015 buf_init(&wi->wi_bp);
2017 return (wi);
2025 wi_free(struct wd_ioctl *wi)
2027 buf_destroy(&wi->wi_bp);
2028 kmem_free(wi, sizeof(*wi));
2042 wi_sector_size(const struct wd_ioctl * const wi)
2044 switch (wi->wi_atareq.command) {
2059 return wi->wi_softc->sc_blksize;
2090 struct wd_ioctl *wi;
2094 wi = wi_find(bp);
2095 if (wi == NULL) {
2102 xfer = ata_get_xfer(wi->wi_softc->drvp->chnl_softc, true);
2108 if (bp->b_bcount != wi->wi_atareq.datalen) {
2119 if ((bp->b_bcount % wi_sector_size(wi)) != 0 ||
2120 (bp->b_bcount / wi_sector_size(wi)) >=
2130 if (wi->wi_atareq.timeout == 0) {
2135 if (wi->wi_atareq.flags & ATACMD_READ)
2137 else if (wi->wi_atareq.flags & ATACMD_WRITE)
2140 if (wi->wi_atareq.flags & ATACMD_READREG)
2143 if ((wi->wi_atareq.flags & ATACMD_LBA) != 0)
2148 xfer->c_ata_c.timeout = wi->wi_atareq.timeout;
2149 xfer->c_ata_c.r_command = wi->wi_atareq.command;
2150 xfer->c_ata_c.r_lba = ((wi->wi_atareq.head & 0x0f) << 24) |
2151 (wi->wi_atareq.cylinder << 8) |
2152 wi->wi_atareq.sec_num;
2153 xfer->c_ata_c.r_count = wi->wi_atareq.sec_count;
2154 xfer->c_ata_c.r_features = wi->wi_atareq.features;
2157 xfer->c_ata_c.data = wi->wi_bp.b_data;
2158 xfer->c_ata_c.bcount = wi->wi_bp.b_bcount;
2160 wi->wi_softc->atabus->ata_exec_command(wi->wi_softc->drvp, xfer);
2161 ata_wait_cmd(wi->wi_softc->drvp->chnl_softc, xfer);
2165 wi->wi_atareq.retsts = ATACMD_ERROR;
2166 wi->wi_atareq.error = xfer->c_ata_c.r_error;
2168 wi->wi_atareq.retsts = ATACMD_DF;
2170 wi->wi_atareq.retsts = ATACMD_TIMEOUT;
2172 wi->wi_atareq.retsts = ATACMD_OK;
2173 if (wi->wi_atareq.flags & ATACMD_READREG) {
2174 wi->wi_atareq.command = xfer->c_ata_c.r_status;
2175 wi->wi_atareq.features = xfer->c_ata_c.r_error;
2176 wi->wi_atareq.sec_count = xfer->c_ata_c.r_count;
2177 wi->wi_atareq.sec_num = xfer->c_ata_c.r_lba & 0xff;
2178 wi->wi_atareq.head = (xfer->c_ata_c.r_device & 0xf0) |
2180 wi->wi_atareq.cylinder =
2182 wi->wi_atareq.error = xfer->c_ata_c.r_error;
2187 ata_free_xfer(wi->wi_softc->drvp->chnl_softc, xfer);