ARM: SAMSUNG: Add platform device for idma

Exynos4 and S5PC110(S5PV210) has Internal dma(idma) in AUDSS.
To support idma, register idma platform device.
and Exynos4 and S5PC110 has different IDMA address.
TO handle different IDMA address, register idma platform data

Signed-off-by: Sangbeom Kim <sbkim73@samsung.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
This commit is contained in:
Sangbeom Kim 2011-07-21 14:12:19 +09:00 committed by Kukjin Kim
parent b93cb91bd3
commit 2839cc1e7e
9 changed files with 53 additions and 0 deletions

View File

@ -21,6 +21,7 @@
#include <mach/map.h> #include <mach/map.h>
#include <mach/dma.h> #include <mach/dma.h>
#include <mach/irqs.h> #include <mach/irqs.h>
#include <mach/regs-audss.h>
static const char *rclksrc[] = { static const char *rclksrc[] = {
[0] = "busclk", [0] = "busclk",
@ -55,6 +56,7 @@ static struct s3c_audio_pdata i2sv5_pdata = {
.quirks = QUIRK_PRI_6CHAN | QUIRK_SEC_DAI .quirks = QUIRK_PRI_6CHAN | QUIRK_SEC_DAI
| QUIRK_NEED_RSTCLR, | QUIRK_NEED_RSTCLR,
.src_clk = rclksrc, .src_clk = rclksrc,
.idma_addr = EXYNOS4_AUDSS_INT_MEM,
}, },
}, },
}; };

View File

@ -0,0 +1,18 @@
/* arch/arm/mach-exynos4/include/mach/regs-audss.h
*
* Copyright (c) 2011 Samsung Electronics
* http://www.samsung.com
*
* Exynos4 Audio SubSystem clock register definitions
*
* 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.
*/
#ifndef __PLAT_REGS_AUDSS_H
#define __PLAT_REGS_AUDSS_H __FILE__
#define EXYNOS4_AUDSS_INT_MEM (0x03000000)
#endif /* _PLAT_REGS_AUDSS_H */

View File

@ -184,6 +184,7 @@ static struct platform_device *smdkv310_devices[] __initdata = {
&exynos4_device_spdif, &exynos4_device_spdif,
&exynos4_device_sysmmu, &exynos4_device_sysmmu,
&samsung_asoc_dma, &samsung_asoc_dma,
&samsung_asoc_idma,
&smdkv310_smsc911x, &smdkv310_smsc911x,
&exynos4_device_ahci, &exynos4_device_ahci,
}; };

View File

@ -52,6 +52,7 @@ static struct s3c_audio_pdata i2sv5_pdata = {
.quirks = QUIRK_PRI_6CHAN | QUIRK_SEC_DAI .quirks = QUIRK_PRI_6CHAN | QUIRK_SEC_DAI
| QUIRK_NEED_RSTCLR, | QUIRK_NEED_RSTCLR,
.src_clk = rclksrc, .src_clk = rclksrc,
.idma_addr = S5PV210_AUDSS_INT_MEM,
}, },
}, },
}; };

View File

@ -0,0 +1,18 @@
/* arch/arm/mach-s5pv210/include/mach/regs-audss.h
*
* Copyright (c) 2011 Samsung Electronics
* http://www.samsung.com
*
* S5PV210 Audio SubSystem clock register definitions
*
* 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.
*/
#ifndef __PLAT_REGS_AUDSS_H
#define __PLAT_REGS_AUDSS_H __FILE__
#define S5PV210_AUDSS_INT_MEM (0xC0000000)
#endif /* _PLAT_REGS_AUDSS_H */

View File

@ -267,6 +267,7 @@ static struct platform_device *smdkv210_devices[] __initdata = {
&s5pv210_device_iis0, &s5pv210_device_iis0,
&s5pv210_device_spdif, &s5pv210_device_spdif,
&samsung_asoc_dma, &samsung_asoc_dma,
&samsung_asoc_idma,
&samsung_device_keypad, &samsung_device_keypad,
&smdkv210_dm9000, &smdkv210_dm9000,
&smdkv210_lcd_lte480wv, &smdkv210_lcd_lte480wv,

View File

@ -23,3 +23,13 @@ struct platform_device samsung_asoc_dma = {
} }
}; };
EXPORT_SYMBOL(samsung_asoc_dma); EXPORT_SYMBOL(samsung_asoc_dma);
struct platform_device samsung_asoc_idma = {
.name = "samsung-idma",
.id = -1,
.dev = {
.dma_mask = &audio_dmamask,
.coherent_dma_mask = DMA_BIT_MASK(32),
}
};
EXPORT_SYMBOL(samsung_asoc_idma);

View File

@ -44,6 +44,7 @@ struct samsung_i2s {
* Also corresponds to clocks of I2SMOD[10] * Also corresponds to clocks of I2SMOD[10]
*/ */
const char **src_clk; const char **src_clk;
dma_addr_t idma_addr;
}; };
/** /**

View File

@ -40,6 +40,7 @@ extern struct platform_device s3c64xx_device_spi0;
extern struct platform_device s3c64xx_device_spi1; extern struct platform_device s3c64xx_device_spi1;
extern struct platform_device samsung_asoc_dma; extern struct platform_device samsung_asoc_dma;
extern struct platform_device samsung_asoc_idma;
extern struct platform_device s3c64xx_device_pcm0; extern struct platform_device s3c64xx_device_pcm0;
extern struct platform_device s3c64xx_device_pcm1; extern struct platform_device s3c64xx_device_pcm1;