tag | line | file | source code |
qbase | 137 | drivers/scsi/qlogic.c | static int qbase = 0; /* Port */ |
qbase | 153 | drivers/scsi/qlogic.c | #define REG0 ( outb( inb( qbase + 0xd ) & 0x7f , qbase + 0xd ), outb( 4 , qbase + 0xd )) |
qbase | 154 | drivers/scsi/qlogic.c | #define REG1 ( outb( inb( qbase + 0xd ) | 0x80 , qbase + 0xd ), outb( 0xb4 | QL_INT_ACTIVE_HIGH , qbase + 0xd )) |
qbase | 180 | drivers/scsi/qlogic.c | x = inb(qbase + 0xd); |
qbase | 182 | drivers/scsi/qlogic.c | outb(3, qbase + 3); /* reset SCSI */ |
qbase | 183 | drivers/scsi/qlogic.c | outb(2, qbase + 3); /* reset chip */ |
qbase | 199 | drivers/scsi/qlogic.c | if( reqlen >= 128 && (inb( qbase + 8 ) & 2) ) { /* full */ |
qbase | 200 | drivers/scsi/qlogic.c | insl( qbase + 4, request, 32 ); |
qbase | 205 | drivers/scsi/qlogic.c | if( (j=inb( qbase + 8 )) & 4 ) { |
qbase | 206 | drivers/scsi/qlogic.c | insl( qbase + 4, request, 21 ); |
qbase | 210 | drivers/scsi/qlogic.c | if( reqlen >= 44 && (inb( qbase + 8 ) & 8) ) { /* 1/3 */ |
qbase | 211 | drivers/scsi/qlogic.c | insl( qbase + 4, request, 11 ); |
qbase | 222 | drivers/scsi/qlogic.c | while ( reqlen && !( (j=inb(qbase + 8)) & 0x10 ) ) { |
qbase | 223 | drivers/scsi/qlogic.c | *request++ = inb(qbase + 4); |
qbase | 227 | drivers/scsi/qlogic.c | j = inb(qbase+8); |
qbase | 234 | drivers/scsi/qlogic.c | if( reqlen >= 128 && inb( qbase + 8 ) & 0x10 ) { /* empty */ |
qbase | 235 | drivers/scsi/qlogic.c | outsl(qbase + 4, request, 32 ); |
qbase | 240 | drivers/scsi/qlogic.c | if( !((j=inb( qbase + 8 )) & 8) ) { |
qbase | 241 | drivers/scsi/qlogic.c | outsl( qbase + 4, request, 21 ); |
qbase | 245 | drivers/scsi/qlogic.c | if( reqlen >= 40 && !(inb( qbase + 8 ) & 4 ) ) { /* 2/3 */ |
qbase | 246 | drivers/scsi/qlogic.c | outsl( qbase + 4, request, 10 ); |
qbase | 256 | drivers/scsi/qlogic.c | while ( reqlen && !( (j=inb(qbase + 8)) & 2 ) ) { |
qbase | 257 | drivers/scsi/qlogic.c | outb(*request++, qbase + 4); |
qbase | 261 | drivers/scsi/qlogic.c | j = inb(qbase+8); |
qbase | 265 | drivers/scsi/qlogic.c | return inb( qbase + 8 ) & 0xc0; |
qbase | 275 | drivers/scsi/qlogic.c | while ( i > jiffies && !qabort && !((k = inb(qbase + 4)) & 0xe0)) |
qbase | 303 | drivers/scsi/qlogic.c | inb(qbase + 5); /* clear interrupts */ |
qbase | 304 | drivers/scsi/qlogic.c | if (inb(qbase + 5)) /* if still interrupting */ |
qbase | 305 | drivers/scsi/qlogic.c | outb(2, qbase + 3); /* reset chip */ |
qbase | 306 | drivers/scsi/qlogic.c | else if (inb(qbase + 7) & 0x1f) |
qbase | 307 | drivers/scsi/qlogic.c | outb(1, qbase + 3); /* clear fifo */ |
qbase | 308 | drivers/scsi/qlogic.c | while (inb(qbase + 5)); /* clear ints */ |
qbase | 310 | drivers/scsi/qlogic.c | outb(1, qbase + 8); /* set for PIO pseudo DMA */ |
qbase | 311 | drivers/scsi/qlogic.c | outb(0, qbase + 0xb); /* disable ints */ |
qbase | 312 | drivers/scsi/qlogic.c | inb(qbase + 8); /* clear int bits */ |
qbase | 314 | drivers/scsi/qlogic.c | outb(0x40, qbase + 0xb); /* enable features */ |
qbase | 317 | drivers/scsi/qlogic.c | outb( qlcfgc , qbase + 0xc); |
qbase | 319 | drivers/scsi/qlogic.c | outb( 0x40 | qlcfg8 | qinitid, qbase + 8); |
qbase | 320 | drivers/scsi/qlogic.c | outb( qlcfg7 , qbase + 7 ); |
qbase | 321 | drivers/scsi/qlogic.c | outb( qlcfg6 , qbase + 6 ); |
qbase | 323 | drivers/scsi/qlogic.c | outb(qlcfg5, qbase + 5); /* select timer */ |
qbase | 324 | drivers/scsi/qlogic.c | outb(qlcfg9 & 7, qbase + 9); /* prescaler */ |
qbase | 326 | drivers/scsi/qlogic.c | outb(cmd->target, qbase + 4); |
qbase | 329 | drivers/scsi/qlogic.c | outb(cmd->cmnd[i], qbase + 2); |
qbase | 331 | drivers/scsi/qlogic.c | outb(0x41, qbase + 3); /* select and send command */ |
qbase | 348 | drivers/scsi/qlogic.c | j = inb(qbase + 6); |
qbase | 349 | drivers/scsi/qlogic.c | i = inb(qbase + 5); |
qbase | 353 | drivers/scsi/qlogic.c | i |= inb(qbase + 5); /* the 0x10 bit can be set after the 0x08 */ |
qbase | 365 | drivers/scsi/qlogic.c | printk("Ql:Bad sequence for command %d, int %02X, cmdleft = %d\n", j, i, inb( qbase+7 ) & 0x1f ); |
qbase | 370 | drivers/scsi/qlogic.c | if (inb(qbase + 7) & 0x1f) /* if some bytes in fifo */ |
qbase | 371 | drivers/scsi/qlogic.c | outb(1, qbase + 3); /* clear fifo */ |
qbase | 375 | drivers/scsi/qlogic.c | if (reqlen && !((phase = inb(qbase + 4)) & 6)) { /* data phase */ |
qbase | 377 | drivers/scsi/qlogic.c | outb(reqlen, qbase); /* low-mid xfer cnt */ |
qbase | 378 | drivers/scsi/qlogic.c | outb(reqlen >> 8, qbase+1); /* low-mid xfer cnt */ |
qbase | 379 | drivers/scsi/qlogic.c | outb(reqlen >> 16, qbase + 0xe); /* high xfer cnt */ |
qbase | 380 | drivers/scsi/qlogic.c | outb(0x90, qbase + 3); /* command do xfer */ |
qbase | 403 | drivers/scsi/qlogic.c | k = inb(qbase + 5); /* should be 0x10, bus service */ |
qbase | 407 | drivers/scsi/qlogic.c | while ( k > jiffies && !qabort && !(inb(qbase + 4) & 6)); /* wait for status phase */ |
qbase | 412 | drivers/scsi/qlogic.c | while (inb(qbase + 5)); /* clear pending ints */ |
qbase | 415 | drivers/scsi/qlogic.c | outb(0x11, qbase + 3); /* get status and message */ |
qbase | 418 | drivers/scsi/qlogic.c | i = inb(qbase + 5); /* get chip irq stat */ |
qbase | 419 | drivers/scsi/qlogic.c | j = inb(qbase + 7) & 0x1f; /* and bytes rec'd */ |
qbase | 420 | drivers/scsi/qlogic.c | status = inb(qbase + 2); |
qbase | 421 | drivers/scsi/qlogic.c | message = inb(qbase + 2); |
qbase | 427 | drivers/scsi/qlogic.c | outb(0x12, qbase + 3); /* done, disconnect */ |
qbase | 432 | drivers/scsi/qlogic.c | i = inb(qbase + 5); /* should be bus service */ |
qbase | 435 | drivers/scsi/qlogic.c | i |= inb(qbase + 5); |
qbase | 450 | drivers/scsi/qlogic.c | if (!(inb(qbase + 4) & 0x80)) /* false alarm? */ |
qbase | 455 | drivers/scsi/qlogic.c | while (i-- && inb(qbase + 5)); /* maybe also ql_zap() */ |
qbase | 526 | drivers/scsi/qlogic.c | qbase=port; |
qbase | 548 | drivers/scsi/qlogic.c | if( !qbase ) { |
qbase | 549 | drivers/scsi/qlogic.c | for (qbase = 0x230; qbase < 0x430; qbase += 0x100) { |
qbase | 550 | drivers/scsi/qlogic.c | if( check_region( qbase , 0x10 ) ) |
qbase | 553 | drivers/scsi/qlogic.c | if ( ( (inb(qbase + 0xe) ^ inb(qbase + 0xe)) == 7 ) |
qbase | 554 | drivers/scsi/qlogic.c | && ( (inb(qbase + 0xe) ^ inb(qbase + 0xe)) == 7 ) ) |
qbase | 557 | drivers/scsi/qlogic.c | if (qbase == 0x430) |
qbase | 561 | drivers/scsi/qlogic.c | printk( "Ql: Using preset base address of %03x\n", qbase ); |
qbase | 563 | drivers/scsi/qlogic.c | qltyp = inb(qbase + 0xe) & 0xf8; |
qbase | 567 | drivers/scsi/qlogic.c | outb(1, qbase + 8); /* set for PIO pseudo DMA */ |
qbase | 569 | drivers/scsi/qlogic.c | outb(0x40 | qlcfg8 | qinitid, qbase + 8); /* (ini) bus id, disable scsi rst */ |
qbase | 570 | drivers/scsi/qlogic.c | outb(qlcfg5, qbase + 5); /* select timer */ |
qbase | 571 | drivers/scsi/qlogic.c | outb(qlcfg9, qbase + 9); /* prescaler */ |
qbase | 573 | drivers/scsi/qlogic.c | outb( 3 , qbase + 3 ); |
qbase | 575 | drivers/scsi/qlogic.c | while( inb( qbase + 0xf ) & 4 ); |
qbase | 586 | drivers/scsi/qlogic.c | outb(0x90, qbase + 3); /* illegal command - cause interrupt */ |
qbase | 591 | drivers/scsi/qlogic.c | outb(0xb0 | QL_INT_ACTIVE_HIGH , qbase + 0xd); /* int pin off */ |
qbase | 593 | drivers/scsi/qlogic.c | outb(0xb4 | QL_INT_ACTIVE_HIGH , qbase + 0xd); /* int pin on */ |
qbase | 597 | drivers/scsi/qlogic.c | while (inb(qbase + 5)); /* purge int */ |
qbase | 610 | drivers/scsi/qlogic.c | request_region( qbase , 0x10 ,"qlogic"); |
qbase | 612 | drivers/scsi/qlogic.c | hreg->io_port = qbase; |
qbase | 619 | drivers/scsi/qlogic.c | qltyp, qbase, qlirq, QL_TURBO_PDMA ); |