aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGaëtan Carlier <gcembed@gmail.com>2012-09-05 07:06:15 -0400
committerSascha Hauer <s.hauer@pengutronix.de>2012-11-16 10:21:48 -0500
commit3ab3a350200c14350220fffde893f3afb640fd25 (patch)
tree8c8e537f4159ebafe97dc5977b7efd90015eb6f2
parent89a4150331bc07014256714678ce8e9b238fc145 (diff)
ARM : i.MX27 : split code for allocation of ressources of camera and eMMA
This is to prepare addition of m2m-emmapp driver otherwise IMX_HAVE_PLATFORM_MX2_CAMERA must be declared even if only Post-Processor is needed. IMX_HAVE_PLATFORM_MX2_EMMA define has been added. Changes since v1: - Add "select IMX_HAVE_PLATFORM_MX2_EMMA" for MACH_IMX27_VISSTRIM_M10 platform due to pending patch in linux-media tree that will call imx27_add_mx2_emmaprp(). Signed-off-by: Gaëtan Carlier <gcembed@gmail.com> Acked-by: Javier Martin <javier.martin@vista-silicon.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--arch/arm/mach-imx/Kconfig1
-rw-r--r--arch/arm/mach-imx/devices-imx27.h4
-rw-r--r--arch/arm/mach-imx/devices/Kconfig3
-rw-r--r--arch/arm/mach-imx/devices/Makefile1
-rw-r--r--arch/arm/mach-imx/devices/devices-common.h9
-rw-r--r--arch/arm/mach-imx/devices/platform-mx2-camera.c17
-rw-r--r--arch/arm/plat-mxc/devices/platform-mx2-emma.c40
7 files changed, 56 insertions, 19 deletions
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index f1bf610e290..01a2597314d 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -394,6 +394,7 @@ config MACH_IMX27_VISSTRIM_M10
394 select IMX_HAVE_PLATFORM_IMX_SSI 394 select IMX_HAVE_PLATFORM_IMX_SSI
395 select IMX_HAVE_PLATFORM_IMX_UART 395 select IMX_HAVE_PLATFORM_IMX_UART
396 select IMX_HAVE_PLATFORM_MX2_CAMERA 396 select IMX_HAVE_PLATFORM_MX2_CAMERA
397 select IMX_HAVE_PLATFORM_MX2_EMMA
397 select IMX_HAVE_PLATFORM_MXC_EHCI 398 select IMX_HAVE_PLATFORM_MXC_EHCI
398 select IMX_HAVE_PLATFORM_MXC_MMC 399 select IMX_HAVE_PLATFORM_MXC_MMC
399 select LEDS_GPIO_REGISTER 400 select LEDS_GPIO_REGISTER
diff --git a/arch/arm/mach-imx/devices-imx27.h b/arch/arm/mach-imx/devices-imx27.h
index 8a1ad7972d4..13096251975 100644
--- a/arch/arm/mach-imx/devices-imx27.h
+++ b/arch/arm/mach-imx/devices-imx27.h
@@ -53,8 +53,10 @@ extern const struct imx_imx_uart_1irq_data imx27_imx_uart_data[];
53extern const struct imx_mx2_camera_data imx27_mx2_camera_data; 53extern const struct imx_mx2_camera_data imx27_mx2_camera_data;
54#define imx27_add_mx2_camera(pdata) \ 54#define imx27_add_mx2_camera(pdata) \
55 imx_add_mx2_camera(&imx27_mx2_camera_data, pdata) 55 imx_add_mx2_camera(&imx27_mx2_camera_data, pdata)
56
57extern const struct imx_mx2_emma_data imx27_mx2_emmaprp_data;
56#define imx27_add_mx2_emmaprp() \ 58#define imx27_add_mx2_emmaprp() \
57 imx_add_mx2_emmaprp(&imx27_mx2_camera_data) 59 imx_add_mx2_emmaprp(&imx27_mx2_emmaprp_data)
58 60
59extern const struct imx_mxc_ehci_data imx27_mxc_ehci_otg_data; 61extern const struct imx_mxc_ehci_data imx27_mxc_ehci_otg_data;
60#define imx27_add_mxc_ehci_otg(pdata) \ 62#define imx27_add_mxc_ehci_otg(pdata) \
diff --git a/arch/arm/mach-imx/devices/Kconfig b/arch/arm/mach-imx/devices/Kconfig
index a35d9841f49..9a8f1ca7bcb 100644
--- a/arch/arm/mach-imx/devices/Kconfig
+++ b/arch/arm/mach-imx/devices/Kconfig
@@ -56,6 +56,9 @@ config IMX_HAVE_PLATFORM_MX1_CAMERA
56config IMX_HAVE_PLATFORM_MX2_CAMERA 56config IMX_HAVE_PLATFORM_MX2_CAMERA
57 bool 57 bool
58 58
59config IMX_HAVE_PLATFORM_MX2_EMMA
60 bool
61
59config IMX_HAVE_PLATFORM_MXC_EHCI 62config IMX_HAVE_PLATFORM_MXC_EHCI
60 bool 63 bool
61 64
diff --git a/arch/arm/mach-imx/devices/Makefile b/arch/arm/mach-imx/devices/Makefile
index 2abe2a5144d..6acf37e0c11 100644
--- a/arch/arm/mach-imx/devices/Makefile
+++ b/arch/arm/mach-imx/devices/Makefile
@@ -30,3 +30,4 @@ obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_W1) += platform-mxc_w1.o
30obj-$(CONFIG_IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX) += platform-sdhci-esdhc-imx.o 30obj-$(CONFIG_IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX) += platform-sdhci-esdhc-imx.o
31obj-$(CONFIG_IMX_HAVE_PLATFORM_SPI_IMX) += platform-spi_imx.o 31obj-$(CONFIG_IMX_HAVE_PLATFORM_SPI_IMX) += platform-spi_imx.o
32obj-$(CONFIG_IMX_HAVE_PLATFORM_AHCI) += platform-ahci-imx.o 32obj-$(CONFIG_IMX_HAVE_PLATFORM_AHCI) += platform-ahci-imx.o
33obj-$(CONFIG_IMX_HAVE_PLATFORM_MX2_EMMA) += platform-mx2-emma.o
diff --git a/arch/arm/mach-imx/devices/devices-common.h b/arch/arm/mach-imx/devices/devices-common.h
index e4b790b9e2a..6277baf1b7b 100644
--- a/arch/arm/mach-imx/devices/devices-common.h
+++ b/arch/arm/mach-imx/devices/devices-common.h
@@ -232,8 +232,15 @@ struct imx_mx2_camera_data {
232struct platform_device *__init imx_add_mx2_camera( 232struct platform_device *__init imx_add_mx2_camera(
233 const struct imx_mx2_camera_data *data, 233 const struct imx_mx2_camera_data *data,
234 const struct mx2_camera_platform_data *pdata); 234 const struct mx2_camera_platform_data *pdata);
235
236
237struct imx_mx2_emma_data {
238 resource_size_t iobase;
239 resource_size_t iosize;
240 resource_size_t irq;
241};
235struct platform_device *__init imx_add_mx2_emmaprp( 242struct platform_device *__init imx_add_mx2_emmaprp(
236 const struct imx_mx2_camera_data *data); 243 const struct imx_mx2_emma_data *data);
237 244
238#include <linux/platform_data/usb-ehci-mxc.h> 245#include <linux/platform_data/usb-ehci-mxc.h>
239struct imx_mxc_ehci_data { 246struct imx_mxc_ehci_data {
diff --git a/arch/arm/mach-imx/devices/platform-mx2-camera.c b/arch/arm/mach-imx/devices/platform-mx2-camera.c
index f4910160346..b53e1f348f5 100644
--- a/arch/arm/mach-imx/devices/platform-mx2-camera.c
+++ b/arch/arm/mach-imx/devices/platform-mx2-camera.c
@@ -65,20 +65,3 @@ struct platform_device *__init imx_add_mx2_camera(
65 pdata, sizeof(*pdata), DMA_BIT_MASK(32)); 65 pdata, sizeof(*pdata), DMA_BIT_MASK(32));
66} 66}
67 67
68struct platform_device *__init imx_add_mx2_emmaprp(
69 const struct imx_mx2_camera_data *data)
70{
71 struct resource res[] = {
72 {
73 .start = data->iobaseemmaprp,
74 .end = data->iobaseemmaprp + data->iosizeemmaprp - 1,
75 .flags = IORESOURCE_MEM,
76 }, {
77 .start = data->irqemmaprp,
78 .end = data->irqemmaprp,
79 .flags = IORESOURCE_IRQ,
80 },
81 };
82 return imx_add_platform_device_dmamask("m2m-emmaprp", 0,
83 res, 2, NULL, 0, DMA_BIT_MASK(32));
84}
diff --git a/arch/arm/plat-mxc/devices/platform-mx2-emma.c b/arch/arm/plat-mxc/devices/platform-mx2-emma.c
new file mode 100644
index 00000000000..508404ddd4e
--- /dev/null
+++ b/arch/arm/plat-mxc/devices/platform-mx2-emma.c
@@ -0,0 +1,40 @@
1/*
2 * Copyright (C) 2010 Pengutronix
3 * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
4 *
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU General Public License version 2 as published by the
7 * Free Software Foundation.
8 */
9#include <mach/hardware.h>
10#include <mach/devices-common.h>
11
12#define imx_mx2_emmaprp_data_entry_single(soc) \
13 { \
14 .iobase = soc ## _EMMAPRP_BASE_ADDR, \
15 .iosize = SZ_32, \
16 .irq = soc ## _INT_EMMAPRP, \
17 }
18
19#ifdef CONFIG_SOC_IMX27
20const struct imx_mx2_emma_data imx27_mx2_emmaprp_data __initconst =
21 imx_mx2_emmaprp_data_entry_single(MX27);
22#endif /* ifdef CONFIG_SOC_IMX27 */
23
24struct platform_device *__init imx_add_mx2_emmaprp(
25 const struct imx_mx2_emma_data *data)
26{
27 struct resource res[] = {
28 {
29 .start = data->iobase,
30 .end = data->iobase + data->iosize - 1,
31 .flags = IORESOURCE_MEM,
32 }, {
33 .start = data->irq,
34 .end = data->irq,
35 .flags = IORESOURCE_IRQ,
36 },
37 };
38 return imx_add_platform_device_dmamask("m2m-emmaprp", 0,
39 res, 2, NULL, 0, DMA_BIT_MASK(32));
40}