diff options
Diffstat (limited to 'sound/soc/s3c24xx/s3c24xx-i2s.c')
| -rw-r--r-- | sound/soc/s3c24xx/s3c24xx-i2s.c | 19 | 
1 files changed, 10 insertions, 9 deletions
diff --git a/sound/soc/s3c24xx/s3c24xx-i2s.c b/sound/soc/s3c24xx/s3c24xx-i2s.c index 0bc5950b9f0..c3ac890a398 100644 --- a/sound/soc/s3c24xx/s3c24xx-i2s.c +++ b/sound/soc/s3c24xx/s3c24xx-i2s.c @@ -242,14 +242,17 @@ static int s3c24xx_i2s_hw_params(struct snd_pcm_substream *substream,  				 struct snd_soc_dai *dai)  {  	struct snd_soc_pcm_runtime *rtd = substream->private_data; +	struct s3c_dma_params *dma_data;  	u32 iismod;  	pr_debug("Entered %s\n", __func__);  	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) -		rtd->dai->cpu_dai->dma_data = &s3c24xx_i2s_pcm_stereo_out; +		dma_data = &s3c24xx_i2s_pcm_stereo_out;  	else -		rtd->dai->cpu_dai->dma_data = &s3c24xx_i2s_pcm_stereo_in; +		dma_data = &s3c24xx_i2s_pcm_stereo_in; + +	snd_soc_dai_set_dma_data(rtd->dai->cpu_dai, substream, dma_data);  	/* Working copies of register */  	iismod = readl(s3c24xx_i2s.regs + S3C2410_IISMOD); @@ -258,13 +261,11 @@ static int s3c24xx_i2s_hw_params(struct snd_pcm_substream *substream,  	switch (params_format(params)) {  	case SNDRV_PCM_FORMAT_S8:  		iismod &= ~S3C2410_IISMOD_16BIT; -		((struct s3c_dma_params *) -		  rtd->dai->cpu_dai->dma_data)->dma_size = 1; +		dma_data->dma_size = 1;  		break;  	case SNDRV_PCM_FORMAT_S16_LE:  		iismod |= S3C2410_IISMOD_16BIT; -		((struct s3c_dma_params *) -		  rtd->dai->cpu_dai->dma_data)->dma_size = 2; +		dma_data->dma_size = 2;  		break;  	default:  		return -EINVAL; @@ -280,8 +281,8 @@ static int s3c24xx_i2s_trigger(struct snd_pcm_substream *substream, int cmd,  {  	int ret = 0;  	struct snd_soc_pcm_runtime *rtd = substream->private_data; -	int channel = ((struct s3c_dma_params *) -		  rtd->dai->cpu_dai->dma_data)->channel; +	struct s3c_dma_params *dma_data = +		snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream);  	pr_debug("Entered %s\n", __func__); @@ -300,7 +301,7 @@ static int s3c24xx_i2s_trigger(struct snd_pcm_substream *substream, int cmd,  		else  			s3c24xx_snd_txctrl(1); -		s3c2410_dma_ctrl(channel, S3C2410_DMAOP_STARTED); +		s3c2410_dma_ctrl(dma_data->channel, S3C2410_DMAOP_STARTED);  		break;  	case SNDRV_PCM_TRIGGER_STOP:  	case SNDRV_PCM_TRIGGER_SUSPEND:  |