Lines Matching refs:cmd

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