wbsd: remove block crc test
authorPierre Ossman <drzeus@drzeus.cx>
Fri, 13 Apr 2007 21:25:59 +0000 (23:25 +0200)
committerPierre Ossman <drzeus@drzeus.cx>
Tue, 1 May 2007 11:04:12 +0000 (13:04 +0200)
Block completion interrupts occur faster than we can process
them, so just ignore them competely.

Commit also fixes up some incorrect register defines.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
drivers/mmc/wbsd.c
drivers/mmc/wbsd.h

index 7a3e32ec46b8e4dc66437a99a51ed754db77890b..673c64661d36021fdbb1e23c75e23a5c00cdb536 100644 (file)
@@ -178,9 +178,8 @@ static void wbsd_init_device(struct wbsd_host *host)
        ier = 0;
        ier |= WBSD_EINT_CARD;
        ier |= WBSD_EINT_FIFO_THRE;
-       ier |= WBSD_EINT_CCRC;
-       ier |= WBSD_EINT_TIMEOUT;
        ier |= WBSD_EINT_CRC;
+       ier |= WBSD_EINT_TIMEOUT;
        ier |= WBSD_EINT_TC;
 
        outb(ier, host->base + WBSD_EIR);
@@ -1166,30 +1165,6 @@ end:
        spin_unlock(&host->lock);
 }
 
-static void wbsd_tasklet_block(unsigned long param)
-{
-       struct wbsd_host *host = (struct wbsd_host *)param;
-       struct mmc_data *data;
-
-       spin_lock(&host->lock);
-
-       if ((wbsd_read_index(host, WBSD_IDX_CRCSTATUS) & WBSD_CRC_MASK) !=
-               WBSD_CRC_OK) {
-               data = wbsd_get_data(host);
-               if (!data)
-                       goto end;
-
-               DBGF("CRC error\n");
-
-               data->error = MMC_ERR_BADCRC;
-
-               tasklet_schedule(&host->finish_tasklet);
-       }
-
-end:
-       spin_unlock(&host->lock);
-}
-
 /*
  * Interrupt handling
  */
@@ -1220,8 +1195,6 @@ static irqreturn_t wbsd_irq(int irq, void *dev_id)
                tasklet_hi_schedule(&host->crc_tasklet);
        if (isr & WBSD_INT_TIMEOUT)
                tasklet_hi_schedule(&host->timeout_tasklet);
-       if (isr & WBSD_INT_BUSYEND)
-               tasklet_hi_schedule(&host->block_tasklet);
        if (isr & WBSD_INT_TC)
                tasklet_schedule(&host->finish_tasklet);
 
@@ -1522,8 +1495,6 @@ static int __devinit wbsd_request_irq(struct wbsd_host *host, int irq)
                        (unsigned long)host);
        tasklet_init(&host->finish_tasklet, wbsd_tasklet_finish,
                        (unsigned long)host);
-       tasklet_init(&host->block_tasklet, wbsd_tasklet_block,
-                       (unsigned long)host);
 
        return 0;
 }
@@ -1542,7 +1513,6 @@ static void __devexit wbsd_release_irq(struct wbsd_host *host)
        tasklet_kill(&host->crc_tasklet);
        tasklet_kill(&host->timeout_tasklet);
        tasklet_kill(&host->finish_tasklet);
-       tasklet_kill(&host->block_tasklet);
 }
 
 /*
index 6fb4fa42321987d8dd3f18ab696295a42e693082..873bda1e59b462b7a750bb70d77482a8950ff914 100644 (file)
 
 #define WBSD_EINT_CARD         0x40
 #define WBSD_EINT_FIFO_THRE    0x20
-#define WBSD_EINT_CCRC         0x10
+#define WBSD_EINT_CRC          0x10
 #define WBSD_EINT_TIMEOUT      0x08
 #define WBSD_EINT_PROGEND      0x04
-#define WBSD_EINT_CRC          0x02
+#define WBSD_EINT_BUSYEND      0x02
 #define WBSD_EINT_TC           0x01
 
 #define WBSD_INT_PENDING       0x80
@@ -180,7 +180,6 @@ struct wbsd_host
        struct tasklet_struct   crc_tasklet;
        struct tasklet_struct   timeout_tasklet;
        struct tasklet_struct   finish_tasklet;
-       struct tasklet_struct   block_tasklet;
 
        struct timer_list       ignore_timer;   /* Ignore detection timer */
 };