Lines Matching refs:shpnt

520 #define HOSTDATA(shpnt)		((struct aha152x_hostdata *) &shpnt->hostdata)  argument
522 #define HOSTNO ((shpnt)->host_no)
524 #define CURRENT_SC (HOSTDATA(shpnt)->current_SC)
525 #define DONE_SC (HOSTDATA(shpnt)->done_SC)
526 #define ISSUE_SC (HOSTDATA(shpnt)->issue_SC)
527 #define DISCONNECTED_SC (HOSTDATA(shpnt)->disconnected_SC)
528 #define QLOCK (HOSTDATA(shpnt)->lock)
529 #define QLOCKER (HOSTDATA(shpnt)->locker)
530 #define QLOCKERL (HOSTDATA(shpnt)->lockerl)
532 #define STATE (HOSTDATA(shpnt)->state)
533 #define PREVSTATE (HOSTDATA(shpnt)->prevstate)
534 #define LASTSTATE (HOSTDATA(shpnt)->laststate)
536 #define RECONN_TARGET (HOSTDATA(shpnt)->target)
538 #define CMD_I (HOSTDATA(shpnt)->cmd_i)
540 #define MSGO(i) (HOSTDATA(shpnt)->msgo[i])
541 #define MSGO_I (HOSTDATA(shpnt)->msgo_i)
542 #define MSGOLEN (HOSTDATA(shpnt)->msgo_len)
543 #define ADDMSGO(x) (MSGOLEN<256 ? (void)(MSGO(MSGOLEN++)=x) : aha152x_error(shpnt,"MSGO overflow"))
545 #define MSGI(i) (HOSTDATA(shpnt)->msgi[i])
546 #define MSGILEN (HOSTDATA(shpnt)->msgi_len)
547 #define ADDMSGI(x) (MSGILEN<256 ? (void)(MSGI(MSGILEN++)=x) : aha152x_error(shpnt,"MSGI overflow"))
549 #define DATA_LEN (HOSTDATA(shpnt)->data_len)
551 #define SYNCRATE (HOSTDATA(shpnt)->syncrate[CURRENT_SC->device->id])
552 #define SYNCNEG (HOSTDATA(shpnt)->syncneg[CURRENT_SC->device->id])
554 #define DELAY (HOSTDATA(shpnt)->delay)
555 #define EXT_TRANS (HOSTDATA(shpnt)->ext_trans)
556 #define TC1550 (HOSTDATA(shpnt)->tc1550)
557 #define RECONNECT (HOSTDATA(shpnt)->reconnect)
558 #define PARITY (HOSTDATA(shpnt)->parity)
559 #define SYNCHRONOUS (HOSTDATA(shpnt)->synchronous)
561 #define HOSTIOPORT0 (HOSTDATA(shpnt)->io_port0)
562 #define HOSTIOPORT1 (HOSTDATA(shpnt)->io_port1)
571 static void seldi_run(struct Scsi_Host *shpnt);
572 static void seldo_run(struct Scsi_Host *shpnt);
573 static void selto_run(struct Scsi_Host *shpnt);
574 static void busfree_run(struct Scsi_Host *shpnt);
576 static void msgo_init(struct Scsi_Host *shpnt);
577 static void msgo_run(struct Scsi_Host *shpnt);
578 static void msgo_end(struct Scsi_Host *shpnt);
580 static void cmd_init(struct Scsi_Host *shpnt);
581 static void cmd_run(struct Scsi_Host *shpnt);
582 static void cmd_end(struct Scsi_Host *shpnt);
584 static void datai_init(struct Scsi_Host *shpnt);
585 static void datai_run(struct Scsi_Host *shpnt);
586 static void datai_end(struct Scsi_Host *shpnt);
588 static void datao_init(struct Scsi_Host *shpnt);
589 static void datao_run(struct Scsi_Host *shpnt);
590 static void datao_end(struct Scsi_Host *shpnt);
592 static void status_run(struct Scsi_Host *shpnt);
594 static void msgi_run(struct Scsi_Host *shpnt);
595 static void msgi_end(struct Scsi_Host *shpnt);
597 static void parerr_run(struct Scsi_Host *shpnt);
598 static void rsti_run(struct Scsi_Host *shpnt);
600 static void is_complete(struct Scsi_Host *shpnt);
631 static void reset_ports(struct Scsi_Host *shpnt);
632 static void aha152x_error(struct Scsi_Host *shpnt, char *msg);
633 static void done(struct Scsi_Host *shpnt, int error);
637 static void show_queues(struct Scsi_Host *shpnt);
638 static void disp_enintr(struct Scsi_Host *shpnt);
717 struct Scsi_Host *shpnt = dev_id; in swintr() local
719 HOSTDATA(shpnt)->swint++; in swintr()
727 struct Scsi_Host *shpnt; in aha152x_probe_one() local
729 shpnt = scsi_host_alloc(&aha152x_driver_template, sizeof(struct aha152x_hostdata)); in aha152x_probe_one()
730 if (!shpnt) { in aha152x_probe_one()
735 memset(HOSTDATA(shpnt), 0, sizeof *HOSTDATA(shpnt)); in aha152x_probe_one()
736 INIT_LIST_HEAD(&HOSTDATA(shpnt)->host_list); in aha152x_probe_one()
739 list_add_tail(&HOSTDATA(shpnt)->host_list, &aha152x_host_list); in aha152x_probe_one()
741 shpnt->io_port = setup->io_port; in aha152x_probe_one()
742 shpnt->n_io_port = IO_RANGE; in aha152x_probe_one()
743 shpnt->irq = setup->irq; in aha152x_probe_one()
761 shpnt->this_id = setup->scsiid; in aha152x_probe_one()
764 shpnt->can_queue = AHA152X_MAXQUEUE; in aha152x_probe_one()
773 reset_ports(shpnt); in aha152x_probe_one()
786 shpnt->host_no, setup->tc1550 ? " (tc1550 mode)" : "", in aha152x_probe_one()
788 shpnt->io_port, HOSTIOPORT0, HOSTIOPORT1, in aha152x_probe_one()
789 shpnt->irq, in aha152x_probe_one()
790 shpnt->this_id, in aha152x_probe_one()
801 if (request_irq(shpnt->irq, swintr, IRQF_SHARED, "aha152x", shpnt)) { in aha152x_probe_one()
802 printk(KERN_ERR "aha152x%d: irq %d busy.\n", shpnt->host_no, shpnt->irq); in aha152x_probe_one()
806 HOSTDATA(shpnt)->swint = 0; in aha152x_probe_one()
808 printk(KERN_INFO "aha152x%d: trying software interrupt, ", shpnt->host_no); in aha152x_probe_one()
813 free_irq(shpnt->irq, shpnt); in aha152x_probe_one()
815 if (!HOSTDATA(shpnt)->swint) { in aha152x_probe_one()
825 "Please verify.\n", shpnt->host_no, shpnt->irq); in aha152x_probe_one()
835 if (request_irq(shpnt->irq, intr, IRQF_SHARED, "aha152x", shpnt)) { in aha152x_probe_one()
836 printk(KERN_ERR "aha152x%d: failed to reassign irq %d.\n", shpnt->host_no, shpnt->irq); in aha152x_probe_one()
840 if( scsi_add_host(shpnt, NULL) ) { in aha152x_probe_one()
841 free_irq(shpnt->irq, shpnt); in aha152x_probe_one()
842 printk(KERN_ERR "aha152x%d: failed to add host.\n", shpnt->host_no); in aha152x_probe_one()
846 scsi_scan_host(shpnt); in aha152x_probe_one()
848 return shpnt; in aha152x_probe_one()
851 list_del(&HOSTDATA(shpnt)->host_list); in aha152x_probe_one()
852 scsi_host_put(shpnt); in aha152x_probe_one()
857 void aha152x_release(struct Scsi_Host *shpnt) in aha152x_release() argument
859 if (!shpnt) in aha152x_release()
862 scsi_remove_host(shpnt); in aha152x_release()
863 if (shpnt->irq) in aha152x_release()
864 free_irq(shpnt->irq, shpnt); in aha152x_release()
867 if (shpnt->io_port) in aha152x_release()
868 release_region(shpnt->io_port, IO_RANGE); in aha152x_release()
872 if (HOSTDATA(shpnt)->pnpdev) in aha152x_release()
873 pnp_device_detach(HOSTDATA(shpnt)->pnpdev); in aha152x_release()
876 list_del(&HOSTDATA(shpnt)->host_list); in aha152x_release()
877 scsi_host_put(shpnt); in aha152x_release()
886 static int setup_expected_interrupts(struct Scsi_Host *shpnt) in setup_expected_interrupts() argument
907 if(!HOSTDATA(shpnt)->in_intr) in setup_expected_interrupts()
921 struct Scsi_Host *shpnt = SCpnt->device->host; in aha152x_internal_queue() local
971 HOSTDATA(shpnt)->total_commands++; in aha152x_internal_queue()
975 HOSTDATA(shpnt)->commands++; in aha152x_internal_queue()
976 if (HOSTDATA(shpnt)->commands==1) in aha152x_internal_queue()
981 if(!HOSTDATA(shpnt)->in_intr) in aha152x_internal_queue()
982 setup_expected_interrupts(shpnt); in aha152x_internal_queue()
1020 struct Scsi_Host *shpnt = SCpnt->device->host; in aha152x_abort() local
1029 HOSTDATA(shpnt)->commands--; in aha152x_abort()
1030 if (!HOSTDATA(shpnt)->commands) in aha152x_abort()
1061 struct Scsi_Host *shpnt = SCpnt->device->host; in aha152x_device_reset() local
1095 HOSTDATA(shpnt)->commands--; in aha152x_device_reset()
1096 if (!HOSTDATA(shpnt)->commands) in aha152x_device_reset()
1117 static void free_hard_reset_SCs(struct Scsi_Host *shpnt, in free_hard_reset_SCs() argument
1136 HOSTDATA(shpnt)->commands--; in free_hard_reset_SCs()
1152 static int aha152x_bus_reset_host(struct Scsi_Host *shpnt) in aha152x_bus_reset_host() argument
1158 free_hard_reset_SCs(shpnt, &ISSUE_SC); in aha152x_bus_reset_host()
1159 free_hard_reset_SCs(shpnt, &DISCONNECTED_SC); in aha152x_bus_reset_host()
1166 setup_expected_interrupts(shpnt); in aha152x_bus_reset_host()
1167 if(HOSTDATA(shpnt)->commands==0) in aha152x_bus_reset_host()
1188 static void reset_ports(struct Scsi_Host *shpnt) in reset_ports() argument
1217 setup_expected_interrupts(shpnt); in reset_ports()
1225 int aha152x_host_reset_host(struct Scsi_Host *shpnt) in aha152x_host_reset_host() argument
1227 aha152x_bus_reset_host(shpnt); in aha152x_host_reset_host()
1228 reset_ports(shpnt); in aha152x_host_reset_host()
1240 struct Scsi_Host *shpnt = sdev->host; in aha152x_biosparam() local
1288 static void done(struct Scsi_Host *shpnt, int error) in done() argument
1326 struct Scsi_Host *shpnt = dev_id; in intr() local
1356 if( HOSTDATA(shpnt)->service==0 ) { in intr()
1357 HOSTDATA(shpnt)->service=1; in intr()
1373 static void busfree_run(struct Scsi_Host *shpnt) in busfree_run() argument
1393 …done(shpnt, (CURRENT_SC->SCp.Status & 0xff) | ((CURRENT_SC->SCp.Message & 0xff) << 8) | (DID_OK <<… in busfree_run()
1396 …done(shpnt, (CURRENT_SC->SCp.Status & 0xff) | ((CURRENT_SC->SCp.Message & 0xff) << 8) | (DID_ABORT… in busfree_run()
1399 …done(shpnt, (CURRENT_SC->SCp.Status & 0xff) | ((CURRENT_SC->SCp.Message & 0xff) << 8) | (DID_RESET… in busfree_run()
1404 HOSTDATA(shpnt)->disconnections++; in busfree_run()
1411 done(shpnt, DID_ERROR << 16); in busfree_run()
1415 HOSTDATA(shpnt)->busfree_without_old_command++; in busfree_run()
1427 struct scsi_cmnd *cmd = HOSTDATA(shpnt)->done_SC; in busfree_run()
1434 HOSTDATA(shpnt)->commands--; in busfree_run()
1435 if (!HOSTDATA(shpnt)->commands) in busfree_run()
1439 HOSTDATA(shpnt)->busfree_with_check_condition++; in busfree_run()
1463 HOSTDATA(shpnt)->commands--; in busfree_run()
1464 if (!HOSTDATA(shpnt)->commands) in busfree_run()
1480 HOSTDATA(shpnt)->busfree_without_done_command++; in busfree_run()
1498 SETPORT(SCSIID, (shpnt->this_id << OID_) | CURRENT_SC->device->id); in busfree_run()
1503 HOSTDATA(shpnt)->busfree_without_new_command++; in busfree_run()
1510 HOSTDATA(shpnt)->busfree_without_any_action++; in busfree_run()
1519 static void seldo_run(struct Scsi_Host *shpnt) in seldo_run() argument
1532 done(shpnt, DID_NO_CONNECT << 16); in seldo_run()
1558 static void selto_run(struct Scsi_Host *shpnt) in selto_run() argument
1569 done(shpnt, DID_ABORT << 16); in selto_run()
1571 done(shpnt, DID_BUS_BUSY << 16); in selto_run()
1574 done(shpnt, DID_NO_CONNECT << 16); in selto_run()
1584 static void seldi_run(struct Scsi_Host *shpnt) in seldi_run() argument
1612 selid = GETPORT(SELID) & ~(1 << shpnt->this_id); in seldi_run()
1615 shost_printk(KERN_INFO, shpnt, in seldi_run()
1624 shost_printk(KERN_INFO, shpnt, in seldi_run()
1629 SETPORT(SCSIID, (shpnt->this_id << OID_) | target); in seldi_run()
1632 SETRATE(HOSTDATA(shpnt)->syncrate[target]); in seldi_run()
1650 static void msgi_run(struct Scsi_Host *shpnt) in msgi_run() argument
1665 shost_printk(KERN_ERR, shpnt, in msgi_run()
1674 shost_printk(KERN_ERR, shpnt, in msgi_run()
1682 show_queues(shpnt); in msgi_run()
1683 shost_printk(KERN_ERR, shpnt, in msgi_run()
1748 if (!HOSTDATA(shpnt)->synchronous) in msgi_run()
1803 HOSTDATA(shpnt)->syncrate[i]=0; in msgi_run()
1804 HOSTDATA(shpnt)->syncneg[i]=0; in msgi_run()
1824 static void msgi_end(struct Scsi_Host *shpnt) in msgi_end() argument
1839 static void msgo_init(struct Scsi_Host *shpnt) in msgo_init() argument
1857 static void msgo_run(struct Scsi_Host *shpnt) in msgo_run() argument
1882 static void msgo_end(struct Scsi_Host *shpnt) in msgo_end() argument
1903 static void cmd_init(struct Scsi_Host *shpnt) in cmd_init() argument
1908 done(shpnt, DID_ERROR << 16); in cmd_init()
1919 static void cmd_run(struct Scsi_Host *shpnt) in cmd_run() argument
1929 static void cmd_end(struct Scsi_Host *shpnt) in cmd_end() argument
1943 static void status_run(struct Scsi_Host *shpnt) in status_run() argument
1956 static void datai_init(struct Scsi_Host *shpnt) in datai_init() argument
1970 static void datai_run(struct Scsi_Host *shpnt) in datai_run() argument
2079 static void datai_end(struct Scsi_Host *shpnt) in datai_end() argument
2091 static void datao_init(struct Scsi_Host *shpnt) in datao_init() argument
2105 static void datao_run(struct Scsi_Host *shpnt) in datao_run() argument
2158 static void datao_end(struct Scsi_Host *shpnt) in datao_end() argument
2189 static int update_state(struct Scsi_Host *shpnt) in update_state() argument
2243 static void parerr_run(struct Scsi_Host *shpnt) in parerr_run() argument
2246 done(shpnt, DID_PARITY << 16); in parerr_run()
2253 static void rsti_run(struct Scsi_Host *shpnt) in rsti_run() argument
2257 shost_printk(KERN_NOTICE, shpnt, "scsi reset in\n"); in rsti_run()
2277 done(shpnt, DID_RESET << 16 ); in rsti_run()
2285 static void is_complete(struct Scsi_Host *shpnt) in is_complete() argument
2291 if(!shpnt) in is_complete()
2296 if( HOSTDATA(shpnt)->service==0 ) { in is_complete()
2301 HOSTDATA(shpnt)->service = 0; in is_complete()
2303 if(HOSTDATA(shpnt)->in_intr) { in is_complete()
2306 aha152x_error(shpnt, "bottom-half already running!?"); in is_complete()
2308 HOSTDATA(shpnt)->in_intr++; in is_complete()
2318 dataphase=update_state(shpnt); in is_complete()
2325 states[PREVSTATE].end(shpnt); in is_complete()
2366 states[STATE].init(shpnt); in is_complete()
2373 states[STATE].run(shpnt); in is_complete()
2385 pending=setup_expected_interrupts(shpnt); in is_complete()
2387 HOSTDATA(shpnt)->count[STATE]++; in is_complete()
2389 HOSTDATA(shpnt)->count_trans[STATE]++; in is_complete()
2390 HOSTDATA(shpnt)->time[STATE] += jiffies-start; in is_complete()
2399 HOSTDATA(shpnt)->in_intr--; in is_complete()
2408 static void aha152x_error(struct Scsi_Host *shpnt, char *msg) in aha152x_error() argument
2410 shost_printk(KERN_EMERG, shpnt, "%s\n", msg); in aha152x_error()
2411 show_queues(shpnt); in aha152x_error()
2418 static void disp_enintr(struct Scsi_Host *shpnt) in disp_enintr() argument
2425 shost_printk(KERN_DEBUG, shpnt, in disp_enintr()
2468 static void show_queues(struct Scsi_Host *shpnt) in show_queues() argument
2489 disp_enintr(shpnt); in show_queues()
2525 static void get_ports(struct seq_file *m, struct Scsi_Host *shpnt) in get_ports() argument
2784 static int aha152x_set_info(struct Scsi_Host *shpnt, char *buffer, int length) in aha152x_set_info() argument
2786 if(!shpnt || !buffer || length<8 || strncmp("aha152x ", buffer, 8)!=0) in aha152x_set_info()
2793 HOSTDATA(shpnt)->total_commands=0; in aha152x_set_info()
2794 HOSTDATA(shpnt)->disconnections=0; in aha152x_set_info()
2795 HOSTDATA(shpnt)->busfree_without_any_action=0; in aha152x_set_info()
2796 HOSTDATA(shpnt)->busfree_without_old_command=0; in aha152x_set_info()
2797 HOSTDATA(shpnt)->busfree_without_new_command=0; in aha152x_set_info()
2798 HOSTDATA(shpnt)->busfree_without_done_command=0; in aha152x_set_info()
2799 HOSTDATA(shpnt)->busfree_with_check_condition=0; in aha152x_set_info()
2801 HOSTDATA(shpnt)->count[i]=0; in aha152x_set_info()
2802 HOSTDATA(shpnt)->count_trans[i]=0; in aha152x_set_info()
2803 HOSTDATA(shpnt)->time[i]=0; in aha152x_set_info()
2806 shost_printk(KERN_INFO, shpnt, "aha152x: stats reset.\n"); in aha152x_set_info()
2818 static int aha152x_show_info(struct seq_file *m, struct Scsi_Host *shpnt) in aha152x_show_info() argument
2827 shpnt->io_port, shpnt->io_port + shpnt->n_io_port - 1); in aha152x_show_info()
2828 seq_printf(m, "interrupt 0x%02x\n", shpnt->irq); in aha152x_show_info()
2835 seq_printf(m, "%d commands currently queued\n", HOSTDATA(shpnt)->commands); in aha152x_show_info()
2840 if (HOSTDATA(shpnt)->syncrate[i] & 0x7f) in aha152x_show_info()
2843 (((HOSTDATA(shpnt)->syncrate[i] & 0x70) >> 4) + 2), in aha152x_show_info()
2844 (((HOSTDATA(shpnt)->syncrate[i] & 0x70) >> 4) + 2) * 50, in aha152x_show_info()
2845 HOSTDATA(shpnt)->syncrate[i] & 0x0f); in aha152x_show_info()
2870 get_ports(m, shpnt); in aha152x_show_info()
2885 HOSTDATA(shpnt)->total_commands, in aha152x_show_info()
2886 HOSTDATA(shpnt)->disconnections, in aha152x_show_info()
2887 HOSTDATA(shpnt)->busfree_with_check_condition, in aha152x_show_info()
2888 HOSTDATA(shpnt)->busfree_without_old_command, in aha152x_show_info()
2889 HOSTDATA(shpnt)->busfree_without_new_command, in aha152x_show_info()
2890 HOSTDATA(shpnt)->busfree_without_done_command, in aha152x_show_info()
2891 HOSTDATA(shpnt)->busfree_without_any_action); in aha152x_show_info()
2895 HOSTDATA(shpnt)->count_trans[i], in aha152x_show_info()
2896 HOSTDATA(shpnt)->count[i], in aha152x_show_info()
2897 HOSTDATA(shpnt)->time[i]); in aha152x_show_info()
3324 struct Scsi_Host *shpnt = aha152x_probe_one(&setup[i]); in aha152x_init() local
3326 if( !shpnt ) { in aha152x_init()
3330 HOSTDATA(shpnt)->pnpdev=pnpdev[i]; in aha152x_init()