diff options
author | Marek Vasut | 2020-04-04 12:45:02 +0200 |
---|---|---|
committer | Peng Fan | 2020-04-22 20:41:56 +0800 |
commit | 8074ffe335bad50ffcc3d70ed1d9f3e3ffde9149 (patch) | |
tree | 016e4e1adaae8fa91b68d99a262606692f1b220b /include/bouncebuf.h | |
parent | 453d21381bda4452937a6d3c648230805b528b9b (diff) |
common: bouncebuf: Permit passing custom alignment check function
Add extended version of the bounce_buffer_start(), which permits passing in
a custom alignment checker function for the buffer. This is useful e.g. on
systems with various DMA restrictions and where the checker function might
be more complex than a simple CPU cache alignment check.
Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Peng Fan <peng.fan@nxp.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'include/bouncebuf.h')
-rw-r--r-- | include/bouncebuf.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/include/bouncebuf.h b/include/bouncebuf.h index fd9b0f3b289..7427bd12e27 100644 --- a/include/bouncebuf.h +++ b/include/bouncebuf.h @@ -62,6 +62,21 @@ struct bounce_buffer { */ int bounce_buffer_start(struct bounce_buffer *state, void *data, size_t len, unsigned int flags); + +/** + * bounce_buffer_start() -- Start the bounce buffer session with external align check function + * state: stores state passed between bounce_buffer_{start,stop} + * data: pointer to buffer to be aligned + * len: length of the buffer + * flags: flags describing the transaction, see above. + * alignment: alignment of the newly allocated bounce buffer + * addr_is_aligned: function for checking the alignment instead of the default one + */ +int bounce_buffer_start_extalign(struct bounce_buffer *state, void *data, + size_t len, unsigned int flags, + size_t alignment, + int (*addr_is_aligned)(struct bounce_buffer *state)); + /** * bounce_buffer_stop() -- Finish the bounce buffer session * state: stores state passed between bounce_buffer_{start,stop} |