|
@@ -59,6 +59,7 @@ struct jmb38x_ms_host {
|
|
|
unsigned int block_pos;
|
|
|
unsigned long timeout_jiffies;
|
|
|
struct timer_list timer;
|
|
|
+ struct memstick_host *msh;
|
|
|
struct memstick_request *req;
|
|
|
unsigned char cmd_flags;
|
|
|
unsigned char io_pos;
|
|
@@ -592,10 +593,10 @@ static irqreturn_t jmb38x_ms_isr(int irq, void *dev_id)
|
|
|
return IRQ_HANDLED;
|
|
|
}
|
|
|
|
|
|
-static void jmb38x_ms_abort(unsigned long data)
|
|
|
+static void jmb38x_ms_abort(struct timer_list *t)
|
|
|
{
|
|
|
- struct memstick_host *msh = (struct memstick_host *)data;
|
|
|
- struct jmb38x_ms_host *host = memstick_priv(msh);
|
|
|
+ struct jmb38x_ms_host *host = from_timer(host, t, timer);
|
|
|
+ struct memstick_host *msh = host->msh;
|
|
|
unsigned long flags;
|
|
|
|
|
|
dev_dbg(&host->chip->pdev->dev, "abort\n");
|
|
@@ -878,6 +879,7 @@ static struct memstick_host *jmb38x_ms_alloc_host(struct jmb38x_ms *jm, int cnt)
|
|
|
return NULL;
|
|
|
|
|
|
host = memstick_priv(msh);
|
|
|
+ host->msh = msh;
|
|
|
host->chip = jm;
|
|
|
host->addr = ioremap(pci_resource_start(jm->pdev, cnt),
|
|
|
pci_resource_len(jm->pdev, cnt));
|
|
@@ -897,7 +899,7 @@ static struct memstick_host *jmb38x_ms_alloc_host(struct jmb38x_ms *jm, int cnt)
|
|
|
|
|
|
msh->caps = MEMSTICK_CAP_PAR4 | MEMSTICK_CAP_PAR8;
|
|
|
|
|
|
- setup_timer(&host->timer, jmb38x_ms_abort, (unsigned long)msh);
|
|
|
+ timer_setup(&host->timer, jmb38x_ms_abort, 0);
|
|
|
|
|
|
if (!request_irq(host->irq, jmb38x_ms_isr, IRQF_SHARED, host->host_id,
|
|
|
msh))
|