[pkg-fso-commits] [SCM] linux-2.6-openmoko, the Linux 2.6 kernel tree from Openmoko branch, andy-tracking, updated. upstream/20090303.gitb9de904e-140-g23b564c

Andy Green agreen at octopus.localdomain
Mon Jun 8 17:29:30 UTC 2009


The following commit has been merged in the andy-tracking branch:
commit 4e7dcbca46f69c2e3a55e248ad838ac6759e8652
Author: Werner Almesberger <werner at openmoko.org>
Date:   Mon Mar 9 21:02:21 2009 +0000

    Clean up camera interface driver
    
    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 <werner at openmoko.org>

diff --git a/drivers/media/video/s3c_camif.c b/drivers/media/video/s3c_camif.c
index 5626c59..3e18257 100644
--- a/drivers/media/video/s3c_camif.c
+++ b/drivers/media/video/s3c_camif.c
@@ -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 @@ unsigned char* s3c_camif_get_frame(camif_cfg_t *cfg)
 		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 @@ int s3c_camif_get_fifo_status(camif_cfg_t *cfg)
 	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 @@ int s3c_camif_get_fifo_status(camif_cfg_t *cfg)
 		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 @@ static int s3c_camif_request_memory(camif_cfg_t *cfg)
 
 	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 @@ static void s3c_camif_calc_burst_length_yuv422i(unsigned int hsize, unsigned int
 	*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 @@ static void s3c_camif_calc_burst_length(unsigned int hsize, unsigned int *mburst
 		} else {
 			tmp = (hsize / 4) % 4;
 			*mburst = 4;
-			*rburst = (tmp) ? tmp : 4;
+			*rburst = tmp ? tmp : 4;
 		}
 
 		break;
@@ -286,28 +286,33 @@ int s3c_camif_setup_dma(camif_cfg_t *cfg)
 	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 @@ int s3c_camif_setup_dma(camif_cfg_t *cfg)
 				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 @@ int s3c_camif_setup_dma(camif_cfg_t *cfg)
 			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 @@ int s3c_camif_setup_dma(camif_cfg_t *cfg)
 #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 @@ int s3c_camif_input_msdma_preview(camif_cfg_t * cfg)
 		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 @@ int s3c_camif_input_msdma_preview(camif_cfg_t * cfg)
 	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 @@ static int s3c_camif_input_msdma(camif_cfg_t *cfg)
 #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 @@ int s3c_camif_input_msdma_codec(camif_cfg_t * cfg)
 	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 @@ int s3c_camif_input_msdma_codec(camif_cfg_t * cfg)
 
 	/* 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 @@ int s3c_camif_input_msdma_preview(camif_cfg_t * cfg)
 		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 @@ int s3c_camif_input_msdma_preview(camif_cfg_t * cfg)
 
 	/* 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 @@ void __iomem *S3C24XX_VA_LCD = ioremap(S3C64XX_PA_FB, 1024*1024);
 			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 @@ static int s3c_camif_output_pp_codec(camif_cfg_t *cfg)
 
 	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 @@ static int s3c_camif_output_pp_codec(camif_cfg_t *cfg)
 	} 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 @@ static int s3c_camif_output_pp_codec(camif_cfg_t *cfg)
 	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 @@ void __iomem *S3C24XX_VA_LCD = ioremap(S3C64XX_PA_FB, 1024*1024);
 		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 @@ void __iomem *S3C24XX_VA_LCD = ioremap(S3C64XX_PA_FB, 1024*1024);
 	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 @@ static int s3c_camif_output_pp_preview(camif_cfg_t *cfg)
 
 	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 @@ static int s3c_camif_output_pp_preview(camif_cfg_t *cfg)
 	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 @@ static int s3c_camif_output_pp(camif_cfg_t *cfg)
 {
 	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 @@ static int s3c_camif_set_target_area(camif_cfg_t *cfg)
 #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_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_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 @@ static inline int s3c_camif_set_ratio(camif_cfg_t *cfg)
 			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_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_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 @@ static inline int s3c_camif_set_ratio(camif_cfg_t *cfg)
 			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 @@ static inline int s3c_camif_set_ratio(camif_cfg_t *cfg)
 
 	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_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_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_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_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 @@ static inline int s3c_camif_set_ratio(camif_cfg_t *cfg)
 }
 #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 @@ static int s3c_camif_setup_scaler(camif_cfg_t *cfg)
 		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 @@ static int s3c_camif_setup_scaler(camif_cfg_t *cfg)
 	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 @@ static int s3c_camif_setup_scaler(camif_cfg_t *cfg)
 	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 @@ int s3c_camif_set_source_format(camif_cis_t *cis)
 		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 @@ static int s3c_camif_set_target_format(camif_cfg_t *cfg)
 	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);
-
-		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
+		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;
+		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 @@ static int s3c_camif_set_target_format(camif_cfg_t *cfg)
 	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 @@ static int s3c_camif_set_target_format(camif_cfg_t *cfg)
 			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 @@ static int s3c_camif_set_target_format(camif_cfg_t *cfg)
 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 @@ int s3c_camif_start_dma(camif_cfg_t *cfg)
 		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 @@ int s3c_camif_start_dma(camif_cfg_t *cfg)
 		/* 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 @@ int s3c_camif_start_dma(camif_cfg_t *cfg)
 #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 @@ int s3c_camif_start_preview_msdma(camif_cfg_t * cfg)
 	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 @@ void s3c_camif_change_flip(camif_cfg_t *cfg)
 		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_flip(camif_cfg_t *cfg)
 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 @@ void s3c_camif_change_effect(camif_cfg_t *cfg)
 
 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 @@ int s3c_camif_set_offset(camif_cis_t *cis)
 	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 @@ int s3c_camif_set_offset(camif_cis_t *cis)
 		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 @@ void s3c_camif_enable_lastirq(camif_cfg_t *cfg)
 {
 	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 @@ void s3c_camif_disable_lastirq(camif_cfg_t *cfg)
 {
 	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 @@ void s3c_camif_init(void)
 	s3c_camif_reset(CAMIF_RESET, 0);
 	s3c_camif_set_gpio();
 }
-

-- 
linux-2.6-openmoko, the Linux 2.6 kernel tree from Openmoko



More information about the pkg-fso-commits mailing list