Lines Matching refs:request

83 static void ad_done(struct ata_request *request);
230 ad_power_callback(struct ata_request *request) in ad_power_callback() argument
232 device_printf(request->dev, "drive spun down.\n"); in ad_power_callback()
233 ata_free_request(request); in ad_power_callback()
241 struct ata_request *request; in ad_spindown() local
247 if (!(request = ata_alloc_request())) { in ad_spindown()
251 request->dev = dev; in ad_spindown()
252 request->flags = ATA_R_CONTROL; in ad_spindown()
253 request->timeout = ATA_DEFAULT_TIMEOUT; in ad_spindown()
254 request->retries = 1; in ad_spindown()
255 request->callback = ad_power_callback; in ad_spindown()
256 request->u.ata.command = ATA_STANDBY_IMMEDIATE; in ad_spindown()
257 ata_queue_request(request); in ad_spindown()
287 struct ata_request *request; in ad_strategy() local
294 if (!(request = ata_alloc_request())) { in ad_strategy()
301 request->dev = dev; in ad_strategy()
302 request->bio = bp; in ad_strategy()
303 request->callback = ad_done; in ad_strategy()
307 request->timeout = MAX(ATA_DEFAULT_TIMEOUT, 31); in ad_strategy()
309 request->timeout = ATA_DEFAULT_TIMEOUT; in ad_strategy()
311 request->retries = 2; in ad_strategy()
312 request->data = bbp->b_data; in ad_strategy()
313 request->bytecount = bbp->b_bcount; in ad_strategy()
315 request->u.ata.lba = (u_int64_t)(bp->bio_offset >> DEV_BSHIFT); in ad_strategy()
316 request->u.ata.count = request->bytecount / DEV_BSIZE; in ad_strategy()
317 request->transfersize = min(bbp->b_bcount, atadev->max_iosize); in ad_strategy()
321 request->flags = ATA_R_READ; in ad_strategy()
323 request->u.ata.command = ATA_READ_DMA; in ad_strategy()
324 request->flags |= ATA_R_DMA; in ad_strategy()
326 else if (request->transfersize > DEV_BSIZE) in ad_strategy()
327 request->u.ata.command = ATA_READ_MUL; in ad_strategy()
329 request->u.ata.command = ATA_READ; in ad_strategy()
332 request->flags = ATA_R_WRITE; in ad_strategy()
334 request->u.ata.command = ATA_WRITE_DMA; in ad_strategy()
335 request->flags |= ATA_R_DMA; in ad_strategy()
337 else if (request->transfersize > DEV_BSIZE) in ad_strategy()
338 request->u.ata.command = ATA_WRITE_MUL; in ad_strategy()
340 request->u.ata.command = ATA_WRITE; in ad_strategy()
343 request->u.ata.lba = 0; in ad_strategy()
344 request->u.ata.count = 0; in ad_strategy()
345 request->u.ata.feature = 0; in ad_strategy()
346 request->bytecount = 0; in ad_strategy()
347 request->transfersize = 0; in ad_strategy()
348 request->flags = ATA_R_CONTROL; in ad_strategy()
349 request->u.ata.command = ATA_FLUSHCACHE; in ad_strategy()
351 request->timeout = 30; /* ATA_DEFAULT_TIMEOUT */ in ad_strategy()
355 ata_free_request(request); in ad_strategy()
359 request->flags |= ATA_R_ORDERED; in ad_strategy()
361 ata_queue_request(request); in ad_strategy()
366 ad_done(struct ata_request *request) in ad_done() argument
368 struct ad_softc *adp = device_get_ivars(request->dev); in ad_done()
369 struct bio *bp = request->bio; in ad_done()
373 if ((bbp->b_error = request->result)) in ad_done()
375 bbp->b_resid = bbp->b_bcount - request->donecount; in ad_done()
378 ata_free_request(request); in ad_done()
392 struct ata_request request; in ad_dump() local
406 bzero(&request, sizeof(struct ata_request)); in ad_dump()
407 request.dev = dev; in ad_dump()
409 request.data = ap->a_virtual; in ad_dump()
410 request.bytecount = ap->a_length; in ad_dump()
411 request.transfersize = min(request.bytecount, atadev->max_iosize); in ad_dump()
412 request.flags = ATA_R_WRITE; in ad_dump()
415 request.u.ata.command = ATA_WRITE_DMA; in ad_dump()
416 request.flags |= ATA_DMA; in ad_dump()
417 } else if (request.transfersize > DEV_BSIZE) in ad_dump()
418 request.u.ata.command = ATA_WRITE_MUL; in ad_dump()
420 request.u.ata.command = ATA_WRITE; in ad_dump()
421 request.u.ata.lba = ap->a_offset / DEV_BSIZE; in ad_dump()
422 request.u.ata.count = request.bytecount / DEV_BSIZE; in ad_dump()
424 request.timeout = ATA_DEFAULT_TIMEOUT; in ad_dump()
425 request.retries = 2; in ad_dump()
427 ata_queue_request(&request); in ad_dump()
428 return request.result; in ad_dump()