linux/drivers
Ned Forrester 7e96445533 pxa2xx_spi: dma bugfixes
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: Ned Forrester <nforrester@whoi.edu>
Cc: Vernon Sauder <vernoninhand@gmail.com>
Cc: Eric Miao <eric.y.miao@gmail.com>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Cc: <stable@kernel.org>		[2.6.25.x, 2.6.26.x]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-09-13 14:41:52 -07:00
..
accessibility
acpi Merge branches 'smbus' and 'fujitsu-fix' into release-2.6.27 2008-09-04 14:33:03 +02:00
amba
ata ahci: RAID mode SATA patch for Intel Ibex Peak DeviceIDs 2008-09-08 12:15:54 -04:00
atm removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
auxdisplay
base PM: Remove WARN_ON from device_pm_add 2008-08-21 10:15:37 -07:00
block Revert "pktcdvd: push BKL down into driver" 2008-08-27 13:42:00 -07:00
bluetooth [Bluetooth] Consolidate maintainers information 2008-08-18 13:23:53 +02:00
cdrom cdrom: handle TOC 2008-08-18 21:40:04 +02:00
char drivers/char/random.c: fix a race which can lead to a bogus BUG() 2008-09-02 19:21:40 -07:00
clocksource clocksource, acpi_pm.c: check for monotonicity 2008-09-06 15:33:33 +02:00
connector
cpufreq
cpuidle cpuidle: Make ladder governor honor latency requirements fully 2008-08-15 21:25:35 +02:00
crypto crypto: padlock - fix VIA PadLock instruction usage with irq_ts_save/restore() 2008-08-13 22:02:26 +10:00
dca
dio
dma
edac removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
eisa
firewire firewire: Kconfig help update 2008-08-19 18:47:56 +02:00
firmware ibft: fix target info parsing in ibft module 2008-09-02 19:21:40 -07:00
gpio
gpu drm/radeon: downgrade debug message from info to debug. 2008-09-01 08:51:52 +10:00
hid
hwmon hwmon-vid: Fix AMD K8 VID decoding 2008-08-15 11:50:15 -07:00
i2c Merge branch 'sh/for-2.6.27' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2008-09-05 14:30:58 -07:00
ide Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block 2008-09-11 08:42:55 -07:00
ieee1394 ieee1394: sbp2: let nodemgr retry node updates during bus reset series 2008-08-19 18:47:56 +02:00
infiniband IB/mlx4: Actually return L_Key and R_Key for fast register MRs 2008-08-27 14:40:38 -07:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2008-09-06 21:47:30 -07:00
isdn
leds
lguest lguest: update commentry 2008-08-26 00:19:28 +10:00
macintosh
mca
md Fix problem with waiting while holding rcu read lock in md/bitmap.c 2008-09-01 12:48:13 +10:00
media VIDEO_SH_MOBILE_CEU should depend on HAS_DMA 2008-09-10 14:15:29 -07:00
memstick
message
mfd removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
misc Merge branch 'release-2.6.27' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-acpi-2.6 2008-09-05 14:27:12 -07:00
mmc drivers/mmc/card/block.c: fix refcount leak in mmc_block_open() 2008-09-05 14:39:38 -07:00
mtd [MTD] [NAND] tmio_nand: fix base address programming 2008-09-05 15:34:35 +01:00
net forcedeth: fix kexec regression 2008-09-05 14:39:37 -07:00
nubus
of powerpc/ibmebus: Restore "name" sysfs attribute on ibmebus devices 2008-08-20 09:50:21 +10:00
oprofile powerpc/cell/oprofile: Avoid double vfree of profile buffer 2008-08-26 10:24:46 +10:00
parisc
parport
pci PCI: fix pbus_size_mem() resource alignment for CardBus controllers 2008-09-04 01:33:59 -07:00
pcmcia [ARM] 5198/1: PalmTX: PCMCIA fixes 2008-08-16 16:35:33 +01:00
pnp PNPACPI: ignore the producer/consumer bit for extended IRQ descriptors 2008-08-25 12:04:44 +02:00
power
ps3
rapidio
regulator
rtc rtc-cmos: wake again from S5 2008-09-02 19:21:40 -07:00
s390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 2008-09-11 08:41:17 -07:00
sbus sparc/drivers: use linux/of_device.h instead of asm/of_device.h 2008-08-11 14:30:53 -07:00
scsi Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block 2008-09-11 08:42:55 -07:00
serial 8250: improve workaround for UARTs that don't re-assert THRE correctly 2008-09-02 19:21:38 -07:00
sh
sn
spi pxa2xx_spi: dma bugfixes 2008-09-13 14:41:52 -07:00
ssb ssb: allow compilation on systems without PCI 2008-08-18 11:05:13 -04:00
tc
telephony
thermal
uio UIO: generic irq handling for some uio platform devices 2008-08-21 10:15:39 -07:00
usb Merge master.kernel.org:/home/rmk/linux-2.6-arm 2008-09-08 15:50:19 -07:00
video atmel_lcdfb: fix oops in rmmod when framebuffer fails to register 2008-09-05 14:39:38 -07:00
virtio virtio_balloon: fix towards_target when deflating balloon 2008-08-26 00:19:25 +10:00
w1
watchdog [WATCHDOG] removed unused #include <version.h> 2008-08-26 20:32:02 +00:00
xen xen: fix 2.6.27-rc5 xen balloon driver warnings 2008-09-08 20:21:15 +02:00
zorro
Kconfig
Makefile USB: Add MUSB and TUSB support 2008-08-13 17:33:00 -07:00