On Thu, Nov 28, 2013 at 03:29:31PM +0530, Padma Venkat wrote: > On Wed, Nov 27, 2013 at 8:35 PM, Mark Brown <broonie@xxxxxxxxxx> wrote: > > But if it's initialised at probe time then when is it getting > > overwritten? This must be something triggered by DT which unfortunately > > I can't test. It's a bit of a shame that the flows are different > > between the DT and non-DT cases. > it's getting overwritten in i2s_hw_params which is happening after > dma_data got initialized in dai probe. Based on mono or stereo channel > this value getting initialized to 2 or 4 respectively in > i2s_hw_params. This value is not triggered by DT now. OK, so we can probably just reinitialise the dmaengine data after we reset it? Like below > > Are you sure that dma_size should be 2? The i2s DAI driver seems to be > > hard coding it to 4. > I think for mono files the dma_size should be 2 only. Right now based > on mono or stereo this value getting overwritten in i2s_hw_params. > Initially it is hardcoded to 4. Due to this commit "ASoC: samsung: > Allow mono in i2s driver" which was not there earlier, I got confused. > Now it seems clear except that underrun message which I am still > debugging. Yeah, that's now confusing - I'll send a patch to remove the initialisation on probe() since it's getting overwritten later. diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c index 67d9fa91fdb9..ba24a954b9e4 100644 --- a/sound/soc/samsung/i2s.c +++ b/sound/soc/samsung/i2s.c @@ -702,6 +702,8 @@ static int i2s_hw_params(struct snd_pcm_substream *substream, } writel(mod, i2s->addr + I2SMOD); + samsung_asoc_init_dma_data(dai, &i2s->dma_playback, &i2s->dma_capture); + i2s->frmclk = params_rate(params); return 0;
Attachment:
signature.asc
Description: Digital signature