Message ID | 20190826180734.15801-4-codekipper@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ASoC: sun4i-i2s: Updates to the driver | expand |
On Mon, Aug 26, 2019 at 08:07:34PM +0200, codekipper@gmail.com wrote: > From: Marcus Cooper <codekipper@gmail.com> > > Some codecs such as i2s based HDMI audio and the Pine64 DAC require > a different amount of bit clocks per frame than what is calculated > by the sample width. Use the values obtained by the tdm slot bindings > to adjust the LRCLK width accordingly. > > Signed-off-by: Marcus Cooper <codekipper@gmail.com> > --- > sound/soc/sunxi/sun4i-i2s.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c > index 056a299c03fb..0965a97c96e5 100644 > --- a/sound/soc/sunxi/sun4i-i2s.c > +++ b/sound/soc/sunxi/sun4i-i2s.c > @@ -455,7 +455,10 @@ static int sun8i_i2s_set_chan_cfg(const struct sun4i_i2s *i2s, > break; > > case SND_SOC_DAIFMT_I2S: > - lrck_period = params_physical_width(params); > + if (i2s->slot_width) > + lrck_period = i2s->slot_width; > + else > + lrck_period = params_physical_width(params); > break; That would be the case with the DSP formats too, right? Maxime -- Maxime Ripard, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
On Tue, 27 Aug 2019 at 09:01, Maxime Ripard <mripard@kernel.org> wrote: > > On Mon, Aug 26, 2019 at 08:07:34PM +0200, codekipper@gmail.com wrote: > > From: Marcus Cooper <codekipper@gmail.com> > > > > Some codecs such as i2s based HDMI audio and the Pine64 DAC require > > a different amount of bit clocks per frame than what is calculated > > by the sample width. Use the values obtained by the tdm slot bindings > > to adjust the LRCLK width accordingly. > > > > Signed-off-by: Marcus Cooper <codekipper@gmail.com> > > --- > > sound/soc/sunxi/sun4i-i2s.c | 5 ++++- > > 1 file changed, 4 insertions(+), 1 deletion(-) > > > > diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c > > index 056a299c03fb..0965a97c96e5 100644 > > --- a/sound/soc/sunxi/sun4i-i2s.c > > +++ b/sound/soc/sunxi/sun4i-i2s.c > > @@ -455,7 +455,10 @@ static int sun8i_i2s_set_chan_cfg(const struct sun4i_i2s *i2s, > > break; > > > > case SND_SOC_DAIFMT_I2S: > > - lrck_period = params_physical_width(params); > > + if (i2s->slot_width) > > + lrck_period = i2s->slot_width; > > + else > > + lrck_period = params_physical_width(params); > > break; > > That would be the case with the DSP formats too, right? Maybe....but I need a TDM test volunteer!, CK > > Maxime > > -- > Maxime Ripard, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com
diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c index 056a299c03fb..0965a97c96e5 100644 --- a/sound/soc/sunxi/sun4i-i2s.c +++ b/sound/soc/sunxi/sun4i-i2s.c @@ -455,7 +455,10 @@ static int sun8i_i2s_set_chan_cfg(const struct sun4i_i2s *i2s, break; case SND_SOC_DAIFMT_I2S: - lrck_period = params_physical_width(params); + if (i2s->slot_width) + lrck_period = i2s->slot_width; + else + lrck_period = params_physical_width(params); break; default: