common: rework bouncebuf implementation
authorStephen Warren <swarren@nvidia.com>
Tue, 6 Nov 2012 11:27:29 +0000 (11:27 +0000)
committerAndy Fleming <afleming@freescale.com>
Tue, 27 Nov 2012 23:26:48 +0000 (17:26 -0600)
commit84d35b2863455bedb9986c2b076241e8a441fc3e
tree9cb3af890b370091b0460d930b5829fe3d2abb62
parent4ea7a09fafdf0592cb99428090946bf15128ea44
common: rework bouncebuf implementation

The current bouncebuf API requires all parameters to be passed to both
bounce_buffer_start() and bounce_buffer_stop(). Modify the bouncebuf
start function to accept a state structure as a parameter, and only
require that state struct to be passed to the stop function. This
simplifies usage of the bounce buffer by clients.

Don't modify the data pointer, but rather store the temporary buffer in
this state struct. The bouncebuf code ensures that client code can
always use a single buffer pointer in the state structure, irrespective
of whether a bounce buffer actually had to be allocated.

Move cache management logic into the bounce buffer code, so that each
client doesn't have to duplicate this. I believe there's no need to
invalidate the buffer before a DMA operation, since flushing the cache
should prevent any write-backs.

Update the MXS MMC driver for this change.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Andy Fleming <afleming@freescale.com>
common/bouncebuf.c
drivers/mmc/mxsmmc.c
include/bouncebuf.h