Lines Matching refs:cmd

492 static inline int ppa_send_command(struct scsi_cmnd *cmd)  in ppa_send_command()  argument
494 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_send_command()
499 for (k = 0; k < cmd->cmd_len; k++) in ppa_send_command()
500 if (!ppa_out(dev, &cmd->cmnd[k], 1)) in ppa_send_command()
513 static int ppa_completion(struct scsi_cmnd *cmd) in ppa_completion() argument
520 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_completion()
527 v = cmd->cmnd[0]; in ppa_completion()
545 if ((cmd->SCp.this_residual <= 0)) { in ppa_completion()
574 fast = (bulk && (cmd->SCp.this_residual >= PPA_BURST_SIZE)) in ppa_completion()
578 status = ppa_out(dev, cmd->SCp.ptr, fast); in ppa_completion()
580 status = ppa_in(dev, cmd->SCp.ptr, fast); in ppa_completion()
582 cmd->SCp.ptr += fast; in ppa_completion()
583 cmd->SCp.this_residual -= fast; in ppa_completion()
589 if (cmd->SCp.buffer && !cmd->SCp.this_residual) { in ppa_completion()
591 if (cmd->SCp.buffers_residual--) { in ppa_completion()
592 cmd->SCp.buffer++; in ppa_completion()
593 cmd->SCp.this_residual = in ppa_completion()
594 cmd->SCp.buffer->length; in ppa_completion()
595 cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); in ppa_completion()
615 struct scsi_cmnd *cmd = dev->cur_cmd; in ppa_interrupt() local
617 if (!cmd) { in ppa_interrupt()
621 if (ppa_engine(dev, cmd)) { in ppa_interrupt()
627 switch ((cmd->result >> 16) & 0xff) { in ppa_interrupt()
631 printk(KERN_DEBUG "ppa: no device at SCSI ID %i\n", cmd->device->target); in ppa_interrupt()
656 (cmd->result >> 16) & 0xff); in ppa_interrupt()
660 if (cmd->SCp.phase > 1) in ppa_interrupt()
667 cmd->scsi_done(cmd); in ppa_interrupt()
670 static int ppa_engine(ppa_struct *dev, struct scsi_cmnd *cmd) in ppa_engine() argument
682 switch (cmd->SCp.phase) { in ppa_engine()
717 cmd->SCp.phase++; in ppa_engine()
721 if (!ppa_select(dev, scmd_id(cmd))) { in ppa_engine()
725 cmd->SCp.phase++; in ppa_engine()
732 if (!ppa_send_command(cmd)) in ppa_engine()
734 cmd->SCp.phase++; in ppa_engine()
737 if (scsi_bufflen(cmd)) { in ppa_engine()
738 cmd->SCp.buffer = scsi_sglist(cmd); in ppa_engine()
739 cmd->SCp.this_residual = cmd->SCp.buffer->length; in ppa_engine()
740 cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); in ppa_engine()
742 cmd->SCp.buffer = NULL; in ppa_engine()
743 cmd->SCp.this_residual = 0; in ppa_engine()
744 cmd->SCp.ptr = NULL; in ppa_engine()
746 cmd->SCp.buffers_residual = scsi_sg_count(cmd) - 1; in ppa_engine()
747 cmd->SCp.phase++; in ppa_engine()
754 retv = ppa_completion(cmd); in ppa_engine()
759 cmd->SCp.phase++; in ppa_engine()
762 cmd->result = DID_OK << 16; in ppa_engine()
772 cmd->result = in ppa_engine()
784 static int ppa_queuecommand_lck(struct scsi_cmnd *cmd, in ppa_queuecommand_lck() argument
787 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_queuecommand_lck()
795 dev->cur_cmd = cmd; in ppa_queuecommand_lck()
796 cmd->scsi_done = done; in ppa_queuecommand_lck()
797 cmd->result = DID_ERROR << 16; /* default return code */ in ppa_queuecommand_lck()
798 cmd->SCp.phase = 0; /* bus free */ in ppa_queuecommand_lck()
831 static int ppa_abort(struct scsi_cmnd *cmd) in ppa_abort() argument
833 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_abort()
839 switch (cmd->SCp.phase) { in ppa_abort()
859 static int ppa_reset(struct scsi_cmnd *cmd) in ppa_reset() argument
861 ppa_struct *dev = ppa_dev(cmd->device->host); in ppa_reset()
863 if (cmd->SCp.phase) in ppa_reset()
880 static u8 cmd[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; in device_check() local
904 status = ppa_out(dev, cmd, 1); in device_check()