taglinefilesource code
qbase140drivers/scsi/qlogic.cstatic int      qbase = 0;  /* Port */
qbase156drivers/scsi/qlogic.c#define REG0 ( outb( inb( qbase + 0xd ) & 0x7f , qbase + 0xd ), outb( 4 , qbase + 0xd ))
qbase157drivers/scsi/qlogic.c#define REG1 ( outb( inb( qbase + 0xd ) | 0x80 , qbase + 0xd ), outb( 0xb4 | QL_INT_ACTIVE_HIGH , qbase + 0xd ))
qbase183drivers/scsi/qlogic.cx = inb(qbase + 0xd);
qbase185drivers/scsi/qlogic.coutb(3, qbase + 3);        /* reset SCSI */
qbase186drivers/scsi/qlogic.coutb(2, qbase + 3);        /* reset chip */
qbase202drivers/scsi/qlogic.cif( reqlen >= 128 && (inb( qbase + 8 ) & 2) ) { /* full */
qbase203drivers/scsi/qlogic.cinsl( qbase + 4, request, 32 );
qbase208drivers/scsi/qlogic.cif( (j=inb( qbase + 8 )) & 4 ) {
qbase209drivers/scsi/qlogic.cinsl( qbase + 4, request, 21 );
qbase213drivers/scsi/qlogic.cif( reqlen >= 44 && (inb( qbase + 8 ) & 8) ) {  /* 1/3 */
qbase214drivers/scsi/qlogic.cinsl( qbase + 4, request, 11 );
qbase225drivers/scsi/qlogic.cwhile ( reqlen && !( (j=inb(qbase + 8)) & 0x10 ) ) {
qbase226drivers/scsi/qlogic.c*request++ = inb(qbase + 4);
qbase230drivers/scsi/qlogic.cj = inb(qbase+8);
qbase237drivers/scsi/qlogic.cif( reqlen >= 128 && inb( qbase + 8 ) & 0x10 ) { /* empty */
qbase238drivers/scsi/qlogic.coutsl(qbase + 4, request, 32 );
qbase243drivers/scsi/qlogic.cif( !((j=inb( qbase + 8 )) & 8) ) {
qbase244drivers/scsi/qlogic.coutsl( qbase + 4, request, 21 );
qbase248drivers/scsi/qlogic.cif( reqlen >= 40 && !(inb( qbase + 8 ) & 4 ) ) { /* 2/3 */
qbase249drivers/scsi/qlogic.coutsl( qbase + 4, request, 10 );
qbase259drivers/scsi/qlogic.cwhile ( reqlen && !( (j=inb(qbase + 8)) & 2 ) ) {
qbase260drivers/scsi/qlogic.coutb(*request++, qbase + 4);
qbase264drivers/scsi/qlogic.cj = inb(qbase+8);
qbase268drivers/scsi/qlogic.creturn inb( qbase + 8 ) & 0xc0;
qbase278drivers/scsi/qlogic.cwhile ( i > jiffies && !qabort && !((k = inb(qbase + 4)) & 0xe0))
qbase306drivers/scsi/qlogic.cinb(qbase + 5);       /* clear interrupts */
qbase307drivers/scsi/qlogic.cif (inb(qbase + 5))      /* if still interrupting */
qbase308drivers/scsi/qlogic.coutb(2, qbase + 3);    /* reset chip */
qbase309drivers/scsi/qlogic.celse if (inb(qbase + 7) & 0x1f)
qbase310drivers/scsi/qlogic.coutb(1, qbase + 3);    /* clear fifo */
qbase311drivers/scsi/qlogic.cwhile (inb(qbase + 5));     /* clear ints */
qbase313drivers/scsi/qlogic.coutb(1, qbase + 8);      /* set for PIO pseudo DMA */
qbase314drivers/scsi/qlogic.coutb(0, qbase + 0xb);      /* disable ints */
qbase315drivers/scsi/qlogic.cinb(qbase + 8);       /* clear int bits */
qbase317drivers/scsi/qlogic.coutb(0x40, qbase + 0xb);    /* enable features */
qbase320drivers/scsi/qlogic.coutb( qlcfgc , qbase + 0xc);
qbase322drivers/scsi/qlogic.coutb( 0x40 | qlcfg8 | qinitid, qbase + 8);
qbase323drivers/scsi/qlogic.coutb( qlcfg7 , qbase + 7 );
qbase324drivers/scsi/qlogic.coutb( qlcfg6 , qbase + 6 );
qbase326drivers/scsi/qlogic.coutb(qlcfg5, qbase + 5);    /* select timer */
qbase327drivers/scsi/qlogic.coutb(qlcfg9 & 7, qbase + 9);      /* prescaler */
qbase329drivers/scsi/qlogic.coutb(cmd->target, qbase + 4);
qbase332drivers/scsi/qlogic.coutb(cmd->cmnd[i], qbase + 2);
qbase334drivers/scsi/qlogic.coutb(0x41, qbase + 3);  /* select and send command */
qbase351drivers/scsi/qlogic.cj = inb(qbase + 6);
qbase352drivers/scsi/qlogic.ci = inb(qbase + 5);
qbase356drivers/scsi/qlogic.ci |= inb(qbase + 5);  /* the 0x10 bit can be set after the 0x08 */
qbase368drivers/scsi/qlogic.cprintk("Ql:Bad sequence for command %d, int %02X, cmdleft = %d\n", j, i, inb( qbase+7 ) & 0x1f );
qbase373drivers/scsi/qlogic.cif (inb(qbase + 7) & 0x1f)  /* if some bytes in fifo */
qbase374drivers/scsi/qlogic.coutb(1, qbase + 3);    /* clear fifo */
qbase378drivers/scsi/qlogic.cif (reqlen && !((phase = inb(qbase + 4)) & 6)) {  /* data phase */
qbase380drivers/scsi/qlogic.coutb(reqlen, qbase);      /* low-mid xfer cnt */
qbase381drivers/scsi/qlogic.coutb(reqlen >> 8, qbase+1);      /* low-mid xfer cnt */
qbase382drivers/scsi/qlogic.coutb(reqlen >> 16, qbase + 0xe);  /* high xfer cnt */
qbase383drivers/scsi/qlogic.coutb(0x90, qbase + 3);      /* command do xfer */
qbase406drivers/scsi/qlogic.ck = inb(qbase + 5);  /* should be 0x10, bus service */
qbase410drivers/scsi/qlogic.cwhile ( k > jiffies && !qabort && !(inb(qbase + 4) & 6));  /* wait for status phase */
qbase415drivers/scsi/qlogic.cwhile (inb(qbase + 5));         /* clear pending ints */
qbase418drivers/scsi/qlogic.coutb(0x11, qbase + 3);          /* get status and message */
qbase421drivers/scsi/qlogic.ci = inb(qbase + 5);          /* get chip irq stat */
qbase422drivers/scsi/qlogic.cj = inb(qbase + 7) & 0x1f;        /* and bytes rec'd */
qbase423drivers/scsi/qlogic.cstatus = inb(qbase + 2);
qbase424drivers/scsi/qlogic.cmessage = inb(qbase + 2);
qbase430drivers/scsi/qlogic.coutb(0x12, qbase + 3);  /* done, disconnect */
qbase435drivers/scsi/qlogic.ci = inb(qbase + 5);  /* should be bus service */
qbase438drivers/scsi/qlogic.ci |= inb(qbase + 5);
qbase453drivers/scsi/qlogic.cif (!(inb(qbase + 4) & 0x80))  /* false alarm? */
qbase458drivers/scsi/qlogic.cwhile (i-- && inb(qbase + 5)); /* maybe also ql_zap() */
qbase529drivers/scsi/qlogic.cqbase=port;
qbase553drivers/scsi/qlogic.cif( !qbase ) {
qbase554drivers/scsi/qlogic.cfor (qbase = 0x230; qbase < 0x430; qbase += 0x100) {
qbase555drivers/scsi/qlogic.cif( check_region( qbase , 0x10 ) )
qbase558drivers/scsi/qlogic.cif ( ( (inb(qbase + 0xe) ^ inb(qbase + 0xe)) == 7 )
qbase559drivers/scsi/qlogic.c&& ( (inb(qbase + 0xe) ^ inb(qbase + 0xe)) == 7 ) )
qbase562drivers/scsi/qlogic.cif (qbase == 0x430)
qbase566drivers/scsi/qlogic.cprintk( "Ql: Using preset base address of %03x\n", qbase );
qbase568drivers/scsi/qlogic.cqltyp = inb(qbase + 0xe) & 0xf8;
qbase572drivers/scsi/qlogic.coutb(1, qbase + 8);      /* set for PIO pseudo DMA */
qbase574drivers/scsi/qlogic.coutb(0x40 | qlcfg8 | qinitid, qbase + 8);  /* (ini) bus id, disable scsi rst */
qbase575drivers/scsi/qlogic.coutb(qlcfg5, qbase + 5);    /* select timer */
qbase576drivers/scsi/qlogic.coutb(qlcfg9, qbase + 9);      /* prescaler */
qbase578drivers/scsi/qlogic.coutb( 3 , qbase + 3 );
qbase580drivers/scsi/qlogic.cwhile( inb( qbase + 0xf ) & 4 );
qbase591drivers/scsi/qlogic.coutb(0x90, qbase + 3);  /* illegal command - cause interrupt */
qbase596drivers/scsi/qlogic.coutb(0xb0 | QL_INT_ACTIVE_HIGH , qbase + 0xd);  /* int pin off */
qbase598drivers/scsi/qlogic.coutb(0xb4 | QL_INT_ACTIVE_HIGH , qbase + 0xd);  /* int pin on */
qbase602drivers/scsi/qlogic.cwhile (inb(qbase + 5));       /* purge int */
qbase615drivers/scsi/qlogic.crequest_region( qbase , 0x10 ,"qlogic");
qbase617drivers/scsi/qlogic.chreg->io_port = qbase;
qbase624drivers/scsi/qlogic.cqltyp, qbase, qlirq, QL_TURBO_PDMA );