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: Mauro Carvalho Chehab <mchehab@infradead.org>
diff --git a/drivers/media/video/videobuf-core.c b/drivers/media/video/videobuf-core.c
index aa402ab..f5c5ea8 100644
--- a/drivers/media/video/videobuf-core.c
+++ b/drivers/media/video/videobuf-core.c
@@ -108,23 +108,25 @@
 /* --------------------------------------------------------------------- */
 
 
-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;
-	q->dev     = dev;
-	q->type    = type;
-	q->field   = field;
-	q->msize   = msize;
-	q->ops     = ops;
+	q->irqlock   = irqlock;
+	q->dev       = dev;
+	q->type      = type;
+	q->field     = field;
+	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 @@
 	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_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);
 
diff --git a/drivers/media/video/videobuf-dma-sg.c b/drivers/media/video/videobuf-dma-sg.c
index a38efe1..8bb7fdd 100644
--- a/drivers/media/video/videobuf-dma-sg.c
+++ b/drivers/media/video/videobuf-dma-sg.c
@@ -695,8 +695,8 @@
 			 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);
 }
 
 /* --------------------------------------------------------------------- */
diff --git a/drivers/media/video/videobuf-vmalloc.c b/drivers/media/video/videobuf-vmalloc.c
index c9d6ae0..2e3689a 100644
--- a/drivers/media/video/videobuf-vmalloc.c
+++ b/drivers/media/video/videobuf-vmalloc.c
@@ -333,8 +333,8 @@
 			 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);