* [PATCH v3 0/2] Add dma device for i.MX23/28
@ 2011-02-21 10:31 Shawn Guo
2011-02-21 10:31 ` [PATCH v3 1/2] ARM: mxs: add dma channel definitions Shawn Guo
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Shawn Guo @ 2011-02-21 10:31 UTC (permalink / raw)
To: linux-arm-kernel
Hi Sascha,
These two patches have no change since v2, and I re-post them to let
you pick them up easily.
Regards,
Shawn
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 1/2] ARM: mxs: add dma channel definitions
2011-02-21 10:31 [PATCH v3 0/2] Add dma device for i.MX23/28 Shawn Guo
@ 2011-02-21 10:31 ` Shawn Guo
2011-02-21 10:31 ` [PATCH v3 2/2] ARM: mxs: add dma device Shawn Guo
2011-02-21 17:20 ` [PATCH v3 0/2] Add dma device for i.MX23/28 Wolfram Sang
2 siblings, 0 replies; 11+ messages in thread
From: Shawn Guo @ 2011-02-21 10:31 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
---
arch/arm/mach-mxs/include/mach/mx23.h | 24 +++++++++++++++++++++
arch/arm/mach-mxs/include/mach/mx28.h | 37 +++++++++++++++++++++++++++++++++
2 files changed, 61 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-mxs/include/mach/mx23.h b/arch/arm/mach-mxs/include/mach/mx23.h
index 9edd02e..1730c9c 100644
--- a/arch/arm/mach-mxs/include/mach/mx23.h
+++ b/arch/arm/mach-mxs/include/mach/mx23.h
@@ -142,4 +142,28 @@
#define MX23_INT_VDD5V_DROOP 64
#define MX23_INT_DCDC4P2_BO 65
+/*
+ * APBH DMA
+ */
+#define MX23_DMA_SSP1 1
+#define MX23_DMA_SSP2 2
+#define MX23_DMA_GPMI0 4
+#define MX23_DMA_GPMI1 5
+#define MX23_DMA_GPMI2 6
+#define MX23_DMA_GPMI3 7
+
+/*
+ * APBX DMA
+ */
+#define MX23_DMA_ADC 0
+#define MX23_DMA_DAC 1
+#define MX23_DMA_SPDIF 2
+#define MX23_DMA_I2C 3
+#define MX23_DMA_SAIF0 4
+#define MX23_DMA_UART0_RX 6
+#define MX23_DMA_UART0_TX 7
+#define MX23_DMA_UART1_RX 8
+#define MX23_DMA_UART1_TX 9
+#define MX23_DMA_SAIF1 10
+
#endif /* __MACH_MX23_H__ */
diff --git a/arch/arm/mach-mxs/include/mach/mx28.h b/arch/arm/mach-mxs/include/mach/mx28.h
index 0716745..3f3485a 100644
--- a/arch/arm/mach-mxs/include/mach/mx28.h
+++ b/arch/arm/mach-mxs/include/mach/mx28.h
@@ -185,4 +185,41 @@
#define MX28_INT_GPIO1 126
#define MX28_INT_GPIO0 127
+/*
+ * APBH DMA
+ */
+#define MX28_DMA_SSP0 0
+#define MX28_DMA_SSP1 1
+#define MX28_DMA_SSP2 2
+#define MX28_DMA_SSP3 3
+#define MX28_DMA_GPMI0 4
+#define MX28_DMA_GPMI1 5
+#define MX28_DMA_GPMI2 6
+#define MX28_DMA_GPMI3 7
+#define MX28_DMA_GPMI4 8
+#define MX28_DMA_GPMI5 9
+#define MX28_DMA_GPMI6 10
+#define MX28_DMA_GPMI7 11
+#define MX28_DMA_HSADC 12
+#define MX28_DMA_LCDIF 13
+
+/*
+ * APBX DMA
+ */
+#define MX28_DMA_AUART4_RX 0
+#define MX28_DMA_AUART4_TX 1
+#define MX28_DMA_SPDIF_TX 2
+#define MX28_DMA_SAIF0 4
+#define MX28_DMA_SAIF1 5
+#define MX28_DMA_I2C0 6
+#define MX28_DMA_I2C1 7
+#define MX28_DMA_AUART0_RX 8
+#define MX28_DMA_AUART0_TX 9
+#define MX28_DMA_AUART1_RX 10
+#define MX28_DMA_AUART1_TX 11
+#define MX28_DMA_AUART2_RX 12
+#define MX28_DMA_AUART2_TX 13
+#define MX28_DMA_AUART3_RX 14
+#define MX28_DMA_AUART3_TX 15
+
#endif /* __MACH_MX28_H__ */
--
1.7.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v3 2/2] ARM: mxs: add dma device
2011-02-21 10:31 [PATCH v3 0/2] Add dma device for i.MX23/28 Shawn Guo
2011-02-21 10:31 ` [PATCH v3 1/2] ARM: mxs: add dma channel definitions Shawn Guo
@ 2011-02-21 10:31 ` Shawn Guo
2011-02-22 7:52 ` Sascha Hauer
` (2 more replies)
2011-02-21 17:20 ` [PATCH v3 0/2] Add dma device for i.MX23/28 Wolfram Sang
2 siblings, 3 replies; 11+ messages in thread
From: Shawn Guo @ 2011-02-21 10:31 UTC (permalink / raw)
To: linux-arm-kernel
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
@@ -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);
--
1.7.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v3 0/2] Add dma device for i.MX23/28
2011-02-21 10:31 [PATCH v3 0/2] Add dma device for i.MX23/28 Shawn Guo
2011-02-21 10:31 ` [PATCH v3 1/2] ARM: mxs: add dma channel definitions Shawn Guo
2011-02-21 10:31 ` [PATCH v3 2/2] ARM: mxs: add dma device Shawn Guo
@ 2011-02-21 17:20 ` Wolfram Sang
2 siblings, 0 replies; 11+ messages in thread
From: Wolfram Sang @ 2011-02-21 17:20 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Feb 21, 2011 at 06:31:44PM +0800, Shawn Guo wrote:
> Hi Sascha,
>
> These two patches have no change since v2, and I re-post them to let
> you pick them up easily.
Both
Tested-by: Wolfram Sang <w.sang@pengutronix.de>
--
Pengutronix e.K. | Wolfram Sang |
Industrial Linux Solutions | http://www.pengutronix.de/ |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110221/86334d96/attachment.sig>
^ 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 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-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 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 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
* [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
end of thread, other threads:[~2011-02-23 3:09 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-21 10:31 [PATCH v3 0/2] Add dma device for i.MX23/28 Shawn Guo
2011-02-21 10:31 ` [PATCH v3 1/2] ARM: mxs: add dma channel definitions Shawn Guo
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 12:27 ` Shawn Guo
2011-02-22 18:30 ` Uwe Kleine-König
2011-02-23 3:09 ` Shawn Guo
2011-02-22 13:36 ` [PATCH v4] " Shawn Guo
2011-02-21 17:20 ` [PATCH v3 0/2] Add dma device for i.MX23/28 Wolfram Sang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).