Lines Matching defs:shpnt

509 #define HOSTDATA(shpnt)		((struct aha152x_hostdata *) &shpnt->hostdata)
511 #define HOSTNO ((shpnt)->host_no)
513 #define CURRENT_SC (HOSTDATA(shpnt)->current_SC)
514 #define DONE_SC (HOSTDATA(shpnt)->done_SC)
515 #define ISSUE_SC (HOSTDATA(shpnt)->issue_SC)
516 #define DISCONNECTED_SC (HOSTDATA(shpnt)->disconnected_SC)
517 #define QLOCK (HOSTDATA(shpnt)->lock)
518 #define QLOCKER (HOSTDATA(shpnt)->locker)
519 #define QLOCKERL (HOSTDATA(shpnt)->lockerl)
521 #define STATE (HOSTDATA(shpnt)->state)
522 #define PREVSTATE (HOSTDATA(shpnt)->prevstate)
523 #define LASTSTATE (HOSTDATA(shpnt)->laststate)
525 #define RECONN_TARGET (HOSTDATA(shpnt)->target)
527 #define CMD_I (HOSTDATA(shpnt)->cmd_i)
529 #define MSGO(i) (HOSTDATA(shpnt)->msgo[i])
530 #define MSGO_I (HOSTDATA(shpnt)->msgo_i)
531 #define MSGOLEN (HOSTDATA(shpnt)->msgo_len)
532 #define ADDMSGO(x) (MSGOLEN<256 ? (void)(MSGO(MSGOLEN++)=x) : aha152x_error(shpnt,"MSGO overflow"))
534 #define MSGI(i) (HOSTDATA(shpnt)->msgi[i])
535 #define MSGILEN (HOSTDATA(shpnt)->msgi_len)
536 #define ADDMSGI(x) (MSGILEN<256 ? (void)(MSGI(MSGILEN++)=x) : aha152x_error(shpnt,"MSGI overflow"))
538 #define DATA_LEN (HOSTDATA(shpnt)->data_len)
540 #define SYNCRATE (HOSTDATA(shpnt)->syncrate[CURRENT_SC->device->id])
541 #define SYNCNEG (HOSTDATA(shpnt)->syncneg[CURRENT_SC->device->id])
543 #define DELAY (HOSTDATA(shpnt)->delay)
544 #define EXT_TRANS (HOSTDATA(shpnt)->ext_trans)
545 #define TC1550 (HOSTDATA(shpnt)->tc1550)
546 #define RECONNECT (HOSTDATA(shpnt)->reconnect)
547 #define PARITY (HOSTDATA(shpnt)->parity)
548 #define SYNCHRONOUS (HOSTDATA(shpnt)->synchronous)
550 #define HOSTIOPORT0 (HOSTDATA(shpnt)->io_port0)
551 #define HOSTIOPORT1 (HOSTDATA(shpnt)->io_port1)
560 static void seldi_run(struct Scsi_Host *shpnt);
561 static void seldo_run(struct Scsi_Host *shpnt);
562 static void selto_run(struct Scsi_Host *shpnt);
563 static void busfree_run(struct Scsi_Host *shpnt);
565 static void msgo_init(struct Scsi_Host *shpnt);
566 static void msgo_run(struct Scsi_Host *shpnt);
567 static void msgo_end(struct Scsi_Host *shpnt);
569 static void cmd_init(struct Scsi_Host *shpnt);
570 static void cmd_run(struct Scsi_Host *shpnt);
571 static void cmd_end(struct Scsi_Host *shpnt);
573 static void datai_init(struct Scsi_Host *shpnt);
574 static void datai_run(struct Scsi_Host *shpnt);
575 static void datai_end(struct Scsi_Host *shpnt);
577 static void datao_init(struct Scsi_Host *shpnt);
578 static void datao_run(struct Scsi_Host *shpnt);
579 static void datao_end(struct Scsi_Host *shpnt);
581 static void status_run(struct Scsi_Host *shpnt);
583 static void msgi_run(struct Scsi_Host *shpnt);
584 static void msgi_end(struct Scsi_Host *shpnt);
586 static void parerr_run(struct Scsi_Host *shpnt);
587 static void rsti_run(struct Scsi_Host *shpnt);
589 static void is_complete(struct Scsi_Host *shpnt);
620 static void reset_ports(struct Scsi_Host *shpnt);
621 static void aha152x_error(struct Scsi_Host *shpnt, char *msg);
622 static void done(struct Scsi_Host *shpnt, int error);
626 static void show_queues(struct Scsi_Host *shpnt);
627 static void disp_enintr(struct Scsi_Host *shpnt);
706 struct Scsi_Host *shpnt = dev_id;
708 HOSTDATA(shpnt)->swint++;
716 struct Scsi_Host *shpnt;
718 shpnt = scsi_host_alloc(&aha152x_driver_template, sizeof(struct aha152x_hostdata));
719 if (!shpnt) {
724 memset(HOSTDATA(shpnt), 0, sizeof *HOSTDATA(shpnt));
725 INIT_LIST_HEAD(&HOSTDATA(shpnt)->host_list);
728 list_add_tail(&HOSTDATA(shpnt)->host_list, &aha152x_host_list);
730 shpnt->io_port = setup->io_port;
731 shpnt->n_io_port = IO_RANGE;
732 shpnt->irq = setup->irq;
750 shpnt->this_id = setup->scsiid;
753 shpnt->can_queue = AHA152X_MAXQUEUE;
762 reset_ports(shpnt);
775 shpnt->host_no, setup->tc1550 ? " (tc1550 mode)" : "",
777 shpnt->io_port, HOSTIOPORT0, HOSTIOPORT1,
778 shpnt->irq,
779 shpnt->this_id,
790 if (request_irq(shpnt->irq, swintr, IRQF_SHARED, "aha152x", shpnt)) {
791 printk(KERN_ERR "aha152x%d: irq %d busy.\n", shpnt->host_no, shpnt->irq);
795 HOSTDATA(shpnt)->swint = 0;
797 printk(KERN_INFO "aha152x%d: trying software interrupt, ", shpnt->host_no);
802 free_irq(shpnt->irq, shpnt);
804 if (!HOSTDATA(shpnt)->swint) {
814 "Please verify.\n", shpnt->host_no, shpnt->irq);
824 if (request_irq(shpnt->irq, intr, IRQF_SHARED, "aha152x", shpnt)) {
825 printk(KERN_ERR "aha152x%d: failed to reassign irq %d.\n", shpnt->host_no, shpnt->irq);
829 if( scsi_add_host(shpnt, NULL) ) {
830 free_irq(shpnt->irq, shpnt);
831 printk(KERN_ERR "aha152x%d: failed to add host.\n", shpnt->host_no);
835 scsi_scan_host(shpnt);
837 return shpnt;
840 list_del(&HOSTDATA(shpnt)->host_list);
841 scsi_host_put(shpnt);
846 void aha152x_release(struct Scsi_Host *shpnt)
848 if (!shpnt)
851 scsi_remove_host(shpnt);
852 if (shpnt->irq)
853 free_irq(shpnt->irq, shpnt);
856 if (shpnt->io_port)
857 release_region(shpnt->io_port, IO_RANGE);
861 if (HOSTDATA(shpnt)->pnpdev)
862 pnp_device_detach(HOSTDATA(shpnt)->pnpdev);
865 list_del(&HOSTDATA(shpnt)->host_list);
866 scsi_host_put(shpnt);
875 static int setup_expected_interrupts(struct Scsi_Host *shpnt)
896 if(!HOSTDATA(shpnt)->in_intr)
910 struct Scsi_Host *shpnt = SCpnt->device->host;
957 HOSTDATA(shpnt)->total_commands++;
961 HOSTDATA(shpnt)->commands++;
962 if (HOSTDATA(shpnt)->commands==1)
967 if(!HOSTDATA(shpnt)->in_intr)
968 setup_expected_interrupts(shpnt);
1006 struct Scsi_Host *shpnt = SCpnt->device->host;
1015 HOSTDATA(shpnt)->commands--;
1016 if (!HOSTDATA(shpnt)->commands)
1047 struct Scsi_Host *shpnt = SCpnt->device->host;
1081 HOSTDATA(shpnt)->commands--;
1082 if (!HOSTDATA(shpnt)->commands)
1103 static void free_hard_reset_SCs(struct Scsi_Host *shpnt,
1122 HOSTDATA(shpnt)->commands--;
1138 static int aha152x_bus_reset_host(struct Scsi_Host *shpnt)
1144 free_hard_reset_SCs(shpnt, &ISSUE_SC);
1145 free_hard_reset_SCs(shpnt, &DISCONNECTED_SC);
1152 setup_expected_interrupts(shpnt);
1153 if(HOSTDATA(shpnt)->commands==0)
1174 static void reset_ports(struct Scsi_Host *shpnt)
1203 setup_expected_interrupts(shpnt);
1211 int aha152x_host_reset_host(struct Scsi_Host *shpnt)
1213 aha152x_bus_reset_host(shpnt);
1214 reset_ports(shpnt);
1226 struct Scsi_Host *shpnt = sdev->host;
1274 static void done(struct Scsi_Host *shpnt, int error)
1312 struct Scsi_Host *shpnt = dev_id;
1342 if( HOSTDATA(shpnt)->service==0 ) {
1343 HOSTDATA(shpnt)->service=1;
1359 static void busfree_run(struct Scsi_Host *shpnt)
1379 done(shpnt, (CURRENT_SC->SCp.Status & 0xff) | ((CURRENT_SC->SCp.Message & 0xff) << 8) | (DID_OK << 16));
1382 done(shpnt, (CURRENT_SC->SCp.Status & 0xff) | ((CURRENT_SC->SCp.Message & 0xff) << 8) | (DID_ABORT << 16));
1385 done(shpnt, (CURRENT_SC->SCp.Status & 0xff) | ((CURRENT_SC->SCp.Message & 0xff) << 8) | (DID_RESET << 16));
1390 HOSTDATA(shpnt)->disconnections++;
1397 done(shpnt, DID_ERROR << 16);
1401 HOSTDATA(shpnt)->busfree_without_old_command++;
1413 struct scsi_cmnd *cmd = HOSTDATA(shpnt)->done_SC;
1420 HOSTDATA(shpnt)->commands--;
1421 if (!HOSTDATA(shpnt)->commands)
1425 HOSTDATA(shpnt)->busfree_with_check_condition++;
1449 HOSTDATA(shpnt)->commands--;
1450 if (!HOSTDATA(shpnt)->commands)
1466 HOSTDATA(shpnt)->busfree_without_done_command++;
1484 SETPORT(SCSIID, (shpnt->this_id << OID_) | CURRENT_SC->device->id);
1489 HOSTDATA(shpnt)->busfree_without_new_command++;
1496 HOSTDATA(shpnt)->busfree_without_any_action++;
1505 static void seldo_run(struct Scsi_Host *shpnt)
1518 done(shpnt, DID_NO_CONNECT << 16);
1544 static void selto_run(struct Scsi_Host *shpnt)
1555 done(shpnt, DID_ABORT << 16);
1557 done(shpnt, DID_BUS_BUSY << 16);
1560 done(shpnt, DID_NO_CONNECT << 16);
1570 static void seldi_run(struct Scsi_Host *shpnt)
1598 selid = GETPORT(SELID) & ~(1 << shpnt->this_id);
1601 shost_printk(KERN_INFO, shpnt,
1610 shost_printk(KERN_INFO, shpnt,
1615 SETPORT(SCSIID, (shpnt->this_id << OID_) | target);
1618 SETRATE(HOSTDATA(shpnt)->syncrate[target]);
1636 static void msgi_run(struct Scsi_Host *shpnt)
1651 shost_printk(KERN_ERR, shpnt,
1660 shost_printk(KERN_ERR, shpnt,
1668 show_queues(shpnt);
1669 shost_printk(KERN_ERR, shpnt,
1734 if (!HOSTDATA(shpnt)->synchronous)
1789 HOSTDATA(shpnt)->syncrate[i]=0;
1790 HOSTDATA(shpnt)->syncneg[i]=0;
1810 static void msgi_end(struct Scsi_Host *shpnt)
1825 static void msgo_init(struct Scsi_Host *shpnt)
1843 static void msgo_run(struct Scsi_Host *shpnt)
1868 static void msgo_end(struct Scsi_Host *shpnt)
1889 static void cmd_init(struct Scsi_Host *shpnt)
1894 done(shpnt, DID_ERROR << 16);
1905 static void cmd_run(struct Scsi_Host *shpnt)
1915 static void cmd_end(struct Scsi_Host *shpnt)
1929 static void status_run(struct Scsi_Host *shpnt)
1942 static void datai_init(struct Scsi_Host *shpnt)
1956 static void datai_run(struct Scsi_Host *shpnt)
2063 static void datai_end(struct Scsi_Host *shpnt)
2075 static void datao_init(struct Scsi_Host *shpnt)
2089 static void datao_run(struct Scsi_Host *shpnt)
2142 static void datao_end(struct Scsi_Host *shpnt)
2177 static int update_state(struct Scsi_Host *shpnt)
2231 static void parerr_run(struct Scsi_Host *shpnt)
2234 done(shpnt, DID_PARITY << 16);
2241 static void rsti_run(struct Scsi_Host *shpnt)
2245 shost_printk(KERN_NOTICE, shpnt, "scsi reset in\n");
2265 done(shpnt, DID_RESET << 16 );
2273 static void is_complete(struct Scsi_Host *shpnt)
2279 if(!shpnt)
2284 if( HOSTDATA(shpnt)->service==0 ) {
2289 HOSTDATA(shpnt)->service = 0;
2291 if(HOSTDATA(shpnt)->in_intr) {
2294 aha152x_error(shpnt, "bottom-half already running!?");
2296 HOSTDATA(shpnt)->in_intr++;
2306 dataphase=update_state(shpnt);
2313 states[PREVSTATE].end(shpnt);
2354 states[STATE].init(shpnt);
2361 states[STATE].run(shpnt);
2373 pending=setup_expected_interrupts(shpnt);
2375 HOSTDATA(shpnt)->count[STATE]++;
2377 HOSTDATA(shpnt)->count_trans[STATE]++;
2378 HOSTDATA(shpnt)->time[STATE] += jiffies-start;
2387 HOSTDATA(shpnt)->in_intr--;
2396 static void aha152x_error(struct Scsi_Host *shpnt, char *msg)
2398 shost_printk(KERN_EMERG, shpnt, "%s\n", msg);
2399 show_queues(shpnt);
2406 static void disp_enintr(struct Scsi_Host *shpnt)
2413 shost_printk(KERN_DEBUG, shpnt,
2456 static void show_queues(struct Scsi_Host *shpnt)
2477 disp_enintr(shpnt);
2513 static void get_ports(struct seq_file *m, struct Scsi_Host *shpnt)
2772 static int aha152x_set_info(struct Scsi_Host *shpnt, char *buffer, int length)
2774 if(!shpnt || !buffer || length<8 || strncmp("aha152x ", buffer, 8)!=0)
2781 HOSTDATA(shpnt)->total_commands=0;
2782 HOSTDATA(shpnt)->disconnections=0;
2783 HOSTDATA(shpnt)->busfree_without_any_action=0;
2784 HOSTDATA(shpnt)->busfree_without_old_command=0;
2785 HOSTDATA(shpnt)->busfree_without_new_command=0;
2786 HOSTDATA(shpnt)->busfree_without_done_command=0;
2787 HOSTDATA(shpnt)->busfree_with_check_condition=0;
2789 HOSTDATA(shpnt)->count[i]=0;
2790 HOSTDATA(shpnt)->count_trans[i]=0;
2791 HOSTDATA(shpnt)->time[i]=0;
2794 shost_printk(KERN_INFO, shpnt, "aha152x: stats reset.\n");
2806 static int aha152x_show_info(struct seq_file *m, struct Scsi_Host *shpnt)
2815 shpnt->io_port, shpnt->io_port + shpnt->n_io_port - 1);
2816 seq_printf(m, "interrupt 0x%02x\n", shpnt->irq);
2823 seq_printf(m, "%d commands currently queued\n", HOSTDATA(shpnt)->commands);
2828 if (HOSTDATA(shpnt)->syncrate[i] & 0x7f)
2831 (((HOSTDATA(shpnt)->syncrate[i] & 0x70) >> 4) + 2),
2832 (((HOSTDATA(shpnt)->syncrate[i] & 0x70) >> 4) + 2) * 50,
2833 HOSTDATA(shpnt)->syncrate[i] & 0x0f);
2858 get_ports(m, shpnt);
2873 HOSTDATA(shpnt)->total_commands,
2874 HOSTDATA(shpnt)->disconnections,
2875 HOSTDATA(shpnt)->busfree_with_check_condition,
2876 HOSTDATA(shpnt)->busfree_without_old_command,
2877 HOSTDATA(shpnt)->busfree_without_new_command,
2878 HOSTDATA(shpnt)->busfree_without_done_command,
2879 HOSTDATA(shpnt)->busfree_without_any_action);
2883 HOSTDATA(shpnt)->count_trans[i],
2884 HOSTDATA(shpnt)->count[i],
2885 HOSTDATA(shpnt)->time[i]);
3312 struct Scsi_Host *shpnt = aha152x_probe_one(&setup[i]);
3314 if( !shpnt ) {
3318 HOSTDATA(shpnt)->pnpdev=pnpdev[i];