[PATCH] ASoC: bcm2835: Add 8 channel (multitrack) capability

Matthias Reichl hias at horus.com
Wed Feb 8 10:54:00 PST 2017


On Wed, Feb 08, 2017 at 06:28:35PM +0000, Mark Brown wrote:
> On Tue, Feb 07, 2017 at 10:09:36AM +1100, Matt Flax wrote:
> 
> >  	case SND_SOC_DAIFMT_CBS_CFM:
> >  		clk_set_rate(dev->clk, sampling_rate * bclk_ratio);
> > +	case SND_SOC_DAIFMT_CBM_CFS:
> 
> Is this fall through deliberate?
> 
> > +	/* Default data delay to 1 bit.
> > +	   In I2S mode, we must have 2 channels */
> >  	switch (dev->fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
> >  	case SND_SOC_DAIFMT_I2S:
> > +		if (params_channels(params) != 2)
> > +			return -EINVAL;
> > +	case SND_SOC_DAIFMT_DSP_A:
> > +	case SND_SOC_DAIFMT_DSP_B:
> >  		data_delay = 1;
> >  		break;
> >  	default:

Matt, could you please include linux-rpi-kernel at lists.infradead.org
in your emails?

I fail to see the part where DSP modes are actually set up in
the hardware. bcm2835 still seems to be operating in 2-channel
stereo I2S mode, i.e. no real frame sync information at the
hardware level.

If all you do is adding code to pretend the bcm2835 could do
multichannel modes wouldn't it be easier to implement that as
a userspace alsa plugin?

> 
> Same here.  This is also buggy in that it treats DSP A and DSP B
> identically, they are different so the configuration must be incorrect
> for one of them.  I suspect this is configuring for DSP A.
> 
> You should also really have a setup() function that imposes a channel
> constraint when in I2S mode, wm8988 is one example here.



> _______________________________________________
> linux-rpi-kernel mailing list
> linux-rpi-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rpi-kernel




More information about the linux-arm-kernel mailing list