Lines Matching full:instance

178  * the command structure is placed into the per instance disconnected
247 * NCR5380_setup(instance) - initialize any local variables needed from a given
248 * instance of the host adapter for NCR5380_{read,write,pread,pwrite}
267 * NCR5380_dma_write_setup(instance, src, count) - initialize
268 * NCR5380_dma_read_setup(instance, dst, count) - initialize
269 * NCR5380_dma_residual(instance); - residual count
272 * NCR5380_pwrite(instance, src, count)
273 * NCR5380_pread(instance, dst, count);
275 * The generic driver is initialized by calling NCR5380_init(instance),
277 * driver wishes to autoprobe for an IRQ line, the NCR5380_probe_irq(instance,
313 * @instance: controller to poll
325 static int NCR5380_poll_politely(struct Scsi_Host *instance, int reg, int bit, int val, int t) in NCR5380_poll_politely() argument
332 NCR5380_setup(instance); in NCR5380_poll_politely()
411 * @instance: adapter state to dump
418 static void NCR5380_print(struct Scsi_Host *instance) in NCR5380_print() argument
422 NCR5380_setup(instance); in NCR5380_print()
452 * @instance: adapter to dump
459 static void NCR5380_print_phase(struct Scsi_Host *instance) in NCR5380_print_phase() argument
464 NCR5380_setup(instance); in NCR5380_print_phase()
468 printk("scsi%d : REQ not asserted, phase unknown.\n", instance->host_no); in NCR5380_print_phase()
471 printk("scsi%d : phase %s\n", instance->host_no, phases[i].name); in NCR5380_print_phase()
568 * @instance: NCR5380 controller
577 static int __init __maybe_unused NCR5380_probe_irq(struct Scsi_Host *instance, in NCR5380_probe_irq() argument
581 struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata; in NCR5380_probe_irq()
584 NCR5380_setup(instance); in NCR5380_probe_irq()
623 * @instance: unused for now
633 NCR5380_print_options(struct Scsi_Host *instance) in NCR5380_print_options() argument
663 if (((struct NCR5380_hostdata *) instance->hostdata)->flags & FLAG_NCR53C400) { in NCR5380_print_options()
670 * @instance: controller to dump
678 static void NCR5380_print_status(struct Scsi_Host *instance) in NCR5380_print_status() argument
680 NCR5380_dprint(NDEBUG_ANY, instance); in NCR5380_print_status()
681 NCR5380_dprint_phase(NDEBUG_ANY, instance); in NCR5380_print_status()
707 static int __maybe_unused NCR5380_proc_info(struct Scsi_Host *instance, in NCR5380_proc_info() argument
714 hostdata = (struct NCR5380_hostdata *) instance->hostdata; in NCR5380_proc_info()
726 if (((struct NCR5380_hostdata *) instance->hostdata)->flags & FLAG_NCR53C400) in NCR5380_proc_info()
741 SPRINTF("\nBase Addr: 0x%05lX ", (long) instance->base); in NCR5380_proc_info()
742 SPRINTF("io_port: %04x ", (int) instance->io_port); in NCR5380_proc_info()
743 if (instance->irq == SCSI_IRQ_NONE) in NCR5380_proc_info()
746 SPRINTF("IRQ: %d.\n", instance->irq); in NCR5380_proc_info()
754 spin_lock_irq(instance->host_lock); in NCR5380_proc_info()
756 SPRINTF("scsi%d: no currently connected command\n", instance->host_no); in NCR5380_proc_info()
759 SPRINTF("scsi%d: issue_queue\n", instance->host_no); in NCR5380_proc_info()
763 SPRINTF("scsi%d: disconnected_queue\n", instance->host_no); in NCR5380_proc_info()
766 spin_unlock_irq(instance->host_lock); in NCR5380_proc_info()
803 * @instance: adapter to configure
806 * Initializes *instance and corresponding 5380 chip,
817 static int __devinit NCR5380_init(struct Scsi_Host *instance, int flags) in NCR5380_init() argument
822 struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata; in NCR5380_init()
833 instance->NCR5380_instance_name += NCR53C400_address_adjust; in NCR5380_init()
836 NCR5380_setup(instance); in NCR5380_init()
839 hostdata->id_mask = 1 << instance->this_id; in NCR5380_init()
873 hostdata->host = instance; in NCR5380_init()
877 if ((instance->cmd_per_lun > 1) || instance->can_queue > 1) in NCR5380_init()
879 " be incorrectly cleared.\n", instance->host_no); in NCR5380_init()
910 printk(KERN_INFO "scsi%d: SCSI bus busy, waiting up to five seconds\n", instance->host_no); in NCR5380_init()
912 NCR5380_poll_politely(instance, STATUS_REG, SR_BSY, 0, 5*HZ); in NCR5380_init()
915 printk(KERN_WARNING "scsi%d: bus busy, attempting abort\n", instance->host_no); in NCR5380_init()
916 do_abort(instance); in NCR5380_init()
919 printk(KERN_WARNING "scsi%d: bus busy, attempting reset\n", instance->host_no); in NCR5380_init()
920 do_reset(instance); in NCR5380_init()
923 printk(KERN_ERR "scsi%d: bus locked solid or invalid override\n", instance->host_no); in NCR5380_init()
932 * @instance: adapter to remove
935 static void NCR5380_exit(struct Scsi_Host *instance) in NCR5380_exit() argument
937 struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata; in NCR5380_exit()
947 * cmd is added to the per instance issue_queue, with minor
956 struct Scsi_Host *instance = cmd->device->host; in NCR5380_queue_command_lck() local
957 struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata; in NCR5380_queue_command_lck()
964 printk("scsi%d : WRITE attempted with NO_WRITE debugging flag set\n", instance->host_no); in NCR5380_queue_command_lck()
1015 …dprintk(NDEBUG_QUEUES, ("scsi%d : command added to %s of queue\n", instance->host_no, (cmd->cmnd[0… in NCR5380_queue_command_lck()
1041 struct Scsi_Host *instance = hostdata->host; in DEF_SCSI_QCMD() local
1045 spin_lock_irq(instance->host_lock); in DEF_SCSI_QCMD()
1050 dprintk(NDEBUG_MAIN, ("scsi%d : not connected\n", instance->host_no)); in DEF_SCSI_QCMD()
1072 * On success, instance->hostdata->connected is set. in DEF_SCSI_QCMD()
1076 …%d : main() : command for target %d lun %d removed from issue_queue\n", instance->host_no, tmp->ta… in DEF_SCSI_QCMD()
1091 if (!NCR5380_select(instance, tmp, in DEF_SCSI_QCMD()
1105 …NDEBUG_QUEUES, ("scsi%d : main(): select() failed, returned to issue_queue\n", instance->host_no)); in DEF_SCSI_QCMD()
1115 if (!NCR5380_select(instance, tmp, (tmp->cmnd[0] == REQUEST_SENSE) ? TAG_NONE : TAG_NEXT)) { in DEF_SCSI_QCMD()
1122 …printk(KERN_DEBUG "scsi%d: device %d did not respond in time\n", instance->host_no, tmp->device->i… in DEF_SCSI_QCMD()
1135 dprintk(NDEBUG_MAIN, ("scsi%d : main() : performing information transfer\n", instance->host_no)); in DEF_SCSI_QCMD()
1136 NCR5380_information_transfer(instance); in DEF_SCSI_QCMD()
1137 dprintk(NDEBUG_MAIN, ("scsi%d : main() : done set false\n", instance->host_no)); in DEF_SCSI_QCMD()
1143 spin_unlock_irq(instance->host_lock); in DEF_SCSI_QCMD()
1157 * Locks: takes the needed instance locks
1163 struct Scsi_Host *instance = dev_id; in NCR5380_intr() local
1164 struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata; in NCR5380_intr()
1170 instance->irq)); in NCR5380_intr()
1174 spin_lock_irqsave(instance->host_lock, flags); in NCR5380_intr()
1176 NCR5380_setup(instance); in NCR5380_intr()
1180 NCR5380_dprint(NDEBUG_INTR, instance); in NCR5380_intr()
1183 dprintk(NDEBUG_INTR, ("scsi%d : SEL interrupt\n", instance->host_no)); in NCR5380_intr()
1184 NCR5380_reselect(instance); in NCR5380_intr()
1187 dprintk(NDEBUG_INTR, ("scsi%d : PARITY interrupt\n", instance->host_no)); in NCR5380_intr()
1190 dprintk(NDEBUG_INTR, ("scsi%d : RESET interrupt\n", instance->host_no)); in NCR5380_intr()
1204 panic("scsi%d : received end of DMA interrupt with no connected cmd\n", instance->hostno); in NCR5380_intr()
1206 transferred = (hostdata->dmalen - NCR5380_dma_residual(instance)); in NCR5380_intr()
1225 spin_unlock_irqrestore(instance->host_lock, flags); in NCR5380_intr()
1264 * Function : int NCR5380_select (struct Scsi_Host *instance, Scsi_Cmnd *cmd,
1271 * Inputs : instance - instantiation of the 5380 driver on which this
1287 * instance->connected will be set to cmd.
1296 static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag) in NCR5380_select() argument
1299 struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata; in NCR5380_select()
1306 NCR5380_setup(instance); in NCR5380_select()
1313 NCR5380_dprint(NDEBUG_ARBITRATION, instance); in NCR5380_select()
1314 …EBUG_ARBITRATION, ("scsi%d : starting arbitration, id = %d\n", instance->host_no, instance->this_i… in NCR5380_select()
1333 spin_unlock_irq(instance->host_lock); in NCR5380_select()
1334 …err = NCR5380_poll_politely(instance, INITIATOR_COMMAND_REG, ICR_ARBITRATION_PROGRESS, ICR_ARBITRA… in NCR5380_select()
1335 spin_lock_irq(instance->host_lock); in NCR5380_select()
1343 dprintk(NDEBUG_ARBITRATION, ("scsi%d : arbitration complete\n", instance->host_no)); in NCR5380_select()
1357 …dprintk(NDEBUG_ARBITRATION, ("scsi%d : lost arbitration, deasserting MR_ARBITRATE\n", instance->ho… in NCR5380_select()
1370 …dprintk(NDEBUG_ARBITRATION, ("scsi%d : lost arbitration, deasserting ICR_ASSERT_SEL\n", instance->… in NCR5380_select()
1380 dprintk(NDEBUG_ARBITRATION, ("scsi%d : won arbitration\n", instance->host_no)); in NCR5380_select()
1432 dprintk(NDEBUG_SELECTION, ("scsi%d : selecting target %d\n", instance->host_no, scmd_id(cmd))); in NCR5380_select()
1468 NCR5380_reselect(instance); in NCR5380_select()
1469 printk("scsi%d : reselection after won arbitration?\n", instance->host_no); in NCR5380_select()
1486 printk(KERN_DEBUG "scsi%d : weirdness\n", instance->host_no); in NCR5380_select()
1489 NCR5380_dprint(NDEBUG_SELECTION, instance); in NCR5380_select()
1497 dprintk(NDEBUG_SELECTION, ("scsi%d : target did not respond within 250ms\n", instance->host_no)); in NCR5380_select()
1520 spin_unlock_irq(instance->host_lock); in NCR5380_select()
1521 err = NCR5380_poll_politely(instance, STATUS_REG, SR_REQ, SR_REQ, HZ); in NCR5380_select()
1522 spin_lock_irq(instance->host_lock); in NCR5380_select()
1525 printk(KERN_ERR "scsi%d: timeout at NCR5380.c:%d\n", instance->host_no, __LINE__); in NCR5380_select()
1530 …CTION, ("scsi%d : target %d selected, going into MESSAGE OUT phase.\n", instance->host_no, cmd->de… in NCR5380_select()
1531 tmp[0] = IDENTIFY(((instance->irq == SCSI_IRQ_NONE) ? 0 : 1), cmd->device->lun); in NCR5380_select()
1539 NCR5380_transfer_pio(instance, &phase, &len, &data); in NCR5380_select()
1540 dprintk(NDEBUG_SELECTION, ("scsi%d : nexus established.\n", instance->host_no)); in NCR5380_select()
1556 * Function : int NCR5380_transfer_pio (struct Scsi_Host *instance,
1561 * Inputs : instance - instance of driver, *phase - pointer to
1580 static int NCR5380_transfer_pio(struct Scsi_Host *instance, unsigned char *phase, int *count, unsig… in NCR5380_transfer_pio() argument
1589 struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata; in NCR5380_transfer_pio()
1590 NCR5380_setup(instance); in NCR5380_transfer_pio()
1593 dprintk(NDEBUG_PIO, ("scsi%d : pio write %d bytes\n", instance->host_no, c)); in NCR5380_transfer_pio()
1595 dprintk(NDEBUG_PIO, ("scsi%d : pio read %d bytes\n", instance->host_no, c)); in NCR5380_transfer_pio()
1630 dprintk(NDEBUG_HANDSHAKE, ("scsi%d : REQ detected\n", instance->host_no)); in NCR5380_transfer_pio()
1634 dprintk(NDEBUG_HANDSHAKE, ("scsi%d : phase mismatch\n", instance->host_no)); in NCR5380_transfer_pio()
1635 NCR5380_dprint_phase(NDEBUG_HANDSHAKE, instance); in NCR5380_transfer_pio()
1656 NCR5380_dprint(NDEBUG_PIO, instance); in NCR5380_transfer_pio()
1660 NCR5380_dprint(NDEBUG_PIO, instance); in NCR5380_transfer_pio()
1664 NCR5380_dprint(NDEBUG_PIO, instance); in NCR5380_transfer_pio()
1669 NCR5380_poll_politely(instance, STATUS_REG, SR_REQ, 0, 5*HZ); in NCR5380_transfer_pio()
1670 dprintk(NDEBUG_HANDSHAKE, ("scsi%d : req false, handshake complete\n", instance->host_no)); in NCR5380_transfer_pio()
1691 dprintk(NDEBUG_PIO, ("scsi%d : residual %d\n", instance->host_no, c)); in NCR5380_transfer_pio()
1792 * Function : int NCR5380_transfer_dma (struct Scsi_Host *instance,
1798 * Inputs : instance - instance of driver, *phase - pointer to
1812 static int NCR5380_transfer_dma(struct Scsi_Host *instance, unsigned char *phase, int *count, unsig… in NCR5380_transfer_dma() argument
1824 struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata; in NCR5380_transfer_dma()
1826 NCR5380_setup(instance); in NCR5380_transfer_dma()
1838 …si%d : initializing DMA channel %d for %s, %d bytes %s %0x\n", instance->host_no, instance->dma_ch… in NCR5380_transfer_dma()
1839 …ta->dma_len = (p & SR_IO) ? NCR5380_dma_read_setup(instance, d, c) : NCR5380_dma_write_setup(insta… in NCR5380_transfer_dma()
1856 spin_unlock_irq(instance->host_lock); in NCR5380_transfer_dma()
1867 dprintk(NDEBUG_DMA, ("scsi%d : mode reg = 0x%X\n", instance->host_no, NCR5380_read(MODE_REG))); in NCR5380_transfer_dma()
1944 …dprintk(NDEBUG_DMA, ("scsi%d : polled DMA transfer complete, basr 0x%X, sr 0x%X\n", instance->host… in NCR5380_transfer_dma()
1949 residue = NCR5380_dma_residual(instance); in NCR5380_transfer_dma()
1968 NCR5380_transfer_pio(instance, phase, &cnt, data); in NCR5380_transfer_dma()
1981 foo = NCR5380_pread(instance, d, c); in NCR5380_transfer_dma()
1987 if (!(foo = NCR5380_pread(instance, d, c - diff))) { in NCR5380_transfer_dma()
2020 foo = NCR5380_pwrite(instance, d, c); in NCR5380_transfer_dma()
2024 if (!(foo = NCR5380_pwrite(instance, d, c))) { in NCR5380_transfer_dma()
2034 dprintk(NDEBUG_LAST_BYTE_SENT, ("scsi%d : timed out on last byte\n", instance->host_no)); in NCR5380_transfer_dma()
2040 dprintk(NDEBUG_LAST_WRITE_SENT, ("scsi%d : last bit sent works\n", instance->host_no)); in NCR5380_transfer_dma()
2067 spin_lock_irq(instance->host_lock); in NCR5380_transfer_dma()
2075 * Function : NCR5380_information_transfer (struct Scsi_Host *instance)
2079 * instance->connected.
2081 * Inputs : instance, instance for which we are doing commands
2084 * modified if a command disconnects, *instance->connected will
2093 static void NCR5380_information_transfer(struct Scsi_Host *instance) { argument
2095 struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *)instance->hostdata;
2108 NCR5380_setup(instance);
2117 NCR5380_dprint_phase(NDEBUG_INFORMATION, instance);
2132 printk("scsi%d : NDEBUG_NO_DATAOUT set, attempted DATAOUT aborted\n", instance->host_no);
2134 do_abort(instance);
2149 …dprintk(NDEBUG_INFORMATION, ("scsi%d : %d bytes and %d buffers left\n", instance->host_no, cmd->SC…
2170 …stdata->flags & FLAG_NO_PSEUDO_DMA) && (transfersize = NCR5380_dma_xfer_len(instance, cmd)) != 0) {
2186 if (NCR5380_transfer_dma(instance, &phase, &len, (unsigned char **) &cmd->SCp.ptr)) {
2196 do_abort(instance);
2204 NCR5380_transfer_pio(instance, &phase, (int *) &cmd->SCp.this_residual, (unsigned char **)
2210 NCR5380_transfer_pio(instance, &phase, &len, &data);
2229 …dprintk(NDEBUG_LINKED, ("scsi%d : target %d lun %d linked command complete.\n", instance->host_no,…
2236 …printk("scsi%d : target %d lun %d linked command complete, no next_link\n" instance->host_no, cmd-…
2238 do_abort(instance);
2245 …scsi%d : target %d lun %d linked request done, calling scsi_done().\n", instance->host_no, cmd->de…
2257 …dprintk(NDEBUG_QUEUES, ("scsi%d : command for target %d, lun %d completed\n", instance->host_no, c…
2291 dprintk(NDEBUG_AUTOSENSE, ("scsi%d : performing request sense\n", instance->host_no));
2297 …dprintk(NDEBUG_QUEUES, ("scsi%d : REQUEST SENSE added to head of issue queue\n", instance->host_no…
2337 …et %d lun %d was moved from connected to" " the disconnected_queue\n", instance->host_no, cmd->de…
2347 /* NCR538_poll_politely(instance, STATUS_REG, SR_BSY, 0, 30 * HZ); */
2383 dprintk(NDEBUG_EXTENDED, ("scsi%d : receiving extended message\n", instance->host_no));
2388 NCR5380_transfer_pio(instance, &phase, &len, &data);
2390 …dprintk(NDEBUG_EXTENDED, ("scsi%d : length=%d, code=0x%02x\n", instance->host_no, (int) extended_m…
2399 NCR5380_transfer_pio(instance, &phase, &len, &data);
2400 … dprintk(NDEBUG_EXTENDED, ("scsi%d : message received, residual %d\n", instance->host_no, len));
2410 printk("scsi%d: error receiving extended message\n", instance->host_no);
2413 …printk("scsi%d: extended message code %02x length %d is too long\n", instance->host_no, extended_m…
2424 printk("scsi%d: rejecting message ", instance->host_no);
2443 NCR5380_transfer_pio(instance, &phase, &len, &data);
2463 NCR5380_transfer_pio(instance, &phase, &len, &data);
2466 …dprintk(NDEBUG_USLEEP, ("scsi%d : issued command, sleeping until %ul\n", instance->host_no, hostda…
2473 NCR5380_transfer_pio(instance, &phase, &len, &data);
2477 printk("scsi%d : unknown phase\n", instance->host_no);
2478 NCR5380_dprint(NDEBUG_ALL, instance);
2486 …dprintk(NDEBUG_USLEEP, ("scsi%d : poll timed out, sleeping until %ul\n", instance->host_no, hostda…
2494 * Function : void NCR5380_reselect (struct Scsi_Host *instance)
2496 * Purpose : does reselection, initializing the instance->connected
2500 * Inputs : instance - this instance of the NCR5380.
2505 static void NCR5380_reselect(struct Scsi_Host *instance) { argument
2508 instance->hostdata;
2516 NCR5380_setup(instance);
2527 dprintk(NDEBUG_SELECTION, ("scsi%d : reselect\n", instance->host_no));
2541 if(NCR5380_poll_politely(instance, STATUS_REG, SR_SEL, 0, 2*HZ)<0)
2551 if(NCR5380_poll_politely(instance, STATUS_REG, SR_REQ, SR_REQ, 2*HZ))
2557 NCR5380_transfer_pio(instance, &phase, &len, &data);
2560 printk(KERN_ERR "scsi%d : expecting IDENTIFY message, got ", instance->host_no);
2594 …i%d : warning : target bitmask %02x lun %d not in disconnect_queue.\n", instance->host_no, target_…
2604 do_abort(instance);
2607 …TION, ("scsi%d : nexus established, target = %d, lun = %d, tag = %d\n", instance->host_no, tmp->ta…
2612 * Function : void NCR5380_dma_complete (struct Scsi_Host *instance)
2617 * Inputs : instance - this instance of the NCR5380.
2624 static void NCR5380_dma_complete(NCR5380_instance * instance) { argument
2626 struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata;
2628 NCR5380_setup(instance);
2641 NCR5380_poll_politely(instance, BUS_AND_STATUS_REG, BASR_ACK, 0, 5*HZ);
2653 transferred = instance->dmalen - NCR5380_dma_residual();
2681 struct Scsi_Host *instance = cmd->device->host; local
2682 struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata;
2685 printk(KERN_WARNING "scsi%d : aborting command\n", instance->host_no);
2688 NCR5380_print_status(instance);
2690 NCR5380_setup(instance);
2692 dprintk(NDEBUG_ABORT, ("scsi%d : abort called\n", instance->host_no));
2703 dprintk(NDEBUG_ABORT, ("scsi%d : aborting connected command\n", instance->host_no));
2731 dprintk(NDEBUG_ABORT, ("scsi%d : abort going into loop.\n", instance->host_no));
2738 dprintk(NDEBUG_ABORT, ("scsi%d : abort removed command from issue queue.\n", instance->host_no));
2745 printk(KERN_ERR "scsi%d : LOOP\n", instance->host_no);
2760 dprintk(NDEBUG_ABORT, ("scsi%d : abort failed, command connected.\n", instance->host_no));
2790 dprintk(NDEBUG_ABORT, ("scsi%d : aborting disconnected command.\n", instance->host_no));
2792 if (NCR5380_select(instance, cmd, (int) cmd->tag))
2794 dprintk(NDEBUG_ABORT, ("scsi%d : nexus reestablished.\n", instance->host_no));
2796 do_abort(instance);
2818 " before abortion\n", instance->host_no);
2835 struct Scsi_Host *instance = cmd->device->host; local
2838 NCR5380_setup(instance);
2839 NCR5380_print_status(instance);
2841 spin_lock_irq(instance->host_lock);
2842 do_reset(instance);
2843 spin_unlock_irq(instance->host_lock);