[alsa-devel] Multiple codecs on one sound card for multi-channel sound card

Caleb Crome caleb at crome.org
Thu Sep 17 19:39:29 CEST 2015


Got it.  Thanks Arnaud.

-Caleb


On Thu, Sep 17, 2015 at 9:09 AM, arnaud.mouiche at invoxia.com
<arnaud.mouiche at invoxia.com> wrote:
>
>
> Le 17/09/2015 17:34, Caleb Crome a écrit :
>>
>> On Thu, Sep 17, 2015 at 7:33 AM, arnaud.mouiche at invoxia.com
>> <arnaud.mouiche at invoxia.com> wrote:
>>>
>>> hello,
>>>
>>> Le 17/09/2015 15:38, Caleb Crome a écrit :
>>>>
>>>> On Thu, Sep 17, 2015 at 1:51 AM, arnaud.mouiche at invoxia.com
>>>> <arnaud.mouiche at invoxia.com> wrote:
>>>>>
>>>>> Hello Caleb,
>>>>>
>>>>> freescale SSI is fine with more than 2 channels.
>>>>> I have planed to publish a set of patch in this direction but we still
>>>>> have
>>>>> some corner cases to fix first (rare issues with channels alignment)
>>>>>
>>>> I'd love to see anything you're willing to show :-)
>>>>
>>>>> Yet, this following is far enough to have it working.
>>>>> And since the max/min rate is at the end the intersection of what the
>>>>> SSI,
>>>>> the codec and the card are declaring, it will not change anything until
>>>>> you
>>>>> connect the SSI to a codec with more than 2 channels, or a multi-codec
>>>>> solution.
>>>>
>>>> What if I change channels_max to 16 for capture and playback?  Last
>>>> time I tried, it would not keep the channels synchronized on the TDM
>>>> bus.  I tried playing with the FIFO settings, which helped, but it
>>>> still would not start each channel in the right slot reliably.
>>>> Perhaps I was using an older kernel.
>>>
>>> you put the finger on what's hurting !  ;)
>>>
>>> In fact, we made 8 channels working in reliable way on imx50, with
>>> predictive latency  ... with an old kernel (3.17) ... based on freescale
>>> BSP... on sound/soc/imx/imx-ssi.c (something that doesn't exist outside
>>> freescale BSP)
>>>
>>> Well, just to say it is doable on any recent imx since the hardware is
>>> not
>>> the issue. But the job was a set of awful hacks.
>>
>> Sorry, I don't quite understand.  Are you saying that on a recent
>> kernel (say 4.1 or 4.2), you think it will just work.  Or are yo
>> saying that even on a modern kernel it's a set of awful hacks?  And
>> should I use fsl_ssi.c or imx-ssi.c (device tree/non device tree)
>> version?
>
> - I'm saying it is working on recent upstream kernel, using
> sound/soc/fsl/fsl_ssi.c, but with
> some channel sync issues in rare conditions (at least 4 channels case,
> opening multiple SSI at the same time).
> So, you should test on your side with you setup, and simply be prepared to
> not see it working as a charm.
>
> - we made it work perfectly, but on an old freescale BSP, where freescale
> rewrites a SSI driver different from the already 2 drivers (device tree/non
> device tree) available today in upstream + lot of awful hacks => so, this is
> not a hardware issue.
>
> - when I will have time, I will start from the upstream driver, and make it
> work correctly with 8 channels (or more)
>
> arnaud
>
>>
>> In short, what's your best current recommendation to get it working today?
>>
>>> My plan was to re-do all this job on an upstream kernel, in a way it can
>>> be
>>> accepted.
>>> Unfortunately you will have to wait, I'm under pressure for other stuff
>>> right now.
>>
>> Heh, understood.  If there's anything I can do to help, let me know.
>>
>> Thanks,
>> -Caleb
>>
>>> Regards,
>>> arnaud
>>>
>>>
>>>> I'll give it a try again.  Like I said, we'd love to get our
>>>> 16-channel board up and running on the MX6, so I'm definitely
>>>> motivated to put some work in to get it reliable.
>>>>
>>>> Thanks,
>>>>    -Caleb
>>>>
>


More information about the Alsa-devel mailing list