On Monday 06 April 2009 15:45:21 ext Mark Brown wrote:
On Mon, Apr 06, 2009 at 03:19:29PM +0300, Peter Ujfalusi wrote:
Enable all TX and RX paths on the TWL codec.
What does this mean by "enable" - I'm guessing it's powering blocks within the CODEC rather than connecting any audio paths?
The TRM calls these as Audio/Voice digital filters. In effect, they enable the shifting out bits from the Capture path to the bus and shifting in bits on the Playback side.
The original driver had these filters enabled - all the time - for the digital filters needed for the i2s mode (AudioRX2 L/r, AudioTX1 L/R), in TDM mode all 4 filters on Capture and Playback need to be enabled.
This is not so nice, but doing it runtime brings quite a bit of challenge, since for example the Digital loopback also needs the RX and TX paths to be enabled.
What are the problems other than loopback (which really needs digital routing to work properly, though I've never seen much demand for it outside of testing)? Powering everything is probably fine, I'm just wondering if this is due to the hardware or the core.
The digital loopback needs the AudioTX1 L/R and AudioRX2 L/R enabled in order to function, and I have a requirement, that the codec should support it ;)
I had two other implementation for these: a) Enable the needed Digital filters in twl4030_startup based on the channel number and stream type (Playback/Capture). Disable the Digital filters on twl4030_shutdown, based on the just closed stream's parameters. b) Adding another widgets to the DAPM routing paths, so it tries to enable only the needed Digital filters.
There were couple of problems with these: a) Digital loopback was not functioning b) It did enabled other filters, than what it is needed (in stereo mode AudioRX1 L/R and AudioTX2 L/R should not be enabled). I guess this is because the DAPM knows only about streams, but here we can have 2 channel or 4 channel streams, which need to be handled a bit differently.
But as I said, this is not so nice thing to do, so it need to be revisited.