Re: [PATCH 0/2] Graph fixes for using multiple endpoints per port

From: Tony Lindgren
Date: Wed Dec 12 2018 - 09:50:29 EST

* Peter Ujfalusi <peter.ujfalusi@xxxxxx> [181212 13:03]:
> On 12/12/2018 2.19, Tony Lindgren wrote:
> > In my McBSP case there is only a single physical I2S port
> > that can be TDM split into timeslots.
> So what is missing from the McBSP driver is to configure the TDM. We
> never had a hardware which would require it so it is _not_ implemented.

Curiously.. Nothing needs to be done in the McBSP driver for the droid
4 TDM configuration AFAIK.

The CPCAP PMIC is the clock master, and only the PMIC registers need to
be configured in this case for the timeslot to switch between codecs
connected to McBSP3.

> imho the 'only' thing is to implement the set_tdm_slot callback for the
> McBSP DAI. In DT you would have single card with two dai_link section
> and each section would set different tdm slots to use for the codecs
> listening on different slots.
> There is one issue for sure with this setup: the two PCM can not be used
> at the same time. But we have one DMA channel so if you would open both
> the PCM stream need to be set up in a way to match with the HW or create
> a asound.conf file to do some mapping.

Yes in the droid 4 TDM case only one device can be used at a time
and all that configuration is done in the PMIC codec .set_tdm_slot

I think it's possible to do more complex configurations where McBSP
is the master and would implement a .set_tdm_slot function. But I
don't know anything about that and I'm not aware of any such use
cases in the mainline kernel.