wi 2119 dev/ic/wdc.c struct wdc_ioctl *wi;
wi 2122 dev/ic/wdc.c wi = malloc(sizeof(struct wdc_ioctl), M_TEMP, M_WAITOK);
wi 2123 dev/ic/wdc.c bzero(wi, sizeof (struct wdc_ioctl));
wi 2125 dev/ic/wdc.c LIST_INSERT_HEAD(&wi_head, wi, wi_list);
wi 2127 dev/ic/wdc.c return (wi);
wi 2135 dev/ic/wdc.c wdc_ioctl_free(wi)
wi 2136 dev/ic/wdc.c struct wdc_ioctl *wi;
wi 2141 dev/ic/wdc.c LIST_REMOVE(wi, wi_list);
wi 2143 dev/ic/wdc.c free(wi, M_TEMP);
wi 2154 dev/ic/wdc.c struct wdc_ioctl *wi;
wi 2158 dev/ic/wdc.c LIST_FOREACH(wi, &wi_head, wi_list)
wi 2159 dev/ic/wdc.c if (bp == &wi->wi_bp)
wi 2162 dev/ic/wdc.c return (wi);
wi 2191 dev/ic/wdc.c struct wdc_ioctl *wi;
wi 2196 dev/ic/wdc.c wi = wdc_ioctl_find(bp);
wi 2197 dev/ic/wdc.c if (wi == NULL) {
wi 2209 dev/ic/wdc.c if ((u_long)bp->b_bcount != wi->wi_atareq.datalen) {
wi 2219 dev/ic/wdc.c if (wi->wi_atareq.timeout == 0) {
wi 2224 dev/ic/wdc.c if (wi->wi_atareq.flags & ATACMD_READ)
wi 2226 dev/ic/wdc.c else if (wi->wi_atareq.flags & ATACMD_WRITE)
wi 2229 dev/ic/wdc.c if (wi->wi_atareq.flags & ATACMD_READREG)
wi 2234 dev/ic/wdc.c wdc_c.timeout = wi->wi_atareq.timeout;
wi 2235 dev/ic/wdc.c wdc_c.r_command = wi->wi_atareq.command;
wi 2236 dev/ic/wdc.c wdc_c.r_head = wi->wi_atareq.head & 0x0f;
wi 2237 dev/ic/wdc.c wdc_c.r_cyl = wi->wi_atareq.cylinder;
wi 2238 dev/ic/wdc.c wdc_c.r_sector = wi->wi_atareq.sec_num;
wi 2239 dev/ic/wdc.c wdc_c.r_count = wi->wi_atareq.sec_count;
wi 2240 dev/ic/wdc.c wdc_c.r_precomp = wi->wi_atareq.features;
wi 2241 dev/ic/wdc.c if (wi->wi_drvp->drive_flags & DRIVE_ATAPI) {
wi 2250 dev/ic/wdc.c wdc_c.data = wi->wi_bp.b_data;
wi 2251 dev/ic/wdc.c wdc_c.bcount = wi->wi_bp.b_bcount;
wi 2253 dev/ic/wdc.c if (wdc_exec_command(wi->wi_drvp, &wdc_c) != WDC_COMPLETE) {
wi 2254 dev/ic/wdc.c wi->wi_atareq.retsts = ATACMD_ERROR;
wi 2260 dev/ic/wdc.c wi->wi_atareq.retsts = ATACMD_ERROR;
wi 2261 dev/ic/wdc.c wi->wi_atareq.error = wdc_c.r_error;
wi 2263 dev/ic/wdc.c wi->wi_atareq.retsts = ATACMD_DF;
wi 2265 dev/ic/wdc.c wi->wi_atareq.retsts = ATACMD_TIMEOUT;
wi 2267 dev/ic/wdc.c wi->wi_atareq.retsts = ATACMD_OK;
wi 2268 dev/ic/wdc.c if (wi->wi_atareq.flags & ATACMD_READREG) {
wi 2269 dev/ic/wdc.c wi->wi_atareq.head = wdc_c.r_head ;
wi 2270 dev/ic/wdc.c wi->wi_atareq.cylinder = wdc_c.r_cyl;
wi 2271 dev/ic/wdc.c wi->wi_atareq.sec_num = wdc_c.r_sector;
wi 2272 dev/ic/wdc.c wi->wi_atareq.sec_count = wdc_c.r_count;
wi 2273 dev/ic/wdc.c wi->wi_atareq.features = wdc_c.r_precomp;
wi 2274 dev/ic/wdc.c wi->wi_atareq.error = wdc_c.r_error;
wi 2333 dev/ic/wdc.c struct wdc_ioctl *wi;
wi 2336 dev/ic/wdc.c wi = wdc_ioctl_get();
wi 2337 dev/ic/wdc.c wi->wi_drvp = drvp;
wi 2338 dev/ic/wdc.c wi->wi_atareq = *atareq;
wi 2342 dev/ic/wdc.c wi->wi_iov.iov_base = atareq->databuf;
wi 2343 dev/ic/wdc.c wi->wi_iov.iov_len = atareq->datalen;
wi 2344 dev/ic/wdc.c wi->wi_uio.uio_iov = &wi->wi_iov;
wi 2345 dev/ic/wdc.c wi->wi_uio.uio_iovcnt = 1;
wi 2346 dev/ic/wdc.c wi->wi_uio.uio_resid = atareq->datalen;
wi 2347 dev/ic/wdc.c wi->wi_uio.uio_offset = 0;
wi 2348 dev/ic/wdc.c wi->wi_uio.uio_segflg = UIO_USERSPACE;
wi 2349 dev/ic/wdc.c wi->wi_uio.uio_rw =
wi 2351 dev/ic/wdc.c wi->wi_uio.uio_procp = curproc;
wi 2352 dev/ic/wdc.c error = physio(wdc_ioctl_strategy, &wi->wi_bp, 0,
wi 2354 dev/ic/wdc.c minphys, &wi->wi_uio);
wi 2358 dev/ic/wdc.c wi->wi_bp.b_flags = 0;
wi 2359 dev/ic/wdc.c wi->wi_bp.b_data = 0;
wi 2360 dev/ic/wdc.c wi->wi_bp.b_bcount = 0;
wi 2361 dev/ic/wdc.c wi->wi_bp.b_dev = 0;
wi 2362 dev/ic/wdc.c wi->wi_bp.b_proc = curproc;
wi 2363 dev/ic/wdc.c LIST_INIT(&wi->wi_bp.b_dep);
wi 2364 dev/ic/wdc.c wdc_ioctl_strategy(&wi->wi_bp);
wi 2365 dev/ic/wdc.c error = wi->wi_bp.b_error;
wi 2367 dev/ic/wdc.c *atareq = wi->wi_atareq;
wi 2368 dev/ic/wdc.c wdc_ioctl_free(wi);