* [PATCH v3 2/2] ARM: mxs: add dma device
2011-02-21 10:31 ` [PATCH v3 2/2] ARM: mxs: add dma device Shawn Guo
@ 2011-02-22 7:52 ` Sascha Hauer
2011-02-22 12:34 ` Shawn Guo
2011-02-22 8:09 ` Uwe Kleine-König
2011-02-22 13:36 ` [PATCH v4] " Shawn Guo
2 siblings, 1 reply; 11+ messages in thread
From: Sascha Hauer @ 2011-02-22 7:52 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Feb 21, 2011 at 06:31:46PM +0800, Shawn Guo wrote:
> diff --git a/arch/arm/mach-mxs/devices/platform-dma.c b/arch/arm/mach-mxs/devices/platform-dma.c
> new file mode 100644
> index 0000000..ee3220e
> --- /dev/null
> +++ b/arch/arm/mach-mxs/devices/platform-dma.c
> @@ -0,0 +1,101 @@
> +/*
> + * Copyright (C) 2010 Pengutronix
> + * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
> + *
> + * 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>
> +
> +struct mxs_mxs_dma_data {
> + const char *devid;
> + resource_size_t iobase;
> +};
> +
> +#define mxs_dma_data_entry_single(soc, type, _devid) \
> + { \
> + .devid = _devid, \
> + .iobase = soc ## _ ## type ## _DMA ## _BASE_ADDR, \
> + }
> +
> +#ifdef CONFIG_SOC_IMX23
> +struct mxs_mxs_dma_data mx23_dma_data[] __initconst = {
> + mxs_dma_data_entry_single(MX23, APBH, "mxs-dma-apbh"),
> + mxs_dma_data_entry_single(MX23, APBX, "mxs-dma-apbx"),
> +};
> +#endif
> +
> +#ifdef CONFIG_SOC_IMX28
> +struct mxs_mxs_dma_data mx28_dma_data[] __initconst = {
> + mxs_dma_data_entry_single(MX28, APBH, "mxs-dma-apbh"),
> + mxs_dma_data_entry_single(MX28, APBX, "mxs-dma-apbx"),
> +};
> +#endif
> +
> +struct platform_device *__init mxs_add_dma(
> + const struct mxs_mxs_dma_data *data)
> +{
> + struct resource res[] = {
> + {
> + .start = data->iobase,
> + .end = data->iobase + SZ_8K - 1,
> + .flags = IORESOURCE_MEM,
> + }
> + };
> +
> + return mxs_add_platform_device_dmamask(data->devid, -1,
> + res, ARRAY_SIZE(res), NULL, 0,
> + DMA_BIT_MASK(32));
> +}
> +
> +#define mx23_add_apbh_dma() \
> + mxs_add_dma(&mx23_dma_data[0])
> +#define mx23_add_apbx_dma() \
> + mxs_add_dma(&mx23_dma_data[1])
> +
> +#define mx28_add_apbh_dma() \
> + mxs_add_dma(&mx28_dma_data[0])
> +#define mx28_add_apbx_dma() \
> + mxs_add_dma(&mx28_dma_data[1])
> +
> +static int __init mxs_add_mxs_dma(void)
> +{
> + struct platform_device *ret;
> +
> +#ifdef CONFIG_SOC_IMX23
> + if (cpu_is_mx23()) {
> + ret = mx23_add_apbh_dma();
> + if (IS_ERR(ret))
> + goto out;
> +
> + ret = mx23_add_apbx_dma();
> + } else
> +#endif
> +
> +#ifdef CONFIG_SOC_IMX28
> + if (cpu_is_mx28()) {
> + ret = mx28_add_apbh_dma();
> + if (IS_ERR(ret))
> + goto out;
> +
> + ret = mx28_add_apbx_dma();
> + } else
> +#endif
> + ret = ERR_PTR(-ENODEV);
> +
> +out:
> + if (IS_ERR(ret))
> + return PTR_ERR(ret);
> + else
> + return 0;
> +}
> +arch_initcall(mxs_add_mxs_dma);
Being consistent is one thing, but this should not lead to ifdeffery
where not necessary. Wouldn't it be much simpler to do the following:
static struct platform_device * __init mxs_add_dma(const char *devid,
resource_size_t base)
{
struct resource res_apbh[] = {
{
.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);
No ifdef, clear to read and only half the size.
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH v3 2/2] ARM: mxs: add dma device
2011-02-22 7:52 ` Sascha Hauer
@ 2011-02-22 12:34 ` Shawn Guo
0 siblings, 0 replies; 11+ messages in thread
From: Shawn Guo @ 2011-02-22 12:34 UTC (permalink / raw)
To: linux-arm-kernel
Hi Sascha,
On Tue, Feb 22, 2011 at 08:52:41AM +0100, Sascha Hauer wrote:
> On Mon, Feb 21, 2011 at 06:31:46PM +0800, Shawn Guo wrote:
>
> Being consistent is one thing, but this should not lead to ifdeffery
> where not necessary. Wouldn't it be much simpler to do the following:
>
> static struct platform_device * __init mxs_add_dma(const char *devid,
> resource_size_t base)
> {
> struct resource res_apbh[] = {
> {
> .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);
>
> No ifdef, clear to read and only half the size.
>
Looks sane. Thanks.
--
Regards,
Shawn
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 2/2] ARM: mxs: add dma device
2011-02-21 10:31 ` [PATCH v3 2/2] ARM: mxs: add dma device Shawn Guo
2011-02-22 7:52 ` Sascha Hauer
@ 2011-02-22 8:09 ` Uwe Kleine-König
2011-02-22 12:27 ` Shawn Guo
2011-02-22 13:36 ` [PATCH v4] " Shawn Guo
2 siblings, 1 reply; 11+ messages in thread
From: Uwe Kleine-König @ 2011-02-22 8:09 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Feb 21, 2011 at 06:31:46PM +0800, Shawn Guo wrote:
> Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
> ---
> arch/arm/mach-mxs/clock-mx23.c | 3 +-
> arch/arm/mach-mxs/clock-mx28.c | 4 +-
> arch/arm/mach-mxs/devices/Makefile | 1 +
> arch/arm/mach-mxs/devices/platform-dma.c | 101 ++++++++++++++++++++++++++++++
> 4 files changed, 106 insertions(+), 3 deletions(-)
> create mode 100644 arch/arm/mach-mxs/devices/platform-dma.c
>
> diff --git a/arch/arm/mach-mxs/clock-mx23.c b/arch/arm/mach-mxs/clock-mx23.c
> index b1a362e..350b28c 100644
> --- a/arch/arm/mach-mxs/clock-mx23.c
> +++ b/arch/arm/mach-mxs/clock-mx23.c
> @@ -443,7 +443,8 @@ static struct clk_lookup lookups[] = {
> /* for amba-pl011 driver */
> _REGISTER_CLOCK("duart", 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(NULL, "pwm", pwm_clk)
> diff --git a/arch/arm/mach-mxs/clock-mx28.c b/arch/arm/mach-mxs/clock-mx28.c
> index c9d7951..a3b4787 100644
> --- a/arch/arm/mach-mxs/clock-mx28.c
> +++ b/arch/arm/mach-mxs/clock-mx28.c
> @@ -617,8 +617,8 @@ static struct clk_lookup lookups[] = {
> _REGISTER_CLOCK("fec.0", NULL, fec_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)
> diff --git a/arch/arm/mach-mxs/devices/Makefile b/arch/arm/mach-mxs/devices/Makefile
> index a8dc8d5..ca7acc4 100644
> --- a/arch/arm/mach-mxs/devices/Makefile
> +++ b/arch/arm/mach-mxs/devices/Makefile
> @@ -1,4 +1,5 @@
> 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
> diff --git a/arch/arm/mach-mxs/devices/platform-dma.c b/arch/arm/mach-mxs/devices/platform-dma.c
> new file mode 100644
> index 0000000..ee3220e
> --- /dev/null
> +++ b/arch/arm/mach-mxs/devices/platform-dma.c
I'd prefer to have that called platform-mxs-dma.c to match the driver
name. (At least that's what you use for the data structs.)
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-K?nig |
Industrial Linux Solutions | http://www.pengutronix.de/ |
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH v3 2/2] ARM: mxs: add dma device
2011-02-22 8:09 ` Uwe Kleine-König
@ 2011-02-22 12:27 ` Shawn Guo
2011-02-22 18:30 ` Uwe Kleine-König
0 siblings, 1 reply; 11+ messages in thread
From: Shawn Guo @ 2011-02-22 12:27 UTC (permalink / raw)
To: linux-arm-kernel
Hi Uwe,
On Tue, Feb 22, 2011 at 09:09:29AM +0100, Uwe Kleine-K?nig wrote:
> On Mon, Feb 21, 2011 at 06:31:46PM +0800, Shawn Guo wrote:
> > Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
> > ---
> > arch/arm/mach-mxs/clock-mx23.c | 3 +-
> > arch/arm/mach-mxs/clock-mx28.c | 4 +-
> > arch/arm/mach-mxs/devices/Makefile | 1 +
> > arch/arm/mach-mxs/devices/platform-dma.c | 101 ++++++++++++++++++++++++++++++
> > 4 files changed, 106 insertions(+), 3 deletions(-)
> > create mode 100644 arch/arm/mach-mxs/devices/platform-dma.c
> >
> > diff --git a/arch/arm/mach-mxs/clock-mx23.c b/arch/arm/mach-mxs/clock-mx23.c
> > index b1a362e..350b28c 100644
> > --- a/arch/arm/mach-mxs/clock-mx23.c
> > +++ b/arch/arm/mach-mxs/clock-mx23.c
> > @@ -443,7 +443,8 @@ static struct clk_lookup lookups[] = {
> > /* for amba-pl011 driver */
> > _REGISTER_CLOCK("duart", 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(NULL, "pwm", pwm_clk)
> > diff --git a/arch/arm/mach-mxs/clock-mx28.c b/arch/arm/mach-mxs/clock-mx28.c
> > index c9d7951..a3b4787 100644
> > --- a/arch/arm/mach-mxs/clock-mx28.c
> > +++ b/arch/arm/mach-mxs/clock-mx28.c
> > @@ -617,8 +617,8 @@ static struct clk_lookup lookups[] = {
> > _REGISTER_CLOCK("fec.0", NULL, fec_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)
> > diff --git a/arch/arm/mach-mxs/devices/Makefile b/arch/arm/mach-mxs/devices/Makefile
> > index a8dc8d5..ca7acc4 100644
> > --- a/arch/arm/mach-mxs/devices/Makefile
> > +++ b/arch/arm/mach-mxs/devices/Makefile
> > @@ -1,4 +1,5 @@
> > 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
> > diff --git a/arch/arm/mach-mxs/devices/platform-dma.c b/arch/arm/mach-mxs/devices/platform-dma.c
> > new file mode 100644
> > index 0000000..ee3220e
> > --- /dev/null
> > +++ b/arch/arm/mach-mxs/devices/platform-dma.c
> I'd prefer to have that called platform-mxs-dma.c to match the driver
> name. (At least that's what you use for the data structs.)
>
If you put this comment a little bit earlier on platform-auart.c which
is the first example that saves the "mxs" from driver name, I would
have platform-mxs-dma.c and platform-mxs-mmc.c from the start.
--
Regards,
Shawn
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH v3 2/2] ARM: mxs: add dma device
2011-02-22 12:27 ` Shawn Guo
@ 2011-02-22 18:30 ` Uwe Kleine-König
2011-02-23 3:09 ` Shawn Guo
0 siblings, 1 reply; 11+ messages in thread
From: Uwe Kleine-König @ 2011-02-22 18:30 UTC (permalink / raw)
To: linux-arm-kernel
Hi Shawn,
On Tue, Feb 22, 2011 at 08:27:34PM +0800, Shawn Guo wrote:
> > > diff --git a/arch/arm/mach-mxs/devices/platform-dma.c b/arch/arm/mach-mxs/devices/platform-dma.c
> > > new file mode 100644
> > > index 0000000..ee3220e
> > > --- /dev/null
> > > +++ b/arch/arm/mach-mxs/devices/platform-dma.c
> > I'd prefer to have that called platform-mxs-dma.c to match the driver
> > name. (At least that's what you use for the data structs.)
> >
> If you put this comment a little bit earlier on platform-auart.c which
> is the first example that saves the "mxs" from driver name, I would
> have platform-mxs-dma.c and platform-mxs-mmc.c from the start.
I already noticed I missed auart and planned to follow up with a patch.
Sorry if this resulted in an extra iteration for you.
Uwe
--
Pengutronix e.K. | Uwe Kleine-K?nig |
Industrial Linux Solutions | http://www.pengutronix.de/ |
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 2/2] ARM: mxs: add dma device
2011-02-22 18:30 ` Uwe Kleine-König
@ 2011-02-23 3:09 ` Shawn Guo
0 siblings, 0 replies; 11+ messages in thread
From: Shawn Guo @ 2011-02-23 3:09 UTC (permalink / raw)
To: linux-arm-kernel
Hi Uwe,
On Tue, Feb 22, 2011 at 07:30:36PM +0100, Uwe Kleine-K?nig wrote:
> Hi Shawn,
>
> On Tue, Feb 22, 2011 at 08:27:34PM +0800, Shawn Guo wrote:
> > > > diff --git a/arch/arm/mach-mxs/devices/platform-dma.c b/arch/arm/mach-mxs/devices/platform-dma.c
> > > > new file mode 100644
> > > > index 0000000..ee3220e
> > > > --- /dev/null
> > > > +++ b/arch/arm/mach-mxs/devices/platform-dma.c
> > > I'd prefer to have that called platform-mxs-dma.c to match the driver
> > > name. (At least that's what you use for the data structs.)
> > >
> > If you put this comment a little bit earlier on platform-auart.c which
> > is the first example that saves the "mxs" from driver name, I would
> > have platform-mxs-dma.c and platform-mxs-mmc.c from the start.
> I already noticed I missed auart and planned to follow up with a patch.
> Sorry if this resulted in an extra iteration for you.
>
Can we keep it as it is for now, and get your patch fix this
"mxs global" thing?
Sascha plans to rename fb.h to mxsfb.h, and I'm not sure if you will
do the same to rename dma.h and mmc.h under mach-mxs/include/mach to
align everything with driver name. Just a reminder, this will
require changes in dma and mmc drivers accordingly, also will bring
plat-mxc a mxs-dma.h later support gpmi with mxs dma.
--
Regards,
Shawn
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v4] ARM: mxs: add dma device
2011-02-21 10:31 ` [PATCH v3 2/2] ARM: mxs: add dma device Shawn Guo
2011-02-22 7:52 ` Sascha Hauer
2011-02-22 8:09 ` Uwe Kleine-König
@ 2011-02-22 13:36 ` Shawn Guo
2 siblings, 0 replies; 11+ messages in thread
From: Shawn Guo @ 2011-02-22 13:36 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
arch/arm/mach-mxs/clock-mx23.c | 3 +-
arch/arm/mach-mxs/clock-mx28.c | 4 +-
arch/arm/mach-mxs/devices/Makefile | 1 +
arch/arm/mach-mxs/devices/platform-dma.c | 49 ++++++++++++++++++++++++++++++
4 files changed, 54 insertions(+), 3 deletions(-)
create mode 100644 arch/arm/mach-mxs/devices/platform-dma.c
diff --git a/arch/arm/mach-mxs/clock-mx23.c b/arch/arm/mach-mxs/clock-mx23.c
index b1a362e..350b28c 100644
--- a/arch/arm/mach-mxs/clock-mx23.c
+++ b/arch/arm/mach-mxs/clock-mx23.c
@@ -443,7 +443,8 @@ static struct clk_lookup lookups[] = {
/* for amba-pl011 driver */
_REGISTER_CLOCK("duart", 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(NULL, "pwm", pwm_clk)
diff --git a/arch/arm/mach-mxs/clock-mx28.c b/arch/arm/mach-mxs/clock-mx28.c
index c9d7951..a3b4787 100644
--- a/arch/arm/mach-mxs/clock-mx28.c
+++ b/arch/arm/mach-mxs/clock-mx28.c
@@ -617,8 +617,8 @@ static struct clk_lookup lookups[] = {
_REGISTER_CLOCK("fec.0", NULL, fec_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)
diff --git a/arch/arm/mach-mxs/devices/Makefile b/arch/arm/mach-mxs/devices/Makefile
index a8dc8d5..ca7acc4 100644
--- a/arch/arm/mach-mxs/devices/Makefile
+++ b/arch/arm/mach-mxs/devices/Makefile
@@ -1,4 +1,5 @@
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
diff --git a/arch/arm/mach-mxs/devices/platform-dma.c b/arch/arm/mach-mxs/devices/platform-dma.c
new file mode 100644
index 0000000..295c442
--- /dev/null
+++ b/arch/arm/mach-mxs/devices/platform-dma.c
@@ -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);
--
1.7.1
^ permalink raw reply related [flat|nested] 11+ messages in thread