ARM: S3C24XX: add platform-devices for new dma driver for s3c2412 and s3c2443
This includes defining the mapping for the request sources. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
This commit is contained in:
parent
ddeccb8d6b
commit
f2dda07db6
|
@ -31,6 +31,7 @@
|
|||
#include <linux/platform_device.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/platform_data/dma-s3c24xx.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/regs-clock.h>
|
||||
|
@ -44,6 +45,7 @@
|
|||
|
||||
#include <mach/regs-gpio.h>
|
||||
#include <plat/regs-serial.h>
|
||||
#include <mach/dma.h>
|
||||
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/devs.h>
|
||||
|
@ -329,3 +331,107 @@ void __init_or_cpufreq s3c24xx_setup_clocks(unsigned long fclk,
|
|||
clk_p.rate = pclk;
|
||||
clk_f.rate = fclk;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_CPU_S3C2410) || defined(CONFIG_CPU_S3C2412) || \
|
||||
defined(CONFIG_CPU_S3C2440) || defined(CONFIG_CPU_S3C2442)
|
||||
static struct resource s3c2410_dma_resource[] = {
|
||||
[0] = DEFINE_RES_MEM(S3C24XX_PA_DMA, S3C24XX_SZ_DMA),
|
||||
[1] = DEFINE_RES_IRQ(IRQ_DMA0),
|
||||
[2] = DEFINE_RES_IRQ(IRQ_DMA1),
|
||||
[3] = DEFINE_RES_IRQ(IRQ_DMA2),
|
||||
[4] = DEFINE_RES_IRQ(IRQ_DMA3),
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CPU_S3C2412
|
||||
static struct s3c24xx_dma_channel s3c2412_dma_channels[DMACH_MAX] = {
|
||||
[DMACH_XD0] = { S3C24XX_DMA_AHB, true, 17 },
|
||||
[DMACH_XD1] = { S3C24XX_DMA_AHB, true, 18 },
|
||||
[DMACH_SDI] = { S3C24XX_DMA_APB, false, 10 },
|
||||
[DMACH_SPI0_RX] = { S3C24XX_DMA_APB, true, 1 },
|
||||
[DMACH_SPI0_TX] = { S3C24XX_DMA_APB, true, 0 },
|
||||
[DMACH_SPI1_RX] = { S3C24XX_DMA_APB, true, 3 },
|
||||
[DMACH_SPI1_TX] = { S3C24XX_DMA_APB, true, 2 },
|
||||
[DMACH_UART0] = { S3C24XX_DMA_APB, true, 19 },
|
||||
[DMACH_UART1] = { S3C24XX_DMA_APB, true, 21 },
|
||||
[DMACH_UART2] = { S3C24XX_DMA_APB, true, 23 },
|
||||
[DMACH_UART0_SRC2] = { S3C24XX_DMA_APB, true, 20 },
|
||||
[DMACH_UART1_SRC2] = { S3C24XX_DMA_APB, true, 22 },
|
||||
[DMACH_UART2_SRC2] = { S3C24XX_DMA_APB, true, 24 },
|
||||
[DMACH_TIMER] = { S3C24XX_DMA_APB, true, 9 },
|
||||
[DMACH_I2S_IN] = { S3C24XX_DMA_APB, true, 5 },
|
||||
[DMACH_I2S_OUT] = { S3C24XX_DMA_APB, true, 4 },
|
||||
[DMACH_USB_EP1] = { S3C24XX_DMA_APB, true, 13 },
|
||||
[DMACH_USB_EP2] = { S3C24XX_DMA_APB, true, 14 },
|
||||
[DMACH_USB_EP3] = { S3C24XX_DMA_APB, true, 15 },
|
||||
[DMACH_USB_EP4] = { S3C24XX_DMA_APB, true, 16 },
|
||||
};
|
||||
|
||||
static struct s3c24xx_dma_platdata s3c2412_dma_platdata = {
|
||||
.num_phy_channels = 4,
|
||||
.channels = s3c2412_dma_channels,
|
||||
.num_channels = DMACH_MAX,
|
||||
};
|
||||
|
||||
struct platform_device s3c2412_device_dma = {
|
||||
.name = "s3c2412-dma",
|
||||
.id = 0,
|
||||
.num_resources = ARRAY_SIZE(s3c2410_dma_resource),
|
||||
.resource = s3c2410_dma_resource,
|
||||
.dev = {
|
||||
.platform_data = &s3c2412_dma_platdata,
|
||||
},
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CPUS_3C2443) || defined(CONFIG_CPU_S3C2416)
|
||||
static struct resource s3c2443_dma_resource[] = {
|
||||
[0] = DEFINE_RES_MEM(S3C24XX_PA_DMA, S3C24XX_SZ_DMA),
|
||||
[1] = DEFINE_RES_IRQ(IRQ_S3C2443_DMA0),
|
||||
[2] = DEFINE_RES_IRQ(IRQ_S3C2443_DMA1),
|
||||
[3] = DEFINE_RES_IRQ(IRQ_S3C2443_DMA2),
|
||||
[4] = DEFINE_RES_IRQ(IRQ_S3C2443_DMA3),
|
||||
[5] = DEFINE_RES_IRQ(IRQ_S3C2443_DMA4),
|
||||
[6] = DEFINE_RES_IRQ(IRQ_S3C2443_DMA5),
|
||||
};
|
||||
|
||||
static struct s3c24xx_dma_channel s3c2443_dma_channels[DMACH_MAX] = {
|
||||
[DMACH_XD0] = { S3C24XX_DMA_AHB, true, 17 },
|
||||
[DMACH_XD1] = { S3C24XX_DMA_AHB, true, 18 },
|
||||
[DMACH_SDI] = { S3C24XX_DMA_APB, false, 10 },
|
||||
[DMACH_SPI0_RX] = { S3C24XX_DMA_APB, true, 1 },
|
||||
[DMACH_SPI0_TX] = { S3C24XX_DMA_APB, true, 0 },
|
||||
[DMACH_SPI1_RX] = { S3C24XX_DMA_APB, true, 3 },
|
||||
[DMACH_SPI1_TX] = { S3C24XX_DMA_APB, true, 2 },
|
||||
[DMACH_UART0] = { S3C24XX_DMA_APB, true, 19 },
|
||||
[DMACH_UART1] = { S3C24XX_DMA_APB, true, 21 },
|
||||
[DMACH_UART2] = { S3C24XX_DMA_APB, true, 23 },
|
||||
[DMACH_UART3] = { S3C24XX_DMA_APB, true, 25 },
|
||||
[DMACH_UART0_SRC2] = { S3C24XX_DMA_APB, true, 20 },
|
||||
[DMACH_UART1_SRC2] = { S3C24XX_DMA_APB, true, 22 },
|
||||
[DMACH_UART2_SRC2] = { S3C24XX_DMA_APB, true, 24 },
|
||||
[DMACH_UART3_SRC2] = { S3C24XX_DMA_APB, true, 26 },
|
||||
[DMACH_TIMER] = { S3C24XX_DMA_APB, true, 9 },
|
||||
[DMACH_I2S_IN] = { S3C24XX_DMA_APB, true, 5 },
|
||||
[DMACH_I2S_OUT] = { S3C24XX_DMA_APB, true, 4 },
|
||||
[DMACH_PCM_IN] = { S3C24XX_DMA_APB, true, 28 },
|
||||
[DMACH_PCM_OUT] = { S3C24XX_DMA_APB, true, 27 },
|
||||
[DMACH_MIC_IN] = { S3C24XX_DMA_APB, true, 29 },
|
||||
};
|
||||
|
||||
static struct s3c24xx_dma_platdata s3c2443_dma_platdata = {
|
||||
.num_phy_channels = 6,
|
||||
.channels = s3c2443_dma_channels,
|
||||
.num_channels = DMACH_MAX,
|
||||
};
|
||||
|
||||
struct platform_device s3c2443_device_dma = {
|
||||
.name = "s3c2443-dma",
|
||||
.id = 0,
|
||||
.num_resources = ARRAY_SIZE(s3c2443_dma_resource),
|
||||
.resource = s3c2443_dma_resource,
|
||||
.dev = {
|
||||
.platform_data = &s3c2443_dma_platdata,
|
||||
},
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -109,4 +109,7 @@ extern void s3c2443_init_irq(void);
|
|||
|
||||
extern struct syscore_ops s3c24xx_irq_syscore_ops;
|
||||
|
||||
extern struct platform_device s3c2412_device_dma;
|
||||
extern struct platform_device s3c2443_device_dma;
|
||||
|
||||
#endif /* __ARCH_ARM_MACH_S3C24XX_COMMON_H */
|
||||
|
|
|
@ -466,6 +466,7 @@ static struct platform_device *jive_devices[] __initdata = {
|
|||
&jive_device_wm8750,
|
||||
&s3c_device_nand,
|
||||
&s3c_device_usbgadget,
|
||||
&s3c2412_device_dma,
|
||||
};
|
||||
|
||||
static struct s3c2410_udc_mach_info jive_udc_cfg __initdata = {
|
||||
|
|
|
@ -89,6 +89,7 @@ static struct platform_device *smdk2413_devices[] __initdata = {
|
|||
&s3c_device_i2c0,
|
||||
&s3c_device_iis,
|
||||
&s3c_device_usbgadget,
|
||||
&s3c2412_device_dma,
|
||||
};
|
||||
|
||||
static void __init smdk2413_fixup(struct tag *tags, char **cmdline,
|
||||
|
|
|
@ -215,6 +215,7 @@ static struct platform_device *smdk2416_devices[] __initdata = {
|
|||
&s3c_device_hsmmc0,
|
||||
&s3c_device_hsmmc1,
|
||||
&s3c_device_usb_hsudc,
|
||||
&s3c2443_device_dma,
|
||||
};
|
||||
|
||||
static void __init smdk2416_map_io(void)
|
||||
|
|
|
@ -115,6 +115,7 @@ static struct platform_device *smdk2443_devices[] __initdata = {
|
|||
#ifdef CONFIG_SND_SOC_SMDK2443_WM9710
|
||||
&s3c_device_ac97,
|
||||
#endif
|
||||
&s3c2443_device_dma,
|
||||
};
|
||||
|
||||
static void __init smdk2443_map_io(void)
|
||||
|
|
|
@ -126,6 +126,7 @@ static struct platform_device *vstms_devices[] __initdata = {
|
|||
&s3c_device_iis,
|
||||
&s3c_device_rtc,
|
||||
&s3c_device_nand,
|
||||
&s3c2412_device_dma,
|
||||
};
|
||||
|
||||
static void __init vstms_fixup(struct tag *tags, char **cmdline,
|
||||
|
|
Loading…
Reference in New Issue