• N
    pxa2xx_spi: dma bugfixes · 7e964455
    Ned Forrester 提交于
    Fixes two DMA bugs in the pxa2xx_spi driver.  The first bug is in all
    versions of this driver; the second was introduced in the 2.6.20 kernel,
    and prevents using the driver with chips like m25p16 flash (which can
    issue large DMA reads).
    
     1. Zero length transfers are permitted for use to insert timing,
        but pxa2xx_spi.c will fail if this is requested in DMA mode.
        Fixed by using programmed I/O (PIO) mode for such transfers.
    
     2. Transfers larger than 8191 are not permitted in DMA mode.  A
        test for length rejects all large transfers regardless of DMA
        or PIO mode.  Worked around by rejecting only large transfers
        with DMA mapped buffers, and forcing all other transfers
        larger than 8191 to use PIO mode.  A rate limited warning is
        issued for DMA transfers forced to PIO mode.
    
    This patch should apply to all kernels back to and including 2.6.20;
    it was test patched against 2.6.20.  An additional patch would be
    required for older kernels, but those versions are very buggy anyway.
    Signed-off-by: NNed Forrester <nforrester@whoi.edu>
    Cc: Vernon Sauder <vernoninhand@gmail.com>
    Cc: Eric Miao <eric.y.miao@gmail.com>
    Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
    Cc: <stable@kernel.org>		[2.6.25.x, 2.6.26.x]
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    7e964455
pxa2xx_spi.c 44.0 KB