Skip to contentSkip to conversation

S3C24XX: Enable DMA on S3C2416 by sharing S3C2443-DMA

PATCH New Heiko Stübner 2 participants 5 messages Mar 4, 2012 – Mar 7, 2012

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

cover S3C24XX: Enable DMA on S3C2416 by sharing S3C2443-DMA

The S3C2416/2450 contains the same DMA register layout as the S3C2443. Therefore it can simply share this dma selection definition.

As we use the S3C2443_DMA the S3C2416_DMA is no longer necessary. The third patch removes this remnant of the S3C24XX merge.

The whole series was made on top of the recent S3C24XX merge.

Heiko Stuebner (3):
ARM: S3C24XX: Fix indentation of dma-s3c2443
ARM: S3C24XX: Reuse S3C2443 dma for S3C2416
ARM: S3C24XX: remove obsolete S3C2416_DMA option

 arch/arm/Kconfig                              |    1 -
 arch/arm/mach-s3c2416/Kconfig                 |   14 -----------
 arch/arm/mach-s3c2416/Makefile                |   12 ----------
 arch/arm/mach-s3c24xx/Kconfig                 |   10 ++++----
 arch/arm/mach-s3c24xx/Makefile                |    2 +-
 arch/arm/mach-s3c24xx/dma-s3c2443.c           |   30 ++++++++++++++++++++-----
 arch/arm/plat-samsung/include/plat/regs-dma.h |    2 +-
 7 files changed, 31 insertions(+), 40 deletions(-)
 delete mode 100644 arch/arm/mach-s3c2416/Kconfig
 delete mode 100644 arch/arm/mach-s3c2416/Makefile
Signature · 1 line
1.7.2.3
#1 lore raw

PATCH 1/3 ARM: S3C24XX: Fix indentation of dma-s3c2443

Spaces seem to have slipped in at some point in the past.

---
 arch/arm/mach-s3c24xx/dma-s3c2443.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)
arch/arm/mach-s3c24xx/dma-s3c2443.c +4 -4
index 1422451..d9e1b3b 100644
@@ -71,11 +71,11 @@ static struct s3c24xx_dma_map __initdata s3c2443_dma_mappings[] = {
 		.name		= "uart1",
 		.channels	= MAP(S3C2443_DMAREQSEL_UART1_0),
 	},
-      	[DMACH_UART2] = {
+	[DMACH_UART2] = {
 		.name		= "uart2",
 		.channels	= MAP(S3C2443_DMAREQSEL_UART2_0),
 	},
-      	[DMACH_UART3] = {
+	[DMACH_UART3] = {
 		.name		= "uart3",
 		.channels	= MAP(S3C2443_DMAREQSEL_UART3_0),
 	},
@@ -87,11 +87,11 @@ static struct s3c24xx_dma_map __initdata s3c2443_dma_mappings[] = {
 		.name		= "uart1",
 		.channels	= MAP(S3C2443_DMAREQSEL_UART1_1),
 	},
-      	[DMACH_UART2_SRC2] = {
+	[DMACH_UART2_SRC2] = {
 		.name		= "uart2",
 		.channels	= MAP(S3C2443_DMAREQSEL_UART2_1),
 	},
-      	[DMACH_UART3_SRC2] = {
+	[DMACH_UART3_SRC2] = {
 		.name		= "uart3",
 		.channels	= MAP(S3C2443_DMAREQSEL_UART3_1),
 	},
Signature · 1 line
1.7.2.3
#2 lore raw

PATCH 2/3 ARM: S3C24XX: Reuse S3C2443 dma for S3C2416

In reply to Heiko Stübner

The dma controller is similar in S3C2443 and S3C2416 and has also the same register layout with the same REQSEL-bits in the source select.

The only small difference is the SIO channel of the S3C2443 for the non-hsmmc controller which is not present on S3C2416/2450 and second spi channel which is not present on the S3C2416.

---
 arch/arm/mach-s3c24xx/Kconfig                 |   10 +++++-----
 arch/arm/mach-s3c24xx/Makefile                |    2 +-
 arch/arm/mach-s3c24xx/dma-s3c2443.c           |   22 ++++++++++++++++++++--
 arch/arm/plat-samsung/include/plat/regs-dma.h |    2 +-
 4 files changed, 27 insertions(+), 9 deletions(-)
arch/arm/mach-s3c24xx/Kconfig +5 -5
index 48af6fc..5ebd150 100644
@@ -42,7 +42,7 @@ config CPU_S3C2416
 	select CPU_LLSERIAL_S3C2440
 	select SAMSUNG_CLKSRC
 	select S3C2443_COMMON
-	select S3C2416_DMA if S3C24XX_DMA
+	select S3C2443_DMA if S3C24XX_DMA
 	select S3C2416_PM if PM
 	help
 	  Support for the S3C2416 SoC from the S3C24XX line
@@ -479,15 +479,15 @@ config S3C2443_COMMON
 	  Common code for the S3C2443 and similar processors, which includes
 	  the S3C2416 and S3C2450.
 
-endif	# CPU_S3C2443 || CPU_S3C2416
-
-if CPU_S3C2443
-
 config S3C2443_DMA
 	bool
 	help
 	  Internal config node for S3C2443 DMA support
 
+endif	# CPU_S3C2443 || CPU_S3C2416
+
+if CPU_S3C2443
+
 comment "S3C2443 Boards"
 
 config MACH_SMDK2443
arch/arm/mach-s3c24xx/Makefile +1 -1
index 876e5e5..1909d66 100644
@@ -32,11 +32,11 @@ obj-$(CONFIG_CPU_S3C244X)	+= s3c244x.o irq-s3c244x.o clock-s3c244x.o
 obj-$(CONFIG_S3C2440_DMA)	+= dma-s3c2440.o
 
 obj-$(CONFIG_CPU_S3C2443)	+= s3c2443.o irq-s3c2443.o clock-s3c2443.o
-obj-$(CONFIG_S3C2443_DMA)	+= dma-s3c2443.o
 
 # common code
 
 obj-$(CONFIG_S3C2443_COMMON)	+= common-s3c2443.o
+obj-$(CONFIG_S3C2443_DMA)	+= dma-s3c2443.o
 
 #
 # machine support
arch/arm/mach-s3c24xx/dma-s3c2443.c +20 -2
index d9e1b3b..e227c47 100644
@@ -51,7 +51,7 @@ static struct s3c24xx_dma_map __initdata s3c2443_dma_mappings[] = {
 		.name		= "xdreq1",
 		.channels	= MAP(S3C2443_DMAREQSEL_XDREQ1),
 	},
-	[DMACH_SDI] = {
+	[DMACH_SDI] = { /* only on S3C2443 */
 		.name		= "sdi",
 		.channels	= MAP(S3C2443_DMAREQSEL_SDI),
 	},
@@ -59,7 +59,7 @@ static struct s3c24xx_dma_map __initdata s3c2443_dma_mappings[] = {
 		.name		= "spi0",
 		.channels	= MAP(S3C2443_DMAREQSEL_SPI0TX),
 	},
-	[DMACH_SPI1] = {
+	[DMACH_SPI1] = { /* only on S3C2443/S3C2450 */
 		.name		= "spi1",
 		.channels	= MAP(S3C2443_DMAREQSEL_SPI1TX),
 	},
@@ -142,6 +142,23 @@ static int __init s3c2443_dma_add(struct device *dev,
 	return s3c24xx_dma_init_map(&s3c2443_dma_sel);
 }
 
+#ifdef CONFIG_CPU_S3C2416
+/* S3C2416 DMA contains the same selection table as the S3C2443 */
+static struct subsys_interface s3c2416_dma_interface = {
+	.name		= "s3c2416_dma",
+	.subsys		= &s3c2416_subsys,
+	.add_dev	= s3c2443_dma_add,
+};
+
+static int __init s3c2416_dma_init(void)
+{
+	return subsys_interface_register(&s3c2416_dma_interface);
+}
+
+arch_initcall(s3c2416_dma_init);
+#endif
+
+#ifdef CONFIG_CPU_S3C2443
 static struct subsys_interface s3c2443_dma_interface = {
 	.name		= "s3c2443_dma",
 	.subsys		= &s3c2443_subsys,
@@ -154,3 +171,4 @@ static int __init s3c2443_dma_init(void)
 }
 
 arch_initcall(s3c2443_dma_init);
+#endif
arch/arm/plat-samsung/include/plat/regs-dma.h +1 -1
index 178bccb..a7d622e 100644
@@ -119,7 +119,7 @@
 #define S3C2412_DMAREQSEL_UART2_1	S3C2412_DMAREQSEL_SRC(24)
 #endif /* CONFIG_CPU_S3C2412 */
 
-#ifdef CONFIG_CPU_S3C2443
+#if defined(CONFIG_CPU_S3C2416) || defined(CONFIG_CPU_S3C2443)
 
 #define S3C2443_DMAREQSEL_SRC(x)	((x) << 1)
 
Signature · 1 line
1.7.2.3
#3 lore raw

PATCH 3/3 ARM: S3C24XX: remove obsolete S3C2416_DMA option

In reply to Heiko Stübner

The S3C2416 now reuses the dma selection of the S3C2443. Therefore it is not necessary to keep the S3C2416_DMA option around.

---
 arch/arm/Kconfig               |    1 -
 arch/arm/mach-s3c2416/Kconfig  |   14 --------------
 arch/arm/mach-s3c2416/Makefile |   12 ------------
 3 files changed, 0 insertions(+), 27 deletions(-)
 delete mode 100644 arch/arm/mach-s3c2416/Kconfig
 delete mode 100644 arch/arm/mach-s3c2416/Makefile
arch/arm/Kconfig +0 -1
index c0a87d0..86d0acf 100644
@@ -1068,7 +1068,6 @@ source "arch/arm/plat-spear/Kconfig"
 source "arch/arm/mach-s3c24xx/Kconfig"
 if ARCH_S3C24XX
 source "arch/arm/mach-s3c2412/Kconfig"
-source "arch/arm/mach-s3c2416/Kconfig"
 source "arch/arm/mach-s3c2440/Kconfig"
 endif
 
arch/arm/mach-s3c2416/Kconfig deleted +0 -14
deleted file mode 100644
index faaa289..0000000
@@ -1,14 +0,0 @@
-# arch/arm/mach-s3c2416/Kconfig
-#
-# Copyright 2009 Yauhen Kharuzhy <[email protected]>
-#
-# Licensed under GPLv2
-
-# note, this also supports the S3C2450 which is so similar it has the same
-# ID code as the S3C2416.
-
-config S3C2416_DMA
-	bool
-	depends on CPU_S3C2416
-	help
-	  Internal config node for S3C2416 DMA support
arch/arm/mach-s3c2416/Makefile deleted +0 -12
deleted file mode 100644
index 3299f19..0000000
@@ -1,12 +0,0 @@
-# arch/arm/mach-s3c2416/Makefile
-#
-# Copyright 2009 Yauhen Kharuzhy <[email protected]>
-#
-# Licensed under GPLv2
-
-obj-y				:=
-obj-m				:=
-obj-n				:=
-obj-				:=
-
-#obj-$(CONFIG_S3C2416_DMA)	+= dma.o
Signature · 1 line
1.7.2.3
#4 lore raw

cover S3C24XX: Enable DMA on S3C2416 by sharing S3C2443-DMA

In reply to Heiko Stübner
Quoted 8 lines · Heiko St?bner

The S3C2416/2450 contains the same DMA register layout as the S3C2443. Therefore it can simply share this dma selection definition.

As we use the S3C2443_DMA the S3C2416_DMA is no longer necessary. The third patch removes this remnant of the S3C24XX merge.

The whole series was made on top of the recent S3C24XX merge.

Good, applied.

Thanks.

Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.