On Tuesday 07 April 2009 12:45:59 ext Mark Brown wrote:
On Tue, Apr 07, 2009 at 07:59:19AM +0300, Peter Ujfalusi wrote:
On Monday 06 April 2009 15:45:21 ext Mark Brown wrote:
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.
Hrm, so this is a routing thing then - from your description I'm a bit surprised that this can be turned on unconditionally since it sounds like it'll give you a sidetone all the time which might not be what people want.
Not quite. The sidetone/loopback can be turned off inside of twl4030 with the 'Left Digital Loopback' and 'Right Digital Loopback' set to 0.
With the current implementation the capture path is powered only when there is need for it, which means that ADCs, TX PGAs are powered off. So even if the Digital filters are enabled on the capture end, you will not see data going to the bus (from twl4030).
I think the twl4030 codec still holds some interesting 'features'...
But as I said, this is not so nice thing to do, so it need to be revisited.
It needs digital routing. In the interim another option would be to provide switches to user space, possibly?
It is possible to add 8 switches, or 4 stereo switch - I have to check the code ;) Placing them to the correct location in the paths might be possible. I have to check it.
But than there is this Option selection... twl4030 has two modes: Option1 and Option2. In same cases the config is the same, but in most of the cases it behaves like two different codec... Option1 has only HiFi interface with up to 4 channel RX/TX The interface for the host processor in this case: i2s, l_just, r_just or TDM (stereo or 4 channel).
Option2 has HiFi (up to 2 channel RX/TX) + Voice stereo uplink and mono downlink. Than it has interface: i2s, l_just, r_just (stereo only) PCM BT
Some of the bits in the OPTION register (and also in other registers) means totally different things (or not valid for the mode) in Option1 than in Option2...