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);
715 struct Scsi_Host *shpnt = dev_id; in swintr() local
717 HOSTDATA(shpnt)->swint++; in swintr()
725 struct Scsi_Host *shpnt; in aha152x_probe_one() local
727 shpnt = scsi_host_alloc(&aha152x_driver_template, sizeof(struct aha152x_hostdata)); in aha152x_probe_one()
728 if (!shpnt) { in aha152x_probe_one()
733 memset(HOSTDATA(shpnt), 0, sizeof *HOSTDATA(shpnt)); in aha152x_probe_one()
734 INIT_LIST_HEAD(&HOSTDATA(shpnt)->host_list); in aha152x_probe_one()
737 list_add_tail(&HOSTDATA(shpnt)->host_list, &aha152x_host_list); in aha152x_probe_one()
739 shpnt->io_port = setup->io_port; in aha152x_probe_one()
740 shpnt->n_io_port = IO_RANGE; in aha152x_probe_one()
741 shpnt->irq = setup->irq; in aha152x_probe_one()
759 shpnt->this_id = setup->scsiid; in aha152x_probe_one()
762 shpnt->can_queue = AHA152X_MAXQUEUE; in aha152x_probe_one()
771 reset_ports(shpnt); in aha152x_probe_one()
784 shpnt->host_no, setup->tc1550 ? " (tc1550 mode)" : "", in aha152x_probe_one()
786 shpnt->io_port, HOSTIOPORT0, HOSTIOPORT1, in aha152x_probe_one()
787 shpnt->irq, in aha152x_probe_one()
788 shpnt->this_id, in aha152x_probe_one()
799 if (request_irq(shpnt->irq, swintr, IRQF_SHARED, "aha152x", shpnt)) { in aha152x_probe_one()
800 printk(KERN_ERR "aha152x%d: irq %d busy.\n", shpnt->host_no, shpnt->irq); in aha152x_probe_one()
804 HOSTDATA(shpnt)->swint = 0; in aha152x_probe_one()
806 printk(KERN_INFO "aha152x%d: trying software interrupt, ", shpnt->host_no); in aha152x_probe_one()
811 free_irq(shpnt->irq, shpnt); in aha152x_probe_one()
813 if (!HOSTDATA(shpnt)->swint) { in aha152x_probe_one()
823 "Please verify.\n", shpnt->host_no, shpnt->irq); in aha152x_probe_one()
833 if (request_irq(shpnt->irq, intr, IRQF_SHARED, "aha152x", shpnt)) { in aha152x_probe_one()
834 printk(KERN_ERR "aha152x%d: failed to reassign irq %d.\n", shpnt->host_no, shpnt->irq); in aha152x_probe_one()
838 if( scsi_add_host(shpnt, NULL) ) { in aha152x_probe_one()
839 free_irq(shpnt->irq, shpnt); in aha152x_probe_one()
840 printk(KERN_ERR "aha152x%d: failed to add host.\n", shpnt->host_no); in aha152x_probe_one()
844 scsi_scan_host(shpnt); in aha152x_probe_one()
846 return shpnt; in aha152x_probe_one()
849 list_del(&HOSTDATA(shpnt)->host_list); in aha152x_probe_one()
850 scsi_host_put(shpnt); in aha152x_probe_one()
855 void aha152x_release(struct Scsi_Host *shpnt) in aha152x_release() argument
857 if (!shpnt) in aha152x_release()
860 scsi_remove_host(shpnt); in aha152x_release()
861 if (shpnt->irq) in aha152x_release()
862 free_irq(shpnt->irq, shpnt); in aha152x_release()
865 if (shpnt->io_port) in aha152x_release()
866 release_region(shpnt->io_port, IO_RANGE); in aha152x_release()
870 if (HOSTDATA(shpnt)->pnpdev) in aha152x_release()
871 pnp_device_detach(HOSTDATA(shpnt)->pnpdev); in aha152x_release()
874 list_del(&HOSTDATA(shpnt)->host_list); in aha152x_release()
875 scsi_host_put(shpnt); in aha152x_release()
884 static int setup_expected_interrupts(struct Scsi_Host *shpnt) in setup_expected_interrupts() argument
905 if(!HOSTDATA(shpnt)->in_intr) in setup_expected_interrupts()
918 struct Scsi_Host *shpnt = SCpnt->device->host; in aha152x_internal_queue() local
968 HOSTDATA(shpnt)->total_commands++; in aha152x_internal_queue()
972 HOSTDATA(shpnt)->commands++; in aha152x_internal_queue()
973 if (HOSTDATA(shpnt)->commands==1) in aha152x_internal_queue()
978 if(!HOSTDATA(shpnt)->in_intr) in aha152x_internal_queue()
979 setup_expected_interrupts(shpnt); in aha152x_internal_queue()
1016 struct Scsi_Host *shpnt = SCpnt->device->host; in aha152x_abort() local
1025 HOSTDATA(shpnt)->commands--; in aha152x_abort()
1026 if (!HOSTDATA(shpnt)->commands) in aha152x_abort()
1057 struct Scsi_Host *shpnt = SCpnt->device->host; in aha152x_device_reset() local
1091 HOSTDATA(shpnt)->commands--; in aha152x_device_reset()
1092 if (!HOSTDATA(shpnt)->commands) in aha152x_device_reset()
1113 static void free_hard_reset_SCs(struct Scsi_Host *shpnt, Scsi_Cmnd **SCs) in free_hard_reset_SCs() argument
1131 HOSTDATA(shpnt)->commands--; in free_hard_reset_SCs()
1144 static int aha152x_bus_reset_host(struct Scsi_Host *shpnt) in aha152x_bus_reset_host() argument
1150 free_hard_reset_SCs(shpnt, &ISSUE_SC); in aha152x_bus_reset_host()
1151 free_hard_reset_SCs(shpnt, &DISCONNECTED_SC); in aha152x_bus_reset_host()
1158 setup_expected_interrupts(shpnt); in aha152x_bus_reset_host()
1159 if(HOSTDATA(shpnt)->commands==0) in aha152x_bus_reset_host()
1180 static void reset_ports(struct Scsi_Host *shpnt) in reset_ports() argument
1209 setup_expected_interrupts(shpnt); in reset_ports()
1217 int aha152x_host_reset_host(struct Scsi_Host *shpnt) in aha152x_host_reset_host() argument
1219 aha152x_bus_reset_host(shpnt); in aha152x_host_reset_host()
1220 reset_ports(shpnt); in aha152x_host_reset_host()
1241 struct Scsi_Host *shpnt = sdev->host; in aha152x_biosparam() local
1289 static void done(struct Scsi_Host *shpnt, int error) in done() argument
1327 struct Scsi_Host *shpnt = dev_id; in intr() local
1357 if( HOSTDATA(shpnt)->service==0 ) { in intr()
1358 HOSTDATA(shpnt)->service=1; in intr()
1374 static void busfree_run(struct Scsi_Host *shpnt) in busfree_run() argument
1394 …done(shpnt, (CURRENT_SC->SCp.Status & 0xff) | ((CURRENT_SC->SCp.Message & 0xff) << 8) | (DID_OK <<… in busfree_run()
1397 …done(shpnt, (CURRENT_SC->SCp.Status & 0xff) | ((CURRENT_SC->SCp.Message & 0xff) << 8) | (DID_ABORT… in busfree_run()
1400 …done(shpnt, (CURRENT_SC->SCp.Status & 0xff) | ((CURRENT_SC->SCp.Message & 0xff) << 8) | (DID_RESET… in busfree_run()
1405 HOSTDATA(shpnt)->disconnections++; in busfree_run()
1412 done(shpnt, DID_ERROR << 16); in busfree_run()
1416 HOSTDATA(shpnt)->busfree_without_old_command++; in busfree_run()
1428 struct scsi_cmnd *cmd = HOSTDATA(shpnt)->done_SC; in busfree_run()
1435 HOSTDATA(shpnt)->commands--; in busfree_run()
1436 if (!HOSTDATA(shpnt)->commands) in busfree_run()
1440 HOSTDATA(shpnt)->busfree_with_check_condition++; in busfree_run()
1464 HOSTDATA(shpnt)->commands--; in busfree_run()
1465 if (!HOSTDATA(shpnt)->commands) in busfree_run()
1481 HOSTDATA(shpnt)->busfree_without_done_command++; in busfree_run()
1499 SETPORT(SCSIID, (shpnt->this_id << OID_) | CURRENT_SC->device->id); in busfree_run()
1504 HOSTDATA(shpnt)->busfree_without_new_command++; in busfree_run()
1511 HOSTDATA(shpnt)->busfree_without_any_action++; in busfree_run()
1520 static void seldo_run(struct Scsi_Host *shpnt) in seldo_run() argument
1533 done(shpnt, DID_NO_CONNECT << 16); in seldo_run()
1559 static void selto_run(struct Scsi_Host *shpnt) in selto_run() argument
1570 done(shpnt, DID_ABORT << 16); in selto_run()
1572 done(shpnt, DID_BUS_BUSY << 16); in selto_run()
1575 done(shpnt, DID_NO_CONNECT << 16); in selto_run()
1585 static void seldi_run(struct Scsi_Host *shpnt) in seldi_run() argument
1613 selid = GETPORT(SELID) & ~(1 << shpnt->this_id); in seldi_run()
1616 shost_printk(KERN_INFO, shpnt, in seldi_run()
1625 shost_printk(KERN_INFO, shpnt, in seldi_run()
1630 SETPORT(SCSIID, (shpnt->this_id << OID_) | target); in seldi_run()
1633 SETRATE(HOSTDATA(shpnt)->syncrate[target]); in seldi_run()
1651 static void msgi_run(struct Scsi_Host *shpnt) in msgi_run() argument
1666 shost_printk(KERN_ERR, shpnt, in msgi_run()
1675 shost_printk(KERN_ERR, shpnt, in msgi_run()
1683 show_queues(shpnt); in msgi_run()
1684 shost_printk(KERN_ERR, shpnt, in msgi_run()
1749 if (!HOSTDATA(shpnt)->synchronous) in msgi_run()
1804 HOSTDATA(shpnt)->syncrate[i]=0; in msgi_run()
1805 HOSTDATA(shpnt)->syncneg[i]=0; in msgi_run()
1825 static void msgi_end(struct Scsi_Host *shpnt) in msgi_end() argument
1840 static void msgo_init(struct Scsi_Host *shpnt) in msgo_init() argument
1858 static void msgo_run(struct Scsi_Host *shpnt) in msgo_run() argument
1883 static void msgo_end(struct Scsi_Host *shpnt) in msgo_end() argument
1904 static void cmd_init(struct Scsi_Host *shpnt) in cmd_init() argument
1909 done(shpnt, DID_ERROR << 16); in cmd_init()
1920 static void cmd_run(struct Scsi_Host *shpnt) in cmd_run() argument
1930 static void cmd_end(struct Scsi_Host *shpnt) in cmd_end() argument
1944 static void status_run(struct Scsi_Host *shpnt) in status_run() argument
1957 static void datai_init(struct Scsi_Host *shpnt) in datai_init() argument
1971 static void datai_run(struct Scsi_Host *shpnt) in datai_run() argument
2080 static void datai_end(struct Scsi_Host *shpnt) in datai_end() argument
2092 static void datao_init(struct Scsi_Host *shpnt) in datao_init() argument
2106 static void datao_run(struct Scsi_Host *shpnt) in datao_run() argument
2159 static void datao_end(struct Scsi_Host *shpnt) in datao_end() argument
2190 static int update_state(struct Scsi_Host *shpnt) in update_state() argument
2244 static void parerr_run(struct Scsi_Host *shpnt) in parerr_run() argument
2247 done(shpnt, DID_PARITY << 16); in parerr_run()
2254 static void rsti_run(struct Scsi_Host *shpnt) in rsti_run() argument
2258 shost_printk(KERN_NOTICE, shpnt, "scsi reset in\n"); in rsti_run()
2278 done(shpnt, DID_RESET << 16 ); in rsti_run()
2286 static void is_complete(struct Scsi_Host *shpnt) in is_complete() argument
2292 if(!shpnt) in is_complete()
2297 if( HOSTDATA(shpnt)->service==0 ) { in is_complete()
2302 HOSTDATA(shpnt)->service = 0; in is_complete()
2304 if(HOSTDATA(shpnt)->in_intr) { in is_complete()
2307 aha152x_error(shpnt, "bottom-half already running!?"); in is_complete()
2309 HOSTDATA(shpnt)->in_intr++; in is_complete()
2319 dataphase=update_state(shpnt); in is_complete()
2326 states[PREVSTATE].end(shpnt); in is_complete()
2367 states[STATE].init(shpnt); in is_complete()
2374 states[STATE].run(shpnt); in is_complete()
2386 pending=setup_expected_interrupts(shpnt); in is_complete()
2388 HOSTDATA(shpnt)->count[STATE]++; in is_complete()
2390 HOSTDATA(shpnt)->count_trans[STATE]++; in is_complete()
2391 HOSTDATA(shpnt)->time[STATE] += jiffies-start; in is_complete()
2400 HOSTDATA(shpnt)->in_intr--; in is_complete()
2409 static void aha152x_error(struct Scsi_Host *shpnt, char *msg) in aha152x_error() argument
2411 shost_printk(KERN_EMERG, shpnt, "%s\n", msg); in aha152x_error()
2412 show_queues(shpnt); in aha152x_error()
2419 static void disp_enintr(struct Scsi_Host *shpnt) in disp_enintr() argument
2426 shost_printk(KERN_DEBUG, shpnt, in disp_enintr()
2469 static void show_queues(struct Scsi_Host *shpnt) in show_queues() argument
2490 disp_enintr(shpnt); in show_queues()
2526 static void get_ports(struct seq_file *m, struct Scsi_Host *shpnt) in get_ports() argument
2785 static int aha152x_set_info(struct Scsi_Host *shpnt, char *buffer, int length) in aha152x_set_info() argument
2787 if(!shpnt || !buffer || length<8 || strncmp("aha152x ", buffer, 8)!=0) in aha152x_set_info()
2794 HOSTDATA(shpnt)->total_commands=0; in aha152x_set_info()
2795 HOSTDATA(shpnt)->disconnections=0; in aha152x_set_info()
2796 HOSTDATA(shpnt)->busfree_without_any_action=0; in aha152x_set_info()
2797 HOSTDATA(shpnt)->busfree_without_old_command=0; in aha152x_set_info()
2798 HOSTDATA(shpnt)->busfree_without_new_command=0; in aha152x_set_info()
2799 HOSTDATA(shpnt)->busfree_without_done_command=0; in aha152x_set_info()
2800 HOSTDATA(shpnt)->busfree_with_check_condition=0; in aha152x_set_info()
2802 HOSTDATA(shpnt)->count[i]=0; in aha152x_set_info()
2803 HOSTDATA(shpnt)->count_trans[i]=0; in aha152x_set_info()
2804 HOSTDATA(shpnt)->time[i]=0; in aha152x_set_info()
2807 shost_printk(KERN_INFO, shpnt, "aha152x: stats reset.\n"); in aha152x_set_info()
2819 static int aha152x_show_info(struct seq_file *m, struct Scsi_Host *shpnt) in aha152x_show_info() argument
2828 shpnt->io_port, shpnt->io_port + shpnt->n_io_port - 1); in aha152x_show_info()
2829 seq_printf(m, "interrupt 0x%02x\n", shpnt->irq); in aha152x_show_info()
2836 seq_printf(m, "%d commands currently queued\n", HOSTDATA(shpnt)->commands); in aha152x_show_info()
2841 if (HOSTDATA(shpnt)->syncrate[i] & 0x7f) in aha152x_show_info()
2844 (((HOSTDATA(shpnt)->syncrate[i] & 0x70) >> 4) + 2), in aha152x_show_info()
2845 (((HOSTDATA(shpnt)->syncrate[i] & 0x70) >> 4) + 2) * 50, in aha152x_show_info()
2846 HOSTDATA(shpnt)->syncrate[i] & 0x0f); in aha152x_show_info()
2871 get_ports(m, shpnt); in aha152x_show_info()
2886 HOSTDATA(shpnt)->total_commands, in aha152x_show_info()
2887 HOSTDATA(shpnt)->disconnections, in aha152x_show_info()
2888 HOSTDATA(shpnt)->busfree_with_check_condition, in aha152x_show_info()
2889 HOSTDATA(shpnt)->busfree_without_old_command, in aha152x_show_info()
2890 HOSTDATA(shpnt)->busfree_without_new_command, in aha152x_show_info()
2891 HOSTDATA(shpnt)->busfree_without_done_command, in aha152x_show_info()
2892 HOSTDATA(shpnt)->busfree_without_any_action); in aha152x_show_info()
2896 HOSTDATA(shpnt)->count_trans[i], in aha152x_show_info()
2897 HOSTDATA(shpnt)->count[i], in aha152x_show_info()
2898 HOSTDATA(shpnt)->time[i]); in aha152x_show_info()
3327 struct Scsi_Host *shpnt = aha152x_probe_one(&setup[i]); in aha152x_init() local
3329 if( !shpnt ) { in aha152x_init()
3333 HOSTDATA(shpnt)->pnpdev=pnpdev[i]; in aha152x_init()