diff options
author | Silvester Erdeg <slipszi@gmail.com> | 2008-02-06 01:38:12 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-06 10:41:10 -0800 |
commit | 154443c72f47169ebcb3a7befbff0e934c49bff3 (patch) | |
tree | c0567d5aa3c46ce4056da07ddacead626f933c73 /include/asm-arm/sizes.h | |
parent | 1eed29df472a33bba013d5a2ea2f9e32f4414397 (diff) | |
download | blackbird-op-linux-154443c72f47169ebcb3a7befbff0e934c49bff3.tar.gz blackbird-op-linux-154443c72f47169ebcb3a7befbff0e934c49bff3.zip |
atmel_spi: chain DMA transfers
Add support for chained transfers in the atmel_spi driver, letting the DMA
controller switch to the next buffer pair without CPU intervention. This
reduced I/O latencies by about 2% in one bulk I/O test. It should also help
work around several interrelated errata affecting chipselect 0 on at91rm9200
chips.
Almost all of the changes are in the reworked atmel_spi_next_xfer() function.
That's now called with the driver in one of three states:
1. It isn't transferring anything (in which case the first transfer
of the current message is going to be sent)
2. It has finished transfering a non-chainable transfer (in which
case it will go to the next transfer in the message)
3. It has finished transfering a chained transfer (in which case the
next transfer is already queued)
After that it will queue the next transfer if it can be chained.
Signed-off-by: Szilveszter Ordog <slipszi@gmail.com>
Acked-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/asm-arm/sizes.h')
0 files changed, 0 insertions, 0 deletions