tag | line | file | source code |
qbase | 104 | drivers/scsi/qlogic.c | static int qbase; /* Port */ |
qbase | 113 | drivers/scsi/qlogic.c | #define REG0 ( outb( inb( qbase + 0xd ) & 0x7f , qbase + 0xd ), outb( 4 , qbase + 0xd )) |
qbase | 114 | drivers/scsi/qlogic.c | #define REG1 ( outb( inb( qbase + 0xd ) | 0x80 , qbase + 0xd ), outb( 0xb4 | QL_INT_ACTIVE_HIGH , qbase + 0xd )) |
qbase | 140 | drivers/scsi/qlogic.c | x = inb(qbase + 0xd); |
qbase | 142 | drivers/scsi/qlogic.c | outb(3, qbase + 3); /* reset SCSI */ |
qbase | 143 | drivers/scsi/qlogic.c | outb(2, qbase + 3); /* reset chip */ |
qbase | 158 | drivers/scsi/qlogic.c | if( reqlen >= 128 && (inb( qbase + 8 ) & 2) ) { /* full */ |
qbase | 159 | drivers/scsi/qlogic.c | insl( qbase + 4, request, 32 ); |
qbase | 164 | drivers/scsi/qlogic.c | if( (j=inb( qbase + 8 )) & 4 ) { |
qbase | 165 | drivers/scsi/qlogic.c | insl( qbase + 4, request, 21 ); |
qbase | 169 | drivers/scsi/qlogic.c | if( reqlen >= 44 && (inb( qbase + 8 ) & 8) ) { /* 1/3 */ |
qbase | 170 | drivers/scsi/qlogic.c | insl( qbase + 4, request, 11 ); |
qbase | 180 | drivers/scsi/qlogic.c | while ( reqlen && !( (j=inb(qbase + 8)) & 0x10 ) ) { |
qbase | 181 | drivers/scsi/qlogic.c | *request++ = inb(qbase + 4); |
qbase | 185 | drivers/scsi/qlogic.c | j = inb(qbase+8); |
qbase | 191 | drivers/scsi/qlogic.c | if( reqlen >= 128 && inb( qbase + 8 ) & 0x10 ) { /* empty */ |
qbase | 192 | drivers/scsi/qlogic.c | outsl(qbase + 4, request, 32 ); |
qbase | 197 | drivers/scsi/qlogic.c | if( !((j=inb( qbase + 8 )) & 8) ) { |
qbase | 198 | drivers/scsi/qlogic.c | outsl( qbase + 4, request, 21 ); |
qbase | 202 | drivers/scsi/qlogic.c | if( reqlen >= 40 && !(inb( qbase + 8 ) & 4 ) ) { /* 2/3 */ |
qbase | 203 | drivers/scsi/qlogic.c | outsl( qbase + 4, request, 10 ); |
qbase | 212 | drivers/scsi/qlogic.c | while ( reqlen && !( (j=inb(qbase + 8)) & 2 ) ) { |
qbase | 213 | drivers/scsi/qlogic.c | outb(*request++, qbase + 4); |
qbase | 217 | drivers/scsi/qlogic.c | j = inb(qbase+8); |
qbase | 221 | drivers/scsi/qlogic.c | return inb( qbase + 8 ) & 0xc0; |
qbase | 230 | drivers/scsi/qlogic.c | while ( i > jiffies && !qabort && !((k = inb(qbase + 4)) & 0xe0)); |
qbase | 257 | drivers/scsi/qlogic.c | inb(qbase + 5); /* clear interrupts */ |
qbase | 258 | drivers/scsi/qlogic.c | if (inb(qbase + 5)) /* if still interrupting */ |
qbase | 259 | drivers/scsi/qlogic.c | outb(2, qbase + 3); /* reset chip */ |
qbase | 260 | drivers/scsi/qlogic.c | else if (inb(qbase + 7) & 0x1f) |
qbase | 261 | drivers/scsi/qlogic.c | outb(1, qbase + 3); /* clear fifo */ |
qbase | 262 | drivers/scsi/qlogic.c | while (inb(qbase + 5)); /* clear ints */ |
qbase | 264 | drivers/scsi/qlogic.c | outb(1, qbase + 8); /* set for PIO pseudo DMA */ |
qbase | 265 | drivers/scsi/qlogic.c | outb(0, qbase + 0xb); /* disable ints */ |
qbase | 266 | drivers/scsi/qlogic.c | inb(qbase + 8); /* clear int bits */ |
qbase | 268 | drivers/scsi/qlogic.c | outb(0x40, qbase + 0xb); /* enable features */ |
qbase | 273 | drivers/scsi/qlogic.c | outb(0x18, qbase + 0xc); |
qbase | 275 | drivers/scsi/qlogic.c | outb(0x10, qbase + 0xc); |
qbase | 279 | drivers/scsi/qlogic.c | outb(8, qbase + 0xc); |
qbase | 284 | drivers/scsi/qlogic.c | outb(0xd0 | qinitid, qbase + 8); /* (initiator) bus id */ |
qbase | 286 | drivers/scsi/qlogic.c | outb(0x50 | qinitid, qbase + 8); /* (initiator) bus id */ |
qbase | 288 | drivers/scsi/qlogic.c | outb( SYNCOFFST , qbase + 7 ); |
qbase | 289 | drivers/scsi/qlogic.c | outb( SYNCXFRPD , qbase + 6 ); |
qbase | 291 | drivers/scsi/qlogic.c | outb(0x99, qbase + 5); /* timer */ |
qbase | 292 | drivers/scsi/qlogic.c | outb(cmd->target, qbase + 4); |
qbase | 295 | drivers/scsi/qlogic.c | outb(cmd->cmnd[i], qbase + 2); |
qbase | 297 | drivers/scsi/qlogic.c | outb(0x41, qbase + 3); /* select and send command */ |
qbase | 313 | drivers/scsi/qlogic.c | j = inb(qbase + 6); |
qbase | 314 | drivers/scsi/qlogic.c | i = inb(qbase + 5); |
qbase | 318 | drivers/scsi/qlogic.c | i |= inb(qbase + 5); /* the 0x10 bit can be set after the 0x08 */ |
qbase | 330 | drivers/scsi/qlogic.c | printk("Ql:Bad sequence for command %d, int %02X, cmdleft = %d\n", j, i, inb( qbase+7 ) & 0x1f ); |
qbase | 335 | drivers/scsi/qlogic.c | if (inb(qbase + 7) & 0x1f) /* if some bytes in fifo */ |
qbase | 336 | drivers/scsi/qlogic.c | outb(1, qbase + 3); /* clear fifo */ |
qbase | 340 | drivers/scsi/qlogic.c | if (reqlen && !((phase = inb(qbase + 4)) & 6)) { /* data phase */ |
qbase | 342 | drivers/scsi/qlogic.c | outb(reqlen, qbase); /* low-mid xfer cnt */ |
qbase | 343 | drivers/scsi/qlogic.c | outb(reqlen >> 8, qbase+1); /* low-mid xfer cnt */ |
qbase | 344 | drivers/scsi/qlogic.c | outb(reqlen >> 16, qbase + 0xe); /* high xfer cnt */ |
qbase | 345 | drivers/scsi/qlogic.c | outb(0x90, qbase + 3); /* command do xfer */ |
qbase | 368 | drivers/scsi/qlogic.c | k = inb(qbase + 5); /* should be 0x10, bus service */ |
qbase | 373 | drivers/scsi/qlogic.c | while ( k > jiffies && !qabort && !(inb(qbase + 4) & 6)); /* wait for status phase */ |
qbase | 378 | drivers/scsi/qlogic.c | while (inb(qbase + 5)); /* clear pending ints */ |
qbase | 381 | drivers/scsi/qlogic.c | outb(0x11, qbase + 3); /* get status and message */ |
qbase | 384 | drivers/scsi/qlogic.c | i = inb(qbase + 5); /* get chip irq stat */ |
qbase | 385 | drivers/scsi/qlogic.c | j = inb(qbase + 7) & 0x1f; /* and bytes rec'd */ |
qbase | 386 | drivers/scsi/qlogic.c | status = inb(qbase + 2); |
qbase | 387 | drivers/scsi/qlogic.c | message = inb(qbase + 2); |
qbase | 393 | drivers/scsi/qlogic.c | outb(0x12, qbase + 3); /* done, disconnect */ |
qbase | 398 | drivers/scsi/qlogic.c | i = inb(qbase + 5); /* should be bus service */ |
qbase | 400 | drivers/scsi/qlogic.c | i |= inb(qbase + 5); |
qbase | 414 | drivers/scsi/qlogic.c | if (!(inb(qbase + 4) & 0x80)) /* false alarm? */ |
qbase | 417 | drivers/scsi/qlogic.c | while (inb(qbase + 5)); /* maybe also ql_zap() */ |
qbase | 503 | drivers/scsi/qlogic.c | for (qbase = 0x230; qbase < 0x430; qbase += 0x100) { |
qbase | 505 | drivers/scsi/qlogic.c | if( check_region( qbase , 0x10 ) ) |
qbase | 509 | drivers/scsi/qlogic.c | if ( ( (inb(qbase + 0xe) ^ inb(qbase + 0xe)) == 7 ) |
qbase | 510 | drivers/scsi/qlogic.c | && ( (inb(qbase + 0xe) ^ inb(qbase + 0xe)) == 7 ) ) |
qbase | 513 | drivers/scsi/qlogic.c | if (qbase == 0x430) |
qbase | 516 | drivers/scsi/qlogic.c | qltyp = inb(qbase + 0xe) & 0xf8; |
qbase | 520 | drivers/scsi/qlogic.c | outb(1, qbase + 8); /* set for PIO pseudo DMA */ |
qbase | 522 | drivers/scsi/qlogic.c | outb(0xd0 | qinitid, qbase + 8); /* (ini) bus id, disable scsi rst */ |
qbase | 523 | drivers/scsi/qlogic.c | outb(0x99, qbase + 5); /* select timer */ |
qbase | 526 | drivers/scsi/qlogic.c | outb( 3 , qbase + 3 ); |
qbase | 528 | drivers/scsi/qlogic.c | while( inb( qbase + 0xf ) & 4 ); |
qbase | 537 | drivers/scsi/qlogic.c | outb(0x90, qbase + 3); /* illegal command - cause interrupt */ |
qbase | 542 | drivers/scsi/qlogic.c | outb(0xb0 | QL_INT_ACTIVE_HIGH , qbase + 0xd); /* int pin off */ |
qbase | 544 | drivers/scsi/qlogic.c | outb(0xb4 | QL_INT_ACTIVE_HIGH , qbase + 0xd); /* int pin on */ |
qbase | 548 | drivers/scsi/qlogic.c | while (inb(qbase + 5)); /* purge int */ |
qbase | 556 | drivers/scsi/qlogic.c | request_region( qbase , 0x10 ,"qlogic"); |
qbase | 559 | drivers/scsi/qlogic.c | hreg->io_port = qbase; |
qbase | 565 | drivers/scsi/qlogic.c | qltyp, qbase, qlirq, QL_INT_ACTIVE_HIGH, QL_TURBO_PDMA ); |