Hi,
Sorry about the delayed reply...
On Thursday 20 November 2008 17:39:14 ext Steve Sakoman wrote:
Agreed! This is a really good thing to do.
Had I not been under a lot of time pressure when doing the original version of the driver I would have taken this approach myself.
I'm glad to see that you are tackling this. Peter, you should post your patches for comment. Might help speed things along if we get more folks looking and contributing.
Steve
I'm planing to send patches as soon as possible. I have been working with the twl4030 codec for about a week now, so the thing that I have is far from what it should be at the end... I can explain in short what I have at the moment and what is missing: - Playback route controls for: - PreDriveL (Off, Voice, DACL1, DACL2, DACR2) - PreDriveR (Off, Voice, DACR1, DACR2, DACL2) - HeadsetL (Off, Voice, DACL1, DACL2) - HeadsetR (Off, Voice, DACR1, DACR2) - CarkitL (Off, Voice, DACL1, DACL2) # or PRECKT_Right - CarkitR (Off, Voice, DACR1, DACR2) # or PRECKT_Left - HandsfreeL (Voice, DACL1, DACL2, DACR2) # or IHFL or Class-DL # (depends which text I take) - HandsfreeR (Voice, DACR1, DACR2, DACL2) # or IHFR or Class-DR # (depends which text I take)
Volume/Gain controls: - FGAIN in DAC2 (mute, -62 - 0 dB, in 1 dB steps) - CGAIN in DAC2 (0 - 12 dB, in 6 dB steps) - PreDrive(L and R, not separate) playback gain, or volume control (mute, -6, 0, 6 dB) - Headset(L and R, not separate) playback gain, or volume control (mute, -6, 0, 6 dB) - Carkit(L and R, not separate) playback gain, or volume control (mute, -6, 0, 6 dB)
All of the above are added to the twl4030_snd_controls at this point of time.
The twl4030_reg has been set to disable all outputs by default, it is up to the user to enable the needed outputs.
SND_SOC_DAPM_INPUT() and SND_SOC_DAPM_OUTPUT() definitions for all physical inputs, outputs. I have not yet started with the correct dapm_route for the TWL, it is going to be quite a mess. At the moment outputs are connected to DACL/R2, for example: {"PREDRIVL", NULL, "DACL2"}
So in the playback side what you can do already: You can select the routing individually for all outputs (except the Earpiece, hmm I forgot about it).
The capture path is kind of untouched, it is in the to-do list, it does works with the DIGIMIC0 for me.
Three sets of get/put function for dealing with TWL's specially crafted registers (Routing selections, Gain controls).
What needs to be done: Lot's of things... Clean up? snd_soc_dapm_route, snd_soc_dapm_widget things (I need an A3 paper for that). Capture controls and corresponding dapm_route, dapm_widgets
So this is my current status, are you still interested to see these things? What else should I add before I send the patch?