ARM: S5P: Add platform definitions for FIMC3
authorSylwester Nawrocki <s.nawrocki@samsung.com>
Fri, 11 Mar 2011 23:58:01 +0000 (08:58 +0900)
committerKukjin Kim <kgene.kim@samsung.com>
Fri, 11 Mar 2011 23:58:01 +0000 (08:58 +0900)
Add support for fourth FIMC platform device definition and define
resources for FIMC modules on EXYNOS4 machines.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
arch/arm/mach-exynos4/cpu.c
arch/arm/mach-exynos4/include/mach/irqs.h
arch/arm/mach-exynos4/include/mach/map.h
arch/arm/plat-s5p/Kconfig
arch/arm/plat-s5p/Makefile
arch/arm/plat-s5p/dev-fimc3.c [new file with mode: 0644]
arch/arm/plat-samsung/include/plat/devs.h
arch/arm/plat-samsung/include/plat/fimc-core.h

index 479dfa1951c8ef25c1cdaa09564d851b95d6fcdd..793011391943b222a61008d53fbd1975bf7fc702 100644 (file)
@@ -21,6 +21,8 @@
 #include <plat/clock.h>
 #include <plat/exynos4.h>
 #include <plat/sdhci.h>
+#include <plat/devs.h>
+#include <plat/fimc-core.h>
 
 #include <mach/regs-irq.h>
 
@@ -120,6 +122,11 @@ void __init exynos4_map_io(void)
        exynos4_default_sdhci1();
        exynos4_default_sdhci2();
        exynos4_default_sdhci3();
+
+       s3c_fimc_setname(0, "exynos4-fimc");
+       s3c_fimc_setname(1, "exynos4-fimc");
+       s3c_fimc_setname(2, "exynos4-fimc");
+       s3c_fimc_setname(3, "exynos4-fimc");
 }
 
 void __init exynos4_init_clocks(int xtal)
index e3556d45c75b5de2fa375bab2ff65e2a78033811..1db1de8e3e81f58758437a033f783a935c31293f 100644 (file)
 #define IRQ_MIPI_CSIS0         COMBINER_IRQ(30, 0)
 #define IRQ_MIPI_CSIS1         COMBINER_IRQ(30, 1)
 
+#define IRQ_FIMC0              COMBINER_IRQ(32, 0)
+#define IRQ_FIMC1              COMBINER_IRQ(32, 1)
+#define IRQ_FIMC2              COMBINER_IRQ(33, 0)
+#define IRQ_FIMC3              COMBINER_IRQ(33, 1)
+
 #define IRQ_ONENAND_AUDI       COMBINER_IRQ(34, 0)
 
 #define IRQ_MCT_L1             COMBINER_IRQ(35, 3)
index 89ab6f75776c64894fd064f65b6dbb69aef1fae0..4f50b07a376a1753b1b884f95d0e1b63f2587b28 100644 (file)
 
 #define EXYNOS4_PA_SYSRAM              0x02020000
 
+#define EXYNOS4_PA_FIMC0               0x11800000
+#define EXYNOS4_PA_FIMC1               0x11810000
+#define EXYNOS4_PA_FIMC2               0x11820000
+#define EXYNOS4_PA_FIMC3               0x11830000
+
 #define EXYNOS4_PA_I2S0                        0x03830000
 #define EXYNOS4_PA_I2S1                        0xE3100000
 #define EXYNOS4_PA_I2S2                        0xE2A00000
 #define S3C_PA_WDT                     EXYNOS4_PA_WATCHDOG
 
 #define S5P_PA_CHIPID                  EXYNOS4_PA_CHIPID
+#define S5P_PA_FIMC0                   EXYNOS4_PA_FIMC0
+#define S5P_PA_FIMC1                   EXYNOS4_PA_FIMC1
+#define S5P_PA_FIMC2                   EXYNOS4_PA_FIMC2
+#define S5P_PA_FIMC3                   EXYNOS4_PA_FIMC3
 #define S5P_PA_MIPI_CSIS0              EXYNOS4_PA_MIPI_CSIS0
 #define S5P_PA_MIPI_CSIS1              EXYNOS4_PA_MIPI_CSIS1
 #define S5P_PA_ONENAND                 EXYNOS4_PA_ONENAND
index 0e414477124054e4d071bfacce1a6b98d0cc1b07..849229716586c152a2ac1ebee0533e685f97c9ca 100644 (file)
@@ -65,6 +65,11 @@ config S5P_DEV_FIMC2
        help
          Compile in platform device definitions for FIMC controller 2
 
+config S5P_DEV_FIMC3
+       bool
+       help
+         Compile in platform device definitions for FIMC controller 3
+
 config S5P_DEV_ONENAND
        bool
        help
index a788266b5e5fadbd99b2d55a1927c37d3ee5f2c7..42afff7f60be01eaefa05335caa80387b4b6a9ef 100644 (file)
@@ -29,6 +29,7 @@ obj-$(CONFIG_S5P_HRT)                 += s5p-time.o
 obj-$(CONFIG_S5P_DEV_FIMC0)    += dev-fimc0.o
 obj-$(CONFIG_S5P_DEV_FIMC1)    += dev-fimc1.o
 obj-$(CONFIG_S5P_DEV_FIMC2)    += dev-fimc2.o
+obj-$(CONFIG_S5P_DEV_FIMC3)    += dev-fimc3.o
 obj-$(CONFIG_S5P_DEV_ONENAND)  += dev-onenand.o
 obj-$(CONFIG_S5P_DEV_CSIS0)    += dev-csis0.o
 obj-$(CONFIG_S5P_DEV_CSIS1)    += dev-csis1.o
diff --git a/arch/arm/plat-s5p/dev-fimc3.c b/arch/arm/plat-s5p/dev-fimc3.c
new file mode 100644 (file)
index 0000000..ef31bec
--- /dev/null
@@ -0,0 +1,43 @@
+/* linux/arch/arm/plat-s5p/dev-fimc3.c
+ *
+ * Copyright (c) 2010 Samsung Electronics
+ *
+ * Base S5P FIMC3 resource and device definitions
+ *
+ * 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/dma-mapping.h>
+#include <linux/platform_device.h>
+#include <linux/interrupt.h>
+#include <linux/ioport.h>
+#include <mach/map.h>
+
+static struct resource s5p_fimc3_resource[] = {
+       [0] = {
+               .start  = S5P_PA_FIMC3,
+               .end    = S5P_PA_FIMC3 + SZ_4K - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = IRQ_FIMC3,
+               .end    = IRQ_FIMC3,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static u64 s5p_fimc3_dma_mask = DMA_BIT_MASK(32);
+
+struct platform_device s5p_device_fimc3 = {
+       .name           = "s5p-fimc",
+       .id             = 3,
+       .num_resources  = ARRAY_SIZE(s5p_fimc3_resource),
+       .resource       = s5p_fimc3_resource,
+       .dev            = {
+               .dma_mask               = &s5p_fimc3_dma_mask,
+               .coherent_dma_mask      = DMA_BIT_MASK(32),
+       },
+};
index e2b3ab997cff82534172626cf977ff87d8386a9c..7231ccf89ebbb72732c2635d23d28d2719bbf2d4 100644 (file)
@@ -136,6 +136,7 @@ extern struct platform_device samsung_device_keypad;
 extern struct platform_device s5p_device_fimc0;
 extern struct platform_device s5p_device_fimc1;
 extern struct platform_device s5p_device_fimc2;
+extern struct platform_device s5p_device_fimc3;
 
 extern struct platform_device s5p_device_mipi_csis0;
 extern struct platform_device s5p_device_mipi_csis1;
index 81a3bfeeccadafc7c45ac44470ac581655d329fd..945a99d59563999829bf6942928c1748c00d78fa 100644 (file)
@@ -37,6 +37,11 @@ static inline void s3c_fimc_setname(int id, char *name)
        case 2:
                s5p_device_fimc2.name = name;
                break;
+#endif
+#ifdef CONFIG_S5P_DEV_FIMC3
+       case 3:
+               s5p_device_fimc3.name = name;
+               break;
 #endif
        }
 }