aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/sym53c8xx_2/sym_hipd.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/sym53c8xx_2/sym_hipd.c')
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_hipd.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.c b/drivers/scsi/sym53c8xx_2/sym_hipd.c
index 13fd5b2c56fc..5d2079f9e596 100644
--- a/drivers/scsi/sym53c8xx_2/sym_hipd.c
+++ b/drivers/scsi/sym53c8xx_2/sym_hipd.c
@@ -2760,8 +2760,9 @@ reset_all:
2760 * Use at your own decision and risk. 2760 * Use at your own decision and risk.
2761 */ 2761 */
2762 2762
2763void sym_interrupt (struct sym_hcb *np) 2763irqreturn_t sym_interrupt(struct Scsi_Host *shost)
2764{ 2764{
2765 struct sym_hcb *np = sym_get_hcb(shost);
2765 u_char istat, istatc; 2766 u_char istat, istatc;
2766 u_char dstat; 2767 u_char dstat;
2767 u_short sist; 2768 u_short sist;
@@ -2786,7 +2787,7 @@ void sym_interrupt (struct sym_hcb *np)
2786 } 2787 }
2787 2788
2788 if (!(istat & (SIP|DIP))) 2789 if (!(istat & (SIP|DIP)))
2789 return; 2790 return (istat & INTF) ? IRQ_HANDLED : IRQ_NONE;
2790 2791
2791#if 0 /* We should never get this one */ 2792#if 0 /* We should never get this one */
2792 if (istat & CABRT) 2793 if (istat & CABRT)
@@ -2818,7 +2819,7 @@ void sym_interrupt (struct sym_hcb *np)
2818 * never clear. */ 2819 * never clear. */
2819 if (unlikely(sist == 0xffff && dstat == 0xff)) { 2820 if (unlikely(sist == 0xffff && dstat == 0xff)) {
2820 if (pci_channel_offline(np->s.device)) 2821 if (pci_channel_offline(np->s.device))
2821 return; 2822 return IRQ_NONE;
2822 } 2823 }
2823 } while (istatc & (SIP|DIP)); 2824 } while (istatc & (SIP|DIP));
2824 2825
@@ -2856,7 +2857,7 @@ void sym_interrupt (struct sym_hcb *np)
2856 else if (dstat & SIR) sym_int_sir(np); 2857 else if (dstat & SIR) sym_int_sir(np);
2857 else if (dstat & SSI) OUTONB_STD(); 2858 else if (dstat & SSI) OUTONB_STD();
2858 else goto unknown_int; 2859 else goto unknown_int;
2859 return; 2860 return IRQ_HANDLED;
2860 } 2861 }
2861 2862
2862 /* 2863 /*
@@ -2873,7 +2874,7 @@ void sym_interrupt (struct sym_hcb *np)
2873 if (sist & RST) { 2874 if (sist & RST) {
2874 printf("%s: SCSI BUS reset detected.\n", sym_name(np)); 2875 printf("%s: SCSI BUS reset detected.\n", sym_name(np));
2875 sym_start_up (np, 1); 2876 sym_start_up (np, 1);
2876 return; 2877 return IRQ_HANDLED;
2877 } 2878 }
2878 2879
2879 OUTB(np, nc_ctest3, np->rv_ctest3 | CLF); /* clear dma fifo */ 2880 OUTB(np, nc_ctest3, np->rv_ctest3 | CLF); /* clear dma fifo */
@@ -2885,7 +2886,7 @@ void sym_interrupt (struct sym_hcb *np)
2885 else if (sist & STO) sym_int_sto (np); 2886 else if (sist & STO) sym_int_sto (np);
2886 else if (sist & UDC) sym_int_udc (np); 2887 else if (sist & UDC) sym_int_udc (np);
2887 else goto unknown_int; 2888 else goto unknown_int;
2888 return; 2889 return IRQ_HANDLED;
2889 } 2890 }
2890 2891
2891 /* 2892 /*
@@ -2900,7 +2901,7 @@ void sym_interrupt (struct sym_hcb *np)
2900 if ((sist & (GEN|HTH|SGE)) || 2901 if ((sist & (GEN|HTH|SGE)) ||
2901 (dstat & (MDPE|BF|ABRT|IID))) { 2902 (dstat & (MDPE|BF|ABRT|IID))) {
2902 sym_start_reset(np); 2903 sym_start_reset(np);
2903 return; 2904 return IRQ_HANDLED;
2904 } 2905 }
2905 2906
2906unknown_int: 2907unknown_int:
@@ -2911,6 +2912,7 @@ unknown_int:
2911 printf( "%s: unknown interrupt(s) ignored, " 2912 printf( "%s: unknown interrupt(s) ignored, "
2912 "ISTAT=0x%x DSTAT=0x%x SIST=0x%x\n", 2913 "ISTAT=0x%x DSTAT=0x%x SIST=0x%x\n",
2913 sym_name(np), istat, dstat, sist); 2914 sym_name(np), istat, dstat, sist);
2915 return IRQ_NONE;
2914} 2916}
2915 2917
2916/* 2918/*