Add Samsung S3C camera interface driver.
Original code is from Samsung's BSP and was written for 2.6.21.

Only tested on S3C6410.

Signed-off-by: Werner Almesberger <wer...@openmoko.org>

--- 

Index: cam/arch/arm/plat-s3c/dev-camif.c
===================================================================
--- /dev/null   1970-01-01 00:00:00.000000000 +0000
+++ cam/arch/arm/plat-s3c/dev-camif.c   2009-03-03 19:06:20.000000000 +0800
@@ -0,0 +1,64 @@
+/* linux/arch/arm/plat-s3c/dev-camif.c
+ *
+ * Copyright 2009 Openmoko, Inc.
+ * Werner Almesberger <wer...@openmoko.org>
+ *
+ * based on dev-hsmmc.c which is
+ *
+ * Copyright (c) 2008 Simtec Electronics
+ *     Ben Dooks <b...@simtec.co.uk>
+ *     http://armlinux.simtec.co.uk/
+ *
+ * S3C series device definition for camera interface devices
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+#include <linux/kernel.h>
+#include <linux/platform_device.h>
+#include <linux/mmc/host.h>
+
+#include <mach/map.h>
+#include <plat/devs.h>
+#include <plat/cpu.h>
+
+
+#define        S3C6400_PA_CAMIF        0x78000000
+#define S3C24XX_SZ_CAMIF       (0x1000)
+
+
+static struct resource s3c_camif_resource[] = {
+       [0] = {
+               .start = S3C6400_PA_CAMIF,
+               .end   = S3C6400_PA_CAMIF + S3C24XX_SZ_CAMIF - 1,
+               .flags = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start = IRQ_CAMIF_C,
+               .end   = IRQ_CAMIF_C,
+               .flags = IORESOURCE_IRQ,
+       },
+       [2] = {
+               .start = IRQ_CAMIF_P,
+               .end   = IRQ_CAMIF_P,
+               .flags = IORESOURCE_IRQ,
+       }
+
+};
+
+static u64 s3c_device_camif_dmamask = 0xffffffffUL;
+
+struct platform_device s3c_device_camif = {
+       .name             = "s3c-camif",
+       .id               = -1,
+       .num_resources    = ARRAY_SIZE(s3c_camif_resource),
+       .resource         = s3c_camif_resource,
+       .dev              = {
+               .dma_mask = &s3c_device_camif_dmamask,
+               .coherent_dma_mask = 0xffffffffUL
+       }
+};
+
+EXPORT_SYMBOL(s3c_device_camif);
Index: cam/arch/arm/plat-s3c/Kconfig
===================================================================
--- cam.orig/arch/arm/plat-s3c/Kconfig  2009-03-03 16:50:36.000000000 +0800
+++ cam/arch/arm/plat-s3c/Kconfig       2009-03-03 19:06:20.000000000 +0800
@@ -193,4 +193,9 @@
        help
          Compile in platform device definition for framebuffer
 
+config S3C_DEV_CAMIF
+       bool
+       help
+         Compile in platform device definitions for camera interface code
+
 endif
Index: cam/arch/arm/plat-s3c/Makefile
===================================================================
--- cam.orig/arch/arm/plat-s3c/Makefile 2009-03-03 16:50:36.000000000 +0800
+++ cam/arch/arm/plat-s3c/Makefile      2009-03-03 19:06:20.000000000 +0800
@@ -35,6 +35,7 @@
 obj-y                          += dev-i2c0.o
 obj-$(CONFIG_S3C_DEV_I2C1)     += dev-i2c1.o
 obj-$(CONFIG_S3C_DEV_FB)       += dev-fb.o
+obj-$(CONFIG_S3C_DEV_CAMIF)    += dev-camif.o
 
 obj-$(CONFIG_S3C_PWM)          += pwm.o
 obj-$(CONFIG_S3C_DMA)          += dma.o

-- 

Reply via email to