]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00142950-4 - Plat-MXC: Port EPDC support to 2.6.38 kernel
authorDanny Nold <dannynold@freescale.com>
Tue, 3 May 2011 18:10:46 +0000 (13:10 -0500)
committerOliver Wendt <ow@karo-electronics.de>
Mon, 30 Sep 2013 12:09:05 +0000 (14:09 +0200)
- Port EPDC platform code to 2.6.38
- Port PxP platform code to 2.6.38

Signed-off-by: Danny Nold <dannynold@freescale.com>
arch/arm/plat-mxc/devices/Kconfig
arch/arm/plat-mxc/devices/Makefile
arch/arm/plat-mxc/devices/platform-imx-epdc-fb.c [new file with mode: 0644]
arch/arm/plat-mxc/devices/platform-imx-pxp.c [new file with mode: 0644]
arch/arm/plat-mxc/include/mach/devices-common.h
arch/arm/plat-mxc/include/mach/epdc.h [new file with mode: 0644]

index b146fc1617be9182e68c7a62f945136067086ed1..8680752170de63d78e05d8a370c31f343cf9141e 100755 (executable)
@@ -120,4 +120,10 @@ config IMX_HAVE_PLATFORM_PERFMON
        bool
 
 config IMX_HAVE_PLATFORM_LDB
-       bool
+    bool
+
+config IMX_HAVE_PLATFORM_IMX_PXP
+    bool
+
+config IMX_HAVE_PLATFORM_IMX_EPDC
+       bool
\ No newline at end of file
index 149b6734b35030ffa2e0192f38a4367fea9e9122..6586b628a051547d14893d2ed8254bd52d1f39f8 100755 (executable)
@@ -40,4 +40,5 @@ obj-$(CONFIG_IMX_HAVE_PLATFORM_RANDOM_RNGC) += platform-imx-rngb.o
 obj-$(CONFIG_IMX_HAVE_PLATFORM_PERFMON) += platform-imx-perfmon.o
 obj-$(CONFIG_IMX_HAVE_PLATFORM_LDB) += platform-imx_ldb.o
 obj-y += platform-imx-scc2.o
-
+obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_PXP) += platform-imx-pxp.o
+obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_EPDC) += platform-imx-epdc-fb.o
diff --git a/arch/arm/plat-mxc/devices/platform-imx-epdc-fb.c b/arch/arm/plat-mxc/devices/platform-imx-epdc-fb.c
new file mode 100644 (file)
index 0000000..d7dbe3e
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <asm/sizes.h>
+#include <mach/hardware.h>
+#include <mach/devices-common.h>
+
+#define imx5_epdc_data_entry_single(soc, size) \
+       {                                                               \
+               .iobase = soc ## _EPDC_BASE_ADDR,                       \
+               .irq = soc ## _INT_EPDC,                                \
+               .iosize = size,                                         \
+       }
+
+#ifdef CONFIG_SOC_IMX50
+const struct imx_epdc_data imx50_epdc_data __initconst =
+                       imx5_epdc_data_entry_single(MX50, SZ_4K);
+#endif
+
+struct platform_device *__init imx_add_imx_epdc(
+               const struct imx_epdc_data *data,
+               const struct imx_epdc_fb_platform_data *pdata)
+{
+       struct resource res[] = {
+               {
+                       .start = data->iobase,
+                       .end = data->iobase + data->iosize - 1,
+                       .flags = IORESOURCE_MEM,
+               }, {
+                       .start = data->irq,
+                       .end = data->irq,
+                       .flags = IORESOURCE_IRQ,
+               },
+       };
+
+       return imx_add_platform_device_dmamask("imx_epdc_fb", -1,
+               res, ARRAY_SIZE(res), pdata, sizeof(*pdata), DMA_BIT_MASK(32));
+}
+
diff --git a/arch/arm/plat-mxc/devices/platform-imx-pxp.c b/arch/arm/plat-mxc/devices/platform-imx-pxp.c
new file mode 100644 (file)
index 0000000..51030c5
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <asm/sizes.h>
+#include <mach/hardware.h>
+#include <mach/devices-common.h>
+
+#define imx5_pxp_data_entry_single(soc, size)  \
+       {                                                               \
+               .iobase = soc ## _EPXP_BASE_ADDR,                       \
+               .irq = soc ## _INT_EPXP,                                \
+               .iosize = size,                                         \
+       }
+
+#ifdef CONFIG_SOC_IMX50
+const struct imx_pxp_data imx50_pxp_data __initconst =
+                       imx5_pxp_data_entry_single(MX50, SZ_4K);
+#endif
+
+struct platform_device *__init imx_add_imx_pxp(
+               const struct imx_pxp_data *data)
+{
+       struct resource res[] = {
+               {
+                       .start = data->iobase,
+                       .end = data->iobase + data->iosize - 1,
+                       .flags = IORESOURCE_MEM,
+               }, {
+                       .start = data->irq,
+                       .end = data->irq,
+                       .flags = IORESOURCE_IRQ,
+               },
+       };
+
+       return imx_add_platform_device_dmamask("imx-pxp", -1,
+               res, ARRAY_SIZE(res), NULL, 0, DMA_BIT_MASK(32));
+}
+
+struct platform_device *__init imx_add_imx_pxp_client()
+{
+    return imx_add_platform_device("imx-pxp-client", -1,
+               NULL, 0, NULL, 0);
+}
+
index c62f7b763e7e8fb102a18b24801efdee245dcf4d..92dfa01b2b93302416631295a556a2ec8a41f355 100755 (executable)
@@ -409,6 +409,24 @@ struct imx_perfmon_data {
        struct mxs_platform_perfmon_data *pdata;
 };
 
+struct imx_pxp_data {
+    resource_size_t iobase;
+    resource_size_t iosize;
+    resource_size_t irq;
+};
+struct platform_device *__init imx_add_imx_pxp(
+       const struct imx_pxp_data *data);
+struct platform_device *__init imx_add_imx_pxp_client(void);
+
+#include <mach/epdc.h>
+struct imx_epdc_data {
+       resource_size_t iobase;
+       resource_size_t iosize;
+       resource_size_t irq;
+};
+struct platform_device *__init imx_add_imx_epdc(
+               const struct imx_epdc_data *data,
+               const struct imx_epdc_fb_platform_data *pdata);
 struct platform_device *__init imx_add_perfmon(
                const struct imx_perfmon_data *data);
                const struct mxc_gpu_platform_data *pdata);
diff --git a/arch/arm/plat-mxc/include/mach/epdc.h b/arch/arm/plat-mxc/include/mach/epdc.h
new file mode 100644 (file)
index 0000000..89abcc6
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2011 Freescale Semiconductor, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#ifndef __MACH_EPDC_H_
+#define __MACH_EPDC_H_
+
+struct imx_epdc_fb_mode {
+    struct fb_videomode *vmode;
+    int vscan_holdoff;
+    int sdoed_width;
+    int sdoed_delay;
+    int sdoez_width;
+    int sdoez_delay;
+    int gdclk_hp_offs;
+    int gdsp_offs;
+    int gdoe_offs;
+    int gdclk_offs;
+    int num_ce;
+};
+
+struct imx_epdc_fb_platform_data {
+    struct imx_epdc_fb_mode *epdc_mode;
+    int num_modes;
+    int (*get_pins) (void);
+    void (*put_pins) (void);
+    void (*enable_pins) (void);
+    void (*disable_pins) (void);
+};
+
+#endif /* __MACH_EPDC_H_ */