From: Yusuf Caglar Akyuz <cag...@bilkon-kontrol.com.tr>

This commit fixes build errors for V4l2 driver previously ported from
2.6.10 tree.

Signed-off-by: Yusuf Caglar Akyuz <cag...@bilkon-kontrol.com.tr>
---
 drivers/media/video/davinci/davinci_display.c |   90 +++++++++++++------------
 include/media/davinci/davinci_display.h       |    3 +-
 2 files changed, 49 insertions(+), 44 deletions(-)

diff --git a/drivers/media/video/davinci/davinci_display.c 
b/drivers/media/video/davinci/davinci_display.c
index 64b6970..3a7a074 100644
--- a/drivers/media/video/davinci/davinci_display.c
+++ b/drivers/media/video/davinci/davinci_display.c
@@ -17,7 +17,7 @@
  */
 /* davinci_display.c */
 
-/*#define DEBUG */
+#define DEBUG
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/module.h>
@@ -27,12 +27,16 @@
 #include <linux/string.h>
 #include <linux/videodev.h>
 #include <linux/videodev2.h>
+#include <media/v4l2-ioctl.h>
 #include <linux/wait.h>
 #include <linux/time.h>
 #include <linux/device.h>
-#include <asm/irq.h>
-#include <asm/page.h>
-#include <asm/arch/cpu.h>
+#include <linux/irq.h>
+#include <linux/mm.h>
+#include <linux/platform_device.h>
+#include <linux/mutex.h>
+#include <asm/pgtable.h>
+#include <mach/cputype.h>
 #include <media/davinci/davinci_enc.h>
 #include <media/davinci/davinci_display.h>
 
@@ -112,7 +116,8 @@ static inline unsigned long davinci_alloc_buffer(unsigned 
int buf_size)
        if (mem) {
                unsigned long adr = (unsigned long)mem;
                while (size > 0) {
-                       SetPageReserved(virt_to_page(adr));
+                       /* FIXME: SetPageReserved alternative ??? */
+                       //SetPageReserved(virt_to_page(adr));
                        adr += PAGE_SIZE;
                        size -= PAGE_SIZE;
                }
@@ -133,7 +138,8 @@ static inline void davinci_free_buffer(unsigned long addr,
        adr = addr;
        size = PAGE_SIZE << (get_order(buf_size));
        while (size > 0) {
-               ClearPageReserved(virt_to_page(adr));
+               /* FIXME: ClearPageReserved alternative ??? */
+               //ClearPageReserved(virt_to_page(adr));
                adr += PAGE_SIZE;
                size -= PAGE_SIZE;
        }
@@ -185,13 +191,13 @@ static int davinci_buffer_prepare(struct videobuf_queue 
*q,
        dev_dbg(davinci_display_dev, "<davinci_buffer_prepare>\n");
 
        /* If buffer is not initialized, initialize it */
-       if (STATE_NEEDS_INIT == vb->state) {
+       if (VIDEOBUF_NEEDS_INIT == vb->state) {
                vb->width = davinci_dm.mode_info.xres;
                vb->height = davinci_dm.mode_info.yres;
                vb->size = vb->width * vb->height;
                vb->field = field;
        }
-       vb->state = STATE_PREPARED;
+       vb->state = VIDEOBUF_PREPARED;
        /* if user pointer memory mechanism is used, get the physical
         * address of the buffer
         */
@@ -281,7 +287,7 @@ static void davinci_buffer_queue(struct videobuf_queue *q,
        /* add the buffer to the DMA queue */
        list_add_tail(&vb->queue, &layer->dma_queue);
        /* Change state of the buffer */
-       vb->state = STATE_QUEUED;
+       vb->state = VIDEOBUF_QUEUED;
        dev_dbg(davinci_display_dev, "</davinci_buffer_queue>\n");
 }
 
@@ -313,7 +319,7 @@ static void davinci_buffer_release(struct videobuf_queue *q,
                davinci_free_buffer(layer->fbuffers[vb->i], buf_size);
                layer->fbuffers[vb->i] = 0;
        }
-       vb->state = STATE_NEEDS_INIT;
+       vb->state = VIDEOBUF_NEEDS_INIT;
        dev_dbg(davinci_display_dev, "</davinci_buffer_release>\n");
 }
 
@@ -322,7 +328,7 @@ static struct videobuf_queue_ops video_qops = {
        .buf_prepare = davinci_buffer_prepare,
        .buf_queue = davinci_buffer_queue,
        .buf_release = davinci_buffer_release,
-       .buf_config = davinci_buffer_config,
+       //.buf_config = davinci_buffer_config,
 };
 
 static u8 layer_first_int = 1;
@@ -359,7 +365,7 @@ static void davinci_display_isr(unsigned int event, void 
*dispObj)
                                /* Mark status of the curFrm to
                                 * done and unlock semaphore on it */
                                layer->curFrm->ts = timevalue;
-                               layer->curFrm->state = STATE_DONE;
+                               layer->curFrm->state = VIDEOBUF_DONE;
                                wake_up_interruptible(&layer->curFrm->done);
                                /* Make curFrm pointing to nextFrm */
                                layer->curFrm = layer->nextFrm;
@@ -371,7 +377,7 @@ static void davinci_display_isr(unsigned int event, void 
*dispObj)
                        /* Remove that buffer from the buffer queue */
                        list_del(&layer->nextFrm->queue);
                        /* Mark status of the buffer as active */
-                       layer->nextFrm->state = STATE_ACTIVE;
+                       layer->nextFrm->state = VIDEOBUF_ACTIVE;
                        /* Set top and bottom field addresses in
                           VPIF registers */
                        addr = layer->curFrm->boff;
@@ -419,7 +425,7 @@ static void davinci_display_isr(unsigned int event, void 
*dispObj)
                                /* Change status of the curFrm */
                                dev_dbg(davinci_display_dev,
                                        "Done with this video buffer\n");
-                               layer->curFrm->state = STATE_DONE;
+                               layer->curFrm->state = VIDEOBUF_DONE;
                                /* unlock semaphore on curFrm */
                                wake_up_interruptible(&layer->curFrm->done);
                                /* Make curFrm pointing to
@@ -448,7 +454,7 @@ static void davinci_display_isr(unsigned int event, void 
*dispObj)
 
                                /* Mark state of the frame
                                   to active */
-                               layer->nextFrm->state = STATE_ACTIVE;
+                               layer->nextFrm->state = VIDEOBUF_ACTIVE;
                                addr = layer->nextFrm->boff;
                                davinci_disp_start_layer(layer->layer_info.id,
                                                         addr);
@@ -675,7 +681,7 @@ static int davinci_disp_check_window_params(struct 
v4l2_rect *c)
  * This function will provide different V4L2 commands.This function can be
  * used to configure driver or get status of driver as per command passed
  * by application */
-static int davinci_doioctl(struct inode *inode, struct file *file,
+static int davinci_doioctl(struct file *file,
                           unsigned int cmd, unsigned long arg)
 {
        int ret = 0;
@@ -1071,15 +1077,15 @@ static int davinci_doioctl(struct inode *inode, struct 
file *file,
                        }
                        /* Initialize videobuf queue as per the
                           buffer type */
-                       videobuf_queue_init(&layer->buffer_queue,
+                       videobuf_queue_dma_contig_init(&layer->buffer_queue,
                                            &video_qops, NULL,
                                            &layer->irqlock,
                                            V4L2_BUF_TYPE_VIDEO_OUTPUT,
                                            layer->pix_fmt.field,
                                            sizeof(struct videobuf_buffer), fh);
                        /* Set buffer to Linear buffer */
-                       videobuf_set_buftype(&layer->buffer_queue,
-                                            VIDEOBUF_BUF_LINEAR);
+                       /*videobuf_set_buftype(&layer->buffer_queue,
+                                            VIDEOBUF_BUF_LINEAR);*/
                        /* Set io allowed member of file handle to
                         * TRUE */
                        fh->io_allowed = 1;
@@ -1124,18 +1130,18 @@ static int davinci_doioctl(struct inode *inode, struct 
file *file,
                        }
                        /* bufferqueue is empty store buffer address
                         *  in VPBE registers */
-                       down(&layer->buffer_queue.lock);
+                       mutex_lock(&layer->buffer_queue.vb_lock);
                        tbuf = *(struct v4l2_buffer *)arg;
                        buf1 = layer->buffer_queue.bufs[tbuf.index];
                        if (buf1->memory != tbuf.memory) {
                                dev_err(davinci_display_dev,
                                        "invalid buffer type\n");
-                               up(&layer->buffer_queue.lock);
+                               mutex_unlock(&layer->buffer_queue.vb_lock);
                                return -EINVAL;
                        }
-                       if ((buf1->state == STATE_QUEUED) ||
-                           (buf1->state == STATE_ACTIVE)) {
-                               up(&layer->buffer_queue.lock);
+                       if ((buf1->state == VIDEOBUF_QUEUED) ||
+                           (buf1->state == VIDEOBUF_ACTIVE)) {
+                               mutex_unlock(&layer->buffer_queue.vb_lock);
                                dev_err(davinci_display_dev, "invalid state\n");
                                return -EINVAL;
                        }
@@ -1143,7 +1149,7 @@ static int davinci_doioctl(struct inode *inode, struct 
file *file,
                        switch (buf1->memory) {
                        case V4L2_MEMORY_MMAP:
                                if (buf1->baddr == 0) {
-                                       up(&layer->buffer_queue.lock);
+                                       
mutex_unlock(&layer->buffer_queue.vb_lock);
                                        dev_err(davinci_display_dev,
                                                "No Buffer address\n");
                                        return -EINVAL;
@@ -1151,12 +1157,12 @@ static int davinci_doioctl(struct inode *inode, struct 
file *file,
                                break;
                        case V4L2_MEMORY_USERPTR:
                                if (tbuf.length < buf1->bsize) {
-                                       up(&layer->buffer_queue.lock);
+                                       
mutex_unlock(&layer->buffer_queue.vb_lock);
                                        dev_err(davinci_display_dev,
                                                "No Buffer address\n");
                                        return -EINVAL;
                                }
-                               if ((STATE_NEEDS_INIT != buf1->state)
+                               if ((VIDEOBUF_NEEDS_INIT != buf1->state)
                                    && (buf1->baddr != tbuf.m.userptr))
                                        davinci_buffer_release(&layer->
                                                               buffer_queue,
@@ -1164,7 +1170,7 @@ static int davinci_doioctl(struct inode *inode, struct 
file *file,
                                buf1->baddr = tbuf.m.userptr;
                                break;
                        default:
-                               up(&layer->buffer_queue.lock);
+                               mutex_unlock(&layer->buffer_queue.vb_lock);
                                dev_err(davinci_display_dev,
                                        "Unknow Buffer type \n");
                                return -EINVAL;
@@ -1174,7 +1180,7 @@ static int davinci_doioctl(struct inode *inode, struct 
file *file,
                            davinci_buffer_prepare(&layer->buffer_queue,
                                                   buf1,
                                                   layer->buffer_queue.field);
-                       buf1->state = STATE_ACTIVE;
+                       buf1->state = VIDEOBUF_ACTIVE;
                        addr = buf1->boff;
                        layer->nextFrm = buf1;
 
@@ -1182,7 +1188,7 @@ static int davinci_doioctl(struct inode *inode, struct 
file *file,
                        local_irq_restore(flags);
                        list_add_tail(&buf1->stream,
                                      &(layer->buffer_queue.stream));
-                       up(&layer->buffer_queue.lock);
+                       mutex_unlock(&layer->buffer_queue.vb_lock);
                        break;
                }
 
@@ -1278,7 +1284,7 @@ static int davinci_doioctl(struct inode *inode, struct 
file *file,
                        /* Remove buffer from the buffer queue */
                        list_del(&layer->curFrm->queue);
                        /* Mark state of the current frame to active */
-                       layer->curFrm->state = STATE_ACTIVE;
+                       layer->curFrm->state = VIDEOBUF_ACTIVE;
                        /* Initialize field_id and started member */
 
                        layer->field_id = 0;
@@ -1338,14 +1344,14 @@ static int davinci_doioctl(struct inode *inode, struct 
file *file,
 /*
  * ======== davinci_ioctl ========*/
 /* Calls davinci_doioctl function */
-static int davinci_ioctl(struct inode *inode, struct file *file,
+static long davinci_ioctl(struct file *file,
                         unsigned int cmd, unsigned long arg)
 {
        int ret;
        dev_dbg(davinci_display_dev, "Start of davinci ioctl\n");
-       ret = video_usercopy(inode, file, cmd, arg, (void *)davinci_doioctl);
+       ret = video_usercopy(file, cmd, arg, (void *)davinci_doioctl);
        if ((ret >= 0) && (VIDIOC_S_FMT == cmd || VIDIOC_TRY_FMT == cmd)) {
-               ret = video_usercopy(inode, file, VIDIOC_G_FMT,
+               ret = video_usercopy(file, VIDIOC_G_FMT,
                                     arg, (void *)davinci_doioctl);
        }
        dev_dbg(davinci_display_dev, "</davinci_ioctl>\n");
@@ -1425,9 +1431,9 @@ static int davinci_config_layer(enum 
davinci_display_device_id id)
  *=====davinci_open===== */
 /* It creates object of file handle structure and stores it in private_data
  * member of filepointer */
-static int davinci_open(struct inode *inode, struct file *filep)
+static int davinci_open(struct file *filep)
 {
-       int minor = iminor(inode);
+       int minor = iminor(filep->f_path.dentry->d_inode);
        int found = -1;
        int i = 0;
        struct display_obj *layer;
@@ -1487,7 +1493,7 @@ static int davinci_open(struct inode *inode, struct file 
*filep)
  *=====davinci_release=====*/
 /* This function deletes buffer queue, frees the buffers and the davinci
    display file * handle */
-static int davinci_release(struct inode *inode, struct file *filep)
+static int davinci_release(struct file *filep)
 {
        /* Get the layer object and file handle object */
        struct davinci_fh *fh = filep->private_data;
@@ -1539,19 +1545,17 @@ static void davinci_platform_release(struct device
        /* This is called when the reference count goes to zero */
 }
 
-static struct file_operations davinci_fops = {
+static struct v4l2_file_operations davinci_fops = {
        .owner = THIS_MODULE,
        .open = davinci_open,
        .release = davinci_release,
        .ioctl = davinci_ioctl,
-       .mmap = davinci_mmap
+       .mmap = davinci_mmap,
 };
 static struct video_device davinci_video_template = {
        .name = "davinci",
-       .type = VID_TYPE_CAPTURE,
-       .hardware = 0,
        .fops = &davinci_fops,
-       .minor = -1
+       .minor = -1,
 };
 
 /*
@@ -1591,7 +1595,7 @@ static __init int davinci_probe(struct device *device)
 
                /* Initialize field of video device */
                *vbd = davinci_video_template;
-               vbd->dev = device;
+               vbd->dev = *device;
                vbd->release = video_device_release;
                snprintf(vbd->name, sizeof(vbd->name),
                         "DaVinci_VPBEDisplay_DRIVER_V%d.%d.%d",
diff --git a/include/media/davinci/davinci_display.h 
b/include/media/davinci/davinci_display.h
index 8d9a95d..710eef2 100644
--- a/include/media/davinci/davinci_display.h
+++ b/include/media/davinci/davinci_display.h
@@ -25,7 +25,8 @@
 /* Header files */
 #include <linux/videodev.h>
 #include <linux/videodev2.h>
-#include <media/video-buf.h>
+#include <media/videobuf-dma-contig.h>
+#include <media/v4l2-common.h>
 #include <video/davinci_osd.h>
 #include <media/davinci/vid_encoder_types.h>
 
-- 
1.5.6


_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to