2025-01-08 19:12:06 +08:00
|
|
|
/*
|
|
|
|
|
* Copyright (c) 2022-2024, ArtInChip Technology Co., Ltd
|
|
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
*/
|
2023-08-30 16:21:18 +08:00
|
|
|
|
|
|
|
|
#ifndef __INCLUDE_BOUNCEBUF_H__
|
|
|
|
|
#define __INCLUDE_BOUNCEBUF_H__
|
|
|
|
|
|
2025-01-08 19:12:06 +08:00
|
|
|
#define GEN_BB_READ (1 << 0)
|
|
|
|
|
#define GEN_BB_WRITE (1 << 1)
|
|
|
|
|
#define GEN_BB_RW (GEN_BB_READ | GEN_BB_WRITE)
|
2023-08-30 16:21:18 +08:00
|
|
|
|
|
|
|
|
struct bounce_buffer {
|
2025-01-08 19:12:06 +08:00
|
|
|
void *user_buffer;
|
|
|
|
|
void *bounce_buffer;
|
|
|
|
|
size_t len;
|
|
|
|
|
size_t len_aligned;
|
|
|
|
|
unsigned int flags;
|
2023-08-30 16:21:18 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
int bounce_buffer_start(struct bounce_buffer *state, void *data,
|
2025-01-08 19:12:06 +08:00
|
|
|
size_t len, unsigned int flags);
|
2023-08-30 16:21:18 +08:00
|
|
|
|
|
|
|
|
int bounce_buffer_start_extalign(struct bounce_buffer *state, void *data,
|
2025-01-08 19:12:06 +08:00
|
|
|
size_t len, unsigned int flags,
|
|
|
|
|
size_t alignment,
|
|
|
|
|
int (*addr_is_aligned)(struct bounce_buffer *state));
|
2023-08-30 16:21:18 +08:00
|
|
|
|
|
|
|
|
int bounce_buffer_stop(struct bounce_buffer *state);
|
|
|
|
|
|
|
|
|
|
#endif
|