This patch does some cleanup on the camera interface driver:

- remove backslashes at regular line ends (Python-style ?)
- removed unused return values or unused initializations
- combined duplicated or otherwise highly redundant code
- remove redundant parentheses
- wrapped long lines
- general whitespace cleanup
- s3c_camif_input_msdma_codec, s3c_camif_input_msdma_preview,
  s3c_camif_set_target_format: fixed clearing of old register values

Signed-off-by: Werner Almesberger <[email protected]>

---

Index: cam/drivers/media/video/s3c_camif.c
===================================================================
--- cam.orig/drivers/media/video/s3c_camif.c    2009-03-09 13:11:37.000000000 
+0800
+++ cam/drivers/media/video/s3c_camif.c 2009-03-09 15:30:07.000000000 +0800
@@ -30,7 +30,6 @@
 #include <linux/wait.h>
 #include <linux/videodev.h>
 #include <asm/io.h>
-#include <linux/semaphore.h>
 #include <mach/hardware.h>
 #include <asm/uaccess.h>
 #include <mach/map.h>
@@ -80,7 +79,8 @@
                ret = cfg->img_buf[cnt].virt_rgb;
 
        if (cfg->dma_type & CAMIF_CODEC) {
-               if ((cfg->dst_fmt & CAMIF_RGB16) || (cfg->dst_fmt & 
CAMIF_RGB24))
+               if ((cfg->dst_fmt & CAMIF_RGB16) ||
+                   (cfg->dst_fmt & CAMIF_RGB24))
                        ret = cfg->img_buf[cnt].virt_rgb;
                else
                        ret = cfg->img_buf[cnt].virt_y;
@@ -94,17 +94,21 @@
        unsigned int reg, val, flag;
 
        if (cfg->dma_type & CAMIF_CODEC) {
-               flag = S3C_CICOSTATUS_OVFIY_CO | S3C_CICOSTATUS_OVFICB_CO | 
S3C_CICOSTATUS_OVFICR_CO;
+               flag = S3C_CICOSTATUS_OVFIY_CO | S3C_CICOSTATUS_OVFICB_CO |
+                   S3C_CICOSTATUS_OVFICR_CO;
                reg = readl(cfg->regs + S3C_CICOSTATUS);
 
                if (reg & flag) {
                        /* FIFO Error Count ++  */
                        val = readl(cfg->regs + S3C_CIWDOFST);
-                       val |= (S3C_CIWDOFST_CLROVCOFIY | 
S3C_CIWDOFST_CLROVCOFICB | S3C_CIWDOFST_CLROVCOFICR);
+                       val |= S3C_CIWDOFST_CLROVCOFIY |
+                           S3C_CIWDOFST_CLROVCOFICB | S3C_CIWDOFST_CLROVCOFICR;
                        writel(val, cfg->regs + S3C_CIWDOFST);
 
                        val = readl(cfg->regs + S3C_CIWDOFST);
-                       val &= ~(S3C_CIWDOFST_CLROVCOFIY | 
S3C_CIWDOFST_CLROVCOFICB | S3C_CIWDOFST_CLROVCOFICR);
+                       val &= ~(S3C_CIWDOFST_CLROVCOFIY |
+                           S3C_CIWDOFST_CLROVCOFICB |
+                           S3C_CIWDOFST_CLROVCOFICR);
                        writel(val, cfg->regs + S3C_CIWDOFST);
 
                        return 1; /* Error */
@@ -116,11 +120,14 @@
                if (reg & flag) {
                        /* FIFO Error Count ++  */
                        val = readl(cfg->regs + S3C_CIWDOFST);
-                       val |= (S3C_CIWDOFST_CLROVPRFICB | 
S3C_CIWDOFST_CLROVPRFICR);
+                       val |= S3C_CIWDOFST_CLROVPRFICB |
+                           S3C_CIWDOFST_CLROVPRFICR;
                        writel(val, cfg->regs + S3C_CIWDOFST);
 
                        val = readl(cfg->regs + S3C_CIWDOFST);
-                       val &= ~(S3C_CIWDOFST_CLROVPRFIY | 
S3C_CIWDOFST_CLROVPRFICB | S3C_CIWDOFST_CLROVPRFICR);
+                       val &= ~(S3C_CIWDOFST_CLROVPRFIY |
+                           S3C_CIWDOFST_CLROVPRFICB |
+                           S3C_CIWDOFST_CLROVPRFICR);
                        writel(val, cfg->regs + S3C_CIWDOFST);
 
                        return 1; /* Error */
@@ -165,53 +172,45 @@
 
        if (cfg->dma_type & CAMIF_CODEC) {
                if (cfg->dst_fmt & CAMIF_YCBCR420)
-                       t_size = (area * 3 / 2);        /* CAMIF_YCBCR420 */
-               else if (cfg->dst_fmt & CAMIF_YCBCR422 || cfg->dst_fmt & 
CAMIF_YCBCR422I)
-                       t_size = (area * 2);            /* CAMIF_YCBCR422 */
+                       t_size = area * 3 / 2;          /* CAMIF_YCBCR420 */
+               else if (cfg->dst_fmt & CAMIF_YCBCR422 ||
+                        cfg->dst_fmt & CAMIF_YCBCR422I)
+                       t_size = area * 2;              /* CAMIF_YCBCR422 */
                else if (cfg->dst_fmt & CAMIF_RGB16)
-                       t_size = (area * 2);            /* 2 bytes per one 
pixel */
+                       t_size = area * 2;              /* 2 bytes per pixel */
                else if (cfg->dst_fmt & CAMIF_RGB24)
-                       t_size = (area * 4);            /* 4 bytes per one 
pixel */
+                       t_size = area * 4;              /* 4 bytes per pixel */
                else
                        printk(KERN_INFO "Invalid target format\n");
-
-               if ((t_size % PAGE_SIZE) != 0) {
-                       i = t_size / PAGE_SIZE;
-                       t_size = (i + 1) * PAGE_SIZE;
-               }
-
-               t_size = t_size * cfg->pp_num;
-               cfg->pp_totalsize = t_size;
-
-               printk(KERN_INFO "Codec memory required: 0x%08X bytes\n", 
t_size);
-
-               return 0;
-       }else if (cfg->dma_type & CAMIF_PREVIEW) {
+       } else if (cfg->dma_type & CAMIF_PREVIEW) {
 
                if (cfg->dst_fmt & CAMIF_RGB16)
-                       t_size = (area * 2);            /*  2 bytes per two 
pixel*/
+                       t_size = area * 2;              /* 2 bytes per pixel */
                else if (cfg->dst_fmt & CAMIF_RGB24)
-                       t_size = (area * 4);            /* 4 bytes per one 
pixel */
+                       t_size = area * 4;              /* 4 bytes per pixel */
                else
                        printk(KERN_ERR "Invalid target format\n");
 
-               if ((t_size % PAGE_SIZE) != 0) {
-                       i = t_size / PAGE_SIZE;
-                       t_size = (i + 1) * PAGE_SIZE;
-               }
+       } else {
+               return 0;
+       }
 
-               t_size = t_size * cfg->pp_num;
-               cfg->pp_totalsize = t_size;
+       if (t_size % PAGE_SIZE != 0) {
+               i = t_size / PAGE_SIZE;
+               t_size = (i + 1) * PAGE_SIZE;
+       }
 
-               printk(KERN_INFO "Preview memory required: 0x%08X bytes\n", 
t_size);
+       t_size = t_size * cfg->pp_num;
+       cfg->pp_totalsize = t_size;
 
-               return 0;
-       }
+       printk(KERN_INFO "%s memory required: 0x%08X bytes\n",
+           cfg->dma_type & CAMIF_CODEC ? "Codec" : "Preview", t_size);
 
        return 0;
 }
 
-static void s3c_camif_calc_burst_length_yuv422i(unsigned int hsize, unsigned 
int *mburst, unsigned int *rburst)
+static void s3c_camif_calc_burst_length_yuv422i(unsigned int hsize,
+    unsigned int *mburst, unsigned int *rburst)
 {
        unsigned int tmp, wanted;
 
@@ -239,7 +238,8 @@
        *rburst = wanted / 2;
 }
 
-static void s3c_camif_calc_burst_length(unsigned int hsize, unsigned int 
*mburst, unsigned int *rburst)
+static void s3c_camif_calc_burst_length(unsigned int hsize,
+    unsigned int *mburst, unsigned int *rburst)
 {
        unsigned int tmp;
 
@@ -273,7 +273,7 @@
                } else {
                        tmp = (hsize / 4) % 4;
                        *mburst = 4;
-                       *rburst = (tmp) ? tmp : 4;
+                       *rburst = tmp ? tmp : 4;
                }
 
                break;
@@ -286,28 +286,33 @@
        unsigned int val, yburst_m, yburst_r, cburst_m, cburst_r;
 
        if (cfg->dma_type & CAMIF_CODEC) {
-               if ((cfg->dst_fmt == CAMIF_RGB16) || (cfg->dst_fmt == 
CAMIF_RGB24)) {
+               if (cfg->dst_fmt == CAMIF_RGB16 ||
+                   cfg->dst_fmt == CAMIF_RGB24) {
                        if (cfg->dst_fmt == CAMIF_RGB24) {
                                if (width % 2 != 0)
                                        return BURST_ERR;
 
-                               s3c_camif_calc_burst_length(width * 4, 
&yburst_m, &yburst_r);
+                               s3c_camif_calc_burst_length(width * 4,
+                                   &yburst_m, &yburst_r);
                        } else {
                                if ((width / 2) % 2 != 0)
                                        return BURST_ERR;
 
-                               s3c_camif_calc_burst_length(width * 2, 
&yburst_m, &yburst_r);
+                               s3c_camif_calc_burst_length(width * 2,
+                                   &yburst_m, &yburst_r);
                        }
 
                        val = readl(cfg->regs + S3C_CICOCTRL);
                        val &= ~(0xfffff << 4);
 
                        if (cfg->dst_fmt == CAMIF_RGB24) {
-                               val = S3C_CICOCTRL_YBURST1_CO(yburst_m / 2) | \
-                               S3C_CICOCTRL_YBURST2_CO(yburst_r / 4) | (4 << 
9) | (2 << 4);
+                               val = S3C_CICOCTRL_YBURST1_CO(yburst_m / 2) |
+                                   S3C_CICOCTRL_YBURST2_CO(yburst_r / 4) |
+                                   (4 << 9) | (2 << 4);
                        } else {
-                               val = S3C_CICOCTRL_YBURST1_CO(yburst_m / 2) | \
-                                       S3C_CICOCTRL_YBURST2_CO(yburst_r / 2) | 
(4 << 9) | (2 << 4);
+                               val = S3C_CICOCTRL_YBURST1_CO(yburst_m / 2) |
+                                   S3C_CICOCTRL_YBURST2_CO(yburst_r / 2) |
+                                   (4 << 9) | (2 << 4);
                        }
 
                        writel(val, cfg->regs + S3C_CICOCTRL);
@@ -317,18 +322,23 @@
                                return BURST_ERR;
 
                        if (cfg->dst_fmt == CAMIF_YCBCR422I) {
-                               s3c_camif_calc_burst_length_yuv422i(width, 
&yburst_m, &yburst_r);
+                               s3c_camif_calc_burst_length_yuv422i(width,
+                                   &yburst_m, &yburst_r);
                                cburst_m = yburst_m / 2;
                                cburst_r = yburst_r / 2;
                        } else {
-                               s3c_camif_calc_burst_length(width, &yburst_m, 
&yburst_r);
-                               s3c_camif_calc_burst_length(width / 2, 
&cburst_m, &cburst_r);
+                               s3c_camif_calc_burst_length(width, &yburst_m,
+                                   &yburst_r);
+                               s3c_camif_calc_burst_length(width / 2,
+                                   &cburst_m, &cburst_r);
                        }
 
                        val = readl(cfg->regs + S3C_CICOCTRL);
                        val &= ~(0xfffff << 4);
-                       val |= (S3C_CICOCTRL_YBURST1_CO(yburst_m) | 
S3C_CICOCTRL_CBURST1_CO(cburst_m) | \
-                               S3C_CICOCTRL_YBURST2_CO(yburst_r) | 
S3C_CICOCTRL_CBURST2_CO(cburst_r));
+                       val |= S3C_CICOCTRL_YBURST1_CO(yburst_m) |
+                           S3C_CICOCTRL_CBURST1_CO(cburst_m) |
+                           S3C_CICOCTRL_YBURST2_CO(yburst_r) |
+                           S3C_CICOCTRL_CBURST2_CO(cburst_r);
                        writel(val, cfg->regs + S3C_CICOCTRL);
                }
        } else if (cfg->dma_type & CAMIF_PREVIEW) {
@@ -336,17 +346,20 @@
                        if (width % 2 != 0)
                                return BURST_ERR;
 
-                       s3c_camif_calc_burst_length(width * 4, &yburst_m, 
&yburst_r);
+                       s3c_camif_calc_burst_length(width * 4, &yburst_m,
+                           &yburst_r);
                } else {
                        if ((width / 2) % 2 != 0)
                                return BURST_ERR;
 
-                       s3c_camif_calc_burst_length(width * 2, &yburst_m, 
&yburst_r);
+                       s3c_camif_calc_burst_length(width * 2, &yburst_m,
+                           &yburst_r);
                }
 
                val = readl(cfg->regs + S3C_CIPRCTRL);
                val &= ~(0x3ff << 14);
-               val |= (S3C_CICOCTRL_YBURST1_CO(yburst_m) | 
S3C_CICOCTRL_YBURST2_CO(yburst_r));
+               val |= S3C_CICOCTRL_YBURST1_CO(yburst_m) |
+                   S3C_CICOCTRL_YBURST2_CO(yburst_r);
                writel(val, cfg->regs + S3C_CIPRCTRL);
        }
 
@@ -362,35 +375,27 @@
 #if defined(CONFIG_CPU_S3C2443) || defined(CONFIG_CPU_S3C2450) || 
defined(CONFIG_CPU_S3C2416)
 int s3c_camif_input_msdma_preview(camif_cfg_t * cfg)
 {
-       int ret = 0;
-       unsigned int addr_start_Y = 0, addr_start_CB = 0, addr_start_CR = 0;
-       unsigned int addr_end_Y = 0, addr_end_CB = 0, addr_end_CR = 0;
+       unsigned int addr_start_Y, addr_start_CB, addr_start_CR;
+       unsigned int addr_end_Y, addr_end_CB, addr_end_CR;
        unsigned int val, val_width;
+       unsigned area, div;
 
        val = readl(cfg->regs + S3C_CIMSCTRL);
        val &= ~(1 << 2);
        writel(val, cfg->regs + S3C_CIMSCTRL);
 
        val = readl(cfg->regs + S3C_CIMSCTRL);
-       val |= (1 << 2);
+       val |= 1 << 2;
        writel(val, cfg->regs + S3C_CIMSCTRL);
 
-       if (cfg->src_fmt != CAMIF_YCBCR420 && cfg->src_fmt != CAMIF_YCBCR422 && 
cfg->src_fmt != CAMIF_YCBCR422I)
-               cfg->src_fmt = CAMIF_YCBCR420;
-
        switch(cfg->src_fmt) {
        case CAMIF_YCBCR420:
+       default:
                val = readl(cfg->regs + S3C_CIMSCTRL);
-               val = (val & ~(0x1 << 1)) | (0x1 << 1);
+               val |= 0x1 << 1;
                writel(val, cfg->regs + S3C_CIMSCTRL);
 
-               addr_start_Y = readl(cfg->regs + S3C_CIMSYSA);
-               addr_start_CB = addr_start_Y + (cfg->cis->source_x * 
cfg->cis->source_y);
-               addr_start_CR = addr_start_CB + (cfg->cis->source_x * 
cfg->cis->source_y / 4);
-
-               addr_end_Y = addr_start_Y + (cfg->cis->source_x * 
cfg->cis->source_y);
-               addr_end_CB = addr_start_CB + (cfg->cis->source_x * 
cfg->cis->source_y / 4);
-               addr_end_CR = addr_start_CR + (cfg->cis->source_x * 
cfg->cis->source_y / 4);
+               div = 4;
                break;
 
        case CAMIF_YCBCR422:
@@ -401,19 +406,20 @@
                val &= ~(0x3 << 3);                     /* YCbYCr */
                writel(val, cfg->regs + S3C_CIMSCTRL);
 
-               addr_start_Y = readl(cfg->regs + S3C_CIMSYSA);
-               addr_start_CB = addr_start_Y + (cfg->cis->source_x * 
cfg->cis->source_y);
-               addr_start_CR = addr_start_CB + (cfg->cis->source_x * 
cfg->cis->source_y / 2);
-
-               addr_end_Y = addr_start_Y + (cfg->cis->source_x * 
cfg->cis->source_y);
-               addr_end_CB = addr_start_CB + (cfg->cis->source_x * 
cfg->cis->source_y / 2);
-               addr_end_CR = addr_start_CR + (cfg->cis->source_x * 
cfg->cis->source_y / 2);
-               break;
-
-       default:
+               div = 2;
                break;
        }
 
+       area = cfg->cis->source_x * cfg->cis->source_y;
+
+       addr_start_Y = readl(cfg->regs + S3C_CIMSYSA);
+       addr_start_CB = addr_start_Y + area;
+       addr_start_CR = addr_start_CB + area / div;
+
+       addr_end_Y = addr_start_Y + area;
+       addr_end_CB = addr_start_CB + area / div;
+       addr_end_CR = addr_start_CR + area / div;
+
        /* MSDMA memory */
        writel(addr_start_Y, cfg->regs + S3C_CIMSYSA);
        writel(addr_start_CB, cfg->regs + S3C_CIMSCBSA);
@@ -429,14 +435,10 @@
        writel(0, cfg->regs + S3C_CIMSCROFF);
 
        /* MSDMA for codec source image width */
-       val_width = readl(cfg->regs + S3C_CIMSWIDTH);
-       val_width = (val_width & ~(0x1 << 31));         /* AutoLoadDisable */
-       val_width |= (cfg->cis->source_y << 16);        /* MSCOHEIGHT */
-       val_width |= cfg->cis->source_x;                /* MSCOWIDTH */
-       val_width = cfg->cis->source_x;
+       val_width = cfg->cis->source_x;         /* MSCOWIDTH */
        writel(val_width, cfg->regs + S3C_CIMSWIDTH);
 
-       return ret;
+       return 0;
 }
 
 static int s3c_camif_input_msdma(camif_cfg_t *cfg)
@@ -453,10 +455,10 @@
 #elif defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410)
 int s3c_camif_input_msdma_codec(camif_cfg_t * cfg)
 {
-       int ret = 0;
-       u32 addr_start_Y = 0, addr_start_CB = 0, addr_start_CR = 0;
-       u32 addr_end_Y = 0, addr_end_CB = 0, addr_end_CR = 0;
+       u32 addr_start_Y, addr_start_CB, addr_start_CR;
+       u32 addr_end_Y, addr_end_CB, addr_end_CR;
        u32 val, val_width;
+       unsigned area, div;
 
        /* Codec path input data selection */
        val = readl(cfg->regs + S3C_MSCOCTRL);
@@ -464,46 +466,39 @@
        writel(val, cfg->regs + S3C_MSCOCTRL);
 
        val = readl(cfg->regs + S3C_MSCOCTRL);
-       val |= (1 << 3);
+       val |= 1 << 3;
        writel(val, cfg->regs + S3C_MSCOCTRL);
 
-       if (cfg->src_fmt != CAMIF_YCBCR420 && cfg->src_fmt != CAMIF_YCBCR422 && 
cfg->src_fmt != CAMIF_YCBCR422I)
-               cfg->src_fmt = CAMIF_YCBCR420;
-
        switch(cfg->src_fmt) {
        case CAMIF_YCBCR420:
+       default:
                val = readl(cfg->regs + S3C_MSCOCTRL);
                val &= ~(0x3 << 1);
                writel(val, cfg->regs + S3C_MSCOCTRL);
 
-               addr_start_Y = cfg->pp_phys_buf;
-               addr_start_CB = addr_start_Y + (cfg->cis->source_x * 
cfg->cis->source_y);
-               addr_start_CR = addr_start_CB + (cfg->cis->source_x * 
cfg->cis->source_y / 4);
-
-               addr_end_Y = addr_start_Y + (cfg->cis->source_x * 
cfg->cis->source_y);
-               addr_end_CB = addr_start_CB + (cfg->cis->source_x * 
cfg->cis->source_y / 4);
-               addr_end_CR = addr_start_CR + (cfg->cis->source_x * 
cfg->cis->source_y / 4);
+               div = 4;
                break;
 
        case CAMIF_YCBCR422:
        case CAMIF_YCBCR422I:
                val = readl(cfg->regs + S3C_MSCOCTRL);
-               val = (val & ~(0x3 << 1)) |(0x2 << 1);
+               val = (val & ~(0x3 << 1)) | (0x2 << 1);
                writel(val, cfg->regs + S3C_MSCOCTRL);
 
-               addr_start_Y = cfg->pp_phys_buf;
-               addr_start_CB = addr_start_Y + (cfg->cis->source_x * 
cfg->cis->source_y);
-               addr_start_CR = addr_start_CB + (cfg->cis->source_x * 
cfg->cis->source_y / 2);
-
-               addr_end_Y = addr_start_Y + (cfg->cis->source_x * 
cfg->cis->source_y);
-               addr_end_CB = addr_start_CB + (cfg->cis->source_x * 
cfg->cis->source_y / 2);
-               addr_end_CR = addr_start_CR + (cfg->cis->source_x * 
cfg->cis->source_y / 2);
-               break;
-
-       default:
+               div = 2;
                break;
        }
 
+       area = cfg->cis->source_x * cfg->cis->source_y;
+
+       addr_start_Y = cfg->pp_phys_buf;
+       addr_start_CB = addr_start_Y + area;
+       addr_start_CR = addr_start_CB + area / div;
+
+       addr_end_Y = addr_start_Y + area;
+       addr_end_CB = addr_start_CB + area / div;
+       addr_end_CR = addr_start_CR + area / div;
+
        /* MSDMA memory */
        writel(addr_start_Y, cfg->regs + S3C_MSCOY0SA);
        writel(addr_start_CB, cfg->regs + S3C_MSCOCB0SA);
@@ -520,45 +515,39 @@
 
        /* MSDMA for codec source image width */
        val_width = readl(cfg->regs + S3C_MSCOWIDTH);
-       val_width = (val_width & ~(0x1 << 31))|(0x1 << 31);     /* 
AutoLoadEnable */
-       val_width |= (cfg->cis->source_y << 16);                /* MSCOHEIGHT */
-       val_width |= cfg->cis->source_x;                        /* MSCOWIDTH */
+       val_width &= ~0x0fffffff;
+       val_width |= 0x1 << 31;                         /* AutoLoadEnable */
+       val_width |= cfg->cis->source_y << 16;          /* MSCOHEIGHT */
+       val_width |= cfg->cis->source_x;                /* MSCOWIDTH */
        writel(val_width, cfg->regs + S3C_MSCOWIDTH);
 
-       return ret;
+       return 0;
 }
 
 int s3c_camif_input_msdma_preview(camif_cfg_t * cfg)
 {
        int ret = 0;
-       unsigned int addr_start_Y = 0, addr_start_CB = 0, addr_start_CR = 0;
-       unsigned int addr_end_Y = 0, addr_end_CB = 0, addr_end_CR = 0;
+       unsigned int addr_start_Y, addr_start_CB, addr_start_CR;
+       unsigned int addr_end_Y, addr_end_CB, addr_end_CR;
        unsigned int val, val_width;
+       unsigned area, div;
 
        val = readl(cfg->regs + S3C_CIMSCTRL);
        val &= ~(0x1 << 3);
        writel(val, cfg->regs + S3C_CIMSCTRL);
 
        val = readl(cfg->regs + S3C_CIMSCTRL);
-       val |= (0x1 << 3);
+       val |= 0x1 << 3;
        writel(val, cfg->regs + S3C_CIMSCTRL);
 
-       if (cfg->src_fmt != CAMIF_YCBCR420 && cfg->src_fmt != CAMIF_YCBCR422 && 
cfg->src_fmt != CAMIF_YCBCR422I)
-               cfg->src_fmt = CAMIF_YCBCR420;
-
        switch(cfg->src_fmt) {
        case CAMIF_YCBCR420:
+       default:
                val = readl(cfg->regs + S3C_CIMSCTRL);
                val &= ~(0x3 << 1);
                writel(val, cfg->regs + S3C_CIMSCTRL);
 
-               addr_start_Y = readl(cfg->regs + S3C_MSPRY0SA);
-               addr_start_CB = addr_start_Y + (cfg->cis->source_x * 
cfg->cis->source_y);
-               addr_start_CR = addr_start_CB + (cfg->cis->source_x * 
cfg->cis->source_y / 4);
-
-               addr_end_Y = addr_start_Y + (cfg->cis->source_x * 
cfg->cis->source_y);
-               addr_end_CB = addr_start_CB + (cfg->cis->source_x * 
cfg->cis->source_y / 4);
-               addr_end_CR = addr_start_CR + (cfg->cis->source_x * 
cfg->cis->source_y / 4);
+               div = 4;
                break;
 
        case CAMIF_YCBCR422:
@@ -568,19 +557,20 @@
                val = (val & ~(0x3 << 4)) | (0x3 << 4); /* YCbYCr */
                writel(val, cfg->regs + S3C_CIMSCTRL);
 
-               addr_start_Y = readl(cfg->regs + S3C_MSPRY0SA);
-               addr_start_CB = addr_start_Y + (cfg->cis->source_x * 
cfg->cis->source_y);
-               addr_start_CR = addr_start_CB + (cfg->cis->source_x * 
cfg->cis->source_y / 2);
-
-               addr_end_Y = addr_start_Y + (cfg->cis->source_x * 
cfg->cis->source_y);
-               addr_end_CB = addr_start_CB + (cfg->cis->source_x * 
cfg->cis->source_y / 2);
-               addr_end_CR = addr_start_CR + (cfg->cis->source_x * 
cfg->cis->source_y / 2);
-               break;
-
-       default:
+               div = 2;
                break;
        }
 
+       area = cfg->cis->source_x * cfg->cis->source_y;
+
+       addr_start_Y = readl(cfg->regs + S3C_MSPRY0SA);
+       addr_start_CB = addr_start_Y + area;
+       addr_start_CR = addr_start_CB + area / div;
+
+       addr_end_Y = addr_start_Y + area;
+       addr_end_CB = addr_start_CB + area / div;
+       addr_end_CR = addr_start_CR + area / div;
+
        /* MSDMA memory */
        writel(addr_start_Y, cfg->regs + S3C_MSPRY0SA);
        writel(addr_start_CB, cfg->regs + S3C_MSPRCB0SA);
@@ -597,8 +587,9 @@
 
        /* MSDMA for codec source image width */
        val_width = readl(cfg->regs + S3C_MSPRWIDTH);
-       val_width = (val_width & ~(0x1 << 31));         /* AutoLoadEnable */
-       val_width |= (cfg->cis->source_y << 16);        /* MSCOHEIGHT */
+       val_width &= ~(0x1 << 31);                      /* AutoLoadEnable */
+       val_width &= ~0x0fffffff;
+       val_width |= cfg->cis->source_y << 16;          /* MSCOHEIGHT */
        val_width |= cfg->cis->source_x;                /* MSCOWIDTH */
        writel(val_width, cfg->regs + S3C_MSPRWIDTH);
 
@@ -691,37 +682,41 @@
                        for (i = 0; i < 4; i++) {
                                cfg->img_buf[i].virt_rgb = cfg->pp_virt_buf;
                                cfg->img_buf[i].phys_rgb = cfg->pp_phys_buf;
-                               writel(cfg->img_buf[i].phys_rgb, cfg->regs + 
S3C_CICOYSA(i));
+                               writel(cfg->img_buf[i].phys_rgb,
+                                   cfg->regs + S3C_CICOYSA(i));
                        }
 
                        break;
 
                case 2:
                        for (i = 0; i < 4; i++) {
-                               if (i == 0 || i == 2) {
-                                       cfg->img_buf[i].virt_rgb = 
cfg->pp_virt_buf;
-                                       cfg->img_buf[i].phys_rgb = 
cfg->pp_phys_buf;
-                               } else {
-                                       cfg->img_buf[i].virt_rgb = 
cfg->pp_virt_buf + area;
-                                       cfg->img_buf[i].phys_rgb = 
cfg->pp_phys_buf + area;
+                               cfg->img_buf[i].virt_rgb = cfg->pp_virt_buf;
+                               cfg->img_buf[i].phys_rgb = cfg->pp_phys_buf;
+                               if (i & 1) {
+                                       cfg->img_buf[i].virt_rgb += area;
+                                       cfg->img_buf[i].phys_rgb += area;
                                }
-
-                               writel(cfg->img_buf[i].phys_rgb, cfg->regs + 
S3C_CICOYSA(i));
+                               writel(cfg->img_buf[i].phys_rgb,
+                                   cfg->regs + S3C_CICOYSA(i));
                        }
 
                        break;
 
                case 4:
                        for (i = 0; i < 4; i++) {
-                               cfg->img_buf[i].virt_rgb = cfg->pp_virt_buf + i 
* area;
-                               cfg->img_buf[i].phys_rgb = cfg->pp_phys_buf + i 
* area;
-                               writel(cfg->img_buf[i].phys_rgb, cfg->regs + 
S3C_CICOYSA(i));
+                               cfg->img_buf[i].virt_rgb =
+                                   cfg->pp_virt_buf + i * area;
+                               cfg->img_buf[i].phys_rgb =
+                                   cfg->pp_phys_buf + i * area;
+                               writel(cfg->img_buf[i].phys_rgb,
+                                   cfg->regs + S3C_CICOYSA(i));
                        }
 
                        break;
 
                default:
-                       printk(KERN_ERR "Invalid pingpong number %d\n", 
cfg->pp_num);
+                       printk(KERN_ERR "Invalid pingpong number %d\n",
+                           cfg->pp_num);
                        panic("s3c camif halt\n");
                }
        }
@@ -739,7 +734,8 @@
 
        if (cfg->dst_fmt & CAMIF_YCBCR420)
                cbcr_size = area / 4;
-       else if (cfg->dst_fmt & CAMIF_YCBCR422 || cfg->dst_fmt & 
CAMIF_YCBCR422I)
+       else if (cfg->dst_fmt & CAMIF_YCBCR422 ||
+                cfg->dst_fmt & CAMIF_YCBCR422I)
                cbcr_size = area / 2;
        else if ((cfg->dst_fmt & CAMIF_RGB16) || (cfg->dst_fmt & CAMIF_RGB24)) {
                s3c_camif_output_pp_codec_rgb(cfg);
@@ -747,7 +743,7 @@
        } else
                printk(KERN_ERR "Invalid target format %d\n", cfg->dst_fmt);
 
-       one_p_size = area + (2 * cbcr_size);
+       one_p_size = area + 2 * cbcr_size;
 
        if ((one_p_size % PAGE_SIZE) != 0) {
                i = one_p_size / PAGE_SIZE;
@@ -757,63 +753,77 @@
        cfg->buffer_size = one_p_size;
 
        switch (cfg->pp_num) {
-               case 1 :
-                       for (i = 0; i < 4; i++) {
-                               cfg->img_buf[i].virt_y = cfg->pp_virt_buf;
-                               cfg->img_buf[i].phys_y = cfg->pp_phys_buf;
-                               cfg->img_buf[i].virt_cb = cfg->pp_virt_buf + 
area;
-                               cfg->img_buf[i].phys_cb = cfg->pp_phys_buf + 
area;
-                               cfg->img_buf[i].virt_cr = cfg->pp_virt_buf + 
area + cbcr_size;
-                               cfg->img_buf[i].phys_cr = cfg->pp_phys_buf + 
area + cbcr_size;
-                               writel(cfg->img_buf[i].phys_y, cfg->regs + 
S3C_CICOYSA(i));
-                               writel(cfg->img_buf[i].phys_cb, cfg->regs + 
S3C_CICOCBSA(i));
-                               writel(cfg->img_buf[i].phys_cr, cfg->regs + 
S3C_CICOCRSA(i));
-                       }
-
-                       break;
+       case 1 :
+               for (i = 0; i < 4; i++) {
+                       cfg->img_buf[i].virt_y = cfg->pp_virt_buf;
+                       cfg->img_buf[i].phys_y = cfg->pp_phys_buf;
+                       cfg->img_buf[i].virt_cb = cfg->pp_virt_buf + area;
+                       cfg->img_buf[i].phys_cb = cfg->pp_phys_buf + area;
+                       cfg->img_buf[i].virt_cr = cfg->pp_virt_buf + area + 
cbcr_size;
+                       cfg->img_buf[i].phys_cr = cfg->pp_phys_buf + area + 
cbcr_size;
+                       writel(cfg->img_buf[i].phys_y, cfg->regs + 
S3C_CICOYSA(i));
+                       writel(cfg->img_buf[i].phys_cb, cfg->regs + 
S3C_CICOCBSA(i));
+                       writel(cfg->img_buf[i].phys_cr, cfg->regs + 
S3C_CICOCRSA(i));
+               }
 
-               case 2:
-                       for (i = 0; i < 4; i++) {
-                               if (i == 0 || i == 2) {
-                                       cfg->img_buf[i].virt_y = 
cfg->pp_virt_buf;
-                                       cfg->img_buf[i].phys_y = 
cfg->pp_phys_buf;
-                                       cfg->img_buf[i].virt_cb = 
cfg->pp_virt_buf + area;
-                                       cfg->img_buf[i].phys_cb = 
cfg->pp_phys_buf + area;
-                                       cfg->img_buf[i].virt_cr = 
cfg->pp_virt_buf + area + cbcr_size;
-                                       cfg->img_buf[i].phys_cr = 
cfg->pp_phys_buf + area + cbcr_size;
-                               } else {
-                                       cfg->img_buf[i].virt_y = 
cfg->pp_virt_buf + one_p_size;
-                                       cfg->img_buf[i].phys_y = 
cfg->pp_phys_buf + one_p_size;
-                                       cfg->img_buf[i].virt_cb = 
cfg->pp_virt_buf + area + one_p_size;
-                                       cfg->img_buf[i].phys_cb = 
cfg->pp_phys_buf + area + one_p_size;
-                                       cfg->img_buf[i].virt_cr = 
cfg->pp_virt_buf + area + cbcr_size + one_p_size;
-                                       cfg->img_buf[i].phys_cr = 
cfg->pp_phys_buf + area + cbcr_size + one_p_size;
-                               }
+               break;
 
-                               writel(cfg->img_buf[i].phys_y, cfg->regs + 
S3C_CICOYSA(i));
-                               writel(cfg->img_buf[i].phys_cb, cfg->regs + 
S3C_CICOCBSA(i));
-                               writel(cfg->img_buf[i].phys_cr, cfg->regs + 
S3C_CICOCRSA(i));
+       case 2:
+               for (i = 0; i < 4; i++) {
+                       cfg->img_buf[i].virt_y = cfg->pp_virt_buf;
+                       cfg->img_buf[i].phys_y = cfg->pp_phys_buf;
+                       cfg->img_buf[i].virt_cb = cfg->pp_virt_buf + area;
+                       cfg->img_buf[i].phys_cb = cfg->pp_phys_buf + area;
+                       cfg->img_buf[i].virt_cr =
+                           cfg->pp_virt_buf + area + cbcr_size;
+                       cfg->img_buf[i].phys_cr =
+                           cfg->pp_phys_buf + area + cbcr_size;
+
+                       if (i & 1) {
+                               cfg->img_buf[i].virt_y += one_p_size;
+                               cfg->img_buf[i].phys_y += one_p_size;
+                               cfg->img_buf[i].virt_cb += one_p_size;
+                               cfg->img_buf[i].phys_cb += one_p_size;
+                               cfg->img_buf[i].virt_cr += one_p_size;
+                               cfg->img_buf[i].phys_cr += one_p_size;
                        }
 
-                       break;
+                       writel(cfg->img_buf[i].phys_y,
+                           cfg->regs + S3C_CICOYSA(i));
+                       writel(cfg->img_buf[i].phys_cb,
+                           cfg->regs + S3C_CICOCBSA(i));
+                       writel(cfg->img_buf[i].phys_cr,
+                           cfg->regs + S3C_CICOCRSA(i));
+               }
 
-               case 4:
-                       for (i = 0; i < 4; i++) {
-                               cfg->img_buf[i].virt_y = cfg->pp_virt_buf + i * 
one_p_size;
-                               cfg->img_buf[i].phys_y = cfg->pp_phys_buf + i * 
one_p_size;
-                               cfg->img_buf[i].virt_cb = cfg->pp_virt_buf + 
area + i * one_p_size;
-                               cfg->img_buf[i].phys_cb = cfg->pp_phys_buf + 
area + i * one_p_size;
-                               cfg->img_buf[i].virt_cr = cfg->pp_virt_buf + 
area + cbcr_size + i * one_p_size;
-                               cfg->img_buf[i].phys_cr = cfg->pp_phys_buf + 
area + cbcr_size + i * one_p_size;
-                               writel(cfg->img_buf[i].phys_y, cfg->regs + 
S3C_CICOYSA(i));
-                               writel(cfg->img_buf[i].phys_cb, cfg->regs + 
S3C_CICOCBSA(i));
-                               writel(cfg->img_buf[i].phys_cr, cfg->regs + 
S3C_CICOCRSA(i));
-                       }
+               break;
 
-                       break;
+       case 4:
+               for (i = 0; i < 4; i++) {
+                       cfg->img_buf[i].virt_y =
+                           cfg->pp_virt_buf + i * one_p_size;
+                       cfg->img_buf[i].phys_y =
+                           cfg->pp_phys_buf + i * one_p_size;
+                       cfg->img_buf[i].virt_cb =
+                           cfg->pp_virt_buf + area + i * one_p_size;
+                       cfg->img_buf[i].phys_cb =
+                           cfg->pp_phys_buf + area + i * one_p_size;
+                       cfg->img_buf[i].virt_cr = cfg->pp_virt_buf +
+                           area + cbcr_size + i * one_p_size;
+                       cfg->img_buf[i].phys_cr = cfg->pp_phys_buf +
+                           area + cbcr_size + i * one_p_size;
+                       writel(cfg->img_buf[i].phys_y,
+                           cfg->regs + S3C_CICOYSA(i));
+                       writel(cfg->img_buf[i].phys_cb,
+                           cfg->regs + S3C_CICOCBSA(i));
+                       writel(cfg->img_buf[i].phys_cr,
+                           cfg->regs + S3C_CICOCRSA(i));
+               }
 
-               default:
-                       printk(KERN_ERR "Invalid pingpong number %d\n", 
cfg->pp_num);
+               break;
+
+       default:
+               printk(KERN_ERR "Invalid pingpong number %d\n", cfg->pp_num);
        }
 
        return 0;
@@ -890,7 +900,8 @@
                cfg->img_buf[0].phys_cb = cfg->pp_phys_buf + area;
                cfg->img_buf[0].virt_cr = cfg->pp_virt_buf + area + cbcr_size;
                cfg->img_buf[0].phys_cr = cfg->pp_phys_buf + area + cbcr_size;
-       } else if (cfg->src_fmt & CAMIF_YCBCR422 || cfg->dst_fmt & 
CAMIF_YCBCR422I){
+       } else if (cfg->src_fmt & CAMIF_YCBCR422 ||
+                  cfg->dst_fmt & CAMIF_YCBCR422I) {
                area = area * 2;
                cfg->img_buf[0].virt_cb = 0;
                cfg->img_buf[0].phys_cb = 0;
@@ -911,8 +922,8 @@
        writel(cfg->img_buf[0].phys_cr + cbcr_size, cfg->regs + S3C_MSPRCR0END);
 
        val = readl(cfg->regs + S3C_MSCOWIDTH);
-       val = (val & ~(0x1 << 31)) | (0x1 << 31);
-       val |= (cfg->cis->source_y << 16);
+       val |= 0x1 << 31;
+       val |= cfg->cis->source_y << 16;
        val |= cfg->cis->source_x;
        writel(val, cfg->regs + S3C_MSPRWIDTH);
 
@@ -933,7 +944,8 @@
 
        if (cfg->dst_fmt & CAMIF_YCBCR420)
                cbcr_size = area / 4;
-       else if (cfg->dst_fmt & CAMIF_YCBCR422 || cfg->dst_fmt & 
CAMIF_YCBCR422I)
+       else if (cfg->dst_fmt & CAMIF_YCBCR422 ||
+                cfg->dst_fmt & CAMIF_YCBCR422I)
                cbcr_size = area / 2;
        else if (cfg->dst_fmt & CAMIF_RGB24)
                area = area * 4;
@@ -950,41 +962,43 @@
        cfg->buffer_size = area;
 
        switch (cfg->pp_num) {
-               case 1:
-                       for (i = 0; i < 4; i++) {
-                               cfg->img_buf[i].virt_rgb = cfg->pp_virt_buf;
-                               cfg->img_buf[i].phys_rgb = cfg->pp_phys_buf;
-                               writel(cfg->img_buf[i].phys_rgb, cfg->regs + 
S3C_CIPRYSA(i));
-                       }
-
-                       break;
+       case 1:
+               for (i = 0; i < 4; i++) {
+                       cfg->img_buf[i].virt_rgb = cfg->pp_virt_buf;
+                       cfg->img_buf[i].phys_rgb = cfg->pp_phys_buf;
+                       writel(cfg->img_buf[i].phys_rgb,
+                           cfg->regs + S3C_CIPRYSA(i));
+               }
 
-               case 2:
-                       for (i = 0; i < 4; i++) {
-                               if (i == 0 || i == 2) {
-                                       cfg->img_buf[i].virt_rgb = 
cfg->pp_virt_buf;
-                                       cfg->img_buf[i].phys_rgb = 
cfg->pp_phys_buf;
-                               } else {
-                                       cfg->img_buf[i].virt_rgb = 
cfg->pp_virt_buf + area;
-                                       cfg->img_buf[i].phys_rgb = 
cfg->pp_phys_buf + area;
-                               }
+               break;
 
-                               writel(cfg->img_buf[i].phys_rgb, cfg->regs + 
S3C_CIPRYSA(i));
+       case 2:
+               for (i = 0; i < 4; i++) {
+                       cfg->img_buf[i].virt_rgb = cfg->pp_virt_buf;
+                       cfg->img_buf[i].phys_rgb = cfg->pp_phys_buf;
+                       if (i & 1) {
+                               cfg->img_buf[i].virt_rgb += area;
+                               cfg->img_buf[i].phys_rgb += area;
                        }
 
-                       break;
+                       writel(cfg->img_buf[i].phys_rgb,
+                           cfg->regs + S3C_CIPRYSA(i));
+               }
 
-               case 4:
-                       for (i = 0; i < 4; i++) {
-                               cfg->img_buf[i].virt_rgb = cfg->pp_virt_buf + i 
* area;
-                               cfg->img_buf[i].phys_rgb = cfg->pp_phys_buf + i 
* area;
-                               writel(cfg->img_buf[i].phys_rgb, cfg->regs + 
S3C_CIPRYSA(i));
-                       }
+               break;
 
-                       break;
+       case 4:
+               for (i = 0; i < 4; i++) {
+                       cfg->img_buf[i].virt_rgb = cfg->pp_virt_buf + i * area;
+                       cfg->img_buf[i].phys_rgb = cfg->pp_phys_buf + i * area;
+                       writel(cfg->img_buf[i].phys_rgb,
+                           cfg->regs + S3C_CIPRYSA(i));
+               }
 
-               default:
-                       printk(KERN_ERR "Invalid pingpong number %d\n", 
cfg->pp_num);
+               break;
+
+       default:
+               printk(KERN_ERR "Invalid pingpong number %d\n", cfg->pp_num);
        }
 
        return 0;
@@ -994,7 +1008,7 @@
 {
        if (cfg->dma_type & CAMIF_CODEC)
                s3c_camif_output_pp_codec(cfg);
-       else if ( cfg->dma_type & CAMIF_PREVIEW)
+       else if (cfg->dma_type & CAMIF_PREVIEW)
                s3c_camif_output_pp_preview(cfg);
 
        return 0;
@@ -1034,16 +1048,19 @@
 #if defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410)
 static inline int s3c_camif_set_ratio(camif_cfg_t *cfg)
 {
-       unsigned int cmd = (S3C_CICOSCCTRL_CSCR2Y_WIDE | 
S3C_CICOSCCTRL_CSCY2R_WIDE);
+       unsigned int cmd =
+           S3C_CICOSCCTRL_CSCR2Y_WIDE | S3C_CICOSCCTRL_CSCY2R_WIDE;
 
        if (cfg->dma_type & CAMIF_CODEC) {
 
-               writel(S3C_CICOSCPRERATIO_SHFACTOR_CO(cfg->sc.shfactor) | \
-                       S3C_CICOSCPRERATIO_PREHORRATIO_CO(cfg->sc.prehratio) | \
-                       S3C_CICOSCPRERATIO_PREVERRATIO_CO(cfg->sc.prevratio), 
cfg->regs + S3C_CICOSCPRERATIO);
-
-               writel(S3C_CICOSCPREDST_PREDSTWIDTH_CO(cfg->sc.predst_x) | \
-                       S3C_CICOSCPREDST_PREDSTHEIGHT_CO(cfg->sc.predst_y), 
cfg->regs + S3C_CICOSCPREDST);
+               writel(S3C_CICOSCPRERATIO_SHFACTOR_CO(cfg->sc.shfactor) |
+                   S3C_CICOSCPRERATIO_PREHORRATIO_CO(cfg->sc.prehratio) |
+                   S3C_CICOSCPRERATIO_PREVERRATIO_CO(cfg->sc.prevratio),
+                   cfg->regs + S3C_CICOSCPRERATIO);
+
+               writel(S3C_CICOSCPREDST_PREDSTWIDTH_CO(cfg->sc.predst_x) |
+                   S3C_CICOSCPREDST_PREDSTHEIGHT_CO(cfg->sc.predst_y),
+                   cfg->regs + S3C_CICOSCPREDST);
 
                /* Differ from Preview */
                if (cfg->sc.scalerbypass)
@@ -1056,19 +1073,23 @@
                        cmd |= S3C_CICOSCCTRL_OUTRGB_FMT_RGB565;
 
                if (cfg->sc.scaleup_h & cfg->sc.scaleup_v)
-                       cmd |= (S3C_CICOSCCTRL_SCALEUP_H | 
S3C_CICOSCCTRL_SCALEUP_V);
+                       cmd |=
+                           S3C_CICOSCCTRL_SCALEUP_H | S3C_CICOSCCTRL_SCALEUP_V;
 
-               writel(cmd | S3C_CICOSCCTRL_MAINHORRATIO_CO(cfg->sc.mainhratio) 
| \
-                       S3C_CICOSCCTRL_MAINVERRATIO_CO(cfg->sc.mainvratio), 
cfg->regs + S3C_CICOSCCTRL);
+               writel(cmd |
+                   S3C_CICOSCCTRL_MAINHORRATIO_CO(cfg->sc.mainhratio) |
+                   S3C_CICOSCCTRL_MAINVERRATIO_CO(cfg->sc.mainvratio),
+                   cfg->regs + S3C_CICOSCCTRL);
 
        } else if (cfg->dma_type & CAMIF_PREVIEW) {
-
-               writel(S3C_CIPRSCPRERATIO_SHFACTOR_PR(cfg->sc.shfactor) | \
-                       S3C_CIPRSCPRERATIO_PREHORRATIO_PR(cfg->sc.prehratio) | \
-                       S3C_CIPRSCPRERATIO_PREVERRATIO_PR(cfg->sc.prevratio), 
cfg->regs + S3C_CIPRSCPRERATIO);
-
-               writel(S3C_CIPRSCPREDST_PREDSTWIDTH_PR(cfg->sc.predst_x) | \
-                       S3C_CIPRSCPREDST_PREDSTHEIGHT_PR(cfg->sc.predst_y), 
cfg->regs + S3C_CIPRSCPREDST);
+               writel(S3C_CIPRSCPRERATIO_SHFACTOR_PR(cfg->sc.shfactor) |
+                   S3C_CIPRSCPRERATIO_PREHORRATIO_PR(cfg->sc.prehratio) |
+                   S3C_CIPRSCPRERATIO_PREVERRATIO_PR(cfg->sc.prevratio),
+                   cfg->regs + S3C_CIPRSCPRERATIO);
+
+               writel(S3C_CIPRSCPREDST_PREDSTWIDTH_PR(cfg->sc.predst_x) |
+                   S3C_CIPRSCPREDST_PREDSTHEIGHT_PR(cfg->sc.predst_y),
+                   cfg->regs + S3C_CIPRSCPREDST);
 
                if (cfg->dst_fmt & CAMIF_RGB24)
                        cmd |= S3C_CIPRSCCTRL_OUTRGB_FMT_PR_RGB888;
@@ -1076,10 +1097,12 @@
                        cmd |= S3C_CIPRSCCTRL_OUTRGB_FMT_PR_RGB565;
 
                if (cfg->sc.scaleup_h & cfg->sc.scaleup_v)
-                       cmd |= ((1 << 30) | (1 << 29));
+                       cmd |= (1 << 30) | (1 << 29);
 
-               writel(cmd | S3C_CIPRSCCTRL_MAINHORRATIO_PR(cfg->sc.mainhratio) 
| \
-                       S3C_CIPRSCCTRL_MAINVERRATIO_PR(cfg->sc.mainvratio), 
cfg->regs + S3C_CIPRSCCTRL);
+               writel(cmd |
+                   S3C_CIPRSCCTRL_MAINHORRATIO_PR(cfg->sc.mainhratio) |
+                   S3C_CIPRSCCTRL_MAINVERRATIO_PR(cfg->sc.mainvratio),
+                   cfg->regs + S3C_CIPRSCCTRL);
 
        } else
                printk(KERN_ERR "Invalid DMA type\n");
@@ -1093,41 +1116,50 @@
 
        if (cfg->dma_type & CAMIF_CODEC) {
 
-               writel(S3C_CICOSCPRERATIO_SHFACTOR_CO(cfg->sc.shfactor) | \
-                       S3C_CICOSCPRERATIO_PREHORRATIO_CO(cfg->sc.prehratio) | \
-                       S3C_CICOSCPRERATIO_PREVERRATIO_CO(cfg->sc.prevratio), 
cfg->regs + S3C_CICOSCPRERATIO);
-
-               writel(S3C_CICOSCPREDST_PREDSTWIDTH_CO(cfg->sc.predst_x) | \
-                       S3C_CICOSCPREDST_PREDSTHEIGHT_CO(cfg->sc.predst_y), 
cfg->regs + S3C_CICOSCPREDST);
+               writel(S3C_CICOSCPRERATIO_SHFACTOR_CO(cfg->sc.shfactor) |
+                   S3C_CICOSCPRERATIO_PREHORRATIO_CO(cfg->sc.prehratio) |
+                   S3C_CICOSCPRERATIO_PREVERRATIO_CO(cfg->sc.prevratio),
+                   cfg->regs + S3C_CICOSCPRERATIO);
+
+               writel(S3C_CICOSCPREDST_PREDSTWIDTH_CO(cfg->sc.predst_x) |
+                   S3C_CICOSCPREDST_PREDSTHEIGHT_CO(cfg->sc.predst_y),
+                   cfg->regs + S3C_CICOSCPREDST);
 
                if (cfg->sc.scalerbypass)
                        cmd |= S3C_CICOSCCTRL_SCALERBYPASS_CO;
 
                if (cfg->sc.scaleup_h & cfg->sc.scaleup_v)
-                       cmd |= (S3C_CICOSCCTRL_SCALEUP_H | 
S3C_CICOSCCTRL_SCALEUP_V);
+                       cmd |=
+                           S3C_CICOSCCTRL_SCALEUP_H | S3C_CICOSCCTRL_SCALEUP_V;
 
-               writel(cmd | S3C_CICOSCCTRL_MAINHORRATIO_CO(cfg->sc.mainhratio) 
| \
-                       S3C_CICOSCCTRL_MAINVERRATIO_CO(cfg->sc.mainvratio), 
cfg->regs + S3C_CICOSCCTRL);
+               writel(cmd |
+                   S3C_CICOSCCTRL_MAINHORRATIO_CO(cfg->sc.mainhratio) |
+                   S3C_CICOSCCTRL_MAINVERRATIO_CO(cfg->sc.mainvratio),
+                   cfg->regs + S3C_CICOSCCTRL);
 
        } else if (cfg->dma_type & CAMIF_PREVIEW) {
 
                cmd |= S3C_CIPRSCCTRL_SAMPLE_PR;
 
-               writel(S3C_CIPRSCPRERATIO_SHFACTOR_PR(cfg->sc.shfactor) | \
-                       S3C_CIPRSCPRERATIO_PREHORRATIO_PR(cfg->sc.prehratio) | \
-                       S3C_CIPRSCPRERATIO_PREVERRATIO_PR(cfg->sc.prevratio), 
cfg->regs + S3C_CIPRSCPRERATIO);
-
-               writel(S3C_CIPRSCPREDST_PREDSTWIDTH_PR(cfg->sc.predst_x) | \
-                       S3C_CIPRSCPREDST_PREDSTHEIGHT_PR(cfg->sc.predst_y), 
cfg->regs + S3C_CIPRSCPREDST);
+               writel(S3C_CIPRSCPRERATIO_SHFACTOR_PR(cfg->sc.shfactor) |
+                   S3C_CIPRSCPRERATIO_PREHORRATIO_PR(cfg->sc.prehratio) |
+                   S3C_CIPRSCPRERATIO_PREVERRATIO_PR(cfg->sc.prevratio),
+                   cfg->regs + S3C_CIPRSCPRERATIO);
+
+               writel(S3C_CIPRSCPREDST_PREDSTWIDTH_PR(cfg->sc.predst_x) |
+                   S3C_CIPRSCPREDST_PREDSTHEIGHT_PR(cfg->sc.predst_y),
+                   cfg->regs + S3C_CIPRSCPREDST);
 
                if (cfg->dst_fmt & CAMIF_RGB24)
                        cmd |= S3C_CIPRSCCTRL_RGBFORMAT_24;
 
                if (cfg->sc.scaleup_h & cfg->sc.scaleup_v)
-                       cmd |= ((1 << 29) | (1 << 28));
+                       cmd |= (1 << 29) | (1 << 28);
 
-               writel(cmd | S3C_CIPRSCCTRL_MAINHORRATIO_PR(cfg->sc.mainhratio) 
| \
-                       S3C_CIPRSCCTRL_MAINVERRATIO_PR(cfg->sc.mainvratio), 
cfg->regs + S3C_CIPRSCCTRL);
+               writel(cmd |
+                   S3C_CIPRSCCTRL_MAINHORRATIO_PR(cfg->sc.mainhratio) |
+                   S3C_CIPRSCCTRL_MAINVERRATIO_PR(cfg->sc.mainvratio),
+                   cfg->regs + S3C_CIPRSCCTRL);
 
        } else
                printk(KERN_ERR "Invalid DMA type\n");
@@ -1136,37 +1168,37 @@
 }
 #endif
 
-static int s3c_camif_calc_ratio(unsigned int src_width, unsigned int 
dst_width, unsigned int *ratio, unsigned int *shift)
+static int s3c_camif_calc_ratio(unsigned int src_width, unsigned int dst_width,
+    unsigned int *ratio, unsigned int *shift)
 {
        if (src_width >= 64 * dst_width) {
-               printk(KERN_ERR "Out of pre-scaler range: src_width / dst_width 
= %d (< 64)\n", src_width / dst_width);
+               printk(KERN_ERR "Out of pre-scaler range: "
+                   "src_width / dst_width = %d (< 64)\n",
+                   src_width / dst_width);
                return 1;
-       } else if (src_width >= 32 * dst_width) {
-               *ratio = 32;
+       }
+       if (src_width >= 32 * dst_width) {
                *shift = 5;
        } else if (src_width >= 16 * dst_width) {
-               *ratio = 16;
                *shift = 4;
        } else if (src_width >= 8 * dst_width) {
-               *ratio = 8;
                *shift = 3;
        } else if (src_width >= 4 * dst_width) {
-               *ratio = 4;
                *shift = 2;
        } else if (src_width >= 2 * dst_width) {
-               *ratio = 2;
                *shift = 1;
        } else {
-               *ratio = 1;
                *shift = 0;
        }
 
+       *ratio = 1 << *shift;
+
        return 0;
 }
 
 static int s3c_camif_setup_scaler(camif_cfg_t *cfg)
 {
-       int tx = cfg->target_x, ty=cfg->target_y;
+       int tx = cfg->target_x, ty = cfg->target_y;
        int sx, sy;
 
        if (tx <= 0 || ty <= 0) {
@@ -1174,8 +1206,10 @@
                return -1;
        }
 
-       sx = cfg->cis->source_x - (cfg->cis->win_hor_ofst + 
cfg->cis->win_hor_ofst2);
-       sy = cfg->cis->source_y - (cfg->cis->win_ver_ofst + 
cfg->cis->win_hor_ofst2);
+       sx = cfg->cis->source_x -
+           (cfg->cis->win_hor_ofst + cfg->cis->win_hor_ofst2);
+       sy = cfg->cis->source_y -
+           (cfg->cis->win_ver_ofst + cfg->cis->win_hor_ofst2);
 
        if (sx <= 0 || sy <= 0) {
                printk(KERN_ERR "Invalid source size\n");
@@ -1190,9 +1224,11 @@
        s3c_camif_calc_ratio(sy, ty, &cfg->sc.prevratio, &cfg->sc.vfactor);
 
        if (cfg->dma_type & CAMIF_PREVIEW) {
-               if ((sx / cfg->sc.prehratio) > 640) {
-                       printk(KERN_INFO "Internal preview line buffer length 
is 640 pixels\n");
-                       printk(KERN_INFO "Decrease the resolution or adjust 
window offset values appropriately\n");
+               if (sx / cfg->sc.prehratio > 640) {
+                       printk(KERN_INFO "Internal preview line buffer length "
+                           "is 640 pixels\n");
+                       printk(KERN_INFO "Decrease the resolution or adjust "
+                           "window offset values appropriately\n");
                }
        }
 
@@ -1206,8 +1242,8 @@
        cfg->sc.mainhratio = (sx << 8) / (tx << cfg->sc.hfactor);
        cfg->sc.mainvratio = (sy << 8) / (ty << cfg->sc.vfactor);
 
-       cfg->sc.scaleup_h  = (sx <= tx) ? 1 : 0;
-       cfg->sc.scaleup_v  = (sy <= ty) ? 1 : 0;
+       cfg->sc.scaleup_h = sx <= tx;
+       cfg->sc.scaleup_v = sy <= ty;
 
        s3c_camif_set_ratio(cfg);
        s3c_camif_set_target_area(cfg);
@@ -1231,15 +1267,17 @@
                cmd = CAMIF_ITU656;
        }
 
-       cmd |= (S3C_CISRCFMT_SOURCEHSIZE(cis->source_x) | 
S3C_CISRCFMT_SOURCEVSIZE(cis->source_y));
+       cmd |= S3C_CISRCFMT_SOURCEHSIZE(cis->source_x) |
+           S3C_CISRCFMT_SOURCEVSIZE(cis->source_y);
 
        /* Order422 */
        cmd |= cis->order422;
        writel(cmd, cfg->regs + S3C_CISRCFMT);
 
 #if defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410)
-       cmd = (cis->order422 >> 14);
-       writel((readl(cfg->regs + S3C_CICOCTRL) & ~(0x3 << 0)) | cmd, cfg->regs 
+ S3C_CICOCTRL);
+       cmd = cis->order422 >> 14;
+       writel((readl(cfg->regs + S3C_CICOCTRL) & ~(0x3 << 0)) | cmd,
+           cfg->regs + S3C_CICOCTRL);
 #endif
 
        return 0;
@@ -1251,25 +1289,30 @@
        unsigned int cmd = 0;
 
        if (cfg->dma_type & CAMIF_CODEC) {
-               cmd |= S3C_CICOTRGFMT_TARGETHSIZE_CO(cfg->target_x) | 
S3C_CICOTRGFMT_TARGETVSIZE_CO(cfg->target_y);
+               cmd |= S3C_CICOTRGFMT_TARGETHSIZE_CO(cfg->target_x) |
+                   S3C_CICOTRGFMT_TARGETVSIZE_CO(cfg->target_y);
 
-               if (cfg->dst_fmt & CAMIF_YCBCR420) {
-                       cmd |= (S3C_CICOTRGFMT_OUT422_420 | 
S3C_CICOTRGFMT_IN422_422);
-                       writel(cmd, cfg->regs + S3C_CICOTRGFMT);
-               } else if (cfg->dst_fmt & CAMIF_YCBCR422) {
-                       cmd |= (S3C_CICOTRGFMT_OUT422_422 | 
S3C_CICOTRGFMT_IN422_422);
-                       writel(cmd, cfg->regs + S3C_CICOTRGFMT);
-               } else if ((cfg->dst_fmt & CAMIF_RGB24) || (cfg->dst_fmt & 
CAMIF_RGB16)) {
-                       cmd |= (S3C_CICOTRGFMT_OUT422_422 | 
S3C_CICOTRGFMT_IN422_422);
-                       writel(cmd | (1 << 29), cfg->regs + S3C_CICOTRGFMT);
-               } else
+               if (cfg->dst_fmt & CAMIF_YCBCR420)
+                       cmd |= S3C_CICOTRGFMT_OUT422_420 |
+                           S3C_CICOTRGFMT_IN422_422;
+               else if (cfg->dst_fmt & CAMIF_YCBCR422)
+                       cmd |= (S3C_CICOTRGFMT_OUT422_422 |
+                           S3C_CICOTRGFMT_IN422_422);
+               else if ((cfg->dst_fmt & CAMIF_RGB24) ||
+                          (cfg->dst_fmt & CAMIF_RGB16))
+                       cmd |= (S3C_CICOTRGFMT_OUT422_422 |
+                           S3C_CICOTRGFMT_IN422_422) | (1 << 29);
+               else
                        printk(KERN_ERR "Invalid target format\n");
+               writel(cmd, cfg->regs + S3C_CICOTRGFMT);
        } else {
                assert(cfg->dma_type & CAMIF_PREVIEW);
 
                cmd = readl(cfg->regs + S3C_CIPRTRGFMT);
-               cmd &= (S3C_CIPRTRGFMT_TARGETHSIZE_PR(0) | 
S3C_CIPRTRGFMT_TARGETVSIZE_PR(0));
-               cmd |= (S3C_CIPRTRGFMT_TARGETHSIZE_PR(cfg->target_x) | 
S3C_CIPRTRGFMT_TARGETVSIZE_PR(cfg->target_y));
+               cmd &= ~(S3C_CIPRTRGFMT_TARGETHSIZE_PR(0x1fff) |
+                   S3C_CIPRTRGFMT_TARGETVSIZE_PR(0x1fff));
+               cmd |= S3C_CIPRTRGFMT_TARGETHSIZE_PR(cfg->target_x) |
+                   S3C_CIPRTRGFMT_TARGETVSIZE_PR(cfg->target_y);
 
                writel(cmd | (2 << 30), cfg->regs + S3C_CIPRTRGFMT);
        }
@@ -1282,28 +1325,29 @@
        unsigned int cmd = 0;
 
        if (cfg->dma_type & CAMIF_CODEC) {
-               cmd |= (S3C_CICOTRGFMT_TARGETHSIZE_CO(cfg->target_x) | 
S3C_CICOTRGFMT_TARGETVSIZE_CO(cfg->target_y));
+               cmd |= S3C_CICOTRGFMT_TARGETHSIZE_CO(cfg->target_x) |
+                   S3C_CICOTRGFMT_TARGETVSIZE_CO(cfg->target_y);
 
-               if (cfg->dst_fmt & CAMIF_YCBCR420) {
+               if (cfg->dst_fmt & CAMIF_YCBCR420)
                        cmd |= S3C_CICOTRGFMT_OUTFORMAT_YCBCR420OUT;
-                       writel(cmd, cfg->regs + S3C_CICOTRGFMT);
-               } else if (cfg->dst_fmt & CAMIF_YCBCR422) {
+               else if (cfg->dst_fmt & CAMIF_YCBCR422)
                        cmd |= S3C_CICOTRGFMT_OUTFORMAT_YCBCR422OUT;
-                       writel(cmd, cfg->regs + S3C_CICOTRGFMT);
-               } else if (cfg->dst_fmt & CAMIF_YCBCR422I) {
+               else if (cfg->dst_fmt & CAMIF_YCBCR422I)
                        cmd |= S3C_CICOTRGFMT_OUTFORMAT_YCBCR422OUTINTERLEAVE;
-                       writel(cmd, cfg->regs + S3C_CICOTRGFMT);
-               } else if ((cfg->dst_fmt & CAMIF_RGB24) || (cfg->dst_fmt & 
CAMIF_RGB16)) {
+               else if ((cfg->dst_fmt & CAMIF_RGB24) ||
+                          (cfg->dst_fmt & CAMIF_RGB16))
                        cmd |= S3C_CICOTRGFMT_OUTFORMAT_RGBOUT;
-                       writel(cmd, cfg->regs + S3C_CICOTRGFMT);
-               } else
+               else
                        printk(KERN_ERR "Invalid target format\n");
+               writel(cmd, cfg->regs + S3C_CICOTRGFMT);
        } else {
                assert(cfg->dma_type & CAMIF_PREVIEW);
 
                cmd = readl(cfg->regs + S3C_CIPRTRGFMT);
-               cmd &= (S3C_CIPRTRGFMT_TARGETHSIZE_PR(0) | 
S3C_CIPRTRGFMT_TARGETVSIZE_PR(0));
-               cmd |= (S3C_CIPRTRGFMT_TARGETHSIZE_PR(cfg->target_x) | 
S3C_CIPRTRGFMT_TARGETVSIZE_PR(cfg->target_y));
+               cmd &= ~(S3C_CIPRTRGFMT_TARGETHSIZE_PR(0x1fff) |
+                   S3C_CIPRTRGFMT_TARGETVSIZE_PR(0x1fff));
+               cmd |= S3C_CIPRTRGFMT_TARGETHSIZE_PR(cfg->target_x) |
+                   S3C_CIPRTRGFMT_TARGETVSIZE_PR(cfg->target_y);
 
                if (cfg->dst_fmt & CAMIF_YCBCR420)
                        cmd |= S3C_CICOTRGFMT_OUTFORMAT_YCBCR420OUT;
@@ -1311,7 +1355,8 @@
                        cmd |= S3C_CICOTRGFMT_OUTFORMAT_YCBCR422OUT;
                else if (cfg->dst_fmt & CAMIF_YCBCR422I)
                        cmd |= S3C_CICOTRGFMT_OUTFORMAT_YCBCR422OUTINTERLEAVE;
-               else if ((cfg->dst_fmt & CAMIF_RGB24) || (cfg->dst_fmt & 
CAMIF_RGB16))
+               else if ((cfg->dst_fmt & CAMIF_RGB24) ||
+                        (cfg->dst_fmt & CAMIF_RGB16))
                        cmd |= S3C_CICOTRGFMT_OUTFORMAT_RGBOUT;
                else
                        printk(KERN_ERR "Invalid target format\n");
@@ -1329,14 +1374,16 @@
 int s3c_camif_control_fimc(camif_cfg_t *cfg)
 {
        if (s3c_camif_request_memory(cfg)) {
-               printk(KERN_ERR "Instead of using consistent_alloc(). Let me 
use dedicated mem for DMA\n");
+               printk(KERN_ERR "Instead of using consistent_alloc(). "
+                   "Let me use dedicated mem for DMA\n");
                return -1;
        }
 
        s3c_camif_setup_input_path(cfg);
 
        if (s3c_camif_setup_scaler(cfg)) {
-               printk(KERN_ERR "Preview scaler fault: change WinHorOfset or 
target size\n");
+               printk(KERN_ERR "Preview scaler fault: "
+                   "change WinHorOfset or target size\n");
                return 1;
        }
 
@@ -1371,7 +1418,8 @@
                val |= S3C_CIPRSCCTRL_START;
                writel(val, cfg->regs + S3C_CIPRSCCTRL);
 
-               n_cmd |= S3C_CIIMGCPT_IMGCPTEN_COSC | 
S3C_CIIMGCPT_IMGCPTEN_PRSC;
+               n_cmd |=
+                   S3C_CIIMGCPT_IMGCPTEN_COSC | S3C_CIIMGCPT_IMGCPTEN_PRSC;
                break;
 
        case CAMIF_DMA_ON:
@@ -1398,7 +1446,8 @@
                /* First settting, to wait VSYNC fall  */
                /* By VESA spec,in 640x480 @60Hz
                   MAX Delay Time is around 64us which "while" has.*/
-               while (S3C_CICOSTATUS_VSYNC & readl(cfg->regs + 
S3C_CICOSTATUS));
+               while (S3C_CICOSTATUS_VSYNC &
+                   readl(cfg->regs + S3C_CICOSTATUS));
                break;
 
        default:
@@ -1408,11 +1457,11 @@
 #if defined(CONFIG_CPU_S3C2443)
        if (cfg->dma_type & CAMIF_CODEC) {
                if (cfg->dst_fmt & CAMIF_RGB24)
-                       n_cmd |= (3 << 25);
+                       n_cmd |= 3 << 25;
                else if (cfg->dst_fmt & CAMIF_RGB16)
-                       n_cmd |= (1 << 25);
+                       n_cmd |= 1 << 25;
                else if (cfg->dst_fmt & CAMIF_YCBCR420)
-                       n_cmd |= (2 << 25);
+                       n_cmd |= 2 << 25;
        }
 #endif
 
@@ -1517,7 +1566,7 @@
        val |= (1 << 0);
        writel(val, cfg->regs + S3C_CIMSCTRL);
 
-       while((readl(cfg->regs + S3C_CIMSCTRL) & (1 << 6)) == 0);
+       while(!readl(cfg->regs + S3C_CIMSCTRL) & (1 << 6));
 
        return ret;
 }
@@ -1533,10 +1582,12 @@
                writel(cmd, cfg->regs + S3C_CICOTRGFMT);
        } else {
                /* if ROT90_Pr == 1, dma burst length must be 4 */
-               if (cfg->flip == CAMIF_ROTATE_90 || cfg->flip == 
CAMIF_FLIP_ROTATE_270) {
+               if (cfg->flip == CAMIF_ROTATE_90 ||
+                   cfg->flip == CAMIF_FLIP_ROTATE_270) {
                        cmd = readl(cfg->regs + S3C_CIPRCTRL);
                        cmd &= ~(0x3ff << 14);
-                       cmd |= (S3C_CICOCTRL_YBURST1_CO(4) | 
S3C_CICOCTRL_YBURST2_CO(4));
+                       cmd |= (S3C_CICOCTRL_YBURST1_CO(4) |
+                           S3C_CICOCTRL_YBURST2_CO(4));
                        writel(cmd, cfg->regs + S3C_CIPRCTRL);
                }
 
@@ -1550,6 +1601,7 @@
 void s3c_camif_change_effect(camif_cfg_t *cfg)
 {
        unsigned int val = readl(cfg->regs + S3C_CIIMGEFF);
+
        val &= ~((1 << 28) | (1 << 27) | (1 << 26));
 
 #if defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410)
@@ -1587,22 +1639,22 @@
 
 int s3c_camif_do_postprocess(camif_cfg_t *cfg)
 {
-       unsigned int val= readl(cfg->regs + S3C_CIMSCTRL);
+       unsigned int val = readl(cfg->regs + S3C_CIMSCTRL);
 
        if (cfg->dst_fmt & CAMIF_YCBCR420)
-               val |= (1 << 1);
+               val |= 1 << 1;
        else
                val &= ~(1 << 1);
 
        val &= ~(1 << 0);
        writel(val, cfg->regs + S3C_CIMSCTRL);
 
-       val |= (1 << 0);
+       val |= 1 << 0;
        writel(val, cfg->regs + S3C_CIMSCTRL);
 
        printk(KERN_INFO "Postprocessing started\n");
 
-       while((readl(cfg->regs + S3C_CIMSCTRL) & (1 << 6)) == 0);
+       while(!readl(cfg->regs + S3C_CIMSCTRL) & (1 << 6));
 
        printk(KERN_INFO "Postprocessing finished\n");
 
@@ -1618,9 +1670,9 @@
        unsigned int v2 = cis->win_ver_ofst2;   /* Camera input offset ONLY */
 
        /*Clear Overflow */
-       writel(S3C_CIWDOFST_CLROVCOFIY | S3C_CIWDOFST_CLROVCOFICB | \
-               S3C_CIWDOFST_CLROVCOFICR | S3C_CIWDOFST_CLROVPRFICB | \
-               S3C_CIWDOFST_CLROVPRFICR, cfg->regs + S3C_CIWDOFST);
+       writel(S3C_CIWDOFST_CLROVCOFIY | S3C_CIWDOFST_CLROVCOFICB |
+           S3C_CIWDOFST_CLROVCOFICR | S3C_CIWDOFST_CLROVPRFICB |
+           S3C_CIWDOFST_CLROVPRFICR, cfg->regs + S3C_CIWDOFST);
 
        writel(0, cfg->regs + S3C_CIWDOFST);
 
@@ -1630,9 +1682,12 @@
                return 0;
        }
 
-       writel(S3C_CIWDOFST_WINOFSEN | S3C_CIWDOFST_WINHOROFST(h) | 
S3C_CIWDOFST_WINVEROFST(v), cfg->regs + S3C_CIWDOFST);
-       writel(S3C_CIDOWSFT2_WINHOROFST2(h) | S3C_CIDOWSFT2_WINVEROFST2(v), 
cfg->regs + S3C_CIDOWSFT2);
-       writel(S3C_CIDOWSFT2_WINHOROFST2(h2) | S3C_CIDOWSFT2_WINVEROFST2(v2), 
cfg->regs + S3C_CIDOWSFT2);
+       writel(S3C_CIWDOFST_WINOFSEN | S3C_CIWDOFST_WINHOROFST(h) |
+           S3C_CIWDOFST_WINVEROFST(v), cfg->regs + S3C_CIWDOFST);
+       writel(S3C_CIDOWSFT2_WINHOROFST2(h) | S3C_CIDOWSFT2_WINVEROFST2(v),
+           cfg->regs + S3C_CIDOWSFT2);
+       writel(S3C_CIDOWSFT2_WINHOROFST2(h2) | S3C_CIDOWSFT2_WINVEROFST2(v2),
+           cfg->regs + S3C_CIDOWSFT2);
 
        return 0;
 }
@@ -1665,24 +1720,18 @@
 {
        unsigned int val;
 
-       if (cfg->capture_enable == CAMIF_BOTH_DMA_ON) {
+       if (cfg->capture_enable == CAMIF_BOTH_DMA_ON ||
+           (cfg->dma_type & CAMIF_CODEC)) {
                val = readl(cfg->regs + S3C_CICOCTRL);
                val |= S3C_CICOCTRL_LASTIRQEN;
                writel(val, cfg->regs + S3C_CICOCTRL);
+       }
 
+       if (cfg->capture_enable == CAMIF_BOTH_DMA_ON ||
+           !(cfg->dma_type & CAMIF_CODEC)) {
                val = readl(cfg->regs + S3C_CIPRCTRL);
                val |= S3C_CIPRCTRL_LASTIRQEN_ENABLE;
                writel(val, cfg->regs + S3C_CIPRCTRL);
-       } else {
-               if (cfg->dma_type & CAMIF_CODEC) {
-                       val = readl(cfg->regs + S3C_CICOCTRL);
-                       val |= S3C_CICOCTRL_LASTIRQEN;
-                       writel(val, cfg->regs + S3C_CICOCTRL);
-               } else {
-                       val = readl(cfg->regs + S3C_CIPRCTRL);
-                       val |= S3C_CIPRCTRL_LASTIRQEN_ENABLE;
-                       writel(val, cfg->regs + S3C_CIPRCTRL);
-               }
        }
 }
 
@@ -1690,24 +1739,18 @@
 {
        unsigned int val;
 
-       if (cfg->capture_enable == CAMIF_BOTH_DMA_ON) {
+       if (cfg->capture_enable == CAMIF_BOTH_DMA_ON ||
+           (cfg->dma_type & CAMIF_CODEC)) {
                val = readl(cfg->regs + S3C_CICOCTRL);
                val &= ~S3C_CICOCTRL_LASTIRQEN;
                writel(val, cfg->regs + S3C_CICOCTRL);
+       }
 
+       if (cfg->capture_enable == CAMIF_BOTH_DMA_ON ||
+           !(cfg->dma_type & CAMIF_CODEC)) {
                val = readl(cfg->regs + S3C_CIPRCTRL);
                val &= ~S3C_CIPRCTRL_LASTIRQEN_ENABLE;
                writel(val, cfg->regs + S3C_CIPRCTRL);
-       } else {
-               if (cfg->dma_type & CAMIF_CODEC) {
-                       val = readl(cfg->regs + S3C_CICOCTRL);
-                       val &= ~S3C_CICOCTRL_LASTIRQEN;
-                       writel(val, cfg->regs + S3C_CICOCTRL);
-               } else {
-                       val = readl(cfg->regs + S3C_CIPRCTRL);
-                       val &= ~S3C_CIPRCTRL_LASTIRQEN_ENABLE;
-                       writel(val, cfg->regs + S3C_CIPRCTRL);
-               }
        }
 }
 
@@ -1871,4 +1914,3 @@
        s3c_camif_reset(CAMIF_RESET, 0);
        s3c_camif_set_gpio();
 }
-

-- 

Reply via email to