taglinefilesource code
qbase104drivers/scsi/qlogic.cstatic int      qbase;  /* Port */
qbase113drivers/scsi/qlogic.c#define REG0 ( outb( inb( qbase + 0xd ) & 0x7f , qbase + 0xd ), outb( 4 , qbase + 0xd ))
qbase114drivers/scsi/qlogic.c#define REG1 ( outb( inb( qbase + 0xd ) | 0x80 , qbase + 0xd ), outb( 0xb4 | QL_INT_ACTIVE_HIGH , qbase + 0xd ))
qbase140drivers/scsi/qlogic.cx = inb(qbase + 0xd);
qbase142drivers/scsi/qlogic.coutb(3, qbase + 3);        /* reset SCSI */
qbase143drivers/scsi/qlogic.coutb(2, qbase + 3);        /* reset chip */
qbase158drivers/scsi/qlogic.cif( reqlen >= 128 && (inb( qbase + 8 ) & 2) ) { /* full */
qbase159drivers/scsi/qlogic.cinsl( qbase + 4, request, 32 );
qbase164drivers/scsi/qlogic.cif( (j=inb( qbase + 8 )) & 4 ) {
qbase165drivers/scsi/qlogic.cinsl( qbase + 4, request, 21 );
qbase169drivers/scsi/qlogic.cif( reqlen >= 44 && (inb( qbase + 8 ) & 8) ) {  /* 1/3 */
qbase170drivers/scsi/qlogic.cinsl( qbase + 4, request, 11 );
qbase180drivers/scsi/qlogic.cwhile ( reqlen && !( (j=inb(qbase + 8)) & 0x10 ) ) {
qbase181drivers/scsi/qlogic.c*request++ = inb(qbase + 4);
qbase185drivers/scsi/qlogic.cj = inb(qbase+8);
qbase191drivers/scsi/qlogic.cif( reqlen >= 128 && inb( qbase + 8 ) & 0x10 ) { /* empty */
qbase192drivers/scsi/qlogic.coutsl(qbase + 4, request, 32 );
qbase197drivers/scsi/qlogic.cif( !((j=inb( qbase + 8 )) & 8) ) {
qbase198drivers/scsi/qlogic.coutsl( qbase + 4, request, 21 );
qbase202drivers/scsi/qlogic.cif( reqlen >= 40 && !(inb( qbase + 8 ) & 4 ) ) { /* 2/3 */
qbase203drivers/scsi/qlogic.coutsl( qbase + 4, request, 10 );
qbase212drivers/scsi/qlogic.cwhile ( reqlen && !( (j=inb(qbase + 8)) & 2 ) ) {
qbase213drivers/scsi/qlogic.coutb(*request++, qbase + 4);
qbase217drivers/scsi/qlogic.cj = inb(qbase+8);
qbase221drivers/scsi/qlogic.creturn inb( qbase + 8 ) & 0xc0;
qbase230drivers/scsi/qlogic.cwhile ( i > jiffies && !qabort && !((k = inb(qbase + 4)) & 0xe0));
qbase257drivers/scsi/qlogic.cinb(qbase + 5);       /* clear interrupts */
qbase258drivers/scsi/qlogic.cif (inb(qbase + 5))      /* if still interrupting */
qbase259drivers/scsi/qlogic.coutb(2, qbase + 3);    /* reset chip */
qbase260drivers/scsi/qlogic.celse if (inb(qbase + 7) & 0x1f)
qbase261drivers/scsi/qlogic.coutb(1, qbase + 3);    /* clear fifo */
qbase262drivers/scsi/qlogic.cwhile (inb(qbase + 5));     /* clear ints */
qbase264drivers/scsi/qlogic.coutb(1, qbase + 8);      /* set for PIO pseudo DMA */
qbase265drivers/scsi/qlogic.coutb(0, qbase + 0xb);      /* disable ints */
qbase266drivers/scsi/qlogic.cinb(qbase + 8);       /* clear int bits */
qbase268drivers/scsi/qlogic.coutb(0x40, qbase + 0xb);    /* enable features */
qbase273drivers/scsi/qlogic.coutb(0x18, qbase + 0xc);
qbase275drivers/scsi/qlogic.coutb(0x10, qbase + 0xc);
qbase279drivers/scsi/qlogic.coutb(8, qbase + 0xc);
qbase284drivers/scsi/qlogic.coutb(0xd0 | qinitid, qbase + 8);  /* (initiator) bus id */
qbase286drivers/scsi/qlogic.coutb(0x50 | qinitid, qbase + 8);  /* (initiator) bus id */
qbase288drivers/scsi/qlogic.coutb( SYNCOFFST , qbase + 7 );
qbase289drivers/scsi/qlogic.coutb( SYNCXFRPD , qbase + 6 );
qbase291drivers/scsi/qlogic.coutb(0x99, qbase + 5);  /* timer */
qbase292drivers/scsi/qlogic.coutb(cmd->target, qbase + 4);
qbase295drivers/scsi/qlogic.coutb(cmd->cmnd[i], qbase + 2);
qbase297drivers/scsi/qlogic.coutb(0x41, qbase + 3);  /* select and send command */
qbase313drivers/scsi/qlogic.cj = inb(qbase + 6);
qbase314drivers/scsi/qlogic.ci = inb(qbase + 5);
qbase318drivers/scsi/qlogic.ci |= inb(qbase + 5);  /* the 0x10 bit can be set after the 0x08 */
qbase330drivers/scsi/qlogic.cprintk("Ql:Bad sequence for command %d, int %02X, cmdleft = %d\n", j, i, inb( qbase+7 ) & 0x1f );
qbase335drivers/scsi/qlogic.cif (inb(qbase + 7) & 0x1f)  /* if some bytes in fifo */
qbase336drivers/scsi/qlogic.coutb(1, qbase + 3);    /* clear fifo */
qbase340drivers/scsi/qlogic.cif (reqlen && !((phase = inb(qbase + 4)) & 6)) {  /* data phase */
qbase342drivers/scsi/qlogic.coutb(reqlen, qbase);      /* low-mid xfer cnt */
qbase343drivers/scsi/qlogic.coutb(reqlen >> 8, qbase+1);      /* low-mid xfer cnt */
qbase344drivers/scsi/qlogic.coutb(reqlen >> 16, qbase + 0xe);  /* high xfer cnt */
qbase345drivers/scsi/qlogic.coutb(0x90, qbase + 3);      /* command do xfer */
qbase368drivers/scsi/qlogic.ck = inb(qbase + 5);  /* should be 0x10, bus service */
qbase373drivers/scsi/qlogic.cwhile ( k > jiffies && !qabort && !(inb(qbase + 4) & 6));  /* wait for status phase */
qbase378drivers/scsi/qlogic.cwhile (inb(qbase + 5));         /* clear pending ints */
qbase381drivers/scsi/qlogic.coutb(0x11, qbase + 3);          /* get status and message */
qbase384drivers/scsi/qlogic.ci = inb(qbase + 5);          /* get chip irq stat */
qbase385drivers/scsi/qlogic.cj = inb(qbase + 7) & 0x1f;        /* and bytes rec'd */
qbase386drivers/scsi/qlogic.cstatus = inb(qbase + 2);
qbase387drivers/scsi/qlogic.cmessage = inb(qbase + 2);
qbase393drivers/scsi/qlogic.coutb(0x12, qbase + 3);  /* done, disconnect */
qbase398drivers/scsi/qlogic.ci = inb(qbase + 5);  /* should be bus service */
qbase400drivers/scsi/qlogic.ci |= inb(qbase + 5);
qbase414drivers/scsi/qlogic.cif (!(inb(qbase + 4) & 0x80))  /* false alarm? */
qbase417drivers/scsi/qlogic.cwhile (inb(qbase + 5)); /* maybe also ql_zap() */
qbase503drivers/scsi/qlogic.cfor (qbase = 0x230; qbase < 0x430; qbase += 0x100) {
qbase505drivers/scsi/qlogic.cif( check_region( qbase , 0x10 ) )
qbase509drivers/scsi/qlogic.cif ( ( (inb(qbase + 0xe) ^ inb(qbase + 0xe)) == 7 )
qbase510drivers/scsi/qlogic.c&& ( (inb(qbase + 0xe) ^ inb(qbase + 0xe)) == 7 ) )
qbase513drivers/scsi/qlogic.cif (qbase == 0x430)
qbase516drivers/scsi/qlogic.cqltyp = inb(qbase + 0xe) & 0xf8;
qbase520drivers/scsi/qlogic.coutb(1, qbase + 8);      /* set for PIO pseudo DMA */
qbase522drivers/scsi/qlogic.coutb(0xd0 | qinitid, qbase + 8);  /* (ini) bus id, disable scsi rst */
qbase523drivers/scsi/qlogic.coutb(0x99, qbase + 5);      /* select timer */
qbase526drivers/scsi/qlogic.coutb( 3 , qbase + 3 );
qbase528drivers/scsi/qlogic.cwhile( inb( qbase + 0xf ) & 4 );
qbase537drivers/scsi/qlogic.coutb(0x90, qbase + 3);  /* illegal command - cause interrupt */
qbase542drivers/scsi/qlogic.coutb(0xb0 | QL_INT_ACTIVE_HIGH , qbase + 0xd);    /* int pin off */
qbase544drivers/scsi/qlogic.coutb(0xb4 | QL_INT_ACTIVE_HIGH , qbase + 0xd);    /* int pin on */
qbase548drivers/scsi/qlogic.cwhile (inb(qbase + 5));       /* purge int */
qbase556drivers/scsi/qlogic.crequest_region( qbase , 0x10 ,"qlogic");
qbase559drivers/scsi/qlogic.chreg->io_port = qbase;
qbase565drivers/scsi/qlogic.cqltyp, qbase, qlirq, QL_INT_ACTIVE_HIGH, QL_TURBO_PDMA );