Hi,

Please help to review the patch

From: Yong He <[email protected]>
Subject: [PATCH] MRST Tablet camera driver ver-0.951, fix 8917

Bug_8917 -[MM-camera]: a cropped line appears on both camera previewing.
solution is to add a empty frame buffer space. If the in-queue is empty, all 
dropped frames goes to this empty buffer.

Signed-off-by: He, Yong <[email protected]>
---
Index: linux-2.6.37/drivers/staging/mrstci/mrstisp/mrstisp_main.c
===================================================================
--- linux-2.6.37/drivers/staging/mrstci/mrstisp/mrstisp_main.c   (revision 106)
+++ linux-2.6.37/drivers/staging/mrstci/mrstisp/mrstisp_main.c          
(working copy)
@@ -46,6 +46,12 @@
static unsigned long jiffies_start;
static int mipi_flag;
+/* DMA buffer pointer for skipped frames
+ * when input FIFO is empty */
+#define SKIPPED_FRAME_MAX_SIZE 0x00400000
+static void *addr_for_skipped_frame;
+static dma_addr_t dma_addr_for_skipped_frame;
+
#define ISP_CLOCK_GATING
#ifdef ISP_CLOCK_GATING
@@ -3014,6 +3020,11 @@
                                   isp->next->i);
                } else {
                          isp->stopflag = 1;
+                          /* input FIFO is empty, this frame should be skipped
+                          * set DMA WR address to the skipped frame buf*/
+                          mrst_isp_update_marvinvfaddr(isp,
+                                            dma_addr_for_skipped_frame,
+                                            CI_ISP_CFG_UPDATE_FRAME_SYNC);
                          dprintk(0, "stop isp");
                }
@@ -3219,6 +3230,18 @@
        dprintk(1, "isp mb1 = %lx, mb1_size = %lx", isp->mb1, isp->mb1_size);
+       /* allocate memory space for the skipped frames */
+       addr_for_skipped_frame = dma_alloc_coherent(&pdev->dev,
+                          SKIPPED_FRAME_MAX_SIZE,
+                          &dma_addr_for_skipped_frame,
+                          GFP_KERNEL);
+
+       if (!addr_for_skipped_frame) {
+                printk(KERN_WARNING "failed to allocate dma memory for skipped 
frame");
+                ret = -ENXIO;
+                goto exit_iounmap;
+       }
+
       ret = dma_declare_coherent_memory(&pdev->dev, start,
                                              /* start, len - 640 * 480 * 2, */
                                              start, len,
@@ -3230,7 +3253,7 @@
       if (!ret) {
                dprintk(0, "failed to declare dma memory");
                ret = -ENXIO;
-                 goto exit_iounmap;
+                goto exit_dma_skipframe_release;
       }
        /* init device struct */
@@ -3298,6 +3321,9 @@
       video_unregister_device(isp->vdev);
exit_dma_release:
       dma_release_declared_memory(&pdev->dev);
+exit_dma_skipframe_release:
+       dma_free_coherent(&pdev->dev, isp->mb1_size,
+                addr_for_skipped_frame, dma_addr_for_skipped_frame);
exit_iounmap:
       iounmap(isp->regs);
exit_release_regions:
         Signed-off-by: Yong He <[email protected]>


Best Regards,

Yong He
Software Engineer, PCSD SW Solutions,
Intel Asia-Pacific R&D Ltd.
Phone (+86) 21-61166334
Lab (+86) 21-61167881

Attachment: linux-2.6.37-camera-ov5640-ov9740-version-0.95_to_0.951.patch
Description: linux-2.6.37-camera-ov5640-ov9740-version-0.95_to_0.951.patch

_______________________________________________
MeeGo-kernel mailing list
[email protected]
http://lists.meego.com/listinfo/meego-kernel

Reply via email to