taglinefilesource code
qbase137drivers/scsi/qlogic.cstatic int      qbase = 0;  /* Port */
qbase153drivers/scsi/qlogic.c#define REG0 ( outb( inb( qbase + 0xd ) & 0x7f , qbase + 0xd ), outb( 4 , qbase + 0xd ))
qbase154drivers/scsi/qlogic.c#define REG1 ( outb( inb( qbase + 0xd ) | 0x80 , qbase + 0xd ), outb( 0xb4 | QL_INT_ACTIVE_HIGH , qbase + 0xd ))
qbase180drivers/scsi/qlogic.cx = inb(qbase + 0xd);
qbase182drivers/scsi/qlogic.coutb(3, qbase + 3);        /* reset SCSI */
qbase183drivers/scsi/qlogic.coutb(2, qbase + 3);        /* reset chip */
qbase199drivers/scsi/qlogic.cif( reqlen >= 128 && (inb( qbase + 8 ) & 2) ) { /* full */
qbase200drivers/scsi/qlogic.cinsl( qbase + 4, request, 32 );
qbase205drivers/scsi/qlogic.cif( (j=inb( qbase + 8 )) & 4 ) {
qbase206drivers/scsi/qlogic.cinsl( qbase + 4, request, 21 );
qbase210drivers/scsi/qlogic.cif( reqlen >= 44 && (inb( qbase + 8 ) & 8) ) {  /* 1/3 */
qbase211drivers/scsi/qlogic.cinsl( qbase + 4, request, 11 );
qbase222drivers/scsi/qlogic.cwhile ( reqlen && !( (j=inb(qbase + 8)) & 0x10 ) ) {
qbase223drivers/scsi/qlogic.c*request++ = inb(qbase + 4);
qbase227drivers/scsi/qlogic.cj = inb(qbase+8);
qbase234drivers/scsi/qlogic.cif( reqlen >= 128 && inb( qbase + 8 ) & 0x10 ) { /* empty */
qbase235drivers/scsi/qlogic.coutsl(qbase + 4, request, 32 );
qbase240drivers/scsi/qlogic.cif( !((j=inb( qbase + 8 )) & 8) ) {
qbase241drivers/scsi/qlogic.coutsl( qbase + 4, request, 21 );
qbase245drivers/scsi/qlogic.cif( reqlen >= 40 && !(inb( qbase + 8 ) & 4 ) ) { /* 2/3 */
qbase246drivers/scsi/qlogic.coutsl( qbase + 4, request, 10 );
qbase256drivers/scsi/qlogic.cwhile ( reqlen && !( (j=inb(qbase + 8)) & 2 ) ) {
qbase257drivers/scsi/qlogic.coutb(*request++, qbase + 4);
qbase261drivers/scsi/qlogic.cj = inb(qbase+8);
qbase265drivers/scsi/qlogic.creturn inb( qbase + 8 ) & 0xc0;
qbase275drivers/scsi/qlogic.cwhile ( i > jiffies && !qabort && !((k = inb(qbase + 4)) & 0xe0))
qbase303drivers/scsi/qlogic.cinb(qbase + 5);       /* clear interrupts */
qbase304drivers/scsi/qlogic.cif (inb(qbase + 5))      /* if still interrupting */
qbase305drivers/scsi/qlogic.coutb(2, qbase + 3);    /* reset chip */
qbase306drivers/scsi/qlogic.celse if (inb(qbase + 7) & 0x1f)
qbase307drivers/scsi/qlogic.coutb(1, qbase + 3);    /* clear fifo */
qbase308drivers/scsi/qlogic.cwhile (inb(qbase + 5));     /* clear ints */
qbase310drivers/scsi/qlogic.coutb(1, qbase + 8);      /* set for PIO pseudo DMA */
qbase311drivers/scsi/qlogic.coutb(0, qbase + 0xb);      /* disable ints */
qbase312drivers/scsi/qlogic.cinb(qbase + 8);       /* clear int bits */
qbase314drivers/scsi/qlogic.coutb(0x40, qbase + 0xb);    /* enable features */
qbase317drivers/scsi/qlogic.coutb( qlcfgc , qbase + 0xc);
qbase319drivers/scsi/qlogic.coutb( 0x40 | qlcfg8 | qinitid, qbase + 8);
qbase320drivers/scsi/qlogic.coutb( qlcfg7 , qbase + 7 );
qbase321drivers/scsi/qlogic.coutb( qlcfg6 , qbase + 6 );
qbase323drivers/scsi/qlogic.coutb(qlcfg5, qbase + 5);    /* select timer */
qbase324drivers/scsi/qlogic.coutb(qlcfg9 & 7, qbase + 9);      /* prescaler */
qbase326drivers/scsi/qlogic.coutb(cmd->target, qbase + 4);
qbase329drivers/scsi/qlogic.coutb(cmd->cmnd[i], qbase + 2);
qbase331drivers/scsi/qlogic.coutb(0x41, qbase + 3);  /* select and send command */
qbase348drivers/scsi/qlogic.cj = inb(qbase + 6);
qbase349drivers/scsi/qlogic.ci = inb(qbase + 5);
qbase353drivers/scsi/qlogic.ci |= inb(qbase + 5);  /* the 0x10 bit can be set after the 0x08 */
qbase365drivers/scsi/qlogic.cprintk("Ql:Bad sequence for command %d, int %02X, cmdleft = %d\n", j, i, inb( qbase+7 ) & 0x1f );
qbase370drivers/scsi/qlogic.cif (inb(qbase + 7) & 0x1f)  /* if some bytes in fifo */
qbase371drivers/scsi/qlogic.coutb(1, qbase + 3);    /* clear fifo */
qbase375drivers/scsi/qlogic.cif (reqlen && !((phase = inb(qbase + 4)) & 6)) {  /* data phase */
qbase377drivers/scsi/qlogic.coutb(reqlen, qbase);      /* low-mid xfer cnt */
qbase378drivers/scsi/qlogic.coutb(reqlen >> 8, qbase+1);      /* low-mid xfer cnt */
qbase379drivers/scsi/qlogic.coutb(reqlen >> 16, qbase + 0xe);  /* high xfer cnt */
qbase380drivers/scsi/qlogic.coutb(0x90, qbase + 3);      /* command do xfer */
qbase403drivers/scsi/qlogic.ck = inb(qbase + 5);  /* should be 0x10, bus service */
qbase407drivers/scsi/qlogic.cwhile ( k > jiffies && !qabort && !(inb(qbase + 4) & 6));  /* wait for status phase */
qbase412drivers/scsi/qlogic.cwhile (inb(qbase + 5));         /* clear pending ints */
qbase415drivers/scsi/qlogic.coutb(0x11, qbase + 3);          /* get status and message */
qbase418drivers/scsi/qlogic.ci = inb(qbase + 5);          /* get chip irq stat */
qbase419drivers/scsi/qlogic.cj = inb(qbase + 7) & 0x1f;        /* and bytes rec'd */
qbase420drivers/scsi/qlogic.cstatus = inb(qbase + 2);
qbase421drivers/scsi/qlogic.cmessage = inb(qbase + 2);
qbase427drivers/scsi/qlogic.coutb(0x12, qbase + 3);  /* done, disconnect */
qbase432drivers/scsi/qlogic.ci = inb(qbase + 5);  /* should be bus service */
qbase435drivers/scsi/qlogic.ci |= inb(qbase + 5);
qbase450drivers/scsi/qlogic.cif (!(inb(qbase + 4) & 0x80))  /* false alarm? */
qbase455drivers/scsi/qlogic.cwhile (i-- && inb(qbase + 5)); /* maybe also ql_zap() */
qbase526drivers/scsi/qlogic.cqbase=port;
qbase548drivers/scsi/qlogic.cif( !qbase ) {
qbase549drivers/scsi/qlogic.cfor (qbase = 0x230; qbase < 0x430; qbase += 0x100) {
qbase550drivers/scsi/qlogic.cif( check_region( qbase , 0x10 ) )
qbase553drivers/scsi/qlogic.cif ( ( (inb(qbase + 0xe) ^ inb(qbase + 0xe)) == 7 )
qbase554drivers/scsi/qlogic.c&& ( (inb(qbase + 0xe) ^ inb(qbase + 0xe)) == 7 ) )
qbase557drivers/scsi/qlogic.cif (qbase == 0x430)
qbase561drivers/scsi/qlogic.cprintk( "Ql: Using preset base address of %03x\n", qbase );
qbase563drivers/scsi/qlogic.cqltyp = inb(qbase + 0xe) & 0xf8;
qbase567drivers/scsi/qlogic.coutb(1, qbase + 8);      /* set for PIO pseudo DMA */
qbase569drivers/scsi/qlogic.coutb(0x40 | qlcfg8 | qinitid, qbase + 8);  /* (ini) bus id, disable scsi rst */
qbase570drivers/scsi/qlogic.coutb(qlcfg5, qbase + 5);    /* select timer */
qbase571drivers/scsi/qlogic.coutb(qlcfg9, qbase + 9);      /* prescaler */
qbase573drivers/scsi/qlogic.coutb( 3 , qbase + 3 );
qbase575drivers/scsi/qlogic.cwhile( inb( qbase + 0xf ) & 4 );
qbase586drivers/scsi/qlogic.coutb(0x90, qbase + 3);  /* illegal command - cause interrupt */
qbase591drivers/scsi/qlogic.coutb(0xb0 | QL_INT_ACTIVE_HIGH , qbase + 0xd);  /* int pin off */
qbase593drivers/scsi/qlogic.coutb(0xb4 | QL_INT_ACTIVE_HIGH , qbase + 0xd);  /* int pin on */
qbase597drivers/scsi/qlogic.cwhile (inb(qbase + 5));       /* purge int */
qbase610drivers/scsi/qlogic.crequest_region( qbase , 0x10 ,"qlogic");
qbase612drivers/scsi/qlogic.chreg->io_port = qbase;
qbase619drivers/scsi/qlogic.cqltyp, qbase, qlirq, QL_TURBO_PDMA );