[alsa-devel] [PATCH 0/3] ASoC: Enable a new IC master mode: bcm2835<=>IC<=>cs42xx8

Matthias Reichl hias at horus.com
Mon Feb 27 02:30:24 PST 2017


On Mon, Feb 27, 2017 at 09:08:14PM +1100, Matt Flax wrote:
> 
> 
> On 27/02/17 19:04, Matthias Reichl wrote:
> >On Mon, Feb 27, 2017 at 09:35:14AM +1100, Matt Flax wrote:
> >>
> >>On 27/02/17 09:16, Matthias Reichl wrote:
> >>>
> >>>Have a look at the end of Documentation/sound/alsa/soc/DPCM.txt
> >>>where codec<->codec links are explained.
> >>>
> >>>You can setup the stream parameters for the "IC"<->"real codec" link
> >>>with snd_soc_dai_link.params.
> >>>
> >>>You can do that for example in your machine driver in hwparams:
> >>>when hw_params is called eg with 2 channels 192kHz just set the
> >>>dai link parameters of the codec to 8 channels 48kHz.
> >>>
> >>>Maybe using dynamic pcm (which offers a be_hw_params_fixup hook)
> >>>is the more appropriate way to do that, but I can't tell for sure
> >>>as I never used it and am not familiar with it.
> >>>
> >>>
> >>Thanks for this information, I will give this a go - seems a better way now
> >>then introducing an IC master into the mix !
> >>
> >>Do you agree that we still need the BCM2835 SoC CPU driver to be expanded to
> >>handle DSP mode
> >>and multichannel setups ? I can't see any other way to enable the
> >>multichannel hardware setup without altering bcm2835_i2s.c to handle DSP
> >>mode and more then 2 channels in its _hw_params.
> >No, DSP mode and multichannel don't work on the BCM2835. Keep the driver
> >as it is.
> >
> >Use the alsa plugin approach to tunnel multichannel data over a 2-channel
> >PCM and you don't need to modify existing drivers.
> >
> 
> Thanks again for this suggestion. I have been playing around with user space
> plugins lately, they are great. I plan to release some C++ classes to help
> trivialise the creation of such plugins.
> 
> However for a product, a piece of robustly functioning hardware, I am
> inclined to take the route of introducing a DSP mode into the bcm2835_i2s.c
> driver.

You can add DSP mode when you found which undocumented registers inside
the bcm2835 are needed to enable DSP mode, set channel 3-8 positions etc.
I'm not sure they exist, so there's little point in doing that - as we both
agreed, clocking the bcm2835 in DSP mode (while it's set up as a I2S slave)
doesn't work.

> From the previous patches, it is clear that people are willing to allow
> multichannel (DSP mode) into the bcm2835 CPU driver.

I don't see that. Some people might want to be able to use multichannel
on RPi, but that's something very different than adding code that just
lies about driver capabilites.

> It improves the
> usefulness of hardware which use the BCM2835 derived chipset. From my point
> of view that is a major simplification in terms of releasing functioning
> multichannel hardware. I would imagine from the manufacturer's point of view
> that is a big bonus too !
> 
> Again I intend to implement your concept of the snd_soc_dai_link for my
> machine driver, that is a fantasic lead you have given me ... when I have
> questions @ implementation time I will copy you in seeking for more
> guidance.
> 
> thanks again,
> Matt
> 
> 



More information about the linux-rpi-kernel mailing list