Lines Matching refs:config

259 } config = {0};  variable
332 static void log_ultrastor_abort(struct ultrastor_config *config, in log_ultrastor_abort() argument
341 if (! (config->mscp_free & (1 << i))) in log_ultrastor_abort()
342 fmt[21 + i*2] = '0' + config->mscp[i].target_id; in log_ultrastor_abort()
348 printk(fmt, command, &config->mscp[command], config->mscp_free); in log_ultrastor_abort()
375 if (config.bios_segment) in ultrastor_14f_detect()
383 config.port_address = PORT_OVERRIDE; in ultrastor_14f_detect()
387 config.port_address = ultrastor_ports_14f[i]; in ultrastor_14f_detect()
391 printk("US14F: detect: testing port address %03X\n", config.port_address); in ultrastor_14f_detect()
394 in_byte = inb(U14F_PRODUCT_ID(config.port_address)); in ultrastor_14f_detect()
400 printk("US14F: detect: no adapter at port %03X\n", config.port_address); in ultrastor_14f_detect()
406 release_region(config.port_address, 0x0c); in ultrastor_14f_detect()
410 in_byte = inb(U14F_PRODUCT_ID(config.port_address) + 1); in ultrastor_14f_detect()
417 printk("US14F: detect: no adapter at port %03X\n", config.port_address); in ultrastor_14f_detect()
423 release_region(config.port_address, 0x0c); in ultrastor_14f_detect()
442 config.port_address); in ultrastor_14f_detect()
447 outb(ultrastor_bus_reset ? 0xc2 : 0x82, LCL_DOORBELL_MASK(config.port_address)); in ultrastor_14f_detect()
454 *(char *)&config_1 = inb(CONFIG(config.port_address + 0)); in ultrastor_14f_detect()
455 *(char *)&config_2 = inb(CONFIG(config.port_address + 1)); in ultrastor_14f_detect()
456 config.bios_segment = bios_segment_table[config_1.bios_segment]; in ultrastor_14f_detect()
457 config.doorbell_address = config.port_address; in ultrastor_14f_detect()
458 config.ogm_address = config.port_address + 0x8; in ultrastor_14f_detect()
459 config.icm_address = config.port_address + 0xC; in ultrastor_14f_detect()
460 config.interrupt = interrupt_table_14f[config_1.interrupt]; in ultrastor_14f_detect()
461 config.ha_scsi_id = config_2.ha_scsi_id; in ultrastor_14f_detect()
462 config.heads = mapping_table[config_2.mapping_mode].heads; in ultrastor_14f_detect()
463 config.sectors = mapping_table[config_2.mapping_mode].sectors; in ultrastor_14f_detect()
464 config.bios_drive_number = config_2.bios_drive_number; in ultrastor_14f_detect()
465 config.subversion = (version_byte & 0x0F); in ultrastor_14f_detect()
466 if (config.subversion == U34F) in ultrastor_14f_detect()
467 config.dma_channel = 0; in ultrastor_14f_detect()
469 config.dma_channel = dma_channel_table_14f[config_1.dma_channel]; in ultrastor_14f_detect()
471 if (!config.bios_segment) { in ultrastor_14f_detect()
479 if (config.subversion != U34F) in ultrastor_14f_detect()
480 if (!config.dma_channel || !(config_2.tfr_port & 0x2)) { in ultrastor_14f_detect()
500 config.port_address, config.bios_segment, config.interrupt, in ultrastor_14f_detect()
501 config.dma_channel, config.ha_scsi_id, config.subversion); in ultrastor_14f_detect()
503 tpnt->this_id = config.ha_scsi_id; in ultrastor_14f_detect()
504 tpnt->unchecked_isa_dma = (config.subversion != U34F); in ultrastor_14f_detect()
507 config.mscp_free = ~0; in ultrastor_14f_detect()
514 …if (request_irq(config.interrupt, do_ultrastor_interrupt, 0, "Ultrastor", &config.mscp[0].SCint->d… in ultrastor_14f_detect()
516 config.interrupt); in ultrastor_14f_detect()
519 if (config.dma_channel && request_dma(config.dma_channel,"Ultrastor")) { in ultrastor_14f_detect()
521 config.dma_channel); in ultrastor_14f_detect()
522 free_irq(config.interrupt, NULL); in ultrastor_14f_detect()
531 release_region(config.port_address, 0x0c); in ultrastor_14f_detect()
555 config.revision = inb(addr+3); in ultrastor_24f_detect()
556 config.slot = i; in ultrastor_24f_detect()
568 config.bios_segment = bios_segment_table[config_1 & 7]; in ultrastor_24f_detect()
572 config.interrupt = 15; in ultrastor_24f_detect()
575 config.interrupt = 14; in ultrastor_24f_detect()
578 config.interrupt = 11; in ultrastor_24f_detect()
581 config.interrupt = 10; in ultrastor_24f_detect()
590 config.port_address = addr; in ultrastor_24f_detect()
591 config.doorbell_address = addr + 12; in ultrastor_24f_detect()
592 config.ogm_address = addr + 0x17; in ultrastor_24f_detect()
593 config.icm_address = addr + 0x1C; in ultrastor_24f_detect()
595 config.ha_scsi_id = config_2 & 7; in ultrastor_24f_detect()
596 config.heads = mapping_table[(config_2 >> 3) & 3].heads; in ultrastor_24f_detect()
597 config.sectors = mapping_table[(config_2 >> 3) & 3].sectors; in ultrastor_24f_detect()
604 config.port_address, config.bios_segment, in ultrastor_24f_detect()
605 config.interrupt, config.ha_scsi_id); in ultrastor_24f_detect()
607 tpnt->this_id = config.ha_scsi_id; in ultrastor_24f_detect()
614 free_irq(config.interrupt, do_ultrastor_interrupt); in ultrastor_24f_detect()
618 if (request_irq(config.interrupt, do_ultrastor_interrupt, 0, "Ultrastor", shpnt)) in ultrastor_24f_detect()
621 config.interrupt); in ultrastor_24f_detect()
625 shpnt->irq = config.interrupt; in ultrastor_24f_detect()
626 shpnt->dma_channel = config.dma_channel; in ultrastor_24f_detect()
627 shpnt->io_port = config.port_address; in ultrastor_24f_detect()
630 config.mscp_free = ~0; in ultrastor_24f_detect()
669 if (config.slot) in ultrastor_info()
671 config.slot, config.interrupt); in ultrastor_info()
672 else if (config.subversion) in ultrastor_info()
674 config.port_address, (int)config.bios_segment, in ultrastor_info()
675 config.interrupt); in ultrastor_info()
678 config.port_address, (int)config.bios_segment, in ultrastor_info()
679 config.interrupt, config.dma_channel); in ultrastor_info()
713 if ((config.mscp_free & ((1U << ULTRASTOR_MAX_CMDS) - 1)) == 0) in ultrastor_queuecommand_lck()
715 mscp_index = find_and_clear_bit_16(&config.mscp_free); in ultrastor_queuecommand_lck()
718 if (xchgb(0xff, &config.aborted[mscp_index]) != 0) in ultrastor_queuecommand_lck()
724 my_mscp = &config.mscp[mscp_index]; in ultrastor_queuecommand_lck()
768 if (config.slot) in ultrastor_queuecommand_lck()
769 while (inb(config.ogm_address - 1) != 0 && config.aborted[mscp_index] == 0xff) in ultrastor_queuecommand_lck()
774 …while ((inb(LCL_DOORBELL_INTR(config.doorbell_address)) & (config.slot ? 2 : 1)) && config.aborte… in ultrastor_queuecommand_lck()
782 if (inb(LCL_DOORBELL_INTR(config.doorbell_address)) & (config.slot ? 2 : 1)) in ultrastor_queuecommand_lck()
785 status = xchgb(0, &config.aborted[mscp_index]); in ultrastor_queuecommand_lck()
791 log_ultrastor_abort(&config, mscp_index); in ultrastor_queuecommand_lck()
797 set_bit(mscp_index, &config.mscp_free); in ultrastor_queuecommand_lck()
810 outl(isa_virt_to_bus(my_mscp), config.ogm_address); in ultrastor_queuecommand_lck()
813 if (config.slot) { in ultrastor_queuecommand_lck()
815 outb(1, config.ogm_address - 1); in ultrastor_queuecommand_lck()
816 outb(0x2, LCL_DOORBELL_INTR(config.doorbell_address)); in ultrastor_queuecommand_lck()
818 outb(0x1, LCL_DOORBELL_INTR(config.doorbell_address)); in ultrastor_queuecommand_lck()
858 if(config.slot) in DEF_SCSI_QCMD()
865 mscp_index = ((struct mscp *)SCpnt->host_scribble) - config.mscp; in DEF_SCSI_QCMD()
870 if (config.slot) in DEF_SCSI_QCMD()
872 int port0 = (config.slot << 12) | 0xc80; in DEF_SCSI_QCMD()
897 if (config.slot ? inb(config.icm_address - 1) == 2 : in DEF_SCSI_QCMD()
898 (inb(SYS_DOORBELL_INTR(config.doorbell_address)) & 1)) in DEF_SCSI_QCMD()
910 old_aborted = xchgb(DID_ABORT, &config.aborted[mscp_index]); in DEF_SCSI_QCMD()
919 if (config.slot && inb(config.ogm_address - 1) == 0) in DEF_SCSI_QCMD()
924 outl(isa_virt_to_bus(&config.mscp[mscp_index]), config.ogm_address); in DEF_SCSI_QCMD()
926 outb(0x80, config.ogm_address - 1); in DEF_SCSI_QCMD()
927 outb(0x2, LCL_DOORBELL_INTR(config.doorbell_address)); in DEF_SCSI_QCMD()
929 log_ultrastor_abort(&config, mscp_index); in DEF_SCSI_QCMD()
938 log_ultrastor_abort(&config, mscp_index); in DEF_SCSI_QCMD()
952 if (config.mscp[mscp_index].SCint != SCpnt) in DEF_SCSI_QCMD()
954 config.mscp[mscp_index].SCint, SCpnt); in DEF_SCSI_QCMD()
956 if (config.mscp[mscp_index].SCint == NULL) in DEF_SCSI_QCMD()
959 if (config.mscp[mscp_index].SCint != SCpnt) panic("Bad abort"); in DEF_SCSI_QCMD()
960 config.mscp[mscp_index].SCint = NULL; in DEF_SCSI_QCMD()
961 done = config.mscp[mscp_index].done; in DEF_SCSI_QCMD()
962 config.mscp[mscp_index].done = NULL; in DEF_SCSI_QCMD()
982 if(config.slot) in ultrastor_host_reset()
988 outb(0xc0, LCL_DOORBELL_INTR(config.doorbell_address)); in ultrastor_host_reset()
989 if (config.slot) in ultrastor_host_reset()
991 outb(0, config.ogm_address - 1); in ultrastor_host_reset()
992 outb(0, config.icm_address - 1); in ultrastor_host_reset()
996 if (config.mscp_busy && config.mscp->done && config.mscp->SCint) in ultrastor_host_reset()
998 config.mscp->SCint->result = DID_RESET << 16; in ultrastor_host_reset()
999 config.mscp->done(config.mscp->SCint); in ultrastor_host_reset()
1001 config.mscp->SCint = 0; in ultrastor_host_reset()
1005 if (! (config.mscp_free & (1 << i)) && in ultrastor_host_reset()
1006 config.mscp[i].done && config.mscp[i].SCint) in ultrastor_host_reset()
1008 config.mscp[i].SCint->result = DID_RESET << 16; in ultrastor_host_reset()
1009 config.mscp[i].done(config.mscp[i].SCint); in ultrastor_host_reset()
1010 config.mscp[i].done = NULL; in ultrastor_host_reset()
1012 config.mscp[i].SCint = NULL; in ultrastor_host_reset()
1022 memset((unsigned char *)config.aborted, 0, sizeof config.aborted); in ultrastor_host_reset()
1024 config.mscp_busy = 0; in ultrastor_host_reset()
1026 config.mscp_free = ~0; in ultrastor_host_reset()
1038 unsigned int s = config.heads * config.sectors; in ultrastor_biosparam()
1040 dkinfo[0] = config.heads; in ultrastor_biosparam()
1041 dkinfo[1] = config.sectors; in ultrastor_biosparam()
1061 mscp = &config.mscp[0]; in ultrastor_interrupt()
1063 mscp = (struct mscp *)isa_bus_to_virt(inl(config.icm_address)); in ultrastor_interrupt()
1064 mscp_index = mscp - config.mscp; in ultrastor_interrupt()
1075 if (config.slot) { in ultrastor_interrupt()
1076 unsigned char icm_status = inb(config.icm_address - 1); in ultrastor_interrupt()
1084 outb(2, SYS_DOORBELL_INTR(config.doorbell_address)); in ultrastor_interrupt()
1085 outb(0, config.icm_address - 1); in ultrastor_interrupt()
1100 outb(1, SYS_DOORBELL_INTR(config.doorbell_address)); in ultrastor_interrupt()
1112 config.mscp_busy = FALSE; in ultrastor_interrupt()
1114 set_bit(mscp_index, &config.mscp_free); in ultrastor_interrupt()
1116 config.aborted[mscp_index] = 0; in ultrastor_interrupt()
1152 config.mscp_busy = FALSE; in ultrastor_interrupt()
1154 set_bit(mscp_index, &config.mscp_free); in ultrastor_interrupt()
1158 if (config.aborted[mscp_index]) in ultrastor_interrupt()
1160 mscp_index, (unsigned int) mscp, config.aborted[mscp_index]); in ultrastor_interrupt()
1162 config.aborted[mscp_index] = 0; in ultrastor_interrupt()
1169 if (config.slot ? inb(config.icm_address - 1) : in ultrastor_interrupt()
1170 (inb(SYS_DOORBELL_INTR(config.doorbell_address)) & 1)) in ultrastor_interrupt()