[alsa-devel] [ASoc] TDM over one SSC channel on AT91 possible?
Hello!
The background: I'm just designing an ATMEL AT91RM9200 based board which got two TLV320AIC33 on board. It is either possible to hook up the two TLV320AIC33 to a separate SSC (synchronous serial control) channel each or use one SSC channel and configure it for TDM (time division multiplex) mode. There is already a driver for TLV320AIC14k/TLV320AIC2k in the development tree, so adding support for the TLV320AIC33 should be feasible.
What I'm not sure about is the fact if ASOC is prepared for using channels, especially SSC, in TDM mode. Is the core ASOC structure prepared to handle that?
Would we be better off instantiate one drive twice each time with different parameters for the SSC channel?
Thanks for any feedback.
On Fri, 2007-11-09 at 12:37 +0100, Friedrich Lobenstock wrote:
Hello!
The background: I'm just designing an ATMEL AT91RM9200 based board which got two TLV320AIC33 on board. It is either possible to hook up the two TLV320AIC33 to a separate SSC (synchronous serial control) channel each or use one SSC channel and configure it for TDM (time division multiplex) mode. There is already a driver for TLV320AIC14k/TLV320AIC2k in the development tree, so adding support for the TLV320AIC33 should be feasible.
Fwiw, TDM will save you a SSC port but will make similtanious use of both codecs at different rates/formats difficult. It depends on your use cases.
What I'm not sure about is the fact if ASOC is prepared for using channels, especially SSC, in TDM mode. Is the core ASOC structure prepared to handle that?
It is for some platforms, but I think AT91 SSC and your codec will need set_tdm_slot() implemented. Your machine driver will call set_tdm_slot to configure codec/SSC slots.
Would we be better off instantiate one drive twice each time with different parameters for the SSC channel?
I would instantiate one driver with 3 pcms. This would allow:-
pcm0: 2 channel, slot 0,1 pcm1: 2 channel, slot 2,3 pcm2: 4 channel, slot 0,1,2,3
Giving full flexibility for many use cases. The pcms would be mutually exclusive (enforced by machine driver).
HTH
Liam
Hello everyone,
I am looking for some help where I need an AD193X codec to be shared between 8 audio streams using one SSC channel on an AT91SAM9263, in other words, I need it to look like 8 different soundcards. We have the 8 TDM channels working in the driver but I can't figure out how to create the proper interface of 8 soundcards for ALSA. In an earlier email in this topic was posted:
I would instantiate one driver with 3 pcms. This would allow:-
pcm0: 2 channel, slot 0,1 pcm1: 2 channel, slot 2,3 pcm2: 4 channel, slot 0,1,2,3
Giving full flexibility for many use cases. The pcms would be mutually exclusive (enforced by machine driver).
HTH
Liam
I think that maybe that I want to instantiate one driver with 8 pcms. Where/how do I instantiate the PCMs? I guess it in in the machine driver?
This is our first attempt at developing a Linux based system so please forgive my newbie question. I am sure this is really simple but I'm not following somewhere.
Thanks for your help, Jason Fox GAI-Tronics ******************************************************************* This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the system manager. This footnote also confirms that this email message has been swept for the presence of computer viruses. www.Hubbell.com - Hubbell Incorporated**
Heh, this is kind of the opposite problem I had to manage -- I had 8 codecs that needed to appear as a single card, over a single TDM bus.
I could not find a good way to do it, so i did it in a bad way, by modifying the codec driver to appear to the kernel as a single codec, but drive all 8 codecs directly from a single instantiated codec.
The sticky point that I couldn't find a good resolution to, is that the dai_link specifies a physical connection from CPU to codec. However, it's a point to point link, which does not allow for multiple codecs on the same active dai link at the same time. the sound/soc/soc-core.c does does not currently start multiple codecs when starting a card (as far as I can tell).
i think you can create 8 dai_links, but I don't suspect you'll be able to open all 8, at the same time.
What's the point of doing this anyway? Why do you want it to appear as 8 sound cards? It seems that you can manage the 8 channels from user space easily enough.
-Caleb
On Tue, Jun 21, 2011 at 10:15 AM, Jason Fox jfox@gai-tronics.com wrote:
Hello everyone,
I am looking for some help where I need an AD193X codec to be shared between 8 audio streams using one SSC channel on an AT91SAM9263, in other words, I need it to look like 8 different soundcards. We have the 8 TDM channels working in the driver but I can't figure out how to create the proper interface of 8 soundcards for ALSA. In an earlier email in this topic was posted:
I would instantiate one driver with 3 pcms. This would allow:-
pcm0: 2 channel, slot 0,1 pcm1: 2 channel, slot 2,3 pcm2: 4 channel, slot 0,1,2,3
Giving full flexibility for many use cases. The pcms would be mutually exclusive (enforced by machine driver).
HTH
Liam
I think that maybe that I want to instantiate one driver with 8 pcms. Where/how do I instantiate the PCMs? I guess it in in the machine driver?
This is our first attempt at developing a Linux based system so please forgive my newbie question. I am sure this is really simple but I'm not following somewhere.
Thanks for your help, Jason Fox GAI-Tronics
This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the system manager. This footnote also confirms that this email message has been swept for the presence of computer viruses. www.Hubbell.com - Hubbell Incorporated**
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
participants (4)
-
Caleb Crome
-
Friedrich Lobenstock
-
Jason Fox
-
Liam Girdwood