Fixed MMC DMA writes on 15xx
        }
        host->dma_len = count;
 
-       /* FIFO is 32x2 bytes; use 32 word frames when the blocksize is
-        * at least that large.  Blocksize is usually 512 bytes; but
-        * not for some SD reads.
+       /* FIFO is 16x2 bytes on 15xx, and 32x2 bytes on 16xx and 24xx.
+        * Use 16 or 32 word frames when the blocksize is at least that large.
+        * Blocksize is usually 512 bytes; but not for some SD reads.
         */
-       if (frame > 64)
+       if (cpu_is_omap15xx() && frame > 32)
+               frame = 32;
+       else if (frame > 64)
                frame = 64;
        count /= frame;
        frame >>= 1;