diff options
author | Pierre Ossman <drzeus@drzeus.cx> | 2007-04-13 17:25:59 -0400 |
---|---|---|
committer | Pierre Ossman <drzeus@drzeus.cx> | 2007-05-01 07:04:12 -0400 |
commit | 5721dbf217b073b40e31936781379ab2d17ea2ae (patch) | |
tree | 8bfdd4973d31bf80614adec6fa73fe6d26000886 /drivers/mmc/wbsd.c | |
parent | 976d9276c826d6b35e4a2478fd4978dbd63bdd6f (diff) |
wbsd: remove block crc test
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>
Diffstat (limited to 'drivers/mmc/wbsd.c')
-rw-r--r-- | drivers/mmc/wbsd.c | 32 |
1 files changed, 1 insertions, 31 deletions
diff --git a/drivers/mmc/wbsd.c b/drivers/mmc/wbsd.c index 7a3e32ec46b8..673c64661d36 100644 --- a/drivers/mmc/wbsd.c +++ b/drivers/mmc/wbsd.c | |||
@@ -178,9 +178,8 @@ static void wbsd_init_device(struct wbsd_host *host) | |||
178 | ier = 0; | 178 | ier = 0; |
179 | ier |= WBSD_EINT_CARD; | 179 | ier |= WBSD_EINT_CARD; |
180 | ier |= WBSD_EINT_FIFO_THRE; | 180 | ier |= WBSD_EINT_FIFO_THRE; |
181 | ier |= WBSD_EINT_CCRC; | ||
182 | ier |= WBSD_EINT_TIMEOUT; | ||
183 | ier |= WBSD_EINT_CRC; | 181 | ier |= WBSD_EINT_CRC; |
182 | ier |= WBSD_EINT_TIMEOUT; | ||
184 | ier |= WBSD_EINT_TC; | 183 | ier |= WBSD_EINT_TC; |
185 | 184 | ||
186 | outb(ier, host->base + WBSD_EIR); | 185 | outb(ier, host->base + WBSD_EIR); |
@@ -1166,30 +1165,6 @@ end: | |||
1166 | spin_unlock(&host->lock); | 1165 | spin_unlock(&host->lock); |
1167 | } | 1166 | } |
1168 | 1167 | ||
1169 | static void wbsd_tasklet_block(unsigned long param) | ||
1170 | { | ||
1171 | struct wbsd_host *host = (struct wbsd_host *)param; | ||
1172 | struct mmc_data *data; | ||
1173 | |||
1174 | spin_lock(&host->lock); | ||
1175 | |||
1176 | if ((wbsd_read_index(host, WBSD_IDX_CRCSTATUS) & WBSD_CRC_MASK) != | ||
1177 | WBSD_CRC_OK) { | ||
1178 | data = wbsd_get_data(host); | ||
1179 | if (!data) | ||
1180 | goto end; | ||
1181 | |||
1182 | DBGF("CRC error\n"); | ||
1183 | |||
1184 | data->error = MMC_ERR_BADCRC; | ||
1185 | |||
1186 | tasklet_schedule(&host->finish_tasklet); | ||
1187 | } | ||
1188 | |||
1189 | end: | ||
1190 | spin_unlock(&host->lock); | ||
1191 | } | ||
1192 | |||
1193 | /* | 1168 | /* |
1194 | * Interrupt handling | 1169 | * Interrupt handling |
1195 | */ | 1170 | */ |
@@ -1220,8 +1195,6 @@ static irqreturn_t wbsd_irq(int irq, void *dev_id) | |||
1220 | tasklet_hi_schedule(&host->crc_tasklet); | 1195 | tasklet_hi_schedule(&host->crc_tasklet); |
1221 | if (isr & WBSD_INT_TIMEOUT) | 1196 | if (isr & WBSD_INT_TIMEOUT) |
1222 | tasklet_hi_schedule(&host->timeout_tasklet); | 1197 | tasklet_hi_schedule(&host->timeout_tasklet); |
1223 | if (isr & WBSD_INT_BUSYEND) | ||
1224 | tasklet_hi_schedule(&host->block_tasklet); | ||
1225 | if (isr & WBSD_INT_TC) | 1198 | if (isr & WBSD_INT_TC) |
1226 | tasklet_schedule(&host->finish_tasklet); | 1199 | tasklet_schedule(&host->finish_tasklet); |
1227 | 1200 | ||
@@ -1522,8 +1495,6 @@ static int __devinit wbsd_request_irq(struct wbsd_host *host, int irq) | |||
1522 | (unsigned long)host); | 1495 | (unsigned long)host); |
1523 | tasklet_init(&host->finish_tasklet, wbsd_tasklet_finish, | 1496 | tasklet_init(&host->finish_tasklet, wbsd_tasklet_finish, |
1524 | (unsigned long)host); | 1497 | (unsigned long)host); |
1525 | tasklet_init(&host->block_tasklet, wbsd_tasklet_block, | ||
1526 | (unsigned long)host); | ||
1527 | 1498 | ||
1528 | return 0; | 1499 | return 0; |
1529 | } | 1500 | } |
@@ -1542,7 +1513,6 @@ static void __devexit wbsd_release_irq(struct wbsd_host *host) | |||
1542 | tasklet_kill(&host->crc_tasklet); | 1513 | tasklet_kill(&host->crc_tasklet); |
1543 | tasklet_kill(&host->timeout_tasklet); | 1514 | tasklet_kill(&host->timeout_tasklet); |
1544 | tasklet_kill(&host->finish_tasklet); | 1515 | tasklet_kill(&host->finish_tasklet); |
1545 | tasklet_kill(&host->block_tasklet); | ||
1546 | } | 1516 | } |
1547 | 1517 | ||
1548 | /* | 1518 | /* |