Got it. Thanks Arnaud.
-Caleb
On Thu, Sep 17, 2015 at 9:09 AM, arnaud.mouiche@invoxia.com arnaud.mouiche@invoxia.com wrote:
Le 17/09/2015 17:34, Caleb Crome a écrit :
On Thu, Sep 17, 2015 at 7:33 AM, arnaud.mouiche@invoxia.com arnaud.mouiche@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@invoxia.com arnaud.mouiche@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