Message ID | 20190917181233.534-7-ben.dooks@codethink.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/8] ASoC: tegra: Add a TDM configuration callback | expand |
On 17/09/2019 19:12, Ben Dooks wrote: > Set the offset to 0 for TDM mode, as per the current setup. > > Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> > --- > sound/soc/tegra/tegra30_i2s.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/sound/soc/tegra/tegra30_i2s.c b/sound/soc/tegra/tegra30_i2s.c > index d75ce12fe177..3efef87ed8d8 100644 > --- a/sound/soc/tegra/tegra30_i2s.c > +++ b/sound/soc/tegra/tegra30_i2s.c > @@ -206,8 +206,11 @@ static int tegra30_i2s_hw_params(struct snd_pcm_substream *substream, > > i2s->soc_data->set_audio_cif(i2s->regmap, reg, &cif_conf); > > - val = (1 << TEGRA30_I2S_OFFSET_RX_DATA_OFFSET_SHIFT) | > - (1 << TEGRA30_I2S_OFFSET_TX_DATA_OFFSET_SHIFT); > + if (i2s->is_tdm) > + val = 0; > + else > + val = (1 << TEGRA30_I2S_OFFSET_RX_DATA_OFFSET_SHIFT) | > + (1 << TEGRA30_I2S_OFFSET_TX_DATA_OFFSET_SHIFT); > regmap_write(i2s->regmap, TEGRA30_I2S_OFFSET, val); > > return 0; Please move this code into tegra30_i2s_set_fmt() as it only needs to be set once. BTW, if you refer to the following I2S driver for Tegra210, you will see how I think that we should handle this ... https://nv-tegra.nvidia.com/gitweb/?p=linux-nvidia.git;a=blob;f=sound/soc/tegra-alt/tegra210_i2s_alt.c;h=ee482f27ed2e4710e5e7446918887f8f8ef31285;hb=a960d522a5486aee27605f890034869c4f49d94a#l310 Cheers Jon
On 2019-09-18 10:02, Jon Hunter wrote: > On 17/09/2019 19:12, Ben Dooks wrote: >> Set the offset to 0 for TDM mode, as per the current setup. >> >> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> >> --- >> sound/soc/tegra/tegra30_i2s.c | 7 +++++-- >> 1 file changed, 5 insertions(+), 2 deletions(-) >> >> diff --git a/sound/soc/tegra/tegra30_i2s.c >> b/sound/soc/tegra/tegra30_i2s.c >> index d75ce12fe177..3efef87ed8d8 100644 >> --- a/sound/soc/tegra/tegra30_i2s.c >> +++ b/sound/soc/tegra/tegra30_i2s.c >> @@ -206,8 +206,11 @@ static int tegra30_i2s_hw_params(struct >> snd_pcm_substream *substream, >> >> i2s->soc_data->set_audio_cif(i2s->regmap, reg, &cif_conf); >> >> - val = (1 << TEGRA30_I2S_OFFSET_RX_DATA_OFFSET_SHIFT) | >> - (1 << TEGRA30_I2S_OFFSET_TX_DATA_OFFSET_SHIFT); >> + if (i2s->is_tdm) >> + val = 0; >> + else >> + val = (1 << TEGRA30_I2S_OFFSET_RX_DATA_OFFSET_SHIFT) | >> + (1 << TEGRA30_I2S_OFFSET_TX_DATA_OFFSET_SHIFT); >> regmap_write(i2s->regmap, TEGRA30_I2S_OFFSET, val); >> >> return 0; > > Please move this code into tegra30_i2s_set_fmt() as it only needs to be > set once. > > BTW, if you refer to the following I2S driver for Tegra210, you will > see > how I think that we should handle this ... Ok, thanks.
diff --git a/sound/soc/tegra/tegra30_i2s.c b/sound/soc/tegra/tegra30_i2s.c index d75ce12fe177..3efef87ed8d8 100644 --- a/sound/soc/tegra/tegra30_i2s.c +++ b/sound/soc/tegra/tegra30_i2s.c @@ -206,8 +206,11 @@ static int tegra30_i2s_hw_params(struct snd_pcm_substream *substream, i2s->soc_data->set_audio_cif(i2s->regmap, reg, &cif_conf); - val = (1 << TEGRA30_I2S_OFFSET_RX_DATA_OFFSET_SHIFT) | - (1 << TEGRA30_I2S_OFFSET_TX_DATA_OFFSET_SHIFT); + if (i2s->is_tdm) + val = 0; + else + val = (1 << TEGRA30_I2S_OFFSET_RX_DATA_OFFSET_SHIFT) | + (1 << TEGRA30_I2S_OFFSET_TX_DATA_OFFSET_SHIFT); regmap_write(i2s->regmap, TEGRA30_I2S_OFFSET, val); return 0;
Set the offset to 0 for TDM mode, as per the current setup. Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> --- sound/soc/tegra/tegra30_i2s.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)