Lines Matching full:state

13 static int addr_aligned(struct bounce_buffer *state)  in addr_aligned()  argument
18 if ((ulong)state->user_buffer & align_mask) { in addr_aligned()
19 debug("Unaligned buffer address %p\n", state->user_buffer); in addr_aligned()
24 if (state->len != state->len_aligned) { in addr_aligned()
25 debug("Unaligned buffer length %zu\n", state->len); in addr_aligned()
33 int bounce_buffer_start(struct bounce_buffer *state, void *data, in bounce_buffer_start() argument
36 state->user_buffer = data; in bounce_buffer_start()
37 state->bounce_buffer = data; in bounce_buffer_start()
38 state->len = len; in bounce_buffer_start()
39 state->len_aligned = roundup(len, ARCH_DMA_MINALIGN); in bounce_buffer_start()
40 state->flags = flags; in bounce_buffer_start()
42 if (!addr_aligned(state)) { in bounce_buffer_start()
43 state->bounce_buffer = memalign(ARCH_DMA_MINALIGN, in bounce_buffer_start()
44 state->len_aligned); in bounce_buffer_start()
45 if (!state->bounce_buffer) in bounce_buffer_start()
48 if (state->flags & GEN_BB_READ) in bounce_buffer_start()
49 memcpy(state->bounce_buffer, state->user_buffer, in bounce_buffer_start()
50 state->len); in bounce_buffer_start()
57 flush_dcache_range((unsigned long)state->bounce_buffer, in bounce_buffer_start()
58 (unsigned long)(state->bounce_buffer) + in bounce_buffer_start()
59 state->len_aligned); in bounce_buffer_start()
64 int bounce_buffer_stop(struct bounce_buffer *state) in bounce_buffer_stop() argument
66 if (state->flags & GEN_BB_WRITE) { in bounce_buffer_stop()
68 invalidate_dcache_range((unsigned long)state->bounce_buffer, in bounce_buffer_stop()
69 (unsigned long)(state->bounce_buffer) + in bounce_buffer_stop()
70 state->len_aligned); in bounce_buffer_stop()
73 if (state->bounce_buffer == state->user_buffer) in bounce_buffer_stop()
76 if (state->flags & GEN_BB_WRITE) in bounce_buffer_stop()
77 memcpy(state->user_buffer, state->bounce_buffer, state->len); in bounce_buffer_stop()
79 free(state->bounce_buffer); in bounce_buffer_stop()