taglinefilesource code
qbase129drivers/scsi/qlogic.cstatic int      qbase = 0;  /* Port */
qbase145drivers/scsi/qlogic.c#define REG0 ( outb( inb( qbase + 0xd ) & 0x7f , qbase + 0xd ), outb( 4 , qbase + 0xd ))
qbase146drivers/scsi/qlogic.c#define REG1 ( outb( inb( qbase + 0xd ) | 0x80 , qbase + 0xd ), outb( 0xb6 , qbase + 0xd ))
qbase172drivers/scsi/qlogic.cx = inb(qbase + 0xd);
qbase174drivers/scsi/qlogic.coutb(3, qbase + 3);        /* reset SCSI */
qbase175drivers/scsi/qlogic.coutb(2, qbase + 3);        /* reset chip */
qbase191drivers/scsi/qlogic.cif( reqlen >= 128 && (inb( qbase + 8 ) & 2) ) { /* full */
qbase192drivers/scsi/qlogic.cinsl( qbase + 4, request, 32 );
qbase197drivers/scsi/qlogic.cif( (j=inb( qbase + 8 )) & 4 ) {
qbase198drivers/scsi/qlogic.cinsl( qbase + 4, request, 21 );
qbase202drivers/scsi/qlogic.cif( reqlen >= 44 && (inb( qbase + 8 ) & 8) ) {  /* 1/3 */
qbase203drivers/scsi/qlogic.cinsl( qbase + 4, request, 11 );
qbase214drivers/scsi/qlogic.cwhile ( reqlen && !( (j=inb(qbase + 8)) & 0x10 ) ) {
qbase215drivers/scsi/qlogic.c*request++ = inb(qbase + 4);
qbase219drivers/scsi/qlogic.cj = inb(qbase+8);
qbase226drivers/scsi/qlogic.cif( reqlen >= 128 && inb( qbase + 8 ) & 0x10 ) { /* empty */
qbase227drivers/scsi/qlogic.coutsl(qbase + 4, request, 32 );
qbase232drivers/scsi/qlogic.cif( !((j=inb( qbase + 8 )) & 8) ) {
qbase233drivers/scsi/qlogic.coutsl( qbase + 4, request, 21 );
qbase237drivers/scsi/qlogic.cif( reqlen >= 40 && !(inb( qbase + 8 ) & 4 ) ) { /* 2/3 */
qbase238drivers/scsi/qlogic.coutsl( qbase + 4, request, 10 );
qbase248drivers/scsi/qlogic.cwhile ( reqlen && !( (j=inb(qbase + 8)) & 2 ) ) {
qbase249drivers/scsi/qlogic.coutb(*request++, qbase + 4);
qbase253drivers/scsi/qlogic.cj = inb(qbase+8);
qbase257drivers/scsi/qlogic.creturn inb( qbase + 8 ) & 0xc0;
qbase266drivers/scsi/qlogic.cwhile ( i > jiffies && !qabort && !((k = inb(qbase + 4)) & 0xe0));
qbase293drivers/scsi/qlogic.cinb(qbase + 5);       /* clear interrupts */
qbase294drivers/scsi/qlogic.cif (inb(qbase + 5))      /* if still interrupting */
qbase295drivers/scsi/qlogic.coutb(2, qbase + 3);    /* reset chip */
qbase296drivers/scsi/qlogic.celse if (inb(qbase + 7) & 0x1f)
qbase297drivers/scsi/qlogic.coutb(1, qbase + 3);    /* clear fifo */
qbase298drivers/scsi/qlogic.cwhile (inb(qbase + 5));     /* clear ints */
qbase300drivers/scsi/qlogic.coutb(1, qbase + 8);      /* set for PIO pseudo DMA */
qbase301drivers/scsi/qlogic.coutb(0, qbase + 0xb);      /* disable ints */
qbase302drivers/scsi/qlogic.cinb(qbase + 8);       /* clear int bits */
qbase304drivers/scsi/qlogic.coutb(0x40, qbase + 0xb);    /* enable features */
qbase307drivers/scsi/qlogic.coutb( qlcfgc , qbase + 0xc);
qbase309drivers/scsi/qlogic.coutb( 0x40 | qlcfg8 | qinitid, qbase + 8);
qbase310drivers/scsi/qlogic.coutb( qlcfg7 , qbase + 7 );
qbase311drivers/scsi/qlogic.coutb( qlcfg6 , qbase + 6 );
qbase313drivers/scsi/qlogic.coutb(qlcfg5, qbase + 5);    /* select timer */
qbase314drivers/scsi/qlogic.coutb(qlcfg9 & 7, qbase + 9);      /* prescaler */
qbase316drivers/scsi/qlogic.coutb(cmd->target, qbase + 4);
qbase319drivers/scsi/qlogic.coutb(cmd->cmnd[i], qbase + 2);
qbase321drivers/scsi/qlogic.coutb(0x41, qbase + 3);  /* select and send command */
qbase338drivers/scsi/qlogic.cj = inb(qbase + 6);
qbase339drivers/scsi/qlogic.ci = inb(qbase + 5);
qbase343drivers/scsi/qlogic.ci |= inb(qbase + 5);  /* the 0x10 bit can be set after the 0x08 */
qbase355drivers/scsi/qlogic.cprintk("Ql:Bad sequence for command %d, int %02X, cmdleft = %d\n", j, i, inb( qbase+7 ) & 0x1f );
qbase360drivers/scsi/qlogic.cif (inb(qbase + 7) & 0x1f)  /* if some bytes in fifo */
qbase361drivers/scsi/qlogic.coutb(1, qbase + 3);    /* clear fifo */
qbase365drivers/scsi/qlogic.cif (reqlen && !((phase = inb(qbase + 4)) & 6)) {  /* data phase */
qbase367drivers/scsi/qlogic.coutb(reqlen, qbase);      /* low-mid xfer cnt */
qbase368drivers/scsi/qlogic.coutb(reqlen >> 8, qbase+1);      /* low-mid xfer cnt */
qbase369drivers/scsi/qlogic.coutb(reqlen >> 16, qbase + 0xe);  /* high xfer cnt */
qbase370drivers/scsi/qlogic.coutb(0x90, qbase + 3);      /* command do xfer */
qbase393drivers/scsi/qlogic.ck = inb(qbase + 5);  /* should be 0x10, bus service */
qbase397drivers/scsi/qlogic.cwhile ( k > jiffies && !qabort && !(inb(qbase + 4) & 6));  /* wait for status phase */
qbase402drivers/scsi/qlogic.cwhile (inb(qbase + 5));         /* clear pending ints */
qbase405drivers/scsi/qlogic.coutb(0x11, qbase + 3);          /* get status and message */
qbase408drivers/scsi/qlogic.ci = inb(qbase + 5);          /* get chip irq stat */
qbase409drivers/scsi/qlogic.cj = inb(qbase + 7) & 0x1f;        /* and bytes rec'd */
qbase410drivers/scsi/qlogic.cstatus = inb(qbase + 2);
qbase411drivers/scsi/qlogic.cmessage = inb(qbase + 2);
qbase417drivers/scsi/qlogic.coutb(0x12, qbase + 3);  /* done, disconnect */
qbase422drivers/scsi/qlogic.ci = inb(qbase + 5);  /* should be bus service */
qbase424drivers/scsi/qlogic.ci |= inb(qbase + 5);
qbase438drivers/scsi/qlogic.cif (!(inb(qbase + 4) & 0x80))  /* false alarm? */
qbase443drivers/scsi/qlogic.cwhile (i-- && inb(qbase + 5)); /* maybe also ql_zap() */
qbase513drivers/scsi/qlogic.cqbase=port;
qbase535drivers/scsi/qlogic.cif( !qbase ) {
qbase536drivers/scsi/qlogic.cfor (qbase = 0x230; qbase < 0x430; qbase += 0x100) {
qbase537drivers/scsi/qlogic.cif( check_region( qbase , 0x10 ) )
qbase540drivers/scsi/qlogic.cif ( ( (inb(qbase + 0xe) ^ inb(qbase + 0xe)) == 7 )
qbase541drivers/scsi/qlogic.c&& ( (inb(qbase + 0xe) ^ inb(qbase + 0xe)) == 7 ) )
qbase544drivers/scsi/qlogic.cif (qbase == 0x430)
qbase548drivers/scsi/qlogic.cprintk( "Ql: Using preset base address of %03x\n", qbase );
qbase550drivers/scsi/qlogic.cqltyp = inb(qbase + 0xe) & 0xf8;
qbase554drivers/scsi/qlogic.coutb(1, qbase + 8);      /* set for PIO pseudo DMA */
qbase556drivers/scsi/qlogic.coutb(0x40 | qlcfg8 | qinitid, qbase + 8);  /* (ini) bus id, disable scsi rst */
qbase557drivers/scsi/qlogic.coutb(qlcfg5, qbase + 5);    /* select timer */
qbase558drivers/scsi/qlogic.coutb(qlcfg9, qbase + 9);      /* prescaler */
qbase561drivers/scsi/qlogic.coutb( 3 , qbase + 3 );
qbase563drivers/scsi/qlogic.cwhile( inb( qbase + 0xf ) & 4 );
qbase573drivers/scsi/qlogic.coutb(0x90, qbase + 3);  /* illegal command - cause interrupt */
qbase578drivers/scsi/qlogic.coutb(0xb2 , qbase + 0xd);    /* int pin off */
qbase580drivers/scsi/qlogic.coutb(0xb6 , qbase + 0xd);    /* int pin on */
qbase584drivers/scsi/qlogic.cwhile (inb(qbase + 5));       /* purge int */
qbase594drivers/scsi/qlogic.crequest_region( qbase , 0x10 ,"qlogic");
qbase596drivers/scsi/qlogic.chreg->io_port = qbase;
qbase603drivers/scsi/qlogic.cqltyp, qbase, qlirq, QL_TURBO_PDMA );