|
@@ -1622,9 +1622,16 @@ EXPORT_SYMBOL(denali_init);
|
|
|
/* driver exit point */
|
|
|
void denali_remove(struct denali_nand_info *denali)
|
|
|
{
|
|
|
+ /*
|
|
|
+ * Pre-compute DMA buffer size to avoid any problems in case
|
|
|
+ * nand_release() ever changes in a way that mtd->writesize and
|
|
|
+ * mtd->oobsize are not reliable after this call.
|
|
|
+ */
|
|
|
+ int bufsize = denali->mtd.writesize + denali->mtd.oobsize;
|
|
|
+
|
|
|
+ nand_release(&denali->mtd);
|
|
|
denali_irq_cleanup(denali->irq, denali);
|
|
|
- dma_unmap_single(denali->dev, denali->buf.dma_buf,
|
|
|
- denali->mtd.writesize + denali->mtd.oobsize,
|
|
|
+ dma_unmap_single(denali->dev, denali->buf.dma_buf, bufsize,
|
|
|
DMA_BIDIRECTIONAL);
|
|
|
}
|
|
|
EXPORT_SYMBOL(denali_remove);
|