Lines Matching refs:cmd
493 static inline int ppa_send_command(struct scsi_cmnd *cmd) in ppa_send_command() argument
495 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_send_command()
500 for (k = 0; k < cmd->cmd_len; k++) in ppa_send_command()
501 if (!ppa_out(dev, &cmd->cmnd[k], 1)) in ppa_send_command()
514 static int ppa_completion(struct scsi_cmnd *cmd) in ppa_completion() argument
521 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_completion()
528 v = cmd->cmnd[0]; in ppa_completion()
546 if ((cmd->SCp.this_residual <= 0)) { in ppa_completion()
575 fast = (bulk && (cmd->SCp.this_residual >= PPA_BURST_SIZE)) in ppa_completion()
579 status = ppa_out(dev, cmd->SCp.ptr, fast); in ppa_completion()
581 status = ppa_in(dev, cmd->SCp.ptr, fast); in ppa_completion()
583 cmd->SCp.ptr += fast; in ppa_completion()
584 cmd->SCp.this_residual -= fast; in ppa_completion()
590 if (cmd->SCp.buffer && !cmd->SCp.this_residual) { in ppa_completion()
592 if (cmd->SCp.buffers_residual--) { in ppa_completion()
593 cmd->SCp.buffer = sg_next(cmd->SCp.buffer); in ppa_completion()
594 cmd->SCp.this_residual = in ppa_completion()
595 cmd->SCp.buffer->length; in ppa_completion()
596 cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); in ppa_completion()
616 struct scsi_cmnd *cmd = dev->cur_cmd; in ppa_interrupt() local
618 if (!cmd) { in ppa_interrupt()
622 if (ppa_engine(dev, cmd)) { in ppa_interrupt()
628 switch ((cmd->result >> 16) & 0xff) { in ppa_interrupt()
632 printk(KERN_DEBUG "ppa: no device at SCSI ID %i\n", cmd->device->target); in ppa_interrupt()
657 (cmd->result >> 16) & 0xff); in ppa_interrupt()
661 if (cmd->SCp.phase > 1) in ppa_interrupt()
668 cmd->scsi_done(cmd); in ppa_interrupt()
671 static int ppa_engine(ppa_struct *dev, struct scsi_cmnd *cmd) in ppa_engine() argument
683 switch (cmd->SCp.phase) { in ppa_engine()
718 cmd->SCp.phase++; in ppa_engine()
723 if (!ppa_select(dev, scmd_id(cmd))) { in ppa_engine()
727 cmd->SCp.phase++; in ppa_engine()
735 if (!ppa_send_command(cmd)) in ppa_engine()
737 cmd->SCp.phase++; in ppa_engine()
741 if (scsi_bufflen(cmd)) { in ppa_engine()
742 cmd->SCp.buffer = scsi_sglist(cmd); in ppa_engine()
743 cmd->SCp.this_residual = cmd->SCp.buffer->length; in ppa_engine()
744 cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); in ppa_engine()
746 cmd->SCp.buffer = NULL; in ppa_engine()
747 cmd->SCp.this_residual = 0; in ppa_engine()
748 cmd->SCp.ptr = NULL; in ppa_engine()
750 cmd->SCp.buffers_residual = scsi_sg_count(cmd) - 1; in ppa_engine()
751 cmd->SCp.phase++; in ppa_engine()
759 retv = ppa_completion(cmd); in ppa_engine()
764 cmd->SCp.phase++; in ppa_engine()
768 cmd->result = DID_OK << 16; in ppa_engine()
778 cmd->result = in ppa_engine()
789 static int ppa_queuecommand_lck(struct scsi_cmnd *cmd, in ppa_queuecommand_lck() argument
792 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_queuecommand_lck()
800 dev->cur_cmd = cmd; in ppa_queuecommand_lck()
801 cmd->scsi_done = done; in ppa_queuecommand_lck()
802 cmd->result = DID_ERROR << 16; /* default return code */ in ppa_queuecommand_lck()
803 cmd->SCp.phase = 0; /* bus free */ in ppa_queuecommand_lck()
836 static int ppa_abort(struct scsi_cmnd *cmd) in ppa_abort() argument
838 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_abort()
844 switch (cmd->SCp.phase) { in ppa_abort()
862 static int ppa_reset(struct scsi_cmnd *cmd) in ppa_reset() argument
864 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_reset()
866 if (cmd->SCp.phase) in ppa_reset()
883 static u8 cmd[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; in device_check() local
907 status = ppa_out(dev, cmd, 1); in device_check()