Lines Matching refs:cmd

161 	struct scsi_cmnd *cmd;  in eata_pio_int_handler()  local
184 cmd = cp->cmd; in eata_pio_int_handler()
185 base = cmd->device->host->base; in eata_pio_int_handler()
193 while ((cmd->SCp.Status) && ((z > 0) || (odd))) { in eata_pio_int_handler()
195 *(cmd->SCp.ptr) = zwickel >> 8; in eata_pio_int_handler()
196 IncStat(&cmd->SCp, 1); in eata_pio_int_handler()
199 x = min_t(unsigned int, z, cmd->SCp.this_residual / 2); in eata_pio_int_handler()
200 insw(base + HA_RDATA, cmd->SCp.ptr, x); in eata_pio_int_handler()
202 IncStat(&cmd->SCp, 2 * x); in eata_pio_int_handler()
203 if ((z > 0) && (cmd->SCp.this_residual == 1)) { in eata_pio_int_handler()
205 *(cmd->SCp.ptr) = zwickel & 0xff; in eata_pio_int_handler()
206 IncStat(&cmd->SCp, 1); in eata_pio_int_handler()
219 while ((cmd->SCp.Status) && ((z > 0) || (odd))) { in eata_pio_int_handler()
221 zwickel += *(cmd->SCp.ptr) << 8; in eata_pio_int_handler()
222 IncStat(&cmd->SCp, 1); in eata_pio_int_handler()
227 x = min_t(unsigned int, z, cmd->SCp.this_residual / 2); in eata_pio_int_handler()
228 outsw(base + HA_RDATA, cmd->SCp.ptr, x); in eata_pio_int_handler()
230 IncStat(&cmd->SCp, 2 * x); in eata_pio_int_handler()
231 if ((z > 0) && (cmd->SCp.this_residual == 1)) { in eata_pio_int_handler()
232 zwickel = *(cmd->SCp.ptr); in eata_pio_int_handler()
234 IncStat(&cmd->SCp, 1); in eata_pio_int_handler()
258 cmd->result = (DID_OK << 16); in eata_pio_int_handler()
261 cmd->result = (DID_OK << 16) + 0x02; in eata_pio_int_handler()
263 cmd->result = (DID_NO_CONNECT << 16); in eata_pio_int_handler()
273 printk(KERN_DEBUG "stat: %#.2x, result: %#.8x\n", stat, cmd->result); in eata_pio_int_handler()
278 cmd->scsi_done(cmd); in eata_pio_int_handler()
302 static int eata_pio_queue_lck(struct scsi_cmnd *cmd, in eata_pio_queue_lck() argument
314 hd = HD(cmd); in eata_pio_queue_lck()
315 sh = cmd->device->host; in eata_pio_queue_lck()
338 DBG(DBG_QUEUE, scmd_printk(KERN_DEBUG, cmd, in eata_pio_queue_lck()
339 "eata_pio_queue 0x%p, y %d\n", cmd, y)); in eata_pio_queue_lck()
341 cmd->scsi_done = (void *) done; in eata_pio_queue_lck()
343 if (cmd->sc_data_direction == DMA_TO_DEVICE) in eata_pio_queue_lck()
348 cp->Interpret = (cmd->device->id == hd->hostid); in eata_pio_queue_lck()
349 cp->cp_datalen = cpu_to_be32(scsi_bufflen(cmd)); in eata_pio_queue_lck()
354 cp->cp_id = cmd->device->id; in eata_pio_queue_lck()
355 cp->cp_lun = cmd->device->lun; in eata_pio_queue_lck()
358 memcpy(cp->cp_cdb, cmd->cmnd, COMMAND_SIZE(*cmd->cmnd)); in eata_pio_queue_lck()
363 cp->cmd = cmd; in eata_pio_queue_lck()
364 cmd->host_scribble = (char *) &hd->ccb[y]; in eata_pio_queue_lck()
366 if (!scsi_bufflen(cmd)) { in eata_pio_queue_lck()
367 cmd->SCp.buffers_residual = 1; in eata_pio_queue_lck()
368 cmd->SCp.ptr = NULL; in eata_pio_queue_lck()
369 cmd->SCp.this_residual = 0; in eata_pio_queue_lck()
370 cmd->SCp.buffer = NULL; in eata_pio_queue_lck()
372 cmd->SCp.buffer = scsi_sglist(cmd); in eata_pio_queue_lck()
373 cmd->SCp.buffers_residual = scsi_sg_count(cmd); in eata_pio_queue_lck()
374 cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); in eata_pio_queue_lck()
375 cmd->SCp.this_residual = cmd->SCp.buffer->length; in eata_pio_queue_lck()
377 cmd->SCp.Status = (cmd->SCp.this_residual != 0); /* TRUE as long as bytes in eata_pio_queue_lck()
381 cmd->result = DID_BUS_BUSY << 16; in eata_pio_queue_lck()
382 scmd_printk(KERN_NOTICE, cmd, in eata_pio_queue_lck()
384 "returning DID_BUS_BUSY, done.\n", cmd); in eata_pio_queue_lck()
385 done(cmd); in eata_pio_queue_lck()
397 DBG(DBG_QUEUE, scmd_printk(KERN_DEBUG, cmd, in eata_pio_queue_lck()
399 "slot %d irq %d\n", sh->base, cmd, y, sh->irq)); in eata_pio_queue_lck()
406 static int eata_pio_abort(struct scsi_cmnd *cmd) in DEF_SCSI_QCMD()
410 DBG(DBG_ABNORM, scmd_printk(KERN_WARNING, cmd, in DEF_SCSI_QCMD()
411 "eata_pio_abort called pid: 0x%p\n", cmd)); in DEF_SCSI_QCMD()
413 while (inb(cmd->device->host->base + HA_RAUXSTAT) & HA_ABUSY) in DEF_SCSI_QCMD()
418 if (CD(cmd)->status == FREE) { in DEF_SCSI_QCMD()
422 if (CD(cmd)->status == USED) { in DEF_SCSI_QCMD()
427 if (CD(cmd)->status == RESET) { in DEF_SCSI_QCMD()
431 if (CD(cmd)->status == LOCKED) { in DEF_SCSI_QCMD()
438 static int eata_pio_host_reset(struct scsi_cmnd *cmd) in eata_pio_host_reset() argument
443 struct Scsi_Host *host = cmd->device->host; in eata_pio_host_reset()
445 DBG(DBG_ABNORM, scmd_printk(KERN_WARNING, cmd, in eata_pio_host_reset()
450 if (HD(cmd)->state == RESET) { in eata_pio_host_reset()
458 for (x = 0; x < cmd->device->host->can_queue; x++) { in eata_pio_host_reset()
460 if (HD(cmd)->ccb[x].status == FREE) in eata_pio_host_reset()
463 sp = HD(cmd)->ccb[x].cmd; in eata_pio_host_reset()
464 HD(cmd)->ccb[x].status = RESET; in eata_pio_host_reset()
472 outb(EATA_CMD_RESET, cmd->device->host->base + HA_WCOMMAND); in eata_pio_host_reset()
475 HD(cmd)->state = RESET; in eata_pio_host_reset()
483 for (x = 0; x < cmd->device->host->can_queue; x++) { in eata_pio_host_reset()
486 if (HD(cmd)->ccb[x].status != RESET) in eata_pio_host_reset()
489 sp = HD(cmd)->ccb[x].cmd; in eata_pio_host_reset()
494 HD(cmd)->ccb[x].status = FREE; in eata_pio_host_reset()
499 HD(cmd)->state = 0; in eata_pio_host_reset()