Lines Matching refs:buf

288 scsa1394_bus_alloc_buf(void *hdl, sbp2_bus_buf_t *buf)
294 if (buf->bb_flags & SBP2_BUS_BUF_DMA) {
295 return (scsa1394_bus_alloc_buf_phys(hdl, buf));
297 return (scsa1394_bus_alloc_buf_normal(hdl, buf,
298 ((buf->bb_flags & SBP2_BUS_BUF_POSTED) != 0)));
304 scsa1394_bus_free_buf(void *hdl, sbp2_bus_buf_t *buf)
306 if (buf->bb_flags & SBP2_BUS_BUF_DMA) {
307 scsa1394_bus_free_buf_phys(hdl, buf);
309 scsa1394_bus_free_buf_normal(hdl, buf);
315 scsa1394_bus_alloc_buf_phys(void *hdl, sbp2_bus_buf_t *buf)
336 if (ddi_dma_mem_alloc(sbb->sbb_dma_hdl, buf->bb_len,
338 buf->bb_flags & (DDI_DMA_STREAMING | DDI_DMA_CONSISTENT),
339 DDI_DMA_SLEEP, NULL, &buf->bb_kaddr, &real_length,
346 buf->bb_flags &= ~DDI_DMA_PARTIAL;
347 if (ddi_dma_addr_bind_handle(sbb->sbb_dma_hdl, NULL, buf->bb_kaddr,
348 buf->bb_len, buf->bb_flags, DDI_DMA_SLEEP, NULL,
356 buf->bb_paddr = cookie.dmac_address; /* 32-bit address */
361 aa.aa_length = buf->bb_len;
362 if (buf->bb_flags & SBP2_BUS_BUF_RD) {
365 if (buf->bb_flags & SBP2_BUS_BUF_WR) {
368 aa.aa_address = buf->bb_paddr; /* PCI-1394 mapping is 1-1 */
378 buf->bb_baddr = aa.aa_address;
380 buf->bb_hdl = sbb;
386 scsa1394_bus_free_buf_phys(void *hdl, sbp2_bus_buf_t *buf)
389 scsa1394_bus_buf_t *sbb = buf->bb_hdl;
396 buf->bb_hdl = NULL;
401 scsa1394_bus_alloc_buf_normal(void *hdl, sbp2_bus_buf_t *buf, boolean_t posted)
415 aa.aa_length = buf->bb_len;
416 if (buf->bb_flags & SBP2_BUS_BUF_RD) {
420 if (buf->bb_flags & SBP2_BUS_BUF_WR) {
424 aa.aa_arg = buf;
431 buf->bb_baddr = aa.aa_address;
433 buf->bb_hdl = sbb;
438 scsa1394_bus_free_buf_normal(void *hdl, sbp2_bus_buf_t *buf)
441 scsa1394_bus_buf_t *sbb = buf->bb_hdl;
445 buf->bb_hdl = NULL;
450 scsa1394_bus_sync_buf(void *hdl, sbp2_bus_buf_t *buf, off_t offset,
453 scsa1394_bus_buf_t *sbb = buf->bb_hdl;
455 if (buf->bb_flags & SBP2_BUS_BUF_DMA) {
464 scsa1394_bus_buf_rw_done(void *hdl, sbp2_bus_buf_t *buf, void *reqh, int error)
495 sbp2_bus_buf_t *buf = req->cmd_callback_arg;
496 scsa1394_bus_buf_t *sbb = buf->bb_hdl;
501 if (buf->bb_rq_cb) {
502 buf->bb_rq_cb(buf, req, &req->cmd_u.q.quadlet_data);
506 if (buf->bb_rb_cb) {
507 buf->bb_rb_cb(buf, req, &req->cmd_u.b.data_block,
512 scsa1394_bus_buf_rw_done(sp, buf, req, SBP2_BUS_BUF_FAILURE);
519 sbp2_bus_buf_t *buf = req->cmd_callback_arg;
520 scsa1394_bus_buf_t *sbb = buf->bb_hdl;
525 if (buf->bb_wq_cb) {
526 buf->bb_wq_cb(buf, req, req->cmd_u.q.quadlet_data);
530 if (buf->bb_wb_cb) {
531 buf->bb_wb_cb(buf, req, &req->cmd_u.b.data_block);
535 scsa1394_bus_buf_rw_done(sp, buf, req, SBP2_BUS_BUF_FAILURE);