Lines Matching refs:bp
36 #define BUFFER_CHECK(bp) do { \ argument
37 if ((bp)->signature != BUFFER_SIG) { \
40 (bp),__FILE__,__LINE__); \
41 pvr2_buffer_describe(bp,"BadSig"); \
46 #define BUFFER_CHECK(bp) do {} while(0) argument
113 static void pvr2_buffer_describe(struct pvr2_buffer *bp,const char *msg) in pvr2_buffer_describe() argument
120 bp, in pvr2_buffer_describe()
121 (bp ? pvr2_buffer_state_decode(bp->state) : "(invalid)"), in pvr2_buffer_describe()
122 (bp ? bp->id : 0), in pvr2_buffer_describe()
123 (bp ? bp->status : 0), in pvr2_buffer_describe()
124 (bp ? bp->stream : NULL), in pvr2_buffer_describe()
125 (bp ? bp->purb : NULL), in pvr2_buffer_describe()
126 (bp ? bp->signature : 0)); in pvr2_buffer_describe()
130 static void pvr2_buffer_remove(struct pvr2_buffer *bp) in pvr2_buffer_remove() argument
135 struct pvr2_stream *sp = bp->stream; in pvr2_buffer_remove()
136 switch (bp->state) { in pvr2_buffer_remove()
140 ccnt = bp->max_count; in pvr2_buffer_remove()
145 ccnt = bp->max_count; in pvr2_buffer_remove()
150 ccnt = bp->used_count; in pvr2_buffer_remove()
155 list_del_init(&bp->list_overhead); in pvr2_buffer_remove()
161 pvr2_buffer_state_decode(bp->state),*bcnt,*cnt); in pvr2_buffer_remove()
162 bp->state = pvr2_buffer_state_none; in pvr2_buffer_remove()
165 static void pvr2_buffer_set_none(struct pvr2_buffer *bp) in pvr2_buffer_set_none() argument
169 BUFFER_CHECK(bp); in pvr2_buffer_set_none()
170 sp = bp->stream; in pvr2_buffer_set_none()
173 bp, in pvr2_buffer_set_none()
174 pvr2_buffer_state_decode(bp->state), in pvr2_buffer_set_none()
177 pvr2_buffer_remove(bp); in pvr2_buffer_set_none()
181 static int pvr2_buffer_set_ready(struct pvr2_buffer *bp) in pvr2_buffer_set_ready() argument
186 BUFFER_CHECK(bp); in pvr2_buffer_set_ready()
187 sp = bp->stream; in pvr2_buffer_set_ready()
190 bp, in pvr2_buffer_set_ready()
191 pvr2_buffer_state_decode(bp->state), in pvr2_buffer_set_ready()
195 pvr2_buffer_remove(bp); in pvr2_buffer_set_ready()
196 list_add_tail(&bp->list_overhead,&sp->ready_list); in pvr2_buffer_set_ready()
197 bp->state = pvr2_buffer_state_ready; in pvr2_buffer_set_ready()
199 sp->r_bcount += bp->used_count; in pvr2_buffer_set_ready()
203 pvr2_buffer_state_decode(bp->state), in pvr2_buffer_set_ready()
209 static void pvr2_buffer_set_idle(struct pvr2_buffer *bp) in pvr2_buffer_set_idle() argument
213 BUFFER_CHECK(bp); in pvr2_buffer_set_idle()
214 sp = bp->stream; in pvr2_buffer_set_idle()
217 bp, in pvr2_buffer_set_idle()
218 pvr2_buffer_state_decode(bp->state), in pvr2_buffer_set_idle()
221 pvr2_buffer_remove(bp); in pvr2_buffer_set_idle()
222 list_add_tail(&bp->list_overhead,&sp->idle_list); in pvr2_buffer_set_idle()
223 bp->state = pvr2_buffer_state_idle; in pvr2_buffer_set_idle()
225 sp->i_bcount += bp->max_count; in pvr2_buffer_set_idle()
229 pvr2_buffer_state_decode(bp->state), in pvr2_buffer_set_idle()
234 static void pvr2_buffer_set_queued(struct pvr2_buffer *bp) in pvr2_buffer_set_queued() argument
238 BUFFER_CHECK(bp); in pvr2_buffer_set_queued()
239 sp = bp->stream; in pvr2_buffer_set_queued()
242 bp, in pvr2_buffer_set_queued()
243 pvr2_buffer_state_decode(bp->state), in pvr2_buffer_set_queued()
246 pvr2_buffer_remove(bp); in pvr2_buffer_set_queued()
247 list_add_tail(&bp->list_overhead,&sp->queued_list); in pvr2_buffer_set_queued()
248 bp->state = pvr2_buffer_state_queued; in pvr2_buffer_set_queued()
250 sp->q_bcount += bp->max_count; in pvr2_buffer_set_queued()
254 pvr2_buffer_state_decode(bp->state), in pvr2_buffer_set_queued()
259 static void pvr2_buffer_wipe(struct pvr2_buffer *bp) in pvr2_buffer_wipe() argument
261 if (bp->state == pvr2_buffer_state_queued) { in pvr2_buffer_wipe()
262 usb_kill_urb(bp->purb); in pvr2_buffer_wipe()
266 static int pvr2_buffer_init(struct pvr2_buffer *bp, in pvr2_buffer_init() argument
270 memset(bp,0,sizeof(*bp)); in pvr2_buffer_init()
271 bp->signature = BUFFER_SIG; in pvr2_buffer_init()
272 bp->id = id; in pvr2_buffer_init()
274 "/*---TRACE_FLOW---*/ bufferInit %p stream=%p",bp,sp); in pvr2_buffer_init()
275 bp->stream = sp; in pvr2_buffer_init()
276 bp->state = pvr2_buffer_state_none; in pvr2_buffer_init()
277 INIT_LIST_HEAD(&bp->list_overhead); in pvr2_buffer_init()
278 bp->purb = usb_alloc_urb(0,GFP_KERNEL); in pvr2_buffer_init()
279 if (! bp->purb) return -ENOMEM; in pvr2_buffer_init()
281 pvr2_buffer_describe(bp,"create"); in pvr2_buffer_init()
286 static void pvr2_buffer_done(struct pvr2_buffer *bp) in pvr2_buffer_done() argument
289 pvr2_buffer_describe(bp,"delete"); in pvr2_buffer_done()
291 pvr2_buffer_wipe(bp); in pvr2_buffer_done()
292 pvr2_buffer_set_none(bp); in pvr2_buffer_done()
293 bp->signature = 0; in pvr2_buffer_done()
294 bp->stream = NULL; in pvr2_buffer_done()
295 usb_free_urb(bp->purb); in pvr2_buffer_done()
297 " bufferDone %p",bp); in pvr2_buffer_done()
332 struct pvr2_buffer *bp; in pvr2_stream_buffer_count() local
333 bp = kmalloc(sizeof(*bp),GFP_KERNEL); in pvr2_stream_buffer_count()
334 if (!bp) return -ENOMEM; in pvr2_stream_buffer_count()
335 ret = pvr2_buffer_init(bp,sp,sp->buffer_total_count); in pvr2_stream_buffer_count()
337 kfree(bp); in pvr2_stream_buffer_count()
340 sp->buffers[sp->buffer_total_count] = bp; in pvr2_stream_buffer_count()
342 pvr2_buffer_set_idle(bp); in pvr2_stream_buffer_count()
346 struct pvr2_buffer *bp; in pvr2_stream_buffer_count() local
347 bp = sp->buffers[sp->buffer_total_count - 1]; in pvr2_stream_buffer_count()
351 pvr2_buffer_done(bp); in pvr2_stream_buffer_count()
352 kfree(bp); in pvr2_stream_buffer_count()
371 struct pvr2_buffer *bp; in pvr2_stream_achieve_buffer_count() local
387 bp = sp->buffers[sp->buffer_total_count - (cnt + 1)]; in pvr2_stream_achieve_buffer_count()
388 if (bp->state != pvr2_buffer_state_idle) break; in pvr2_stream_achieve_buffer_count()
437 struct pvr2_buffer *bp = urb->context; in buffer_complete() local
440 BUFFER_CHECK(bp); in buffer_complete()
441 sp = bp->stream; in buffer_complete()
442 bp->used_count = 0; in buffer_complete()
443 bp->status = 0; in buffer_complete()
446 bp,urb->status,urb->actual_length); in buffer_complete()
454 bp->used_count = urb->actual_length; in buffer_complete()
472 bp->status = urb->status; in buffer_complete()
475 pvr2_buffer_set_ready(bp); in buffer_complete()
592 struct pvr2_buffer *bp; in pvr2_stream_kill() local
595 while ((bp = pvr2_stream_get_ready_buffer(sp)) != NULL) { in pvr2_stream_kill()
596 pvr2_buffer_set_idle(bp); in pvr2_stream_kill()
604 int pvr2_buffer_queue(struct pvr2_buffer *bp) in pvr2_buffer_queue() argument
613 if (!bp) return -EINVAL; in pvr2_buffer_queue()
614 sp = bp->stream; in pvr2_buffer_queue()
616 pvr2_buffer_wipe(bp); in pvr2_buffer_queue()
621 pvr2_buffer_set_queued(bp); in pvr2_buffer_queue()
623 for (idx = 0; idx < (bp->max_count) / 4; idx++) { in pvr2_buffer_queue()
624 val = bp->id << 24; in pvr2_buffer_queue()
626 ((unsigned int *)(bp->ptr))[idx] = val; in pvr2_buffer_queue()
629 bp->status = -EINPROGRESS; in pvr2_buffer_queue()
630 usb_fill_bulk_urb(bp->purb, // struct urb *urb in pvr2_buffer_queue()
634 bp->ptr, // void *transfer_buffer in pvr2_buffer_queue()
635 bp->max_count, // int buffer_length in pvr2_buffer_queue()
637 bp); in pvr2_buffer_queue()
638 usb_submit_urb(bp->purb,GFP_KERNEL); in pvr2_buffer_queue()
643 int pvr2_buffer_set_buffer(struct pvr2_buffer *bp,void *ptr,unsigned int cnt) in pvr2_buffer_set_buffer() argument
648 if (!bp) return -EINVAL; in pvr2_buffer_set_buffer()
649 sp = bp->stream; in pvr2_buffer_set_buffer()
652 if (bp->state != pvr2_buffer_state_idle) { in pvr2_buffer_set_buffer()
655 bp->ptr = ptr; in pvr2_buffer_set_buffer()
656 bp->stream->i_bcount -= bp->max_count; in pvr2_buffer_set_buffer()
657 bp->max_count = cnt; in pvr2_buffer_set_buffer()
658 bp->stream->i_bcount += bp->max_count; in pvr2_buffer_set_buffer()
664 bp->stream->i_bcount,bp->stream->i_count); in pvr2_buffer_set_buffer()
671 unsigned int pvr2_buffer_get_count(struct pvr2_buffer *bp) in pvr2_buffer_get_count() argument
673 return bp->used_count; in pvr2_buffer_get_count()
676 int pvr2_buffer_get_status(struct pvr2_buffer *bp) in pvr2_buffer_get_status() argument
678 return bp->status; in pvr2_buffer_get_status()
681 int pvr2_buffer_get_id(struct pvr2_buffer *bp) in pvr2_buffer_get_id() argument
683 return bp->id; in pvr2_buffer_get_id()