On 12/12/2018 16.50, Tony Lindgren wrote: > * 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. So you always have 4 timeslot and that's it? > 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. The McBSP TDM configuration is not master only. You basically tell McBSP on which timeslot to transmit/receive. Let's say you have two codecs connected to a single McBSP. codec1 is configured to listen for timeslot 0/1 codec2 is configured to listen for timeslot 2/3 If you open a stereo stream to codec1 then you tell McBSP to send/receive the data under timeslot 0/1 and ignore any other timeslots. If you open a stereo stream to codec2 then you tell McBSP to send/receive the data under timeslot 2/3 and ignore any other timeslots. For codec1 you don't really need anything regarding to TDM configuration as McBSP will send/receive right after the start condition on the FS, but for codec2 you need to configure the TDM mode of McBSP to ignore timeslot 0/1 >> 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 > function. Hrm, do you have two DAIs on the PMIC side or different timeslots from the TDM stream is routed to different outputs, similarly to twl6040 where timeslot 0/1 is Headset, timeslot 2/3 is Handsfree and timeslot 5 is to drive a vibra? > 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. No, the set_tdm_slot is applicable for both master and slave mode of McBSP. > > Regards, > > Tony > - Péter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki