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