Message ID | 20190917181233.534-6-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: > In TDM, use the negative edge to drive data and the positive edge to sample > data. > > Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> > --- > sound/soc/tegra/tegra30_i2s.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/sound/soc/tegra/tegra30_i2s.c b/sound/soc/tegra/tegra30_i2s.c > index 4222839b63bd..d75ce12fe177 100644 > --- a/sound/soc/tegra/tegra30_i2s.c > +++ b/sound/soc/tegra/tegra30_i2s.c > @@ -117,6 +117,8 @@ static int tegra30_i2s_set_fmt(struct snd_soc_dai *dai, > } > > pm_runtime_get_sync(dai->dev); > + regmap_update_bits(i2s->regmap, TEGRA30_I2S_CH_CTRL_EGDE_CTRL_MASK, > + i2s->is_tdm ? TEGRA30_I2S_CH_CTRL_EGDE_CTRL_NEG_EDGE : 0); > regmap_update_bits(i2s->regmap, TEGRA30_I2S_CTRL, mask, val); > pm_runtime_put(dai->dev); I would rather set this in the case statement above where the format is parsed and again drop this 'is_tdm' variable. Jon
On 18/09/2019 09:54, Jon Hunter wrote: > > On 17/09/2019 19:12, Ben Dooks wrote: >> In TDM, use the negative edge to drive data and the positive edge to sample >> data. >> >> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> >> --- >> sound/soc/tegra/tegra30_i2s.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/sound/soc/tegra/tegra30_i2s.c b/sound/soc/tegra/tegra30_i2s.c >> index 4222839b63bd..d75ce12fe177 100644 >> --- a/sound/soc/tegra/tegra30_i2s.c >> +++ b/sound/soc/tegra/tegra30_i2s.c >> @@ -117,6 +117,8 @@ static int tegra30_i2s_set_fmt(struct snd_soc_dai *dai, >> } >> >> pm_runtime_get_sync(dai->dev); >> + regmap_update_bits(i2s->regmap, TEGRA30_I2S_CH_CTRL_EGDE_CTRL_MASK, >> + i2s->is_tdm ? TEGRA30_I2S_CH_CTRL_EGDE_CTRL_NEG_EDGE : 0); >> regmap_update_bits(i2s->regmap, TEGRA30_I2S_CTRL, mask, val); >> pm_runtime_put(dai->dev); > > I would rather set this in the case statement above where the format is > parsed and again drop this 'is_tdm' variable. Actually, this should be implemented as shown in the following ... 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#l362 Jon
On 2019-09-18 10:02, Jon Hunter wrote: > On 18/09/2019 09:54, Jon Hunter wrote: >> >> On 17/09/2019 19:12, Ben Dooks wrote: >>> In TDM, use the negative edge to drive data and the positive edge to >>> sample >>> data. >>> >>> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> >>> --- >>> sound/soc/tegra/tegra30_i2s.c | 2 ++ >>> 1 file changed, 2 insertions(+) >>> >>> diff --git a/sound/soc/tegra/tegra30_i2s.c >>> b/sound/soc/tegra/tegra30_i2s.c >>> index 4222839b63bd..d75ce12fe177 100644 >>> --- a/sound/soc/tegra/tegra30_i2s.c >>> +++ b/sound/soc/tegra/tegra30_i2s.c >>> @@ -117,6 +117,8 @@ static int tegra30_i2s_set_fmt(struct snd_soc_dai >>> *dai, >>> } >>> >>> pm_runtime_get_sync(dai->dev); >>> + regmap_update_bits(i2s->regmap, TEGRA30_I2S_CH_CTRL_EGDE_CTRL_MASK, >>> + i2s->is_tdm ? TEGRA30_I2S_CH_CTRL_EGDE_CTRL_NEG_EDGE : 0); >>> regmap_update_bits(i2s->regmap, TEGRA30_I2S_CTRL, mask, val); >>> pm_runtime_put(dai->dev); >> >> I would rather set this in the case statement above where the format >> is >> parsed and again drop this 'is_tdm' variable. > > Actually, this should be implemented as shown in the following ... > > 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#l362 > > Jon Ok, will look at that. Note, nv-tegra.nvidia.com seems to have a security problem .
diff --git a/sound/soc/tegra/tegra30_i2s.c b/sound/soc/tegra/tegra30_i2s.c index 4222839b63bd..d75ce12fe177 100644 --- a/sound/soc/tegra/tegra30_i2s.c +++ b/sound/soc/tegra/tegra30_i2s.c @@ -117,6 +117,8 @@ static int tegra30_i2s_set_fmt(struct snd_soc_dai *dai, } pm_runtime_get_sync(dai->dev); + regmap_update_bits(i2s->regmap, TEGRA30_I2S_CH_CTRL_EGDE_CTRL_MASK, + i2s->is_tdm ? TEGRA30_I2S_CH_CTRL_EGDE_CTRL_NEG_EDGE : 0); regmap_update_bits(i2s->regmap, TEGRA30_I2S_CTRL, mask, val); pm_runtime_put(dai->dev);
In TDM, use the negative edge to drive data and the positive edge to sample data. Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> --- sound/soc/tegra/tegra30_i2s.c | 2 ++ 1 file changed, 2 insertions(+)