aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/gdth.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/gdth.c')
-rw-r--r--drivers/scsi/gdth.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
index b253b8c718d3..c82523908c2e 100644
--- a/drivers/scsi/gdth.c
+++ b/drivers/scsi/gdth.c
@@ -141,7 +141,7 @@
141static void gdth_delay(int milliseconds); 141static void gdth_delay(int milliseconds);
142static void gdth_eval_mapping(ulong32 size, ulong32 *cyls, int *heads, int *secs); 142static void gdth_eval_mapping(ulong32 size, ulong32 *cyls, int *heads, int *secs);
143static irqreturn_t gdth_interrupt(int irq, void *dev_id); 143static irqreturn_t gdth_interrupt(int irq, void *dev_id);
144static irqreturn_t __gdth_interrupt(gdth_ha_str *ha, int irq, 144static irqreturn_t __gdth_interrupt(gdth_ha_str *ha,
145 int gdth_from_wait, int* pIndex); 145 int gdth_from_wait, int* pIndex);
146static int gdth_sync_event(gdth_ha_str *ha, int service, unchar index, 146static int gdth_sync_event(gdth_ha_str *ha, int service, unchar index,
147 Scsi_Cmnd *scp); 147 Scsi_Cmnd *scp);
@@ -165,7 +165,6 @@ static int gdth_internal_cache_cmd(gdth_ha_str *ha, Scsi_Cmnd *scp);
165static int gdth_fill_cache_cmd(gdth_ha_str *ha, Scsi_Cmnd *scp, ushort hdrive); 165static int gdth_fill_cache_cmd(gdth_ha_str *ha, Scsi_Cmnd *scp, ushort hdrive);
166 166
167static void gdth_enable_int(gdth_ha_str *ha); 167static void gdth_enable_int(gdth_ha_str *ha);
168static unchar gdth_get_status(gdth_ha_str *ha, int irq);
169static int gdth_test_busy(gdth_ha_str *ha); 168static int gdth_test_busy(gdth_ha_str *ha);
170static int gdth_get_cmd_index(gdth_ha_str *ha); 169static int gdth_get_cmd_index(gdth_ha_str *ha);
171static void gdth_release_event(gdth_ha_str *ha); 170static void gdth_release_event(gdth_ha_str *ha);
@@ -1334,14 +1333,12 @@ static void __init gdth_enable_int(gdth_ha_str *ha)
1334} 1333}
1335 1334
1336/* return IStatus if interrupt was from this card else 0 */ 1335/* return IStatus if interrupt was from this card else 0 */
1337static unchar gdth_get_status(gdth_ha_str *ha, int irq) 1336static unchar gdth_get_status(gdth_ha_str *ha)
1338{ 1337{
1339 unchar IStatus = 0; 1338 unchar IStatus = 0;
1340 1339
1341 TRACE(("gdth_get_status() irq %d ctr_count %d\n", irq, gdth_ctr_count)); 1340 TRACE(("gdth_get_status() irq %d ctr_count %d\n", ha->irq, gdth_ctr_count));
1342 1341
1343 if (ha->irq != (unchar)irq) /* check IRQ */
1344 return false;
1345 if (ha->type == GDT_EISA) 1342 if (ha->type == GDT_EISA)
1346 IStatus = inb((ushort)ha->bmic + EDOORREG); 1343 IStatus = inb((ushort)ha->bmic + EDOORREG);
1347 else if (ha->type == GDT_ISA) 1344 else if (ha->type == GDT_ISA)
@@ -1523,7 +1520,7 @@ static int gdth_wait(gdth_ha_str *ha, int index, ulong32 time)
1523 return 1; /* no wait required */ 1520 return 1; /* no wait required */
1524 1521
1525 do { 1522 do {
1526 __gdth_interrupt(ha, (int)ha->irq, true, &wait_index); 1523 __gdth_interrupt(ha, true, &wait_index);
1527 if (wait_index == index) { 1524 if (wait_index == index) {
1528 answer_found = TRUE; 1525 answer_found = TRUE;
1529 break; 1526 break;
@@ -3036,7 +3033,7 @@ static void gdth_clear_events(void)
3036 3033
3037/* SCSI interface functions */ 3034/* SCSI interface functions */
3038 3035
3039static irqreturn_t __gdth_interrupt(gdth_ha_str *ha, int irq, 3036static irqreturn_t __gdth_interrupt(gdth_ha_str *ha,
3040 int gdth_from_wait, int* pIndex) 3037 int gdth_from_wait, int* pIndex)
3041{ 3038{
3042 gdt6m_dpram_str __iomem *dp6m_ptr = NULL; 3039 gdt6m_dpram_str __iomem *dp6m_ptr = NULL;
@@ -3054,7 +3051,7 @@ static irqreturn_t __gdth_interrupt(gdth_ha_str *ha, int irq,
3054 int act_int_coal = 0; 3051 int act_int_coal = 0;
3055#endif 3052#endif
3056 3053
3057 TRACE(("gdth_interrupt() IRQ %d\n",irq)); 3054 TRACE(("gdth_interrupt() IRQ %d\n", ha->irq));
3058 3055
3059 /* if polling and not from gdth_wait() -> return */ 3056 /* if polling and not from gdth_wait() -> return */
3060 if (gdth_polling) { 3057 if (gdth_polling) {
@@ -3067,7 +3064,8 @@ static irqreturn_t __gdth_interrupt(gdth_ha_str *ha, int irq,
3067 spin_lock_irqsave(&ha->smp_lock, flags); 3064 spin_lock_irqsave(&ha->smp_lock, flags);
3068 3065
3069 /* search controller */ 3066 /* search controller */
3070 if (0 == (IStatus = gdth_get_status(ha, irq))) { 3067 IStatus = gdth_get_status(ha);
3068 if (IStatus == 0) {
3071 /* spurious interrupt */ 3069 /* spurious interrupt */
3072 if (!gdth_polling) 3070 if (!gdth_polling)
3073 spin_unlock_irqrestore(&ha->smp_lock, flags); 3071 spin_unlock_irqrestore(&ha->smp_lock, flags);
@@ -3294,9 +3292,9 @@ static irqreturn_t __gdth_interrupt(gdth_ha_str *ha, int irq,
3294 3292
3295static irqreturn_t gdth_interrupt(int irq, void *dev_id) 3293static irqreturn_t gdth_interrupt(int irq, void *dev_id)
3296{ 3294{
3297 gdth_ha_str *ha = (gdth_ha_str *)dev_id; 3295 gdth_ha_str *ha = dev_id;
3298 3296
3299 return __gdth_interrupt(ha, irq, false, NULL); 3297 return __gdth_interrupt(ha, false, NULL);
3300} 3298}
3301 3299
3302static int gdth_sync_event(gdth_ha_str *ha, int service, unchar index, 3300static int gdth_sync_event(gdth_ha_str *ha, int service, unchar index,