taglinefilesource code
scpnt597drivers/scsi/buslogic.cint buslogic_queuecommand(Scsi_Cmnd *scpnt, void (*done)(Scsi_Cmnd *))
scpnt601drivers/scsi/buslogic.cunsigned char *cmd = (unsigned char *)scpnt->cmnd;
scpnt602drivers/scsi/buslogic.cunsigned char target = scpnt->target;
scpnt603drivers/scsi/buslogic.cunsigned char lun = scpnt->lun;
scpnt604drivers/scsi/buslogic.cvoid *buff = scpnt->request_buffer;
scpnt605drivers/scsi/buslogic.cint bufflen = scpnt->request_bufflen;
scpnt612drivers/scsi/buslogic.cscpnt->result = DID_TIME_OUT << 16;
scpnt613drivers/scsi/buslogic.cdone(scpnt);
scpnt620drivers/scsi/buslogic.cif (bufflen != sizeof scpnt->sense_buffer) {
scpnt626drivers/scsi/buslogic.cscpnt->result = 0;
scpnt627drivers/scsi/buslogic.cdone(scpnt);
scpnt643drivers/scsi/buslogic.cbuslogic_stat(scpnt->host->io_port);
scpnt653drivers/scsi/buslogic.cmb = HOSTDATA(scpnt->host)->mb;
scpnt654drivers/scsi/buslogic.cccb = HOSTDATA(scpnt->host)->ccbs;
scpnt661drivers/scsi/buslogic.cmbo = HOSTDATA(scpnt->host)->last_mbo_used + 1;
scpnt667drivers/scsi/buslogic.c&& HOSTDATA(scpnt->host)->sc[mbo] == NULL)
scpnt672drivers/scsi/buslogic.c} while (mbo != HOSTDATA(scpnt->host)->last_mbo_used);
scpnt675drivers/scsi/buslogic.c|| HOSTDATA(scpnt->host)->sc[mbo]) {
scpnt681drivers/scsi/buslogic.cHOSTDATA(scpnt->host)->sc[mbo] = scpnt;  /* This will effectively
scpnt685drivers/scsi/buslogic.cHOSTDATA(scpnt->host)->last_mbo_used = mbo;
scpnt709drivers/scsi/buslogic.cif (scpnt->use_sg) {
scpnt716drivers/scsi/buslogic.cscpnt->host_scribble
scpnt718drivers/scsi/buslogic.cif (scpnt->host_scribble == NULL)
scpnt720drivers/scsi/buslogic.csgpnt = (struct scatterlist *)scpnt->request_buffer;
scpnt721drivers/scsi/buslogic.ccptr = (struct chain *)scpnt->host_scribble;
scpnt722drivers/scsi/buslogic.cif (scpnt->use_sg > scpnt->host->sg_tablesize) {
scpnt725drivers/scsi/buslogic.cscpnt->use_sg, scpnt->host->sg_tablesize);
scpnt728drivers/scsi/buslogic.cfor (i = 0; i < scpnt->use_sg; i++) {
scpnt732drivers/scsi/buslogic.cccb[mbo].datalen = scpnt->use_sg * sizeof (struct chain);
scpnt747drivers/scsi/buslogic.cscpnt->host_scribble = NULL;
scpnt754drivers/scsi/buslogic.cccb[mbo].rsalen = sizeof scpnt->sense_buffer;
scpnt755drivers/scsi/buslogic.cccb[mbo].senseptr = scpnt->sense_buffer;
scpnt773drivers/scsi/buslogic.cbuslogic_stat(scpnt->host->io_port);
scpnt775drivers/scsi/buslogic.cscpnt->scsi_done = done;
scpnt778drivers/scsi/buslogic.cbuslogic_out(scpnt->host->io_port, buscmd, sizeof buscmd);
scpnt780drivers/scsi/buslogic.cbuslogic_stat(scpnt->host->io_port);
scpnt789drivers/scsi/buslogic.cstatic void internal_done(Scsi_Cmnd *scpnt)
scpnt791drivers/scsi/buslogic.cscpnt->SCp.Status++;
scpnt794drivers/scsi/buslogic.cint buslogic_command(Scsi_Cmnd *scpnt)
scpnt800drivers/scsi/buslogic.cbuslogic_queuecommand(scpnt, internal_done);
scpnt802drivers/scsi/buslogic.cscpnt->SCp.Status = 0;
scpnt803drivers/scsi/buslogic.cwhile (!scpnt->SCp.Status)
scpnt805drivers/scsi/buslogic.creturn scpnt->result;
scpnt1207drivers/scsi/buslogic.cint buslogic_abort(Scsi_Cmnd *scpnt)
scpnt1216drivers/scsi/buslogic.cinb(STATUS(scpnt->host->io_port)),
scpnt1217drivers/scsi/buslogic.cinb(INTERRUPT(scpnt->host->io_port)));
scpnt1220drivers/scsi/buslogic.cmb = HOSTDATA(scpnt->host)->mb;
scpnt1221drivers/scsi/buslogic.cmbi = HOSTDATA(scpnt->host)->last_mbi_used + 1;
scpnt1231drivers/scsi/buslogic.c} while (mbi != HOSTDATA(scpnt->host)->last_mbi_used);
scpnt1237drivers/scsi/buslogic.cscpnt->host->irq);
scpnt1241drivers/scsi/buslogic.cintval[0] = scpnt->host->irq;
scpnt1250drivers/scsi/buslogic.cif (HOSTDATA(scpnt->host)->sc[i]) {
scpnt1251drivers/scsi/buslogic.cif (HOSTDATA(scpnt->host)->sc[i] == scpnt) {
scpnt1253drivers/scsi/buslogic.cscpnt->request.dev);
scpnt1254drivers/scsi/buslogic.cif (HOSTDATA(scpnt->host)->mb[i].status != MBX_NOT_IN_USE) {
scpnt1256drivers/scsi/buslogic.cbuslogic_out(scpnt->host->io_port, buscmd, sizeof buscmd);
scpnt1260drivers/scsi/buslogic.cscpnt->request.dev);
scpnt1273drivers/scsi/buslogic.cif (scpnt == HOSTDATA(scpnt->host)->sc[mbo]) {
scpnt1275drivers/scsi/buslogic.cbuslogic_out(scpnt->host->io_port, buscmd, sizeof buscmd);
scpnt1289drivers/scsi/buslogic.cint buslogic_reset(Scsi_Cmnd *scpnt)
scpnt1299drivers/scsi/buslogic.coutb(RSBUS, CONTROL(scpnt->host->io_port));
scpnt1304drivers/scsi/buslogic.cif (HOSTDATA(scpnt->host)->sc[i] == scpnt) {
scpnt1305drivers/scsi/buslogic.cHOSTDATA(scpnt->host)->ccbs[i].op = 0x81;  /* ??? BUS DEVICE
scpnt1310drivers/scsi/buslogic.cbuslogic_out(scpnt->host->io_port, buscmd, sizeof buscmd);
scpnt1317drivers/scsi/buslogic.cscpnt->target);
scpnt1324drivers/scsi/buslogic.cif (HOSTDATA(scpnt->host)->sc[i]
scpnt1325drivers/scsi/buslogic.c&& HOSTDATA(scpnt->host)->sc[i]->target == scpnt->target) {
scpnt1326drivers/scsi/buslogic.cScsi_Cmnd *sctmp = HOSTDATA(scpnt->host)->sc[i];
scpnt1331drivers/scsi/buslogic.cprintk("Sending DID_RESET for target %d\n", scpnt->target);
scpnt1332drivers/scsi/buslogic.csctmp->scsi_done(scpnt);
scpnt1334drivers/scsi/buslogic.cHOSTDATA(scpnt->host)->sc[i] = NULL;
scpnt1335drivers/scsi/buslogic.cHOSTDATA(scpnt->host)->mb[i].status = MBX_NOT_IN_USE;