|
@@ -185,7 +185,7 @@ struct mesh_state {
|
|
* Driver is too messy, we need a few prototypes...
|
|
* Driver is too messy, we need a few prototypes...
|
|
*/
|
|
*/
|
|
static void mesh_done(struct mesh_state *ms, int start_next);
|
|
static void mesh_done(struct mesh_state *ms, int start_next);
|
|
-static void mesh_interrupt(int irq, void *dev_id);
|
|
|
|
|
|
+static void mesh_interrupt(struct mesh_state *ms);
|
|
static void cmd_complete(struct mesh_state *ms);
|
|
static void cmd_complete(struct mesh_state *ms);
|
|
static void set_dma_cmds(struct mesh_state *ms, struct scsi_cmnd *cmd);
|
|
static void set_dma_cmds(struct mesh_state *ms, struct scsi_cmnd *cmd);
|
|
static void halt_dma(struct mesh_state *ms);
|
|
static void halt_dma(struct mesh_state *ms);
|
|
@@ -466,7 +466,7 @@ static void mesh_start_cmd(struct mesh_state *ms, struct scsi_cmnd *cmd)
|
|
dlog(ms, "intr b4 arb, intr/exc/err/fc=%.8x",
|
|
dlog(ms, "intr b4 arb, intr/exc/err/fc=%.8x",
|
|
MKWORD(mr->interrupt, mr->exception,
|
|
MKWORD(mr->interrupt, mr->exception,
|
|
mr->error, mr->fifo_count));
|
|
mr->error, mr->fifo_count));
|
|
- mesh_interrupt(0, (void *)ms);
|
|
|
|
|
|
+ mesh_interrupt(ms);
|
|
if (ms->phase != arbitrating)
|
|
if (ms->phase != arbitrating)
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
@@ -504,7 +504,7 @@ static void mesh_start_cmd(struct mesh_state *ms, struct scsi_cmnd *cmd)
|
|
dlog(ms, "intr after disresel, intr/exc/err/fc=%.8x",
|
|
dlog(ms, "intr after disresel, intr/exc/err/fc=%.8x",
|
|
MKWORD(mr->interrupt, mr->exception,
|
|
MKWORD(mr->interrupt, mr->exception,
|
|
mr->error, mr->fifo_count));
|
|
mr->error, mr->fifo_count));
|
|
- mesh_interrupt(0, (void *)ms);
|
|
|
|
|
|
+ mesh_interrupt(ms);
|
|
if (ms->phase != arbitrating)
|
|
if (ms->phase != arbitrating)
|
|
return;
|
|
return;
|
|
dlog(ms, "after intr after disresel, intr/exc/err/fc=%.8x",
|
|
dlog(ms, "after intr after disresel, intr/exc/err/fc=%.8x",
|
|
@@ -1018,10 +1018,11 @@ static void handle_reset(struct mesh_state *ms)
|
|
static irqreturn_t do_mesh_interrupt(int irq, void *dev_id)
|
|
static irqreturn_t do_mesh_interrupt(int irq, void *dev_id)
|
|
{
|
|
{
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
- struct Scsi_Host *dev = ((struct mesh_state *)dev_id)->host;
|
|
|
|
|
|
+ struct mesh_state *ms = dev_id;
|
|
|
|
+ struct Scsi_Host *dev = ms->host;
|
|
|
|
|
|
spin_lock_irqsave(dev->host_lock, flags);
|
|
spin_lock_irqsave(dev->host_lock, flags);
|
|
- mesh_interrupt(irq, dev_id);
|
|
|
|
|
|
+ mesh_interrupt(ms);
|
|
spin_unlock_irqrestore(dev->host_lock, flags);
|
|
spin_unlock_irqrestore(dev->host_lock, flags);
|
|
return IRQ_HANDLED;
|
|
return IRQ_HANDLED;
|
|
}
|
|
}
|
|
@@ -1661,9 +1662,8 @@ static int mesh_queue(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
|
|
* handler (do_mesh_interrupt) or by other functions in
|
|
* handler (do_mesh_interrupt) or by other functions in
|
|
* exceptional circumstances
|
|
* exceptional circumstances
|
|
*/
|
|
*/
|
|
-static void mesh_interrupt(int irq, void *dev_id)
|
|
|
|
|
|
+static void mesh_interrupt(struct mesh_state *ms)
|
|
{
|
|
{
|
|
- struct mesh_state *ms = (struct mesh_state *) dev_id;
|
|
|
|
volatile struct mesh_regs __iomem *mr = ms->mesh;
|
|
volatile struct mesh_regs __iomem *mr = ms->mesh;
|
|
int intr;
|
|
int intr;
|
|
|
|
|