Lines Matching refs:ctx

33 	struct dvb_vb2_ctx *ctx = vb2_get_drv_priv(vq);
35 ctx->buf_cnt = *nbuffers;
37 sizes[0] = ctx->buf_siz;
44 dprintk(3, "[%s] count=%d, size=%d\n", ctx->name,
52 struct dvb_vb2_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
53 unsigned long size = ctx->buf_siz;
57 ctx->name, vb2_plane_size(vb, 0), size);
62 dprintk(3, "[%s]\n", ctx->name);
69 struct dvb_vb2_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
73 spin_lock_irqsave(&ctx->slock, flags);
74 list_add_tail(&buf->list, &ctx->dvb_q);
75 spin_unlock_irqrestore(&ctx->slock, flags);
77 dprintk(3, "[%s]\n", ctx->name);
82 struct dvb_vb2_ctx *ctx = vb2_get_drv_priv(vq);
84 dprintk(3, "[%s] count=%d\n", ctx->name, count);
90 struct dvb_vb2_ctx *ctx = vb2_get_drv_priv(vq);
94 dprintk(3, "[%s]\n", ctx->name);
96 spin_lock_irqsave(&ctx->slock, flags);
97 while (!list_empty(&ctx->dvb_q)) {
98 buf = list_entry(ctx->dvb_q.next,
103 spin_unlock_irqrestore(&ctx->slock, flags);
108 struct dvb_vb2_ctx *ctx = vb2_get_drv_priv(vq);
110 mutex_lock(&ctx->mutex);
111 dprintk(3, "[%s]\n", ctx->name);
116 struct dvb_vb2_ctx *ctx = vb2_get_drv_priv(vq);
118 if (mutex_is_locked(&ctx->mutex))
119 mutex_unlock(&ctx->mutex);
120 dprintk(3, "[%s]\n", ctx->name);
135 struct dvb_vb2_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
142 dprintk(3, "[%s]\n", ctx->name);
147 struct dvb_vb2_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
150 dprintk(3, "[%s]\n", ctx->name);
163 int dvb_vb2_init(struct dvb_vb2_ctx *ctx, const char *name, int nonblocking)
165 struct vb2_queue *q = &ctx->vb_q;
168 memset(ctx, 0, sizeof(struct dvb_vb2_ctx));
172 q->drv_priv = ctx;
180 ctx->state = DVB_VB2_STATE_NONE;
181 dprintk(1, "[%s] errno=%d\n", ctx->name, ret);
185 mutex_init(&ctx->mutex);
186 spin_lock_init(&ctx->slock);
187 INIT_LIST_HEAD(&ctx->dvb_q);
189 strscpy(ctx->name, name, DVB_VB2_NAME_MAX);
190 ctx->nonblocking = nonblocking;
191 ctx->state = DVB_VB2_STATE_INIT;
193 dprintk(3, "[%s]\n", ctx->name);
198 int dvb_vb2_release(struct dvb_vb2_ctx *ctx)
200 struct vb2_queue *q = (struct vb2_queue *)&ctx->vb_q;
202 if (ctx->state & DVB_VB2_STATE_INIT)
205 ctx->state = DVB_VB2_STATE_NONE;
206 dprintk(3, "[%s]\n", ctx->name);
211 int dvb_vb2_stream_on(struct dvb_vb2_ctx *ctx)
213 struct vb2_queue *q = &ctx->vb_q;
218 ctx->state = DVB_VB2_STATE_NONE;
219 dprintk(1, "[%s] errno=%d\n", ctx->name, ret);
222 ctx->state |= DVB_VB2_STATE_STREAMON;
223 dprintk(3, "[%s]\n", ctx->name);
228 int dvb_vb2_stream_off(struct dvb_vb2_ctx *ctx)
230 struct vb2_queue *q = (struct vb2_queue *)&ctx->vb_q;
233 ctx->state &= ~DVB_VB2_STATE_STREAMON;
236 ctx->state = DVB_VB2_STATE_NONE;
237 dprintk(1, "[%s] errno=%d\n", ctx->name, ret);
240 dprintk(3, "[%s]\n", ctx->name);
245 int dvb_vb2_is_streaming(struct dvb_vb2_ctx *ctx)
247 return (ctx->state & DVB_VB2_STATE_STREAMON);
250 int dvb_vb2_fill_buffer(struct dvb_vb2_ctx *ctx,
266 spin_lock_irqsave(&ctx->slock, flags);
268 ctx->flags |= *buffer_flags;
272 if (!ctx->buf) {
273 if (list_empty(&ctx->dvb_q)) {
275 ctx->name);
279 ctx->buf = list_entry(ctx->dvb_q.next,
281 ctx->remain = vb2_plane_size(&ctx->buf->vb, 0);
282 ctx->offset = 0;
285 if (!dvb_vb2_is_streaming(ctx)) {
286 vb2_buffer_done(&ctx->buf->vb, VB2_BUF_STATE_ERROR);
287 list_del(&ctx->buf->list);
288 ctx->buf = NULL;
293 ll = min(todo, ctx->remain);
294 vbuf = vb2_plane_vaddr(&ctx->buf->vb, 0);
295 memcpy(vbuf + ctx->offset, psrc, ll);
299 ctx->remain -= ll;
300 ctx->offset += ll;
302 if (ctx->remain == 0) {
303 vb2_buffer_done(&ctx->buf->vb, VB2_BUF_STATE_DONE);
304 list_del(&ctx->buf->list);
305 ctx->buf = NULL;
309 if (ctx->nonblocking && ctx->buf) {
310 vb2_set_plane_payload(&ctx->buf->vb, 0, ll);
311 vb2_buffer_done(&ctx->buf->vb, VB2_BUF_STATE_DONE);
312 list_del(&ctx->buf->list);
313 ctx->buf = NULL;
315 spin_unlock_irqrestore(&ctx->slock, flags);
318 dprintk(1, "[%s] %d bytes are dropped.\n", ctx->name, todo);
320 dprintk(3, "[%s]\n", ctx->name);
322 dprintk(3, "[%s] %d bytes are copied\n", ctx->name, len - todo);
326 int dvb_vb2_reqbufs(struct dvb_vb2_ctx *ctx, struct dmx_requestbuffers *req)
336 ctx->buf_siz = req->size;
337 ctx->buf_cnt = req->count;
338 ret = vb2_core_reqbufs(&ctx->vb_q, VB2_MEMORY_MMAP, 0, &req->count);
340 ctx->state = DVB_VB2_STATE_NONE;
341 dprintk(1, "[%s] count=%d size=%d errno=%d\n", ctx->name,
342 ctx->buf_cnt, ctx->buf_siz, ret);
345 ctx->state |= DVB_VB2_STATE_REQBUFS;
346 dprintk(3, "[%s] count=%d size=%d\n", ctx->name,
347 ctx->buf_cnt, ctx->buf_siz);
352 int dvb_vb2_querybuf(struct dvb_vb2_ctx *ctx, struct dmx_buffer *b)
354 struct vb2_queue *q = &ctx->vb_q;
358 dprintk(1, "[%s] invalid buffer index\n", ctx->name);
361 vb2_core_querybuf(&ctx->vb_q, vb2, b);
362 dprintk(3, "[%s] index=%d\n", ctx->name, b->index);
366 int dvb_vb2_expbuf(struct dvb_vb2_ctx *ctx, struct dmx_exportbuffer *exp)
368 struct vb2_queue *q = &ctx->vb_q;
371 ret = vb2_core_expbuf(&ctx->vb_q, &exp->fd, q->type, q->bufs[exp->index],
374 dprintk(1, "[%s] index=%d errno=%d\n", ctx->name,
378 dprintk(3, "[%s] index=%d fd=%d\n", ctx->name, exp->index, exp->fd);
383 int dvb_vb2_qbuf(struct dvb_vb2_ctx *ctx, struct dmx_buffer *b)
385 struct vb2_queue *q = &ctx->vb_q;
390 dprintk(1, "[%s] invalid buffer index\n", ctx->name);
393 ret = vb2_core_qbuf(&ctx->vb_q, vb2, b, NULL);
395 dprintk(1, "[%s] index=%d errno=%d\n", ctx->name,
399 dprintk(5, "[%s] index=%d\n", ctx->name, b->index);
404 int dvb_vb2_dqbuf(struct dvb_vb2_ctx *ctx, struct dmx_buffer *b)
409 ret = vb2_core_dqbuf(&ctx->vb_q, &b->index, b, ctx->nonblocking);
411 dprintk(1, "[%s] errno=%d\n", ctx->name, ret);
415 spin_lock_irqsave(&ctx->slock, flags);
416 b->count = ctx->count++;
417 b->flags = ctx->flags;
418 ctx->flags = 0;
419 spin_unlock_irqrestore(&ctx->slock, flags);
422 ctx->name, b->index, ctx->count, b->flags);
428 int dvb_vb2_mmap(struct dvb_vb2_ctx *ctx, struct vm_area_struct *vma)
432 ret = vb2_mmap(&ctx->vb_q, vma);
434 dprintk(1, "[%s] errno=%d\n", ctx->name, ret);
437 dprintk(3, "[%s] ret=%d\n", ctx->name, ret);
442 __poll_t dvb_vb2_poll(struct dvb_vb2_ctx *ctx, struct file *file,
445 dprintk(3, "[%s]\n", ctx->name);
446 return vb2_core_poll(&ctx->vb_q, file, wait);