Lines Matching refs:bp

22 #define BUFFER_CHECK(bp) do { \  argument
23 if ((bp)->signature != BUFFER_SIG) { \
26 (bp), __FILE__, __LINE__); \
27 pvr2_buffer_describe(bp, "BadSig"); \
32 #define BUFFER_CHECK(bp) do {} while (0) argument
99 static void pvr2_buffer_describe(struct pvr2_buffer *bp, const char *msg) in pvr2_buffer_describe() argument
105 bp, in pvr2_buffer_describe()
106 (bp ? pvr2_buffer_state_decode(bp->state) : "(invalid)"), in pvr2_buffer_describe()
107 (bp ? bp->id : 0), in pvr2_buffer_describe()
108 (bp ? bp->status : 0), in pvr2_buffer_describe()
109 (bp ? bp->stream : NULL), in pvr2_buffer_describe()
110 (bp ? bp->purb : NULL), in pvr2_buffer_describe()
111 (bp ? bp->signature : 0)); in pvr2_buffer_describe()
115 static void pvr2_buffer_remove(struct pvr2_buffer *bp) in pvr2_buffer_remove() argument
120 struct pvr2_stream *sp = bp->stream; in pvr2_buffer_remove()
121 switch (bp->state) { in pvr2_buffer_remove()
125 ccnt = bp->max_count; in pvr2_buffer_remove()
130 ccnt = bp->max_count; in pvr2_buffer_remove()
135 ccnt = bp->used_count; in pvr2_buffer_remove()
140 list_del_init(&bp->list_overhead); in pvr2_buffer_remove()
145 pvr2_buffer_state_decode(bp->state), *bcnt, *cnt); in pvr2_buffer_remove()
146 bp->state = pvr2_buffer_state_none; in pvr2_buffer_remove()
149 static void pvr2_buffer_set_none(struct pvr2_buffer *bp) in pvr2_buffer_set_none() argument
153 BUFFER_CHECK(bp); in pvr2_buffer_set_none()
154 sp = bp->stream; in pvr2_buffer_set_none()
157 bp, in pvr2_buffer_set_none()
158 pvr2_buffer_state_decode(bp->state), in pvr2_buffer_set_none()
161 pvr2_buffer_remove(bp); in pvr2_buffer_set_none()
165 static int pvr2_buffer_set_ready(struct pvr2_buffer *bp) in pvr2_buffer_set_ready() argument
170 BUFFER_CHECK(bp); in pvr2_buffer_set_ready()
171 sp = bp->stream; in pvr2_buffer_set_ready()
174 bp, in pvr2_buffer_set_ready()
175 pvr2_buffer_state_decode(bp->state), in pvr2_buffer_set_ready()
179 pvr2_buffer_remove(bp); in pvr2_buffer_set_ready()
180 list_add_tail(&bp->list_overhead, &sp->ready_list); in pvr2_buffer_set_ready()
181 bp->state = pvr2_buffer_state_ready; in pvr2_buffer_set_ready()
183 sp->r_bcount += bp->used_count; in pvr2_buffer_set_ready()
186 pvr2_buffer_state_decode(bp->state), in pvr2_buffer_set_ready()
192 static void pvr2_buffer_set_idle(struct pvr2_buffer *bp) in pvr2_buffer_set_idle() argument
196 BUFFER_CHECK(bp); in pvr2_buffer_set_idle()
197 sp = bp->stream; in pvr2_buffer_set_idle()
200 bp, in pvr2_buffer_set_idle()
201 pvr2_buffer_state_decode(bp->state), in pvr2_buffer_set_idle()
204 pvr2_buffer_remove(bp); in pvr2_buffer_set_idle()
205 list_add_tail(&bp->list_overhead, &sp->idle_list); in pvr2_buffer_set_idle()
206 bp->state = pvr2_buffer_state_idle; in pvr2_buffer_set_idle()
208 sp->i_bcount += bp->max_count; in pvr2_buffer_set_idle()
211 pvr2_buffer_state_decode(bp->state), in pvr2_buffer_set_idle()
216 static void pvr2_buffer_set_queued(struct pvr2_buffer *bp) in pvr2_buffer_set_queued() argument
220 BUFFER_CHECK(bp); in pvr2_buffer_set_queued()
221 sp = bp->stream; in pvr2_buffer_set_queued()
224 bp, in pvr2_buffer_set_queued()
225 pvr2_buffer_state_decode(bp->state), in pvr2_buffer_set_queued()
228 pvr2_buffer_remove(bp); in pvr2_buffer_set_queued()
229 list_add_tail(&bp->list_overhead, &sp->queued_list); in pvr2_buffer_set_queued()
230 bp->state = pvr2_buffer_state_queued; in pvr2_buffer_set_queued()
232 sp->q_bcount += bp->max_count; in pvr2_buffer_set_queued()
235 pvr2_buffer_state_decode(bp->state), in pvr2_buffer_set_queued()
240 static void pvr2_buffer_wipe(struct pvr2_buffer *bp) in pvr2_buffer_wipe() argument
242 if (bp->state == pvr2_buffer_state_queued) { in pvr2_buffer_wipe()
243 usb_kill_urb(bp->purb); in pvr2_buffer_wipe()
247 static int pvr2_buffer_init(struct pvr2_buffer *bp, in pvr2_buffer_init() argument
251 memset(bp, 0, sizeof(*bp)); in pvr2_buffer_init()
252 bp->signature = BUFFER_SIG; in pvr2_buffer_init()
253 bp->id = id; in pvr2_buffer_init()
255 "/*---TRACE_FLOW---*/ bufferInit %p stream=%p", bp, sp); in pvr2_buffer_init()
256 bp->stream = sp; in pvr2_buffer_init()
257 bp->state = pvr2_buffer_state_none; in pvr2_buffer_init()
258 INIT_LIST_HEAD(&bp->list_overhead); in pvr2_buffer_init()
259 bp->purb = usb_alloc_urb(0, GFP_KERNEL); in pvr2_buffer_init()
260 if (! bp->purb) return -ENOMEM; in pvr2_buffer_init()
262 pvr2_buffer_describe(bp, "create"); in pvr2_buffer_init()
267 static void pvr2_buffer_done(struct pvr2_buffer *bp) in pvr2_buffer_done() argument
270 pvr2_buffer_describe(bp, "delete"); in pvr2_buffer_done()
272 pvr2_buffer_wipe(bp); in pvr2_buffer_done()
273 pvr2_buffer_set_none(bp); in pvr2_buffer_done()
274 bp->signature = 0; in pvr2_buffer_done()
275 bp->stream = NULL; in pvr2_buffer_done()
276 usb_free_urb(bp->purb); in pvr2_buffer_done()
278 bp); in pvr2_buffer_done()
313 struct pvr2_buffer *bp; in pvr2_stream_buffer_count() local
314 bp = kmalloc(sizeof(*bp), GFP_KERNEL); in pvr2_stream_buffer_count()
315 if (!bp) return -ENOMEM; in pvr2_stream_buffer_count()
316 ret = pvr2_buffer_init(bp, sp, sp->buffer_total_count); in pvr2_stream_buffer_count()
318 kfree(bp); in pvr2_stream_buffer_count()
321 sp->buffers[sp->buffer_total_count] = bp; in pvr2_stream_buffer_count()
323 pvr2_buffer_set_idle(bp); in pvr2_stream_buffer_count()
327 struct pvr2_buffer *bp; in pvr2_stream_buffer_count() local
328 bp = sp->buffers[sp->buffer_total_count - 1]; in pvr2_stream_buffer_count()
332 pvr2_buffer_done(bp); in pvr2_stream_buffer_count()
333 kfree(bp); in pvr2_stream_buffer_count()
352 struct pvr2_buffer *bp; in pvr2_stream_achieve_buffer_count() local
367 bp = sp->buffers[sp->buffer_total_count - (cnt + 1)]; in pvr2_stream_achieve_buffer_count()
368 if (bp->state != pvr2_buffer_state_idle) break; in pvr2_stream_achieve_buffer_count()
417 struct pvr2_buffer *bp = urb->context; in buffer_complete() local
420 BUFFER_CHECK(bp); in buffer_complete()
421 sp = bp->stream; in buffer_complete()
422 bp->used_count = 0; in buffer_complete()
423 bp->status = 0; in buffer_complete()
426 bp, urb->status, urb->actual_length); in buffer_complete()
434 bp->used_count = urb->actual_length; in buffer_complete()
451 bp->status = urb->status; in buffer_complete()
454 pvr2_buffer_set_ready(bp); in buffer_complete()
575 struct pvr2_buffer *bp; in pvr2_stream_kill() local
579 while ((bp = pvr2_stream_get_ready_buffer(sp)) != NULL) { in pvr2_stream_kill()
580 pvr2_buffer_set_idle(bp); in pvr2_stream_kill()
589 int pvr2_buffer_queue(struct pvr2_buffer *bp) in pvr2_buffer_queue() argument
598 if (!bp) return -EINVAL; in pvr2_buffer_queue()
599 sp = bp->stream; in pvr2_buffer_queue()
602 pvr2_buffer_wipe(bp); in pvr2_buffer_queue()
607 pvr2_buffer_set_queued(bp); in pvr2_buffer_queue()
609 for (idx = 0; idx < (bp->max_count) / 4; idx++) { in pvr2_buffer_queue()
610 val = bp->id << 24; in pvr2_buffer_queue()
612 ((unsigned int *)(bp->ptr))[idx] = val; in pvr2_buffer_queue()
615 bp->status = -EINPROGRESS; in pvr2_buffer_queue()
616 usb_fill_bulk_urb(bp->purb, // struct urb *urb in pvr2_buffer_queue()
620 bp->ptr, // void *transfer_buffer in pvr2_buffer_queue()
621 bp->max_count, // int buffer_length in pvr2_buffer_queue()
623 bp); in pvr2_buffer_queue()
624 usb_submit_urb(bp->purb, GFP_KERNEL); in pvr2_buffer_queue()
630 int pvr2_buffer_set_buffer(struct pvr2_buffer *bp, void *ptr, unsigned int cnt) in pvr2_buffer_set_buffer() argument
635 if (!bp) return -EINVAL; in pvr2_buffer_set_buffer()
636 sp = bp->stream; in pvr2_buffer_set_buffer()
640 if (bp->state != pvr2_buffer_state_idle) { in pvr2_buffer_set_buffer()
643 bp->ptr = ptr; in pvr2_buffer_set_buffer()
644 bp->stream->i_bcount -= bp->max_count; in pvr2_buffer_set_buffer()
645 bp->max_count = cnt; in pvr2_buffer_set_buffer()
646 bp->stream->i_bcount += bp->max_count; in pvr2_buffer_set_buffer()
651 bp->stream->i_bcount, bp->stream->i_count); in pvr2_buffer_set_buffer()
659 unsigned int pvr2_buffer_get_count(struct pvr2_buffer *bp) in pvr2_buffer_get_count() argument
661 return bp->used_count; in pvr2_buffer_get_count()
664 int pvr2_buffer_get_status(struct pvr2_buffer *bp) in pvr2_buffer_get_status() argument
666 return bp->status; in pvr2_buffer_get_status()
669 int pvr2_buffer_get_id(struct pvr2_buffer *bp) in pvr2_buffer_get_id() argument
671 return bp->id; in pvr2_buffer_get_id()