taglinefilesource code
scpnt568drivers/scsi/buslogic.cint buslogic_queuecommand(Scsi_Cmnd *scpnt, void (*done)(Scsi_Cmnd *))
scpnt572drivers/scsi/buslogic.cunsigned char *cmd = (unsigned char *)scpnt->cmnd;
scpnt573drivers/scsi/buslogic.cunsigned char target = scpnt->target;
scpnt574drivers/scsi/buslogic.cunsigned char lun = scpnt->lun;
scpnt575drivers/scsi/buslogic.cvoid *buff = scpnt->request_buffer;
scpnt576drivers/scsi/buslogic.cint bufflen = scpnt->request_bufflen;
scpnt579drivers/scsi/buslogic.cstruct Scsi_Host *shpnt = scpnt->host;
scpnt586drivers/scsi/buslogic.cscpnt->result = DID_TIME_OUT << 16;
scpnt587drivers/scsi/buslogic.cdone(scpnt);
scpnt594drivers/scsi/buslogic.cif (bufflen != sizeof scpnt->sense_buffer) {
scpnt600drivers/scsi/buslogic.cscpnt->result = 0;
scpnt601drivers/scsi/buslogic.cdone(scpnt);
scpnt618drivers/scsi/buslogic.cfor (i = 0; i < scpnt->cmd_len; i++)
scpnt653drivers/scsi/buslogic.cHOSTDATA(shpnt)->sc[mbo] = scpnt;    /* This will effectively
scpnt672drivers/scsi/buslogic.cccb->cdblen = scpnt->cmd_len;    /* SCSI Command Descriptor
scpnt683drivers/scsi/buslogic.cif (scpnt->use_sg) {
scpnt690drivers/scsi/buslogic.cscpnt->host_scribble
scpnt692drivers/scsi/buslogic.cif (scpnt->host_scribble == NULL) {
scpnt696drivers/scsi/buslogic.csgpnt = (struct scatterlist *)scpnt->request_buffer;
scpnt697drivers/scsi/buslogic.ccptr = (struct chain *)scpnt->host_scribble;
scpnt698drivers/scsi/buslogic.cif (scpnt->use_sg > shpnt->sg_tablesize) {
scpnt700drivers/scsi/buslogic.cscpnt->use_sg, shpnt->sg_tablesize);
scpnt703drivers/scsi/buslogic.cfor (i = 0; i < scpnt->use_sg; i++) {
scpnt709drivers/scsi/buslogic.cccb->datalen = scpnt->use_sg * sizeof (struct chain);
scpnt724drivers/scsi/buslogic.cscpnt->host_scribble = NULL;
scpnt732drivers/scsi/buslogic.cccb->rsalen = sizeof scpnt->sense_buffer;
scpnt733drivers/scsi/buslogic.cccb->senseptr = scpnt->sense_buffer;
scpnt752drivers/scsi/buslogic.cscpnt->scsi_done = done;
scpnt768drivers/scsi/buslogic.cscpnt->result = DID_ERROR << 16;
scpnt769drivers/scsi/buslogic.cdone(scpnt);
scpnt776drivers/scsi/buslogic.cstatic void internal_done(Scsi_Cmnd *scpnt)
scpnt778drivers/scsi/buslogic.cscpnt->SCp.Status++;
scpnt781drivers/scsi/buslogic.cint buslogic_command(Scsi_Cmnd *scpnt)
scpnt787drivers/scsi/buslogic.cbuslogic_queuecommand(scpnt, internal_done);
scpnt789drivers/scsi/buslogic.cscpnt->SCp.Status = 0;
scpnt790drivers/scsi/buslogic.cwhile (!scpnt->SCp.Status)
scpnt792drivers/scsi/buslogic.creturn scpnt->result;
scpnt1352drivers/scsi/buslogic.cint buslogic_abort(Scsi_Cmnd *scpnt)
scpnt1362drivers/scsi/buslogic.cinb(STATUS(scpnt->host->io_port)),
scpnt1363drivers/scsi/buslogic.cinb(INTERRUPT(scpnt->host->io_port)));
scpnt1367drivers/scsi/buslogic.cmb = HOSTDATA(scpnt->host)->mb;
scpnt1368drivers/scsi/buslogic.clast_mbi = HOSTDATA(scpnt->host)->last_mbi_used;
scpnt1380drivers/scsi/buslogic.c} while (mbi != HOSTDATA(scpnt->host)->last_mbi_used);
scpnt1385drivers/scsi/buslogic.cscpnt->host->irq);
scpnt1386drivers/scsi/buslogic.cHOSTDATA(scpnt->host)->last_mbi_used = last_mbi;
scpnt1387drivers/scsi/buslogic.cbuslogic_interrupt(scpnt->host->irq, NULL);
scpnt1396drivers/scsi/buslogic.cif (HOSTDATA(scpnt->host)->sc[i]) {
scpnt1397drivers/scsi/buslogic.cif (HOSTDATA(scpnt->host)->sc[i] == scpnt) {
scpnt1399drivers/scsi/buslogic.cscpnt->request.dev);
scpnt1400drivers/scsi/buslogic.cif (HOSTDATA(scpnt->host)->mb[i].status != MBX_NOT_IN_USE) {
scpnt1402drivers/scsi/buslogic.cbuslogic_out(scpnt->host->io_port, buscmd, sizeof buscmd);
scpnt1406drivers/scsi/buslogic.cscpnt->request.dev);
scpnt1420drivers/scsi/buslogic.cif (scpnt == HOSTDATA(scpnt->host)->sc[mbo]) {
scpnt1422drivers/scsi/buslogic.cbuslogic_out(scpnt->host->io_port, buscmd, sizeof buscmd);
scpnt1436drivers/scsi/buslogic.cint buslogic_reset(Scsi_Cmnd *scpnt)
scpnt1446drivers/scsi/buslogic.coutb(RSBUS, CONTROL(scpnt->host->io_port));
scpnt1451drivers/scsi/buslogic.cif (HOSTDATA(scpnt->host)->sc[i] == scpnt) {
scpnt1452drivers/scsi/buslogic.cHOSTDATA(scpnt->host)->ccbs[i].op = CCB_OP_BUS_RESET;
scpnt1456drivers/scsi/buslogic.cbuslogic_out(scpnt->host->io_port, buscmd, sizeof buscmd);
scpnt1463drivers/scsi/buslogic.cscpnt->target);
scpnt1470drivers/scsi/buslogic.cif (HOSTDATA(scpnt->host)->sc[i]
scpnt1471drivers/scsi/buslogic.c&& HOSTDATA(scpnt->host)->sc[i]->target == scpnt->target) {
scpnt1472drivers/scsi/buslogic.cScsi_Cmnd *sctmp = HOSTDATA(scpnt->host)->sc[i];
scpnt1478drivers/scsi/buslogic.cscpnt->target);
scpnt1479drivers/scsi/buslogic.csctmp->scsi_done(scpnt);
scpnt1481drivers/scsi/buslogic.cHOSTDATA(scpnt->host)->sc[i] = NULL;
scpnt1482drivers/scsi/buslogic.cHOSTDATA(scpnt->host)->mb[i].status = MBX_NOT_IN_USE;