linux/arch/arm/mach-davinci
Brian Niebuhr c29e3c60e7 spi: davinci: always start transmit DMA
Due to the full duplex nature of the SPI bus, the SPI master
on DaVinci needs transmit to be active even if the tranfer is
only meant to collect receive data.

The current code achieves this by using a temporary zeroed buffer
to provide DMA data in case the transfer does not have a transmit
buffer provided.

However, the transmit DMA is started only if transmit buffer is
provided rendering the temporary buffer unused. Instead the code
relies on a write to SPIDAT1 register to trigger transmit operation.
This however only sends two bytes of data.

Fix this by starting transmit DMA always.

This changes exposes a bug on DM355 where the CSHOLD bit in
SPIDAT1 needs to be written to in between transfers. Handle
that by introducing a "cshold_bug" platform data which is
set to true for DM355.

Signed-off-by: Brian Niebuhr <bniebuhr@efjohnson.com>
Tested-By: Michael Williamson <michael.williamson@criticallink.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
2010-11-18 18:38:33 +05:30
..
include/mach spi: davinci: always start transmit DMA 2010-11-18 18:38:33 +05:30
aemif.c davinci: add support for aemif timing configuration 2010-09-24 07:40:26 -07:00
board-da830-evm.c Merge branch 'davinci-next' into davinci-for-linus 2010-10-21 11:21:55 -07:00
board-da850-evm.c Merge branch 'davinci-next' into davinci-for-linus 2010-10-21 11:21:55 -07:00
board-dm355-evm.c arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
board-dm355-leopard.c arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
board-dm365-evm.c Merge branch 'davinci-next' into davinci-for-linus 2010-10-21 11:21:55 -07:00
board-dm644x-evm.c Merge branch 'davinci-next' into davinci-for-linus 2010-10-21 11:21:55 -07:00
board-dm646x-evm.c Merge branch 'davinci-next' into davinci-for-linus 2010-10-21 11:21:55 -07:00
board-mityomapl138.c davinci: fix remaining board support after io_pgoffst removal 2010-10-21 17:03:36 -07:00
board-neuros-osd2.c Merge branch 'davinci-next' into davinci-for-linus 2010-10-21 11:21:55 -07:00
board-omapl138-hawk.c davinci: fix remaining board support after io_pgoffst removal 2010-10-21 17:03:36 -07:00
board-sffsdr.c Merge branch 'davinci-next' into davinci-for-linus 2010-10-21 11:21:55 -07:00
board-tnetv107x-evm.c Merge branch 'davinci-next' into davinci-for-linus 2010-10-21 11:21:55 -07:00
cdce949.c davinci: misc cleanups from sparse 2010-05-06 15:02:01 -07:00
clock.c davinci: clock: add support for setting sysclk rate 2010-09-24 07:40:24 -07:00
clock.h davinci: clock: add support for setting sysclk rate 2010-09-24 07:40:24 -07:00
common.c Davinci: aintc/cpintc - use ioremap() 2010-05-13 10:05:28 -07:00
cp_intc.c Davinci: aintc/cpintc - use ioremap() 2010-05-13 10:05:28 -07:00
cpufreq.c davinci: cpufreq: add support for keeping an additional clock constant 2010-09-24 07:40:25 -07:00
cpuidle.c davinci: cpuidle: move mapping of DDR2 controller registers out of driver 2010-02-04 13:29:38 -08:00
da830.c davinci: da8xx: sparse cleanup: remove duplicate entries in irq priorities 2010-08-05 09:58:23 -07:00
da850.c DA850: Split MMCSD clock into two to support both MMCSD peripherals 2010-09-24 07:40:26 -07:00
devices-da8xx.c davinci: cleanup mdio arch code and switch to phy_id 2010-09-24 07:40:30 -07:00
devices-tnetv107x.c davinci: add tnetv107x touchscreen platform device 2010-09-24 07:40:32 -07:00
devices.c Merge branch 'davinci-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci 2010-10-25 10:59:31 -07:00
dm355.c spi: davinci: always start transmit DMA 2010-11-18 18:38:33 +05:30
dm365.c spi: davinci: remove non-useful interrupt mode support 2010-11-18 18:38:29 +05:30
dm644x.c Merge branch 'davinci-next' into davinci-for-linus 2010-10-21 11:21:55 -07:00
dm646x.c Merge branch 'davinci-next' into davinci-for-linus 2010-10-21 11:21:55 -07:00
dma.c arm: mach-davinci: check irq2ctlr() result 2010-09-24 07:40:25 -07:00
gpio-tnetv107x.c Davinci: tnetv107x initial gpio support 2010-06-21 12:48:31 -07:00
gpio.c Davinci: gpio - use ioremap() 2010-05-13 10:05:22 -07:00
io.c Davinci: iotable based ioremap() interception 2010-05-13 10:05:31 -07:00
irq.c Davinci: aintc/cpintc - use ioremap() 2010-05-13 10:05:28 -07:00
Kconfig davinci: Initial support for Omapl138-Hawkboard 2010-09-24 07:40:32 -07:00
Makefile davinci: Initial support for Omapl138-Hawkboard 2010-09-24 07:40:32 -07:00
Makefile.boot davinci: da8xx: Add base DA830/OMAP-L137 SoC support 2009-08-26 10:56:59 +03:00
mux.c Davinci: pinmux - use ioremap() 2010-05-13 10:05:29 -07:00
mux.h Davinci: eliminate pinmux offset verbosity 2010-05-06 15:02:09 -07:00
pm.c davinci: add power management support 2010-02-04 13:29:55 -08:00
psc.c Davinci: psc - use ioremap() 2010-05-13 10:05:27 -07:00
serial.c Davinci: serial - conditional reset via pwremu 2010-05-06 15:02:10 -07:00
sleep.S davinci: add power management support 2010-02-04 13:29:55 -08:00
sram.c DaVinci: remove unneeded #include's 2009-11-25 10:21:31 -08:00
time.c Davinci: timer - use ioremap() 2010-05-13 10:05:26 -07:00
tnetv107x.c davinci: add idcode for tnetv107x rev 1.1/1.2 2010-09-24 07:40:29 -07:00
usb.c DA8xx: MUSB platform device registration 2009-11-25 10:21:33 -08:00