On Thursday 19 March 2009 07:44:23 ext Joonyoung Shim wrote:
Hi, my thunderbird progrem breaked down, so i send from gmail
The reason to have the VALUE_ENUM for the audio path selection is that according to the TRM only one of the paths can be enabled at the time.
It's not true. I tested playback about Predrive Right audio path(My target is not connected with Predriver Left) The AudioL2 and AudioR2 was enabled and i played audio wav file of three type following; 1. wav file recorded only left channel 2. wav file recorded only right channel 3. wav file recorded left and right channel The result is that all was sounded. If the controller is mux, the case of 1 or 2 haven't to sound.
While the voice path can be mixed with one of the audio paths (at least that is my understanding). So: AudioL*/AudioR* (DACL*/DACR*) = Mux Voice, AudioL/R* (DACL/R*) = Mix
I think it would be better to leave the current VALUE_ENUMS for the audio path and add a switch for the Voice enable/disable for the outputs and route them through a mixer to the output.
The mixer DAPM is suitable the structure of control registers(0x21, 0x22, 0x25, 0x26, 0x27, 0x28) of path except Handsfree path because each bit for path is switchable. If we use the mixer DAPM, the switch DAPM for voice path doesn't need.
Probably than it makes sense to rename the "Earpice Mux" and friends to something like "Earpiece aduio Mux"... So we would have two controls per outputs: "Earpiece aduio Mux" (Off, DACL1, DACL2, DACR1) "Earpiece voice Switch" (on, off) and internally we can have "Earpiece output mixer", which mixes them together.
I have given a try to your patch, although it does not work out of the box, but I can verify that you are indeed right. I have been also wondering about these mixer/mux controls for the outputs and the block diagrams in the TRM has MIX in these outputs, but in other places it hints that they are a mixture of mux and mixers.
PS 01: you have been missing this part from your patch, which is needed for DAPM to power on the path: /* outputs */ {"OUTL", NULL, "ARXL2_APGA"}, {"OUTR", NULL, "ARXR2_APGA"}, - {"EARPIECE", NULL, "Earpiece Mux"}, - {"PREDRIVEL", NULL, "PredriveL Mux"}, - {"PREDRIVER", NULL, "PredriveR Mux"}, - {"HSOL", NULL, "HeadsetL Mux"}, - {"HSOR", NULL, "HeadsetR Mux"}, - {"CARKITL", NULL, "CarkitL Mux"}, - {"CARKITR", NULL, "CarkitR Mux"}, + {"EARPIECE", NULL, "Earpiece Mixer"}, + {"PREDRIVEL", NULL, "PredriveL Mixer"}, + {"PREDRIVER", NULL, "PredriveR Mixer"}, + {"HSOL", NULL, "HeadsetL Mixer"}, + {"HSOR", NULL, "HeadsetR Mixer"}, + {"CARKITL", NULL, "CarkitL Mixer"}, + {"CARKITR", NULL, "CarkitR Mixer"}, {"HFL", NULL, "HandsfreeL Mux"}, {"HFR", NULL, "HandsfreeR Mux"},
If you add this to your patch, I'll be happy to ack it.
PS 02: I have hard time to get 'git am' to apply the patch: git am ../[PATCH]\ ASoC:\ twl4030\ -\ Add\ VDL\ path\ support.mbox fatal: cannot convert from ks_c_5601-1987 to utf-8
Does anyone know how to handle this?