diff options
Diffstat (limited to 'sound/soc/davinci/davinci-mcasp.c')
| -rw-r--r-- | sound/soc/davinci/davinci-mcasp.c | 21 | 
1 files changed, 14 insertions, 7 deletions
diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c index a5af834c8ef..8566238db2a 100644 --- a/sound/soc/davinci/davinci-mcasp.c +++ b/sound/soc/davinci/davinci-mcasp.c @@ -434,17 +434,21 @@ static int davinci_mcasp_set_dai_fmt(struct snd_soc_dai *cpu_dai,  		mcasp_set_bits(base + DAVINCI_MCASP_ACLKRCTL_REG, ACLKRE);  		mcasp_set_bits(base + DAVINCI_MCASP_RXFMCTL_REG, AFSRE); -		mcasp_set_bits(base + DAVINCI_MCASP_PDIR_REG, (0x7 << 26)); +		mcasp_set_bits(base + DAVINCI_MCASP_PDIR_REG, +				ACLKX | AHCLKX | AFSX);  		break;  	case SND_SOC_DAIFMT_CBM_CFS:  		/* codec is clock master and frame slave */ -		mcasp_set_bits(base + DAVINCI_MCASP_ACLKXCTL_REG, ACLKXE); +		mcasp_clr_bits(base + DAVINCI_MCASP_ACLKXCTL_REG, ACLKXE);  		mcasp_set_bits(base + DAVINCI_MCASP_TXFMCTL_REG, AFSXE); -		mcasp_set_bits(base + DAVINCI_MCASP_ACLKRCTL_REG, ACLKRE); +		mcasp_clr_bits(base + DAVINCI_MCASP_ACLKRCTL_REG, ACLKRE);  		mcasp_set_bits(base + DAVINCI_MCASP_RXFMCTL_REG, AFSRE); -		mcasp_set_bits(base + DAVINCI_MCASP_PDIR_REG, (0x2d << 26)); +		mcasp_clr_bits(base + DAVINCI_MCASP_PDIR_REG, +				ACLKX | ACLKR); +		mcasp_set_bits(base + DAVINCI_MCASP_PDIR_REG, +				AFSX | AFSR);  		break;  	case SND_SOC_DAIFMT_CBM_CFM:  		/* codec is clock and frame master */ @@ -454,7 +458,8 @@ static int davinci_mcasp_set_dai_fmt(struct snd_soc_dai *cpu_dai,  		mcasp_clr_bits(base + DAVINCI_MCASP_ACLKRCTL_REG, ACLKRE);  		mcasp_clr_bits(base + DAVINCI_MCASP_RXFMCTL_REG, AFSRE); -		mcasp_clr_bits(base + DAVINCI_MCASP_PDIR_REG, (0x3f << 26)); +		mcasp_clr_bits(base + DAVINCI_MCASP_PDIR_REG, +				ACLKX | AHCLKX | AFSX | ACLKR | AHCLKR | AFSR);  		break;  	default: @@ -644,7 +649,7 @@ static void davinci_hw_param(struct davinci_audio_dev *dev, int stream)  		mcasp_set_reg(dev->base + DAVINCI_MCASP_TXTDM_REG, mask);  		mcasp_set_bits(dev->base + DAVINCI_MCASP_TXFMT_REG, TXORD); -		if ((dev->tdm_slots >= 2) || (dev->tdm_slots <= 32)) +		if ((dev->tdm_slots >= 2) && (dev->tdm_slots <= 32))  			mcasp_mod_bits(dev->base + DAVINCI_MCASP_TXFMCTL_REG,  					FSXMOD(dev->tdm_slots), FSXMOD(0x1FF));  		else @@ -660,7 +665,7 @@ static void davinci_hw_param(struct davinci_audio_dev *dev, int stream)  				AHCLKRE);  		mcasp_set_reg(dev->base + DAVINCI_MCASP_RXTDM_REG, mask); -		if ((dev->tdm_slots >= 2) || (dev->tdm_slots <= 32)) +		if ((dev->tdm_slots >= 2) && (dev->tdm_slots <= 32))  			mcasp_mod_bits(dev->base + DAVINCI_MCASP_RXFMCTL_REG,  					FSRMOD(dev->tdm_slots), FSRMOD(0x1FF));  		else @@ -904,6 +909,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev)  	dma_data = &dev->dma_params[SNDRV_PCM_STREAM_PLAYBACK];  	dma_data->asp_chan_q = pdata->asp_chan_q;  	dma_data->ram_chan_q = pdata->ram_chan_q; +	dma_data->sram_size = pdata->sram_size_playback;  	dma_data->dma_addr = (dma_addr_t) (pdata->tx_dma_offset +  							mem->start); @@ -920,6 +926,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev)  	dma_data = &dev->dma_params[SNDRV_PCM_STREAM_CAPTURE];  	dma_data->asp_chan_q = pdata->asp_chan_q;  	dma_data->ram_chan_q = pdata->ram_chan_q; +	dma_data->sram_size = pdata->sram_size_capture;  	dma_data->dma_addr = (dma_addr_t)(pdata->rx_dma_offset +  							mem->start);  |