taglinefilesource code
scpnt575drivers/scsi/buslogic.cint buslogic_queuecommand(Scsi_Cmnd *scpnt, void (*done)(Scsi_Cmnd *))
scpnt579drivers/scsi/buslogic.cunsigned char *cmd = (unsigned char *)scpnt->cmnd;
scpnt580drivers/scsi/buslogic.cunsigned char target = scpnt->target;
scpnt581drivers/scsi/buslogic.cunsigned char lun = scpnt->lun;
scpnt582drivers/scsi/buslogic.cvoid *buff = scpnt->request_buffer;
scpnt583drivers/scsi/buslogic.cint bufflen = scpnt->request_bufflen;
scpnt586drivers/scsi/buslogic.cstruct Scsi_Host *shpnt = scpnt->host;
scpnt593drivers/scsi/buslogic.cscpnt->result = DID_TIME_OUT << 16;
scpnt594drivers/scsi/buslogic.cdone(scpnt);
scpnt601drivers/scsi/buslogic.cif (bufflen != sizeof scpnt->sense_buffer) {
scpnt607drivers/scsi/buslogic.cscpnt->result = 0;
scpnt608drivers/scsi/buslogic.cdone(scpnt);
scpnt625drivers/scsi/buslogic.cfor (i = 0; i < scpnt->cmd_len; i++)
scpnt660drivers/scsi/buslogic.cHOSTDATA(shpnt)->sc[mbo] = scpnt;    /* This will effectively
scpnt679drivers/scsi/buslogic.cccb->cdblen = scpnt->cmd_len;    /* SCSI Command Descriptor
scpnt690drivers/scsi/buslogic.cif (scpnt->use_sg) {
scpnt697drivers/scsi/buslogic.cscpnt->host_scribble
scpnt699drivers/scsi/buslogic.cif (scpnt->host_scribble == NULL) {
scpnt703drivers/scsi/buslogic.csgpnt = (struct scatterlist *)scpnt->request_buffer;
scpnt704drivers/scsi/buslogic.ccptr = (struct chain *)scpnt->host_scribble;
scpnt705drivers/scsi/buslogic.cif (scpnt->use_sg > shpnt->sg_tablesize) {
scpnt707drivers/scsi/buslogic.cscpnt->use_sg, shpnt->sg_tablesize);
scpnt710drivers/scsi/buslogic.cfor (i = 0; i < scpnt->use_sg; i++) {
scpnt716drivers/scsi/buslogic.cccb->datalen = scpnt->use_sg * sizeof (struct chain);
scpnt731drivers/scsi/buslogic.cscpnt->host_scribble = NULL;
scpnt739drivers/scsi/buslogic.cccb->rsalen = sizeof scpnt->sense_buffer;
scpnt740drivers/scsi/buslogic.cccb->senseptr = scpnt->sense_buffer;
scpnt759drivers/scsi/buslogic.cscpnt->scsi_done = done;
scpnt775drivers/scsi/buslogic.cscpnt->result = DID_ERROR << 16;
scpnt776drivers/scsi/buslogic.cdone(scpnt);
scpnt783drivers/scsi/buslogic.cstatic void internal_done(Scsi_Cmnd *scpnt)
scpnt785drivers/scsi/buslogic.cscpnt->SCp.Status++;
scpnt788drivers/scsi/buslogic.cint buslogic_command(Scsi_Cmnd *scpnt)
scpnt794drivers/scsi/buslogic.cbuslogic_queuecommand(scpnt, internal_done);
scpnt796drivers/scsi/buslogic.cscpnt->SCp.Status = 0;
scpnt797drivers/scsi/buslogic.cwhile (!scpnt->SCp.Status)
scpnt799drivers/scsi/buslogic.creturn scpnt->result;
scpnt1360drivers/scsi/buslogic.cint buslogic_abort(Scsi_Cmnd *scpnt)
scpnt1370drivers/scsi/buslogic.cinb(STATUS(scpnt->host->io_port)),
scpnt1371drivers/scsi/buslogic.cinb(INTERRUPT(scpnt->host->io_port)));
scpnt1375drivers/scsi/buslogic.cmb = HOSTDATA(scpnt->host)->mb;
scpnt1376drivers/scsi/buslogic.clast_mbi = HOSTDATA(scpnt->host)->last_mbi_used;
scpnt1388drivers/scsi/buslogic.c} while (mbi != HOSTDATA(scpnt->host)->last_mbi_used);
scpnt1393drivers/scsi/buslogic.cscpnt->host->irq);
scpnt1394drivers/scsi/buslogic.cHOSTDATA(scpnt->host)->last_mbi_used = last_mbi;
scpnt1395drivers/scsi/buslogic.cbuslogic_interrupt(scpnt->host->irq, NULL);
scpnt1404drivers/scsi/buslogic.cif (HOSTDATA(scpnt->host)->sc[i]) {
scpnt1405drivers/scsi/buslogic.cif (HOSTDATA(scpnt->host)->sc[i] == scpnt) {
scpnt1407drivers/scsi/buslogic.ckdevname(scpnt->request.rq_dev));
scpnt1408drivers/scsi/buslogic.cif (HOSTDATA(scpnt->host)->mb[i].status != MBX_NOT_IN_USE) {
scpnt1410drivers/scsi/buslogic.cbuslogic_out(scpnt->host->io_port, buscmd, sizeof buscmd);
scpnt1414drivers/scsi/buslogic.ckdevname(scpnt->request.rq_dev));
scpnt1428drivers/scsi/buslogic.cif (scpnt == HOSTDATA(scpnt->host)->sc[mbo]) {
scpnt1430drivers/scsi/buslogic.cbuslogic_out(scpnt->host->io_port, buscmd, sizeof buscmd);
scpnt1444drivers/scsi/buslogic.cint buslogic_reset(Scsi_Cmnd *scpnt)
scpnt1454drivers/scsi/buslogic.coutb(RSBUS, CONTROL(scpnt->host->io_port));
scpnt1459drivers/scsi/buslogic.cif (HOSTDATA(scpnt->host)->sc[i] == scpnt) {
scpnt1460drivers/scsi/buslogic.cHOSTDATA(scpnt->host)->ccbs[i].op = CCB_OP_BUS_RESET;
scpnt1464drivers/scsi/buslogic.cbuslogic_out(scpnt->host->io_port, buscmd, sizeof buscmd);
scpnt1471drivers/scsi/buslogic.cscpnt->target);
scpnt1478drivers/scsi/buslogic.cif (HOSTDATA(scpnt->host)->sc[i]
scpnt1479drivers/scsi/buslogic.c&& HOSTDATA(scpnt->host)->sc[i]->target == scpnt->target) {
scpnt1480drivers/scsi/buslogic.cScsi_Cmnd *sctmp = HOSTDATA(scpnt->host)->sc[i];
scpnt1486drivers/scsi/buslogic.cscpnt->target);
scpnt1487drivers/scsi/buslogic.csctmp->scsi_done(scpnt);
scpnt1489drivers/scsi/buslogic.cHOSTDATA(scpnt->host)->sc[i] = NULL;
scpnt1490drivers/scsi/buslogic.cHOSTDATA(scpnt->host)->mb[i].status = MBX_NOT_IN_USE;