Loading arch/arm/mach-s3c64xx/dev-audio.c +29 −18 Original line number Diff line number Diff line Loading @@ -54,12 +54,13 @@ static int s3c64xx_i2s_cfg_gpio(struct platform_device *pdev) static struct resource s3c64xx_iis0_resource[] = { [0] = DEFINE_RES_MEM(S3C64XX_PA_IIS0, SZ_256), [1] = DEFINE_RES_DMA(DMACH_I2S0_OUT), [2] = DEFINE_RES_DMA(DMACH_I2S0_IN), }; static struct s3c_audio_pdata i2sv3_pdata = { static struct s3c_audio_pdata i2s0_pdata = { .cfg_gpio = s3c64xx_i2s_cfg_gpio, .dma_filter = pl08x_filter_id, .dma_playback = DMACH_I2S0_OUT, .dma_capture = DMACH_I2S0_IN, }; struct platform_device s3c64xx_device_iis0 = { Loading @@ -68,15 +69,20 @@ struct platform_device s3c64xx_device_iis0 = { .num_resources = ARRAY_SIZE(s3c64xx_iis0_resource), .resource = s3c64xx_iis0_resource, .dev = { .platform_data = &i2sv3_pdata, .platform_data = &i2s0_pdata, }, }; EXPORT_SYMBOL(s3c64xx_device_iis0); static struct resource s3c64xx_iis1_resource[] = { [0] = DEFINE_RES_MEM(S3C64XX_PA_IIS1, SZ_256), [1] = DEFINE_RES_DMA(DMACH_I2S1_OUT), [2] = DEFINE_RES_DMA(DMACH_I2S1_IN), }; static struct s3c_audio_pdata i2s1_pdata = { .cfg_gpio = s3c64xx_i2s_cfg_gpio, .dma_filter = pl08x_filter_id, .dma_playback = DMACH_I2S1_OUT, .dma_capture = DMACH_I2S1_IN, }; struct platform_device s3c64xx_device_iis1 = { Loading @@ -85,19 +91,20 @@ struct platform_device s3c64xx_device_iis1 = { .num_resources = ARRAY_SIZE(s3c64xx_iis1_resource), .resource = s3c64xx_iis1_resource, .dev = { .platform_data = &i2sv3_pdata, .platform_data = &i2s1_pdata, }, }; EXPORT_SYMBOL(s3c64xx_device_iis1); static struct resource s3c64xx_iisv4_resource[] = { [0] = DEFINE_RES_MEM(S3C64XX_PA_IISV4, SZ_256), [1] = DEFINE_RES_DMA(DMACH_HSI_I2SV40_TX), [2] = DEFINE_RES_DMA(DMACH_HSI_I2SV40_RX), }; static struct s3c_audio_pdata i2sv4_pdata = { .cfg_gpio = s3c64xx_i2s_cfg_gpio, .dma_filter = pl08x_filter_id, .dma_playback = DMACH_HSI_I2SV40_TX, .dma_capture = DMACH_HSI_I2SV40_RX, .type = { .i2s = { .quirks = QUIRK_PRI_6CHAN, Loading Loading @@ -142,12 +149,13 @@ static int s3c64xx_pcm_cfg_gpio(struct platform_device *pdev) static struct resource s3c64xx_pcm0_resource[] = { [0] = DEFINE_RES_MEM(S3C64XX_PA_PCM0, SZ_256), [1] = DEFINE_RES_DMA(DMACH_PCM0_TX), [2] = DEFINE_RES_DMA(DMACH_PCM0_RX), }; static struct s3c_audio_pdata s3c_pcm0_pdata = { .cfg_gpio = s3c64xx_pcm_cfg_gpio, .dma_filter = pl08x_filter_id, .dma_capture = DMACH_PCM0_RX, .dma_playback = DMACH_PCM0_TX, }; struct platform_device s3c64xx_device_pcm0 = { Loading @@ -163,12 +171,13 @@ EXPORT_SYMBOL(s3c64xx_device_pcm0); static struct resource s3c64xx_pcm1_resource[] = { [0] = DEFINE_RES_MEM(S3C64XX_PA_PCM1, SZ_256), [1] = DEFINE_RES_DMA(DMACH_PCM1_TX), [2] = DEFINE_RES_DMA(DMACH_PCM1_RX), }; static struct s3c_audio_pdata s3c_pcm1_pdata = { .cfg_gpio = s3c64xx_pcm_cfg_gpio, .dma_filter = pl08x_filter_id, .dma_playback = DMACH_PCM1_TX, .dma_capture = DMACH_PCM1_RX, }; struct platform_device s3c64xx_device_pcm1 = { Loading Loading @@ -196,13 +205,15 @@ static int s3c64xx_ac97_cfg_gpe(struct platform_device *pdev) static struct resource s3c64xx_ac97_resource[] = { [0] = DEFINE_RES_MEM(S3C64XX_PA_AC97, SZ_256), [1] = DEFINE_RES_DMA(DMACH_AC97_PCMOUT), [2] = DEFINE_RES_DMA(DMACH_AC97_PCMIN), [3] = DEFINE_RES_DMA(DMACH_AC97_MICIN), [4] = DEFINE_RES_IRQ(IRQ_AC97), [1] = DEFINE_RES_IRQ(IRQ_AC97), }; static struct s3c_audio_pdata s3c_ac97_pdata; static struct s3c_audio_pdata s3c_ac97_pdata = { .dma_playback = DMACH_AC97_PCMOUT, .dma_filter = pl08x_filter_id, .dma_capture = DMACH_AC97_PCMIN, .dma_capture_mic = DMACH_AC97_MICIN, }; static u64 s3c64xx_ac97_dmamask = DMA_BIT_MASK(32); Loading arch/arm/mach-s3c64xx/include/mach/dma.h +26 −26 Original line number Diff line number Diff line Loading @@ -14,38 +14,38 @@ #define S3C64XX_DMA_CHAN(name) ((unsigned long)(name)) /* DMA0/SDMA0 */ #define DMACH_UART0 S3C64XX_DMA_CHAN("uart0_tx") #define DMACH_UART0_SRC2 S3C64XX_DMA_CHAN("uart0_rx") #define DMACH_UART1 S3C64XX_DMA_CHAN("uart1_tx") #define DMACH_UART1_SRC2 S3C64XX_DMA_CHAN("uart1_rx") #define DMACH_UART2 S3C64XX_DMA_CHAN("uart2_tx") #define DMACH_UART2_SRC2 S3C64XX_DMA_CHAN("uart2_rx") #define DMACH_UART3 S3C64XX_DMA_CHAN("uart3_tx") #define DMACH_UART3_SRC2 S3C64XX_DMA_CHAN("uart3_rx") #define DMACH_PCM0_TX S3C64XX_DMA_CHAN("pcm0_tx") #define DMACH_PCM0_RX S3C64XX_DMA_CHAN("pcm0_rx") #define DMACH_I2S0_OUT S3C64XX_DMA_CHAN("i2s0_tx") #define DMACH_I2S0_IN S3C64XX_DMA_CHAN("i2s0_rx") #define DMACH_UART0 "uart0_tx" #define DMACH_UART0_SRC2 "uart0_rx" #define DMACH_UART1 "uart1_tx" #define DMACH_UART1_SRC2 "uart1_rx" #define DMACH_UART2 "uart2_tx" #define DMACH_UART2_SRC2 "uart2_rx" #define DMACH_UART3 "uart3_tx" #define DMACH_UART3_SRC2 "uart3_rx" #define DMACH_PCM0_TX "pcm0_tx" #define DMACH_PCM0_RX "pcm0_rx" #define DMACH_I2S0_OUT "i2s0_tx" #define DMACH_I2S0_IN "i2s0_rx" #define DMACH_SPI0_TX S3C64XX_DMA_CHAN("spi0_tx") #define DMACH_SPI0_RX S3C64XX_DMA_CHAN("spi0_rx") #define DMACH_HSI_I2SV40_TX S3C64XX_DMA_CHAN("i2s2_tx") #define DMACH_HSI_I2SV40_RX S3C64XX_DMA_CHAN("i2s2_rx") #define DMACH_HSI_I2SV40_TX "i2s2_tx" #define DMACH_HSI_I2SV40_RX "i2s2_rx" /* DMA1/SDMA1 */ #define DMACH_PCM1_TX S3C64XX_DMA_CHAN("pcm1_tx") #define DMACH_PCM1_RX S3C64XX_DMA_CHAN("pcm1_rx") #define DMACH_I2S1_OUT S3C64XX_DMA_CHAN("i2s1_tx") #define DMACH_I2S1_IN S3C64XX_DMA_CHAN("i2s1_rx") #define DMACH_PCM1_TX "pcm1_tx" #define DMACH_PCM1_RX "pcm1_rx" #define DMACH_I2S1_OUT "i2s1_tx" #define DMACH_I2S1_IN "i2s1_rx" #define DMACH_SPI1_TX S3C64XX_DMA_CHAN("spi1_tx") #define DMACH_SPI1_RX S3C64XX_DMA_CHAN("spi1_rx") #define DMACH_AC97_PCMOUT S3C64XX_DMA_CHAN("ac97_out") #define DMACH_AC97_PCMIN S3C64XX_DMA_CHAN("ac97_in") #define DMACH_AC97_MICIN S3C64XX_DMA_CHAN("ac97_mic") #define DMACH_PWM S3C64XX_DMA_CHAN("pwm") #define DMACH_IRDA S3C64XX_DMA_CHAN("irda") #define DMACH_EXTERNAL S3C64XX_DMA_CHAN("external") #define DMACH_SECURITY_RX S3C64XX_DMA_CHAN("sec_rx") #define DMACH_SECURITY_TX S3C64XX_DMA_CHAN("sec_tx") #define DMACH_AC97_PCMOUT "ac97_out" #define DMACH_AC97_PCMIN "ac97_in" #define DMACH_AC97_MICIN "ac97_mic" #define DMACH_PWM "pwm" #define DMACH_IRDA "irda" #define DMACH_EXTERNAL "external" #define DMACH_SECURITY_RX "sec_rx" #define DMACH_SECURITY_TX "sec_tx" enum dma_ch { DMACH_MAX = 32 Loading arch/arm/plat-samsung/devs.c +20 −3 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ #include <linux/platform_data/usb-ohci-s3c2410.h> #include <plat/usb-phy.h> #include <plat/regs-spi.h> #include <linux/platform_data/asoc-s3c.h> #include <linux/platform_data/spi-s3c64xx.h> static u64 samsung_device_dma_mask = DMA_BIT_MASK(32); Loading @@ -74,9 +75,15 @@ static u64 samsung_device_dma_mask = DMA_BIT_MASK(32); static struct resource s3c_ac97_resource[] = { [0] = DEFINE_RES_MEM(S3C2440_PA_AC97, S3C2440_SZ_AC97), [1] = DEFINE_RES_IRQ(IRQ_S3C244X_AC97), [2] = DEFINE_RES_DMA_NAMED(DMACH_PCM_OUT, "PCM out"), [3] = DEFINE_RES_DMA_NAMED(DMACH_PCM_IN, "PCM in"), [4] = DEFINE_RES_DMA_NAMED(DMACH_MIC_IN, "Mic in"), }; static struct s3c_audio_pdata s3c_ac97_pdata = { #ifdef CONFIG_S3C24XX_DMAC .dma_filter = s3c24xx_dma_filter, #endif .dma_playback = (void *)DMACH_PCM_OUT, .dma_capture = (void *)DMACH_PCM_IN, .dma_capture_mic = (void *)DMACH_MIC_IN, }; struct platform_device s3c_device_ac97 = { Loading @@ -87,6 +94,7 @@ struct platform_device s3c_device_ac97 = { .dev = { .dma_mask = &samsung_device_dma_mask, .coherent_dma_mask = DMA_BIT_MASK(32), .platform_data = &s3c_ac97_pdata, } }; #endif /* CONFIG_CPU_S3C2440 */ Loading Loading @@ -566,6 +574,14 @@ static struct resource s3c_iis_resource[] = { [0] = DEFINE_RES_MEM(S3C24XX_PA_IIS, S3C24XX_SZ_IIS), }; static struct s3c_audio_pdata s3c_iis_platdata = { #ifdef CONFIG_S3C24XX_DMAC .dma_filter = s3c24xx_dma_filter, #endif .dma_playback = (void *)DMACH_I2S_OUT, .dma_capture = (void *)DMACH_I2S_IN, }; struct platform_device s3c_device_iis = { .name = "s3c24xx-iis", .id = -1, Loading @@ -574,6 +590,7 @@ struct platform_device s3c_device_iis = { .dev = { .dma_mask = &samsung_device_dma_mask, .coherent_dma_mask = DMA_BIT_MASK(32), .platform_data = &s3c_iis_platdata, } }; #endif /* CONFIG_PLAT_S3C24XX */ Loading drivers/dma/Kconfig +1 −1 Original line number Diff line number Diff line Loading @@ -432,7 +432,7 @@ config STE_DMA40 Support for ST-Ericsson DMA40 controller config S3C24XX_DMAC tristate "Samsung S3C24XX DMA support" bool "Samsung S3C24XX DMA support" depends on ARCH_S3C24XX select DMA_ENGINE select DMA_VIRTUAL_CHANNELS Loading include/linux/platform_data/asoc-s3c.h +8 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,9 @@ */ #define S3C64XX_AC97_GPD 0 #define S3C64XX_AC97_GPE 1 #include <linux/dmaengine.h> extern void s3c64xx_ac97_setup_gpio(int); struct samsung_i2s { Loading @@ -39,6 +42,11 @@ struct samsung_i2s { */ struct s3c_audio_pdata { int (*cfg_gpio)(struct platform_device *); dma_filter_fn dma_filter; void *dma_playback; void *dma_capture; void *dma_play_sec; void *dma_capture_mic; union { struct samsung_i2s i2s; } type; Loading Loading
arch/arm/mach-s3c64xx/dev-audio.c +29 −18 Original line number Diff line number Diff line Loading @@ -54,12 +54,13 @@ static int s3c64xx_i2s_cfg_gpio(struct platform_device *pdev) static struct resource s3c64xx_iis0_resource[] = { [0] = DEFINE_RES_MEM(S3C64XX_PA_IIS0, SZ_256), [1] = DEFINE_RES_DMA(DMACH_I2S0_OUT), [2] = DEFINE_RES_DMA(DMACH_I2S0_IN), }; static struct s3c_audio_pdata i2sv3_pdata = { static struct s3c_audio_pdata i2s0_pdata = { .cfg_gpio = s3c64xx_i2s_cfg_gpio, .dma_filter = pl08x_filter_id, .dma_playback = DMACH_I2S0_OUT, .dma_capture = DMACH_I2S0_IN, }; struct platform_device s3c64xx_device_iis0 = { Loading @@ -68,15 +69,20 @@ struct platform_device s3c64xx_device_iis0 = { .num_resources = ARRAY_SIZE(s3c64xx_iis0_resource), .resource = s3c64xx_iis0_resource, .dev = { .platform_data = &i2sv3_pdata, .platform_data = &i2s0_pdata, }, }; EXPORT_SYMBOL(s3c64xx_device_iis0); static struct resource s3c64xx_iis1_resource[] = { [0] = DEFINE_RES_MEM(S3C64XX_PA_IIS1, SZ_256), [1] = DEFINE_RES_DMA(DMACH_I2S1_OUT), [2] = DEFINE_RES_DMA(DMACH_I2S1_IN), }; static struct s3c_audio_pdata i2s1_pdata = { .cfg_gpio = s3c64xx_i2s_cfg_gpio, .dma_filter = pl08x_filter_id, .dma_playback = DMACH_I2S1_OUT, .dma_capture = DMACH_I2S1_IN, }; struct platform_device s3c64xx_device_iis1 = { Loading @@ -85,19 +91,20 @@ struct platform_device s3c64xx_device_iis1 = { .num_resources = ARRAY_SIZE(s3c64xx_iis1_resource), .resource = s3c64xx_iis1_resource, .dev = { .platform_data = &i2sv3_pdata, .platform_data = &i2s1_pdata, }, }; EXPORT_SYMBOL(s3c64xx_device_iis1); static struct resource s3c64xx_iisv4_resource[] = { [0] = DEFINE_RES_MEM(S3C64XX_PA_IISV4, SZ_256), [1] = DEFINE_RES_DMA(DMACH_HSI_I2SV40_TX), [2] = DEFINE_RES_DMA(DMACH_HSI_I2SV40_RX), }; static struct s3c_audio_pdata i2sv4_pdata = { .cfg_gpio = s3c64xx_i2s_cfg_gpio, .dma_filter = pl08x_filter_id, .dma_playback = DMACH_HSI_I2SV40_TX, .dma_capture = DMACH_HSI_I2SV40_RX, .type = { .i2s = { .quirks = QUIRK_PRI_6CHAN, Loading Loading @@ -142,12 +149,13 @@ static int s3c64xx_pcm_cfg_gpio(struct platform_device *pdev) static struct resource s3c64xx_pcm0_resource[] = { [0] = DEFINE_RES_MEM(S3C64XX_PA_PCM0, SZ_256), [1] = DEFINE_RES_DMA(DMACH_PCM0_TX), [2] = DEFINE_RES_DMA(DMACH_PCM0_RX), }; static struct s3c_audio_pdata s3c_pcm0_pdata = { .cfg_gpio = s3c64xx_pcm_cfg_gpio, .dma_filter = pl08x_filter_id, .dma_capture = DMACH_PCM0_RX, .dma_playback = DMACH_PCM0_TX, }; struct platform_device s3c64xx_device_pcm0 = { Loading @@ -163,12 +171,13 @@ EXPORT_SYMBOL(s3c64xx_device_pcm0); static struct resource s3c64xx_pcm1_resource[] = { [0] = DEFINE_RES_MEM(S3C64XX_PA_PCM1, SZ_256), [1] = DEFINE_RES_DMA(DMACH_PCM1_TX), [2] = DEFINE_RES_DMA(DMACH_PCM1_RX), }; static struct s3c_audio_pdata s3c_pcm1_pdata = { .cfg_gpio = s3c64xx_pcm_cfg_gpio, .dma_filter = pl08x_filter_id, .dma_playback = DMACH_PCM1_TX, .dma_capture = DMACH_PCM1_RX, }; struct platform_device s3c64xx_device_pcm1 = { Loading Loading @@ -196,13 +205,15 @@ static int s3c64xx_ac97_cfg_gpe(struct platform_device *pdev) static struct resource s3c64xx_ac97_resource[] = { [0] = DEFINE_RES_MEM(S3C64XX_PA_AC97, SZ_256), [1] = DEFINE_RES_DMA(DMACH_AC97_PCMOUT), [2] = DEFINE_RES_DMA(DMACH_AC97_PCMIN), [3] = DEFINE_RES_DMA(DMACH_AC97_MICIN), [4] = DEFINE_RES_IRQ(IRQ_AC97), [1] = DEFINE_RES_IRQ(IRQ_AC97), }; static struct s3c_audio_pdata s3c_ac97_pdata; static struct s3c_audio_pdata s3c_ac97_pdata = { .dma_playback = DMACH_AC97_PCMOUT, .dma_filter = pl08x_filter_id, .dma_capture = DMACH_AC97_PCMIN, .dma_capture_mic = DMACH_AC97_MICIN, }; static u64 s3c64xx_ac97_dmamask = DMA_BIT_MASK(32); Loading
arch/arm/mach-s3c64xx/include/mach/dma.h +26 −26 Original line number Diff line number Diff line Loading @@ -14,38 +14,38 @@ #define S3C64XX_DMA_CHAN(name) ((unsigned long)(name)) /* DMA0/SDMA0 */ #define DMACH_UART0 S3C64XX_DMA_CHAN("uart0_tx") #define DMACH_UART0_SRC2 S3C64XX_DMA_CHAN("uart0_rx") #define DMACH_UART1 S3C64XX_DMA_CHAN("uart1_tx") #define DMACH_UART1_SRC2 S3C64XX_DMA_CHAN("uart1_rx") #define DMACH_UART2 S3C64XX_DMA_CHAN("uart2_tx") #define DMACH_UART2_SRC2 S3C64XX_DMA_CHAN("uart2_rx") #define DMACH_UART3 S3C64XX_DMA_CHAN("uart3_tx") #define DMACH_UART3_SRC2 S3C64XX_DMA_CHAN("uart3_rx") #define DMACH_PCM0_TX S3C64XX_DMA_CHAN("pcm0_tx") #define DMACH_PCM0_RX S3C64XX_DMA_CHAN("pcm0_rx") #define DMACH_I2S0_OUT S3C64XX_DMA_CHAN("i2s0_tx") #define DMACH_I2S0_IN S3C64XX_DMA_CHAN("i2s0_rx") #define DMACH_UART0 "uart0_tx" #define DMACH_UART0_SRC2 "uart0_rx" #define DMACH_UART1 "uart1_tx" #define DMACH_UART1_SRC2 "uart1_rx" #define DMACH_UART2 "uart2_tx" #define DMACH_UART2_SRC2 "uart2_rx" #define DMACH_UART3 "uart3_tx" #define DMACH_UART3_SRC2 "uart3_rx" #define DMACH_PCM0_TX "pcm0_tx" #define DMACH_PCM0_RX "pcm0_rx" #define DMACH_I2S0_OUT "i2s0_tx" #define DMACH_I2S0_IN "i2s0_rx" #define DMACH_SPI0_TX S3C64XX_DMA_CHAN("spi0_tx") #define DMACH_SPI0_RX S3C64XX_DMA_CHAN("spi0_rx") #define DMACH_HSI_I2SV40_TX S3C64XX_DMA_CHAN("i2s2_tx") #define DMACH_HSI_I2SV40_RX S3C64XX_DMA_CHAN("i2s2_rx") #define DMACH_HSI_I2SV40_TX "i2s2_tx" #define DMACH_HSI_I2SV40_RX "i2s2_rx" /* DMA1/SDMA1 */ #define DMACH_PCM1_TX S3C64XX_DMA_CHAN("pcm1_tx") #define DMACH_PCM1_RX S3C64XX_DMA_CHAN("pcm1_rx") #define DMACH_I2S1_OUT S3C64XX_DMA_CHAN("i2s1_tx") #define DMACH_I2S1_IN S3C64XX_DMA_CHAN("i2s1_rx") #define DMACH_PCM1_TX "pcm1_tx" #define DMACH_PCM1_RX "pcm1_rx" #define DMACH_I2S1_OUT "i2s1_tx" #define DMACH_I2S1_IN "i2s1_rx" #define DMACH_SPI1_TX S3C64XX_DMA_CHAN("spi1_tx") #define DMACH_SPI1_RX S3C64XX_DMA_CHAN("spi1_rx") #define DMACH_AC97_PCMOUT S3C64XX_DMA_CHAN("ac97_out") #define DMACH_AC97_PCMIN S3C64XX_DMA_CHAN("ac97_in") #define DMACH_AC97_MICIN S3C64XX_DMA_CHAN("ac97_mic") #define DMACH_PWM S3C64XX_DMA_CHAN("pwm") #define DMACH_IRDA S3C64XX_DMA_CHAN("irda") #define DMACH_EXTERNAL S3C64XX_DMA_CHAN("external") #define DMACH_SECURITY_RX S3C64XX_DMA_CHAN("sec_rx") #define DMACH_SECURITY_TX S3C64XX_DMA_CHAN("sec_tx") #define DMACH_AC97_PCMOUT "ac97_out" #define DMACH_AC97_PCMIN "ac97_in" #define DMACH_AC97_MICIN "ac97_mic" #define DMACH_PWM "pwm" #define DMACH_IRDA "irda" #define DMACH_EXTERNAL "external" #define DMACH_SECURITY_RX "sec_rx" #define DMACH_SECURITY_TX "sec_tx" enum dma_ch { DMACH_MAX = 32 Loading
arch/arm/plat-samsung/devs.c +20 −3 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ #include <linux/platform_data/usb-ohci-s3c2410.h> #include <plat/usb-phy.h> #include <plat/regs-spi.h> #include <linux/platform_data/asoc-s3c.h> #include <linux/platform_data/spi-s3c64xx.h> static u64 samsung_device_dma_mask = DMA_BIT_MASK(32); Loading @@ -74,9 +75,15 @@ static u64 samsung_device_dma_mask = DMA_BIT_MASK(32); static struct resource s3c_ac97_resource[] = { [0] = DEFINE_RES_MEM(S3C2440_PA_AC97, S3C2440_SZ_AC97), [1] = DEFINE_RES_IRQ(IRQ_S3C244X_AC97), [2] = DEFINE_RES_DMA_NAMED(DMACH_PCM_OUT, "PCM out"), [3] = DEFINE_RES_DMA_NAMED(DMACH_PCM_IN, "PCM in"), [4] = DEFINE_RES_DMA_NAMED(DMACH_MIC_IN, "Mic in"), }; static struct s3c_audio_pdata s3c_ac97_pdata = { #ifdef CONFIG_S3C24XX_DMAC .dma_filter = s3c24xx_dma_filter, #endif .dma_playback = (void *)DMACH_PCM_OUT, .dma_capture = (void *)DMACH_PCM_IN, .dma_capture_mic = (void *)DMACH_MIC_IN, }; struct platform_device s3c_device_ac97 = { Loading @@ -87,6 +94,7 @@ struct platform_device s3c_device_ac97 = { .dev = { .dma_mask = &samsung_device_dma_mask, .coherent_dma_mask = DMA_BIT_MASK(32), .platform_data = &s3c_ac97_pdata, } }; #endif /* CONFIG_CPU_S3C2440 */ Loading Loading @@ -566,6 +574,14 @@ static struct resource s3c_iis_resource[] = { [0] = DEFINE_RES_MEM(S3C24XX_PA_IIS, S3C24XX_SZ_IIS), }; static struct s3c_audio_pdata s3c_iis_platdata = { #ifdef CONFIG_S3C24XX_DMAC .dma_filter = s3c24xx_dma_filter, #endif .dma_playback = (void *)DMACH_I2S_OUT, .dma_capture = (void *)DMACH_I2S_IN, }; struct platform_device s3c_device_iis = { .name = "s3c24xx-iis", .id = -1, Loading @@ -574,6 +590,7 @@ struct platform_device s3c_device_iis = { .dev = { .dma_mask = &samsung_device_dma_mask, .coherent_dma_mask = DMA_BIT_MASK(32), .platform_data = &s3c_iis_platdata, } }; #endif /* CONFIG_PLAT_S3C24XX */ Loading
drivers/dma/Kconfig +1 −1 Original line number Diff line number Diff line Loading @@ -432,7 +432,7 @@ config STE_DMA40 Support for ST-Ericsson DMA40 controller config S3C24XX_DMAC tristate "Samsung S3C24XX DMA support" bool "Samsung S3C24XX DMA support" depends on ARCH_S3C24XX select DMA_ENGINE select DMA_VIRTUAL_CHANNELS Loading
include/linux/platform_data/asoc-s3c.h +8 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,9 @@ */ #define S3C64XX_AC97_GPD 0 #define S3C64XX_AC97_GPE 1 #include <linux/dmaengine.h> extern void s3c64xx_ac97_setup_gpio(int); struct samsung_i2s { Loading @@ -39,6 +42,11 @@ struct samsung_i2s { */ struct s3c_audio_pdata { int (*cfg_gpio)(struct platform_device *); dma_filter_fn dma_filter; void *dma_playback; void *dma_capture; void *dma_play_sec; void *dma_capture_mic; union { struct samsung_i2s i2s; } type; Loading