tag | line | file | source code |
qbase | 129 | drivers/scsi/qlogic.c | static int qbase = 0; /* Port */ |
qbase | 145 | drivers/scsi/qlogic.c | #define REG0 ( outb( inb( qbase + 0xd ) & 0x7f , qbase + 0xd ), outb( 4 , qbase + 0xd )) |
qbase | 146 | drivers/scsi/qlogic.c | #define REG1 ( outb( inb( qbase + 0xd ) | 0x80 , qbase + 0xd ), outb( 0xb6 , qbase + 0xd )) |
qbase | 172 | drivers/scsi/qlogic.c | x = inb(qbase + 0xd); |
qbase | 174 | drivers/scsi/qlogic.c | outb(3, qbase + 3); /* reset SCSI */ |
qbase | 175 | drivers/scsi/qlogic.c | outb(2, qbase + 3); /* reset chip */ |
qbase | 191 | drivers/scsi/qlogic.c | if( reqlen >= 128 && (inb( qbase + 8 ) & 2) ) { /* full */ |
qbase | 192 | drivers/scsi/qlogic.c | insl( qbase + 4, request, 32 ); |
qbase | 197 | drivers/scsi/qlogic.c | if( (j=inb( qbase + 8 )) & 4 ) { |
qbase | 198 | drivers/scsi/qlogic.c | insl( qbase + 4, request, 21 ); |
qbase | 202 | drivers/scsi/qlogic.c | if( reqlen >= 44 && (inb( qbase + 8 ) & 8) ) { /* 1/3 */ |
qbase | 203 | drivers/scsi/qlogic.c | insl( qbase + 4, request, 11 ); |
qbase | 214 | drivers/scsi/qlogic.c | while ( reqlen && !( (j=inb(qbase + 8)) & 0x10 ) ) { |
qbase | 215 | drivers/scsi/qlogic.c | *request++ = inb(qbase + 4); |
qbase | 219 | drivers/scsi/qlogic.c | j = inb(qbase+8); |
qbase | 226 | drivers/scsi/qlogic.c | if( reqlen >= 128 && inb( qbase + 8 ) & 0x10 ) { /* empty */ |
qbase | 227 | drivers/scsi/qlogic.c | outsl(qbase + 4, request, 32 ); |
qbase | 232 | drivers/scsi/qlogic.c | if( !((j=inb( qbase + 8 )) & 8) ) { |
qbase | 233 | drivers/scsi/qlogic.c | outsl( qbase + 4, request, 21 ); |
qbase | 237 | drivers/scsi/qlogic.c | if( reqlen >= 40 && !(inb( qbase + 8 ) & 4 ) ) { /* 2/3 */ |
qbase | 238 | drivers/scsi/qlogic.c | outsl( qbase + 4, request, 10 ); |
qbase | 248 | drivers/scsi/qlogic.c | while ( reqlen && !( (j=inb(qbase + 8)) & 2 ) ) { |
qbase | 249 | drivers/scsi/qlogic.c | outb(*request++, qbase + 4); |
qbase | 253 | drivers/scsi/qlogic.c | j = inb(qbase+8); |
qbase | 257 | drivers/scsi/qlogic.c | return inb( qbase + 8 ) & 0xc0; |
qbase | 266 | drivers/scsi/qlogic.c | while ( i > jiffies && !qabort && !((k = inb(qbase + 4)) & 0xe0)); |
qbase | 293 | drivers/scsi/qlogic.c | inb(qbase + 5); /* clear interrupts */ |
qbase | 294 | drivers/scsi/qlogic.c | if (inb(qbase + 5)) /* if still interrupting */ |
qbase | 295 | drivers/scsi/qlogic.c | outb(2, qbase + 3); /* reset chip */ |
qbase | 296 | drivers/scsi/qlogic.c | else if (inb(qbase + 7) & 0x1f) |
qbase | 297 | drivers/scsi/qlogic.c | outb(1, qbase + 3); /* clear fifo */ |
qbase | 298 | drivers/scsi/qlogic.c | while (inb(qbase + 5)); /* clear ints */ |
qbase | 300 | drivers/scsi/qlogic.c | outb(1, qbase + 8); /* set for PIO pseudo DMA */ |
qbase | 301 | drivers/scsi/qlogic.c | outb(0, qbase + 0xb); /* disable ints */ |
qbase | 302 | drivers/scsi/qlogic.c | inb(qbase + 8); /* clear int bits */ |
qbase | 304 | drivers/scsi/qlogic.c | outb(0x40, qbase + 0xb); /* enable features */ |
qbase | 307 | drivers/scsi/qlogic.c | outb( qlcfgc , qbase + 0xc); |
qbase | 309 | drivers/scsi/qlogic.c | outb( 0x40 | qlcfg8 | qinitid, qbase + 8); |
qbase | 310 | drivers/scsi/qlogic.c | outb( qlcfg7 , qbase + 7 ); |
qbase | 311 | drivers/scsi/qlogic.c | outb( qlcfg6 , qbase + 6 ); |
qbase | 313 | drivers/scsi/qlogic.c | outb(qlcfg5, qbase + 5); /* select timer */ |
qbase | 314 | drivers/scsi/qlogic.c | outb(qlcfg9 & 7, qbase + 9); /* prescaler */ |
qbase | 316 | drivers/scsi/qlogic.c | outb(cmd->target, qbase + 4); |
qbase | 319 | drivers/scsi/qlogic.c | outb(cmd->cmnd[i], qbase + 2); |
qbase | 321 | drivers/scsi/qlogic.c | outb(0x41, qbase + 3); /* select and send command */ |
qbase | 338 | drivers/scsi/qlogic.c | j = inb(qbase + 6); |
qbase | 339 | drivers/scsi/qlogic.c | i = inb(qbase + 5); |
qbase | 343 | drivers/scsi/qlogic.c | i |= inb(qbase + 5); /* the 0x10 bit can be set after the 0x08 */ |
qbase | 355 | drivers/scsi/qlogic.c | printk("Ql:Bad sequence for command %d, int %02X, cmdleft = %d\n", j, i, inb( qbase+7 ) & 0x1f ); |
qbase | 360 | drivers/scsi/qlogic.c | if (inb(qbase + 7) & 0x1f) /* if some bytes in fifo */ |
qbase | 361 | drivers/scsi/qlogic.c | outb(1, qbase + 3); /* clear fifo */ |
qbase | 365 | drivers/scsi/qlogic.c | if (reqlen && !((phase = inb(qbase + 4)) & 6)) { /* data phase */ |
qbase | 367 | drivers/scsi/qlogic.c | outb(reqlen, qbase); /* low-mid xfer cnt */ |
qbase | 368 | drivers/scsi/qlogic.c | outb(reqlen >> 8, qbase+1); /* low-mid xfer cnt */ |
qbase | 369 | drivers/scsi/qlogic.c | outb(reqlen >> 16, qbase + 0xe); /* high xfer cnt */ |
qbase | 370 | drivers/scsi/qlogic.c | outb(0x90, qbase + 3); /* command do xfer */ |
qbase | 393 | drivers/scsi/qlogic.c | k = inb(qbase + 5); /* should be 0x10, bus service */ |
qbase | 397 | drivers/scsi/qlogic.c | while ( k > jiffies && !qabort && !(inb(qbase + 4) & 6)); /* wait for status phase */ |
qbase | 402 | drivers/scsi/qlogic.c | while (inb(qbase + 5)); /* clear pending ints */ |
qbase | 405 | drivers/scsi/qlogic.c | outb(0x11, qbase + 3); /* get status and message */ |
qbase | 408 | drivers/scsi/qlogic.c | i = inb(qbase + 5); /* get chip irq stat */ |
qbase | 409 | drivers/scsi/qlogic.c | j = inb(qbase + 7) & 0x1f; /* and bytes rec'd */ |
qbase | 410 | drivers/scsi/qlogic.c | status = inb(qbase + 2); |
qbase | 411 | drivers/scsi/qlogic.c | message = inb(qbase + 2); |
qbase | 417 | drivers/scsi/qlogic.c | outb(0x12, qbase + 3); /* done, disconnect */ |
qbase | 422 | drivers/scsi/qlogic.c | i = inb(qbase + 5); /* should be bus service */ |
qbase | 424 | drivers/scsi/qlogic.c | i |= inb(qbase + 5); |
qbase | 438 | drivers/scsi/qlogic.c | if (!(inb(qbase + 4) & 0x80)) /* false alarm? */ |
qbase | 443 | drivers/scsi/qlogic.c | while (i-- && inb(qbase + 5)); /* maybe also ql_zap() */ |
qbase | 513 | drivers/scsi/qlogic.c | qbase=port; |
qbase | 535 | drivers/scsi/qlogic.c | if( !qbase ) { |
qbase | 536 | drivers/scsi/qlogic.c | for (qbase = 0x230; qbase < 0x430; qbase += 0x100) { |
qbase | 537 | drivers/scsi/qlogic.c | if( check_region( qbase , 0x10 ) ) |
qbase | 540 | drivers/scsi/qlogic.c | if ( ( (inb(qbase + 0xe) ^ inb(qbase + 0xe)) == 7 ) |
qbase | 541 | drivers/scsi/qlogic.c | && ( (inb(qbase + 0xe) ^ inb(qbase + 0xe)) == 7 ) ) |
qbase | 544 | drivers/scsi/qlogic.c | if (qbase == 0x430) |
qbase | 548 | drivers/scsi/qlogic.c | printk( "Ql: Using preset base address of %03x\n", qbase ); |
qbase | 550 | drivers/scsi/qlogic.c | qltyp = inb(qbase + 0xe) & 0xf8; |
qbase | 554 | drivers/scsi/qlogic.c | outb(1, qbase + 8); /* set for PIO pseudo DMA */ |
qbase | 556 | drivers/scsi/qlogic.c | outb(0x40 | qlcfg8 | qinitid, qbase + 8); /* (ini) bus id, disable scsi rst */ |
qbase | 557 | drivers/scsi/qlogic.c | outb(qlcfg5, qbase + 5); /* select timer */ |
qbase | 558 | drivers/scsi/qlogic.c | outb(qlcfg9, qbase + 9); /* prescaler */ |
qbase | 561 | drivers/scsi/qlogic.c | outb( 3 , qbase + 3 ); |
qbase | 563 | drivers/scsi/qlogic.c | while( inb( qbase + 0xf ) & 4 ); |
qbase | 573 | drivers/scsi/qlogic.c | outb(0x90, qbase + 3); /* illegal command - cause interrupt */ |
qbase | 578 | drivers/scsi/qlogic.c | outb(0xb2 , qbase + 0xd); /* int pin off */ |
qbase | 580 | drivers/scsi/qlogic.c | outb(0xb6 , qbase + 0xd); /* int pin on */ |
qbase | 584 | drivers/scsi/qlogic.c | while (inb(qbase + 5)); /* purge int */ |
qbase | 594 | drivers/scsi/qlogic.c | request_region( qbase , 0x10 ,"qlogic"); |
qbase | 596 | drivers/scsi/qlogic.c | hreg->io_port = qbase; |
qbase | 603 | drivers/scsi/qlogic.c | qltyp, qbase, qlirq, QL_TURBO_PDMA ); |