aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-s3c24xx/dma-s3c2443.c
diff options
context:
space:
mode:
authorHeiko Stuebner <heiko@sntech.de>2012-03-07 04:53:17 -0500
committerKukjin Kim <kgene.kim@samsung.com>2012-03-07 04:53:17 -0500
commit46cdaba11d6d66e834916850c293396399cf8736 (patch)
treed44b13e4f425f1c7c34bee45102f69aed7cf609c /arch/arm/mach-s3c24xx/dma-s3c2443.c
parentb099095445483358eef1b8e15a7bad4e96c325fc (diff)
ARM: S3C24XX: Reuse S3C2443 dma for S3C2416
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. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'arch/arm/mach-s3c24xx/dma-s3c2443.c')
-rw-r--r--arch/arm/mach-s3c24xx/dma-s3c2443.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/arch/arm/mach-s3c24xx/dma-s3c2443.c b/arch/arm/mach-s3c24xx/dma-s3c2443.c
index 03fe4bedc8af..2504474389de 100644
--- a/arch/arm/mach-s3c24xx/dma-s3c2443.c
+++ b/arch/arm/mach-s3c24xx/dma-s3c2443.c
@@ -51,7 +51,7 @@ static struct s3c24xx_dma_map __initdata s3c2443_dma_mappings[] = {
51 .name = "xdreq1", 51 .name = "xdreq1",
52 .channels = MAP(S3C2443_DMAREQSEL_XDREQ1), 52 .channels = MAP(S3C2443_DMAREQSEL_XDREQ1),
53 }, 53 },
54 [DMACH_SDI] = { 54 [DMACH_SDI] = { /* only on S3C2443 */
55 .name = "sdi", 55 .name = "sdi",
56 .channels = MAP(S3C2443_DMAREQSEL_SDI), 56 .channels = MAP(S3C2443_DMAREQSEL_SDI),
57 }, 57 },
@@ -59,7 +59,7 @@ static struct s3c24xx_dma_map __initdata s3c2443_dma_mappings[] = {
59 .name = "spi0", 59 .name = "spi0",
60 .channels = MAP(S3C2443_DMAREQSEL_SPI0TX), 60 .channels = MAP(S3C2443_DMAREQSEL_SPI0TX),
61 }, 61 },
62 [DMACH_SPI1] = { 62 [DMACH_SPI1] = { /* only on S3C2443/S3C2450 */
63 .name = "spi1", 63 .name = "spi1",
64 .channels = MAP(S3C2443_DMAREQSEL_SPI1TX), 64 .channels = MAP(S3C2443_DMAREQSEL_SPI1TX),
65 }, 65 },
@@ -141,6 +141,23 @@ static int __init s3c2443_dma_add(struct device *dev)
141 return s3c24xx_dma_init_map(&s3c2443_dma_sel); 141 return s3c24xx_dma_init_map(&s3c2443_dma_sel);
142} 142}
143 143
144#ifdef CONFIG_CPU_S3C2416
145/* S3C2416 DMA contains the same selection table as the S3C2443 */
146static struct subsys_interface s3c2416_dma_interface = {
147 .name = "s3c2416_dma",
148 .subsys = &s3c2416_subsys,
149 .add_dev = s3c2443_dma_add,
150};
151
152static int __init s3c2416_dma_init(void)
153{
154 return subsys_interface_register(&s3c2416_dma_interface);
155}
156
157arch_initcall(s3c2416_dma_init);
158#endif
159
160#ifdef CONFIG_CPU_S3C2443
144static struct subsys_interface s3c2443_dma_interface = { 161static struct subsys_interface s3c2443_dma_interface = {
145 .name = "s3c2443_dma", 162 .name = "s3c2443_dma",
146 .subsys = &s3c2443_subsys, 163 .subsys = &s3c2443_subsys,
@@ -153,3 +170,4 @@ static int __init s3c2443_dma_init(void)
153} 170}
154 171
155arch_initcall(s3c2443_dma_init); 172arch_initcall(s3c2443_dma_init);
173#endif