Lines Matching refs:scb

189 static void wd719x_finish_cmd(struct wd719x_scb *scb, int result)
191 struct scsi_cmnd *cmd = scb->cmd;
194 list_del(&scb->list);
196 dma_unmap_single(&wd->pdev->dev, scb->phys,
199 dma_unmap_single(&wd->pdev->dev, scb->dma_handle,
211 struct wd719x_scb *scb = scsi_cmd_priv(cmd);
214 scb->cmd = cmd;
216 scb->CDB_tag = 0; /* Tagged queueing not supported yet */
217 scb->devid = cmd->device->id;
218 scb->lun = cmd->device->lun;
221 memcpy(scb->CDB, cmd->cmnd, cmd->cmd_len);
224 scb->phys = dma_map_single(&wd->pdev->dev, scb, sizeof(*scb),
227 if (dma_mapping_error(&wd->pdev->dev, scb->phys))
231 scb->sense_buf_length = SCSI_SENSE_BUFFERSIZE;
232 scb->dma_handle = dma_map_single(&wd->pdev->dev, cmd->sense_buffer,
234 if (dma_mapping_error(&wd->pdev->dev, scb->dma_handle))
236 scb->sense_buf = cpu_to_le32(scb->dma_handle);
239 scb->SCB_options |= WD719X_SCB_FLAGS_AUTO_REQUEST_SENSE;
243 scb->SCB_options |= WD719X_SCB_FLAGS_CHECK_DIRECTION
246 scb->SCB_options |= WD719X_SCB_FLAGS_CHECK_DIRECTION;
257 scb->data_length = cpu_to_le32(count_sg *
259 scb->data_p = cpu_to_le32(scb->phys +
263 scb->sg_list[i].ptr = cpu_to_le32(sg_dma_address(sg));
264 scb->sg_list[i].length = cpu_to_le32(sg_dma_len(sg));
266 scb->SCB_options |= WD719X_SCB_FLAGS_DO_SCATTER_GATHER;
268 scb->data_length = 0;
269 scb->data_p = 0;
280 list_add(&scb->list, &wd->active_scbs);
283 wd719x_writel(wd, WD719X_AMR_SCB_IN, scb->phys);
291 dma_unmap_single(&wd->pdev->dev, scb->dma_handle,
294 dma_unmap_single(&wd->pdev->dev, scb->phys, sizeof(*scb),
467 struct wd719x_scb *scb = scsi_cmd_priv(cmd);
478 scb->phys, 0);
479 wd719x_finish_cmd(scb, DID_ABORT);
492 struct wd719x_scb *scb, *tmp;
501 list_for_each_entry_safe(scb, tmp, &wd->active_scbs, list) {
503 scb->cmd->device->id == device)
504 wd719x_finish_cmd(scb, DID_RESET);
526 struct wd719x_scb *scb, *tmp;
539 list_for_each_entry_safe(scb, tmp, &wd->active_scbs, list)
540 wd719x_finish_cmd(scb, DID_RESET);
565 struct wd719x_scb *scb)
633 scb->cmd->device->id);
655 wd719x_finish_cmd(scb, result);
687 struct wd719x_scb *scb;
688 list_for_each_entry(scb, &wd->active_scbs, list)
689 if (SCB_out == scb->phys)
691 if (SCB_out == scb->phys)
692 wd719x_interrupt_SCB(wd, regs, scb);