Lines Matching refs:cmd

214 static void fdomain_read_data(struct scsi_cmnd *cmd)  in fdomain_read_data()  argument
216 struct fdomain *fd = shost_priv(cmd->device->host); in fdomain_read_data()
221 offset = scsi_bufflen(cmd) - scsi_get_resid(cmd); in fdomain_read_data()
222 virt = scsi_kmap_atomic_sg(scsi_sglist(cmd), scsi_sg_count(cmd), in fdomain_read_data()
229 scsi_set_resid(cmd, scsi_get_resid(cmd) - len); in fdomain_read_data()
234 static void fdomain_write_data(struct scsi_cmnd *cmd) in fdomain_write_data() argument
236 struct fdomain *fd = shost_priv(cmd->device->host); in fdomain_write_data()
243 offset = scsi_bufflen(cmd) - scsi_get_resid(cmd); in fdomain_write_data()
244 if (len + offset > scsi_bufflen(cmd)) { in fdomain_write_data()
245 len = scsi_bufflen(cmd) - offset; in fdomain_write_data()
249 virt = scsi_kmap_atomic_sg(scsi_sglist(cmd), scsi_sg_count(cmd), in fdomain_write_data()
256 scsi_set_resid(cmd, scsi_get_resid(cmd) - len); in fdomain_write_data()
266 struct scsi_cmnd *cmd = fd->cur_cmd; in fdomain_work() local
273 if (cmd->SCp.phase & in_arbitration) { in fdomain_work()
279 cmd->SCp.phase = in_selection; in fdomain_work()
283 outb(BIT(cmd->device->host->this_id) | BIT(scmd_id(cmd)), in fdomain_work()
288 } else if (cmd->SCp.phase & in_selection) { in fdomain_work()
292 if (fdomain_select(cmd->device->host, scmd_id(cmd))) { in fdomain_work()
299 cmd->SCp.phase = in_other; in fdomain_work()
311 outb(cmd->cmnd[cmd->SCp.sent_command++], in fdomain_work()
315 if (fd->chip != tmc1800 && !cmd->SCp.have_data_in) { in fdomain_work()
316 cmd->SCp.have_data_in = -1; in fdomain_work()
322 if (fd->chip != tmc1800 && !cmd->SCp.have_data_in) { in fdomain_work()
323 cmd->SCp.have_data_in = 1; in fdomain_work()
329 cmd->SCp.Status = inb(fd->base + REG_SCSI_DATA); in fdomain_work()
335 cmd->SCp.Message = inb(fd->base + REG_SCSI_DATA); in fdomain_work()
336 if (!cmd->SCp.Message) in fdomain_work()
342 if (fd->chip == tmc1800 && !cmd->SCp.have_data_in && in fdomain_work()
343 cmd->SCp.sent_command >= cmd->cmd_len) { in fdomain_work()
344 if (cmd->sc_data_direction == DMA_TO_DEVICE) { in fdomain_work()
345 cmd->SCp.have_data_in = -1; in fdomain_work()
349 cmd->SCp.have_data_in = 1; in fdomain_work()
355 if (cmd->SCp.have_data_in == -1) /* DATA OUT */ in fdomain_work()
356 fdomain_write_data(cmd); in fdomain_work()
358 if (cmd->SCp.have_data_in == 1) /* DATA IN */ in fdomain_work()
359 fdomain_read_data(cmd); in fdomain_work()
362 fdomain_finish_cmd(fd, (cmd->SCp.Status & 0xff) | in fdomain_work()
363 ((cmd->SCp.Message & 0xff) << 8) | in fdomain_work()
366 if (cmd->SCp.phase & disconnect) { in fdomain_work()
397 static int fdomain_queue(struct Scsi_Host *sh, struct scsi_cmnd *cmd) in fdomain_queue() argument
399 struct fdomain *fd = shost_priv(cmd->device->host); in fdomain_queue()
402 cmd->SCp.Status = 0; in fdomain_queue()
403 cmd->SCp.Message = 0; in fdomain_queue()
404 cmd->SCp.have_data_in = 0; in fdomain_queue()
405 cmd->SCp.sent_command = 0; in fdomain_queue()
406 cmd->SCp.phase = in_arbitration; in fdomain_queue()
407 scsi_set_resid(cmd, scsi_bufflen(cmd)); in fdomain_queue()
411 fd->cur_cmd = cmd; in fdomain_queue()
419 outb(BIT(cmd->device->host->this_id), fd->base + REG_SCSI_DATA_NOACK); in fdomain_queue()
429 static int fdomain_abort(struct scsi_cmnd *cmd) in fdomain_abort() argument
431 struct Scsi_Host *sh = cmd->device->host; in fdomain_abort()
450 static int fdomain_host_reset(struct scsi_cmnd *cmd) in fdomain_host_reset() argument
452 struct Scsi_Host *sh = cmd->device->host; in fdomain_host_reset()