Lines Matching refs:base

213 	int base;  member
232 static void sym53c416_set_transfer_counter(int base, unsigned int len) in sym53c416_set_transfer_counter() argument
235 outb(len & 0x0000FF, base + TC_LOW); in sym53c416_set_transfer_counter()
236 outb((len & 0x00FF00) >> 8, base + TC_MID); in sym53c416_set_transfer_counter()
237 outb((len & 0xFF0000) >> 16, base + TC_HIGH); in sym53c416_set_transfer_counter()
243 static __inline__ unsigned int sym53c416_read(int base, unsigned char *buffer, unsigned int len) in sym53c416_read() argument
255 bytes_left = inb(base + PIO_FIFO_CNT); /* Number of bytes in the PIO FIFO */ in sym53c416_read()
258 insl(base + PIO_FIFO_1, buffer, bytes_left >> 2); in sym53c416_read()
266 *(buffer++) = inb(base + PIO_FIFO_1); in sym53c416_read()
272 while(time_before(jiffies, i) && (inb(base + PIO_INT_REG) & EMPTY) && timeout) in sym53c416_read()
273 if(inb(base + PIO_INT_REG) & SCI) in sym53c416_read()
276 if(inb(base + PIO_INT_REG) & EMPTY) in sym53c416_read()
285 static __inline__ unsigned int sym53c416_write(int base, unsigned char *buffer, unsigned int len) in sym53c416_write() argument
297 bufferfree = PIO_SIZE - inb(base + PIO_FIFO_CNT); in sym53c416_write()
302 outsl(base + PIO_FIFO_1, buffer, bufferfree >> 2); in sym53c416_write()
310 outb(*(buffer++), base + PIO_FIFO_1); in sym53c416_write()
316 while(time_before(jiffies, i) && (inb(base + PIO_INT_REG) & FULL) && timeout) in sym53c416_write()
319 if(inb(base + PIO_INT_REG) & FULL) in sym53c416_write()
330 int base = dev->io_port; in sym53c416_intr_handle() local
338 status_reg = inb(base + STATUS_REG); in sym53c416_intr_handle()
339 pio_int_reg = inb(base + PIO_INT_REG); in sym53c416_intr_handle()
340 int_reg = inb(base + INT_REG); in sym53c416_intr_handle()
356 printk(KERN_WARNING "sym53c416: Illegal Command: 0x%02x.\n", inb(base + COMMAND_REG)); in sym53c416_intr_handle()
415 outb(FLUSH_FIFO, base + COMMAND_REG); in sym53c416_intr_handle()
416 sym53c416_set_transfer_counter(base, in sym53c416_intr_handle()
418 outb(TRANSFER_INFORMATION | PIO_MODE, base + COMMAND_REG); in sym53c416_intr_handle()
422 tot_trans += sym53c416_write(base, in sym53c416_intr_handle()
437 outb(FLUSH_FIFO, base + COMMAND_REG); in sym53c416_intr_handle()
438 sym53c416_set_transfer_counter(base, in sym53c416_intr_handle()
441 outb(TRANSFER_INFORMATION | PIO_MODE, base + COMMAND_REG); in sym53c416_intr_handle()
445 tot_trans += sym53c416_read(base, in sym53c416_intr_handle()
465 outb(FLUSH_FIFO, base + COMMAND_REG); in sym53c416_intr_handle()
466 outb(INIT_COMM_COMPLETE_SEQ, base + COMMAND_REG); in sym53c416_intr_handle()
480 outb(SET_ATN, base + COMMAND_REG); in sym53c416_intr_handle()
481 outb(MSG_ACCEPTED, base + COMMAND_REG); in sym53c416_intr_handle()
488 current_command->SCp.Status = inb(base + SCSI_FIFO); in sym53c416_intr_handle()
489 current_command->SCp.Message = inb(base + SCSI_FIFO); in sym53c416_intr_handle()
491 outb(SET_ATN, base + COMMAND_REG); in sym53c416_intr_handle()
492 outb(MSG_ACCEPTED, base + COMMAND_REG); in sym53c416_intr_handle()
500 static void sym53c416_init(int base, int scsi_id) in sym53c416_init() argument
502 outb(RESET_CHIP, base + COMMAND_REG); in sym53c416_init()
503 outb(NOOP, base + COMMAND_REG); in sym53c416_init()
504 outb(0x99, base + TOM); /* Time out of 250 ms */ in sym53c416_init()
505 outb(0x05, base + STP); in sym53c416_init()
506 outb(0x00, base + SYNC_OFFSET); in sym53c416_init()
507 outb(EPC | scsi_id, base + CONF_REG_1); in sym53c416_init()
508 outb(FE | SCSI2 | TBPA, base + CONF_REG_2); in sym53c416_init()
509 outb(IDMRC | QTE | CDB10 | FSCSI | FCLK, base + CONF_REG_3); in sym53c416_init()
510 outb(0x83 | EAN, base + CONF_REG_4); in sym53c416_init()
511 outb(IE | WSE0, base + CONF_REG_5); in sym53c416_init()
512 outb(0, base + FEATURE_EN); in sym53c416_init()
515 static int sym53c416_probeirq(int base, int scsi_id) in sym53c416_probeirq() argument
521 inb(base + INT_REG); in sym53c416_probeirq()
525 sym53c416_init(base, scsi_id); in sym53c416_probeirq()
527 outb(NOOP, base + COMMAND_REG); in sym53c416_probeirq()
528 outb(ILLEGAL, base + COMMAND_REG); in sym53c416_probeirq()
529 outb(0x07, base + DEST_BUS_ID); in sym53c416_probeirq()
530 outb(0x00, base + DEST_BUS_ID); in sym53c416_probeirq()
533 while(time_before(jiffies, i) && !(inb(base + STATUS_REG) & SCI)) in sym53c416_probeirq()
539 sym53c416_init(base, scsi_id); in sym53c416_probeirq()
560 if(hosts[i].base == ints[1]) in sym53c416_setup()
564 hosts[host_index].base = ints[1]; in sym53c416_setup()
570 static int sym53c416_test(int base) in sym53c416_test() argument
572 outb(RESET_CHIP, base + COMMAND_REG); in sym53c416_test()
573 outb(NOOP, base + COMMAND_REG); in sym53c416_test()
574 if(inb(base + COMMAND_REG) != NOOP) in sym53c416_test()
576 if(!inb(base + TC_HIGH) || inb(base + TC_HIGH) == 0xFF) in sym53c416_test()
578 if((inb(base + PIO_INT_REG) & (FULL | EMPTY | CE | OUE | FIE | EIE)) != EMPTY) in sym53c416_test()
596 int *base = probeaddrs; in sym53c416_probe() local
600 for(; *base; base++) { in sym53c416_probe()
601 if (request_region(*base, IO_RANGE, ID)) { in sym53c416_probe()
602 if (sym53c416_test(*base)) { in sym53c416_probe()
603 ints[1] = *base; in sym53c416_probe()
606 release_region(*base, IO_RANGE); in sym53c416_probe()
682 if (!request_region(hosts[i].base, IO_RANGE, ID)) in sym53c416_detect()
684 if (!sym53c416_test(hosts[i].base)) { in sym53c416_detect()
685 printk(KERN_WARNING "No sym53c416 found at address 0x%03x\n", hosts[i].base); in sym53c416_detect()
691 hosts[i].irq = sym53c416_probeirq(hosts[i].base, hosts[i].scsi_id); in sym53c416_detect()
703 shpnt->unique_id = hosts[i].base; in sym53c416_detect()
704 shpnt->io_port = hosts[i].base; in sym53c416_detect()
708 sym53c416_init(hosts[i].base, hosts[i].scsi_id); in sym53c416_detect()
716 release_region(hosts[i].base, IO_RANGE); in sym53c416_detect()
724 int base = SChost->io_port; in sym53c416_info() local
727 int rev = inb(base + TC_HIGH); in sym53c416_info()
730 if(hosts[i].base == base) in sym53c416_info()
732 …sprintf(info, "Symbios Logic 53c416 (rev. %d) at 0x%03x, irq %d, SCSI-ID %d, %s pio", rev, base, i… in sym53c416_info()
738 int base; in sym53c416_queuecommand_lck() local
743 base = SCpnt->device->host->io_port; in sym53c416_queuecommand_lck()
751 outb(scmd_id(SCpnt), base + DEST_BUS_ID); /* Set scsi id target */ in sym53c416_queuecommand_lck()
752 outb(FLUSH_FIFO, base + COMMAND_REG); /* Flush SCSI and PIO FIFO's */ in sym53c416_queuecommand_lck()
755 outb(SCpnt->cmnd[i], base + SCSI_FIFO); in sym53c416_queuecommand_lck()
757 outb(SEL_WITHOUT_ATN_SEQ, base + COMMAND_REG); in sym53c416_queuecommand_lck()
767 int base; in DEF_SCSI_QCMD() local
775 base = SCpnt->device->host->io_port; in DEF_SCSI_QCMD()
778 if(hosts[i].base == base) in DEF_SCSI_QCMD()
780 outb(RESET_CHIP, base + COMMAND_REG); in DEF_SCSI_QCMD()
781 outb(NOOP | PIO_MODE, base + COMMAND_REG); in DEF_SCSI_QCMD()
782 outb(RESET_SCSI_BUS, base + COMMAND_REG); in DEF_SCSI_QCMD()
783 sym53c416_init(base, scsi_id); in DEF_SCSI_QCMD()