Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d4cae5a5 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

V4L/DVB (6292): videobuf_core init always require callback implementation



In the past, videobuf_queue_init were used to initialize PCI DMA videobuffers.
This patch renames it, to avoid confusion with the previous kernel API, doing:
	s/videobuf_queue_init/void videobuf_queue_core_init/

Also, the operations is now part of the function parameter. The function will
also add a test if this is defined, otherwise producing BUG.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent d5f1b016
Loading
Loading
Loading
Loading
+14 −9
Original line number Diff line number Diff line
@@ -108,14 +108,15 @@ int videobuf_iolock(struct videobuf_queue* q, struct videobuf_buffer *vb,
/* --------------------------------------------------------------------- */


void videobuf_queue_init(struct videobuf_queue* q,
void videobuf_queue_core_init(struct videobuf_queue* q,
			 struct videobuf_queue_ops *ops,
			 void *dev,
			 spinlock_t *irqlock,
			 enum v4l2_buf_type type,
			 enum v4l2_field field,
			 unsigned int msize,
			 void *priv)
			 void *priv,
			 struct videobuf_qtype_ops *int_ops)
{
	memset(q,0,sizeof(*q));
	q->irqlock   = irqlock;
@@ -125,6 +126,7 @@ void videobuf_queue_init(struct videobuf_queue* q,
	q->msize     = msize;
	q->ops       = ops;
	q->priv_data = priv;
	q->int_ops   = int_ops;

	/* All buffer operations are mandatory */
	BUG_ON (!q->ops->buf_setup);
@@ -132,6 +134,9 @@ void videobuf_queue_init(struct videobuf_queue* q,
	BUG_ON (!q->ops->buf_queue);
	BUG_ON (!q->ops->buf_release);

	/* Having implementations for abstract methods are mandatory */
	BUG_ON (!q->int_ops);

	mutex_init(&q->lock);
	INIT_LIST_HEAD(&q->stream);
}
@@ -966,7 +971,7 @@ EXPORT_SYMBOL_GPL(videobuf_iolock);

EXPORT_SYMBOL_GPL(videobuf_alloc);

EXPORT_SYMBOL_GPL(videobuf_queue_init);
EXPORT_SYMBOL_GPL(videobuf_queue_core_init);
EXPORT_SYMBOL_GPL(videobuf_queue_cancel);
EXPORT_SYMBOL_GPL(videobuf_queue_is_busy);

+2 −2
Original line number Diff line number Diff line
@@ -695,8 +695,8 @@ void videobuf_queue_pci_init(struct videobuf_queue* q,
			 unsigned int msize,
			 void *priv)
{
	videobuf_queue_init(q, ops, dev, irqlock, type, field, msize, priv);
	q->int_ops=&pci_ops;
	videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize,
				 priv, &pci_ops);
}

/* --------------------------------------------------------------------- */
+2 −2
Original line number Diff line number Diff line
@@ -333,8 +333,8 @@ void videobuf_queue_vmalloc_init(struct videobuf_queue* q,
			 unsigned int msize,
			 void *priv)
{
	videobuf_queue_init(q, ops, dev, irqlock, type, field, msize, priv);
	q->int_ops=&qops;
	videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize,
				 priv, &qops);
}

EXPORT_SYMBOL_GPL(videobuf_queue_vmalloc_init);
+3 −2
Original line number Diff line number Diff line
@@ -181,14 +181,15 @@ int videobuf_iolock(struct videobuf_queue* q, struct videobuf_buffer *vb,

void *videobuf_alloc(struct videobuf_queue* q);

void videobuf_queue_init(struct videobuf_queue *q,
void videobuf_queue_core_init(struct videobuf_queue *q,
			 struct videobuf_queue_ops *ops,
			 void *dev,
			 spinlock_t *irqlock,
			 enum v4l2_buf_type type,
			 enum v4l2_field field,
			 unsigned int msize,
			 void *priv);
			 void *priv,
			 struct videobuf_qtype_ops *int_ops);
int  videobuf_queue_is_busy(struct videobuf_queue *q);
void videobuf_queue_cancel(struct videobuf_queue *q);