diff options
Diffstat (limited to 'include/bouncebuf.h')
| -rw-r--r-- | include/bouncebuf.h | 33 | 
1 files changed, 24 insertions, 9 deletions
| diff --git a/include/bouncebuf.h b/include/bouncebuf.h index aa2278c8f..707b588c7 100644 --- a/include/bouncebuf.h +++ b/include/bouncebuf.h @@ -25,6 +25,8 @@  #ifndef __INCLUDE_BOUNCEBUF_H__  #define __INCLUDE_BOUNCEBUF_H__ +#include <linux/types.h> +  /*   * GEN_BB_READ -- Data are read from the buffer eg. by DMA hardware.   * The source buffer is copied into the bounce buffer (if unaligned, otherwise @@ -51,23 +53,36 @@   */  #define GEN_BB_RW	(GEN_BB_READ | GEN_BB_WRITE) +struct bounce_buffer { +	/* Copy of data parameter passed to start() */ +	void *user_buffer; +	/* +	 * DMA-aligned buffer. This field is always set to the value that +	 * should be used for DMA; either equal to .user_buffer, or to a +	 * freshly allocated aligned buffer. +	 */ +	void *bounce_buffer; +	/* Copy of len parameter passed to start() */ +	size_t len; +	/* DMA-aligned buffer length */ +	size_t len_aligned; +	/* Copy of flags parameter passed to start() */ +	unsigned int flags; +}; +  /**   * bounce_buffer_start() -- Start the bounce buffer session + * state:	stores state passed between bounce_buffer_{start,stop}   * data:	pointer to buffer to be aligned   * len:		length of the buffer - * backup:	pointer to backup buffer (the original value is stored here if - *              needed   * flags:	flags describing the transaction, see above.   */ -int bounce_buffer_start(void **data, size_t len, void **backup, uint8_t flags); +int bounce_buffer_start(struct bounce_buffer *state, void *data, +			size_t len, unsigned int flags);  /**   * bounce_buffer_stop() -- Finish the bounce buffer session - * data:	pointer to buffer that was aligned - * len:		length of the buffer - * backup:	pointer to backup buffer (the original value is stored here if - *              needed - * flags:	flags describing the transaction, see above. + * state:	stores state passed between bounce_buffer_{start,stop}   */ -int bounce_buffer_stop(void **data, size_t len, void **backup, uint8_t flags); +int bounce_buffer_stop(struct bounce_buffer *state);  #endif |