ARM: mxs: add dma device
authorShawn Guo <shawn.guo@freescale.com>
Tue, 22 Feb 2011 13:36:27 +0000 (21:36 +0800)
committerSascha Hauer <s.hauer@pengutronix.de>
Mon, 7 Mar 2011 18:29:53 +0000 (19:29 +0100)
Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
Tested-by: Wolfram Sang <w.sang@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
arch/arm/mach-mxs/clock-mx23.c
arch/arm/mach-mxs/clock-mx28.c
arch/arm/mach-mxs/devices/Makefile
arch/arm/mach-mxs/devices/platform-dma.c [new file with mode: 0644]

index 2415b33d79c032fde3467c6953c230af60a29245..d133c7f30940f858d74cdb045f5a7d82c798f1c4 100644 (file)
@@ -444,7 +444,8 @@ static struct clk_lookup lookups[] = {
        _REGISTER_CLOCK("duart", NULL, uart_clk)
        _REGISTER_CLOCK("mxs-auart.0", NULL, uart_clk)
        _REGISTER_CLOCK("rtc", NULL, rtc_clk)
-       _REGISTER_CLOCK(NULL, "hclk", hbus_clk)
+       _REGISTER_CLOCK("mxs-dma-apbh", NULL, hbus_clk)
+       _REGISTER_CLOCK("mxs-dma-apbx", NULL, xbus_clk)
        _REGISTER_CLOCK(NULL, "usb", usb_clk)
        _REGISTER_CLOCK(NULL, "audio", audio_clk)
        _REGISTER_CLOCK("mxs-pwm.0", NULL, pwm_clk)
index 82770568845eb9bd00f3d2656bb2054840837e38..a350f957601985ce471bfd73bc99e07d678e5f29 100644 (file)
@@ -616,8 +616,8 @@ static struct clk_lookup lookups[] = {
        _REGISTER_CLOCK("mxs-auart.4", NULL, uart_clk)
        _REGISTER_CLOCK("rtc", NULL, rtc_clk)
        _REGISTER_CLOCK("pll2", NULL, pll2_clk)
-       _REGISTER_CLOCK(NULL, "hclk", hbus_clk)
-       _REGISTER_CLOCK(NULL, "xclk", xbus_clk)
+       _REGISTER_CLOCK("mxs-dma-apbh", NULL, hbus_clk)
+       _REGISTER_CLOCK("mxs-dma-apbx", NULL, xbus_clk)
        _REGISTER_CLOCK("flexcan.0", NULL, can0_clk)
        _REGISTER_CLOCK("flexcan.1", NULL, can1_clk)
        _REGISTER_CLOCK(NULL, "usb0", usb0_clk)
index 39bd77348a42e8de6be720eaa4ff46b4c05afcb4..0d9bea30b0a223c6171f0270caa28b57be32e10c 100644 (file)
@@ -1,5 +1,6 @@
 obj-$(CONFIG_MXS_HAVE_AMBA_DUART) += amba-duart.o
 obj-$(CONFIG_MXS_HAVE_PLATFORM_AUART) += platform-auart.o
+obj-y += platform-dma.o
 obj-$(CONFIG_MXS_HAVE_PLATFORM_FEC) += platform-fec.o
 obj-$(CONFIG_MXS_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o
 obj-$(CONFIG_MXS_HAVE_PLATFORM_MXS_I2C) += platform-mxs-i2c.o
diff --git a/arch/arm/mach-mxs/devices/platform-dma.c b/arch/arm/mach-mxs/devices/platform-dma.c
new file mode 100644 (file)
index 0000000..295c442
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Copyright 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 version 2 as published by the
+ * Free Software Foundation.
+ */
+#include <linux/compiler.h>
+#include <linux/err.h>
+#include <linux/init.h>
+
+#include <mach/mx23.h>
+#include <mach/mx28.h>
+#include <mach/devices-common.h>
+
+static struct platform_device *__init mxs_add_dma(const char *devid,
+                                               resource_size_t base)
+{
+       struct resource res[] = {
+               {
+                       .start = base,
+                       .end = base + SZ_8K - 1,
+                       .flags = IORESOURCE_MEM,
+               }
+       };
+
+       return mxs_add_platform_device_dmamask(devid, -1,
+                               res, ARRAY_SIZE(res), NULL, 0,
+                               DMA_BIT_MASK(32));
+}
+
+static int __init mxs_add_mxs_dma(void)
+{
+       char *apbh = "mxs-dma-apbh";
+       char *apbx = "mxs-dma-apbx";
+
+       if (cpu_is_mx23()) {
+               mxs_add_dma(apbh, MX23_APBH_DMA_BASE_ADDR);
+               mxs_add_dma(apbx, MX23_APBX_DMA_BASE_ADDR);
+       }
+
+       if (cpu_is_mx28()) {
+               mxs_add_dma(apbh, MX28_APBH_DMA_BASE_ADDR);
+               mxs_add_dma(apbx, MX28_APBX_DMA_BASE_ADDR);
+       }
+
+       return 0;
+}
+arch_initcall(mxs_add_mxs_dma);