linux/drivers
Ned Forrester 8423597d67 pxa2xx_spi: chipselect bugfixes
Fixes several chipselect bugs in the pxa2xx_spi driver.  These bugs are in
all versions of this driver and prevent using it with chips like m25p16
flash.

 1. The spi_transfer.cs_change flag is handled too early:
    before spi_transfer.delay_usecs applies, thus making the
    delay ineffective at holding chip select.

 2. spi_transfer.delay_usecs is ignored on the last transfer
    of a message (likewise not holding chipselect long enough).

 3. If spi_transfer.cs_change is set on the last transfer, the
    chip select is always disabled, instead of the intended
    meaning: optionally holding chip select enabled for the
    next message.

Those first three bugs were fixed with a relocation of delays
and chip select de-assertions.

 4. If a message has the cs_change flag set on the last transfer,
    and had the chip select stayed enabled as requested (see 3,
    above), it would not have been disabled if the next message is
    for a different chip.  Fixed by dropping chip select regardless
    of cs_change at end of a message, if there is no next message
    or if the next message is for a different chip.

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:51 -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 auxdisplay: small cleanups 2008-07-24 10:47:41 -07:00
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 [CPUFREQ] Fix -Wshadow warning in conservative governor. 2008-08-08 16:00:48 -04:00
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 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 2008-07-23 12:03:18 -07:00
dio
dma Merge branch 'for-rmk' of git://git.marvell.com/orion 2008-08-09 18:03:13 +01:00
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 gpio: max732x driver 2008-07-25 10:53:30 -07:00
gpu drm/radeon: downgrade debug message from info to debug. 2008-09-01 08:51:52 +10:00
hid Input: bcm5974 - add driver for Macbook Air and Pro Penryn touchpads 2008-08-08 16:23:01 -04:00
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 Add DIP switch readout for HFC-4S IOB4ST 2008-08-02 16:40:37 +02:00
leds [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
lguest lguest: update commentry 2008-08-26 00:19:28 +10:00
macintosh remove unnecessary <linux/hdreg.h> includes 2008-08-05 18:16:58 +02:00
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 memstick: use fully asynchronous request processing 2008-07-26 12:00:04 -07:00
message Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2008-07-27 10:04:52 -07:00
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 make parport_cs_release() static 2008-07-26 12:00:11 -07:00
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 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
ps3
rapidio
regulator regulator: TI bq24022 Li-Ion Charger driver 2008-07-30 10:10:23 +01:00
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 sh: Fix up broken kerneldoc comments. 2008-08-04 12:51:06 +09:00
sn
spi pxa2xx_spi: chipselect bugfixes 2008-09-13 14:41:51 -07:00
ssb ssb: allow compilation on systems without PCI 2008-08-18 11:05:13 -04:00
tc
telephony ixj: push BKL into driver and wrap ioctls 2008-07-25 10:53:43 -07:00
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 move memory_read_from_buffer() from fs.h to string.h 2008-07-24 10:47:13 -07:00
Kconfig
Makefile USB: Add MUSB and TUSB support 2008-08-13 17:33:00 -07:00