diff options
| -rw-r--r-- | sound/soc/pxa/pxa2xx-i2s.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sound/soc/pxa/pxa2xx-i2s.c b/sound/soc/pxa/pxa2xx-i2s.c index 4743e262895d..6b8f655d1ad8 100644 --- a/sound/soc/pxa/pxa2xx-i2s.c +++ b/sound/soc/pxa/pxa2xx-i2s.c | |||
| @@ -167,6 +167,7 @@ static int pxa2xx_i2s_hw_params(struct snd_pcm_substream *substream, | |||
| 167 | 167 | ||
| 168 | BUG_ON(IS_ERR(clk_i2s)); | 168 | BUG_ON(IS_ERR(clk_i2s)); |
| 169 | clk_enable(clk_i2s); | 169 | clk_enable(clk_i2s); |
| 170 | dai->private_data = dai; | ||
| 170 | pxa_i2s_wait(); | 171 | pxa_i2s_wait(); |
| 171 | 172 | ||
| 172 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) | 173 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) |
| @@ -255,7 +256,10 @@ static void pxa2xx_i2s_shutdown(struct snd_pcm_substream *substream, | |||
| 255 | if ((SACR1 & (SACR1_DREC | SACR1_DRPL)) == (SACR1_DREC | SACR1_DRPL)) { | 256 | if ((SACR1 & (SACR1_DREC | SACR1_DRPL)) == (SACR1_DREC | SACR1_DRPL)) { |
| 256 | SACR0 &= ~SACR0_ENB; | 257 | SACR0 &= ~SACR0_ENB; |
| 257 | pxa_i2s_wait(); | 258 | pxa_i2s_wait(); |
| 258 | clk_disable(clk_i2s); | 259 | if (dai->private_data != NULL) { |
| 260 | clk_disable(clk_i2s); | ||
| 261 | dai->private_data = NULL; | ||
| 262 | } | ||
| 259 | } | 263 | } |
| 260 | } | 264 | } |
| 261 | 265 | ||
| @@ -336,6 +340,7 @@ static int pxa2xx_i2s_probe(struct platform_device *dev) | |||
| 336 | return PTR_ERR(clk_i2s); | 340 | return PTR_ERR(clk_i2s); |
| 337 | 341 | ||
| 338 | pxa_i2s_dai.dev = &dev->dev; | 342 | pxa_i2s_dai.dev = &dev->dev; |
| 343 | pxa_i2s_dai.private_data = NULL; | ||
| 339 | ret = snd_soc_register_dai(&pxa_i2s_dai); | 344 | ret = snd_soc_register_dai(&pxa_i2s_dai); |
| 340 | if (ret != 0) | 345 | if (ret != 0) |
| 341 | clk_put(clk_i2s); | 346 | clk_put(clk_i2s); |
