diff options
Diffstat (limited to 'sound/soc/s3c24xx')
-rw-r--r-- | sound/soc/s3c24xx/Kconfig | 2 | ||||
-rw-r--r-- | sound/soc/s3c24xx/s3c24xx-i2s.c | 1 | ||||
-rw-r--r-- | sound/soc/s3c24xx/s3c24xx-pcm.c | 22 |
3 files changed, 15 insertions, 10 deletions
diff --git a/sound/soc/s3c24xx/Kconfig b/sound/soc/s3c24xx/Kconfig index e97c68306a9a..5632a2e1518d 100644 --- a/sound/soc/s3c24xx/Kconfig +++ b/sound/soc/s3c24xx/Kconfig | |||
@@ -18,7 +18,7 @@ config SND_S3C2443_SOC_AC97 | |||
18 | 18 | ||
19 | config SND_S3C24XX_SOC_NEO1973_WM8753 | 19 | config SND_S3C24XX_SOC_NEO1973_WM8753 |
20 | tristate "SoC I2S Audio support for NEO1973 - WM8753" | 20 | tristate "SoC I2S Audio support for NEO1973 - WM8753" |
21 | depends on SND_S3C24XX_SOC && MACH_GTA01 | 21 | depends on SND_S3C24XX_SOC && MACH_NEO1973_GTA01 |
22 | select SND_S3C24XX_SOC_I2S | 22 | select SND_S3C24XX_SOC_I2S |
23 | select SND_SOC_WM8753 | 23 | select SND_SOC_WM8753 |
24 | help | 24 | help |
diff --git a/sound/soc/s3c24xx/s3c24xx-i2s.c b/sound/soc/s3c24xx/s3c24xx-i2s.c index 39f02462e07d..cd89c4105fcd 100644 --- a/sound/soc/s3c24xx/s3c24xx-i2s.c +++ b/sound/soc/s3c24xx/s3c24xx-i2s.c | |||
@@ -385,6 +385,7 @@ static int s3c24xx_i2s_probe(struct platform_device *pdev) | |||
385 | s3c24xx_i2s.iis_clk=clk_get(&pdev->dev, "iis"); | 385 | s3c24xx_i2s.iis_clk=clk_get(&pdev->dev, "iis"); |
386 | if (s3c24xx_i2s.iis_clk == NULL) { | 386 | if (s3c24xx_i2s.iis_clk == NULL) { |
387 | DBG("failed to get iis_clock\n"); | 387 | DBG("failed to get iis_clock\n"); |
388 | iounmap(s3c24xx_i2s.regs); | ||
388 | return -ENODEV; | 389 | return -ENODEV; |
389 | } | 390 | } |
390 | clk_enable(s3c24xx_i2s.iis_clk); | 391 | clk_enable(s3c24xx_i2s.iis_clk); |
diff --git a/sound/soc/s3c24xx/s3c24xx-pcm.c b/sound/soc/s3c24xx/s3c24xx-pcm.c index bfbdc3cbd43b..4107a87d4de3 100644 --- a/sound/soc/s3c24xx/s3c24xx-pcm.c +++ b/sound/soc/s3c24xx/s3c24xx-pcm.c | |||
@@ -158,18 +158,22 @@ static int s3c24xx_pcm_hw_params(struct snd_pcm_substream *substream, | |||
158 | if (!dma) | 158 | if (!dma) |
159 | return 0; | 159 | return 0; |
160 | 160 | ||
161 | /* prepare DMA */ | 161 | /* this may get called several times by oss emulation |
162 | prtd->params = dma; | 162 | * with different params -HW */ |
163 | if (prtd->params == NULL) { | ||
164 | /* prepare DMA */ | ||
165 | prtd->params = dma; | ||
163 | 166 | ||
164 | DBG("params %p, client %p, channel %d\n", prtd->params, | 167 | DBG("params %p, client %p, channel %d\n", prtd->params, |
165 | prtd->params->client, prtd->params->channel); | 168 | prtd->params->client, prtd->params->channel); |
166 | 169 | ||
167 | ret = s3c2410_dma_request(prtd->params->channel, | 170 | ret = s3c2410_dma_request(prtd->params->channel, |
168 | prtd->params->client, NULL); | 171 | prtd->params->client, NULL); |
169 | 172 | ||
170 | if (ret) { | 173 | if (ret) { |
171 | DBG(KERN_ERR "failed to get dma channel\n"); | 174 | DBG(KERN_ERR "failed to get dma channel\n"); |
172 | return ret; | 175 | return ret; |
176 | } | ||
173 | } | 177 | } |
174 | 178 | ||
175 | /* channel needs configuring for mem=>device, increment memory addr, | 179 | /* channel needs configuring for mem=>device, increment memory addr, |