Lines Matching refs:rb

36 void scif_rb_init(struct scif_rb *rb, u32 *read_ptr, u32 *write_ptr,  in scif_rb_init()  argument
39 rb->rb_base = rb_base; in scif_rb_init()
40 rb->size = (1 << size); in scif_rb_init()
41 rb->read_ptr = read_ptr; in scif_rb_init()
42 rb->write_ptr = write_ptr; in scif_rb_init()
43 rb->current_read_offset = *read_ptr; in scif_rb_init()
44 rb->current_write_offset = *write_ptr; in scif_rb_init()
48 static void memcpy_torb(struct scif_rb *rb, void *header, in memcpy_torb() argument
53 if (header + size >= rb->rb_base + rb->size) { in memcpy_torb()
55 size1 = (u32)(rb->rb_base + rb->size - header); in memcpy_torb()
58 memcpy_toio((void __iomem __force *)rb->rb_base, in memcpy_torb()
66 static void memcpy_fromrb(struct scif_rb *rb, void *header, in memcpy_fromrb() argument
71 if (header + size >= rb->rb_base + rb->size) { in memcpy_fromrb()
73 size1 = (u32)(rb->rb_base + rb->size - header); in memcpy_fromrb()
77 (void __iomem __force *)rb->rb_base, size2); in memcpy_fromrb()
89 u32 scif_rb_space(struct scif_rb *rb) in scif_rb_space() argument
91 rb->current_read_offset = *rb->read_ptr; in scif_rb_space()
98 return scif_rb_ring_space(rb->current_write_offset, in scif_rb_space()
99 rb->current_read_offset, rb->size); in scif_rb_space()
111 int scif_rb_write(struct scif_rb *rb, void *msg, u32 size) in scif_rb_write() argument
115 if (scif_rb_space(rb) < size) in scif_rb_write()
117 header = rb->rb_base + rb->current_write_offset; in scif_rb_write()
118 memcpy_torb(rb, header, msg, size); in scif_rb_write()
123 rb->current_write_offset = in scif_rb_write()
124 (rb->current_write_offset + size) & (rb->size - 1); in scif_rb_write()
132 void scif_rb_commit(struct scif_rb *rb) in scif_rb_commit() argument
141 ACCESS_ONCE(*rb->write_ptr) = rb->current_write_offset; in scif_rb_commit()
150 ACCESS_ONCE(*rb->write_ptr) = rb->current_write_offset; in scif_rb_commit()
162 static void *scif_rb_get(struct scif_rb *rb, u32 size) in scif_rb_get() argument
166 if (scif_rb_count(rb, size) >= size) in scif_rb_get()
167 header = rb->rb_base + rb->current_read_offset; in scif_rb_get()
180 u32 scif_rb_get_next(struct scif_rb *rb, void *msg, u32 size) in scif_rb_get_next() argument
185 header = scif_rb_get(rb, size); in scif_rb_get_next()
188 (rb->current_read_offset + size) & (rb->size - 1); in scif_rb_get_next()
191 rb->current_read_offset = next_cmd_offset; in scif_rb_get_next()
192 memcpy_fromrb(rb, header, msg, size); in scif_rb_get_next()
201 void scif_rb_update_read_ptr(struct scif_rb *rb) in scif_rb_update_read_ptr() argument
205 new_offset = rb->current_read_offset; in scif_rb_update_read_ptr()
213 ACCESS_ONCE(*rb->read_ptr) = new_offset; in scif_rb_update_read_ptr()
222 ACCESS_ONCE(*rb->read_ptr) = new_offset; in scif_rb_update_read_ptr()
233 u32 scif_rb_count(struct scif_rb *rb, u32 size) in scif_rb_count() argument
235 if (scif_rb_ring_cnt(rb->current_write_offset, in scif_rb_count()
236 rb->current_read_offset, in scif_rb_count()
237 rb->size) < size) { in scif_rb_count()
238 rb->current_write_offset = *rb->write_ptr; in scif_rb_count()
246 return scif_rb_ring_cnt(rb->current_write_offset, in scif_rb_count()
247 rb->current_read_offset, in scif_rb_count()
248 rb->size); in scif_rb_count()