This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TPS65950 digital microphone path configuration

Other Parts Discussed in Thread: TPS65950

Hello,

I try to configure digital microphone connected to TPS65950. I made some operations with alsa_amixer to configure proper path for dig mic but without success. I'm trying to understand signal path to the microphone and I verified it with 14.4.2.3 SWCU050G – April 2008 – Revised December 2010 with codec reg dump and it seems to be ok but dig microphone is turned off (VMIC is low and there is no CLK). [( VMIC1.OUT, DIG.MIC.0, DIG.MIC.CLK0). I use Linux kernel 2.6.37. ]

twl4030-codec registers
 0:    0
 1:   a3
 2:   c3
 3:    0
 4:   60
 5:    5
 6:    4
 7:    6
 8:    f
 9:    0
 a:   1f
 b:   1f
 c:   1f
 d:   1f
 e:    1
 f:    0
10:   3f
11:   3f
12:   3f
13:   3f
14:   25
15:    0
16:    0
17:    8
18:    0
19:   30
1a:   30
1b:   31
1c:   30
1d:    0
1e:    0
1f:   55
20:    0
21:   20
22:    0
23:    5
24:    4
25:    0
26:    0
27:    0
28:    0
29:   3e
2a:    0
2b:    5
2c:    0
2d:    0
2e:    0
2f:    0
30:   13
31:    0
32:    0
33:    0
34:    0
35:   79
36:   11
37:    0
38:    0
39:    0
3a:   16
3b:    0
3c:   44
3d:   69
3e:    3
3f:    0
40:    0
41:    0
42:    0
43:    0
44:   30
45:    0
46:    0
47:    0
48:   2d
49:    0
4a:    1

here is codec/TPS reg dump taken during recording attempt:

/ # alsa_arecord -v -r 48000 -f dat | alsa_aplay -v
Recording WAVE 'stdin' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
Plug PCM: Hardware PCM card 0 'omap3evm' device 0 subdevice 0
Its setup is:
stream : CAPTURE
access : RW_INTERLEAVED
format : S16_LE
subformat : STD
channels : 2
rate : 48000
exact rate : 48000 (48000/1)
msbits : 16
buffer_size : 24000
period_size : 6000
period_time : 125000
tstamp_mode : NONE
period_step : 1
avail_min : 6000
period_event : 0
start_threshold : 1
stop_threshold : 24000
silence_threshold: 0
silence_size : 0
boundary : 1572864000
Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
Plug PCM: Hardware PCM card 0 'omap3evm' device 0 subdevice 0
Its setup is:
stream : PLAYBACK
access : RW_INTERLEAVED
format : S16_LE
subformat : STD
channels : 2
rate : 48000
exact rate : 48000 (48000/1)
msbits : 16
buffer_size : 24000
period_size : 6000
period_time : 125000
tstamp_mode : NONE
period_step : 1
avail_min : 6000
period_event : 0
start_threshold : 24000
stop_threshold : 24000
silence_threshold: 0
silence_size : 0
boundary : 1572864000

and alsa widget states:

Headset Mic Bias: Off
Mic Bias 2: Off
Mic Bias 1: Off
micbias2 select: On
micbias1 select: On
Digimic1 Enable: On
Digimic0 Enable: On
ADC Physical Right: Off
ADC Physical Left: Off
Analog Right: Off
Analog Left: Off
ADC Virtual Right2: On
ADC Virtual Left2: On
ADC Virtual Right1: On
ADC Virtual Left1: On
HandsfreeR PGA: Off
HandsfreeL PGA: On
CarkitR PGA: Off
CarkitR Mixer: Off
CarkitL PGA: Off
CarkitL Mixer: Off
HeadsetR PGA: Off
HeadsetR Mixer: Off
HeadsetL PGA: Off
HeadsetL Mixer: Off
PredriveR PGA: Off
PredriveR Mixer: Off
PredriveL PGA: Off
PredriveL Mixer: Off
Earpiece PGA: Off
Earpiece Mixer: Off
AIF Enable: On
APLL Enable: Off
Analog Voice Playback Mixer: Off
Analog L2 Playback Mixer: On
Analog R2 Playback Mixer: Off
Analog L1 Playback Mixer: Off
Analog R1 Playback Mixer: Off
Digital Voice Playback Mixer: Off
Digital L2 Playback Mixer: On
Digital R2 Playback Mixer: Off
Digital L1 Playback Mixer: Off
Digital R1 Playback Mixer: Off
FM Loop Enable: Off
DAC Voice: Off
DAC Left2: On
DAC Right2: On
DAC Left1: On
DAC Right1: On
PM State: On

and alsa_amixer contents:

numid=20,iface=MIXER,name='AVADC Clock Priority'
  ; type=ENUMERATED,access=rw------,values=1,items=2
  ; Item #0 'Voice high priority'
  ; Item #1 'HiFi high priority'
  : values=1
numid=19,iface=MIXER,name='Analog Capture Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=5,step=0
  : values=5,5
  | dBscale-min=0.00dB,step=6.00dB,mute=0
numid=29,iface=MIXER,name='Analog Left AUXL Capture Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on
numid=30,iface=MIXER,name='Analog Left Carkit Mic Capture Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=28,iface=MIXER,name='Analog Left Headset Mic Capture Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=27,iface=MIXER,name='Analog Left Main Mic Capture Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on
numid=26,iface=MIXER,name='Analog Right AUXR Capture Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on
numid=25,iface=MIXER,name='Analog Right Sub Mic Capture Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=15,iface=MIXER,name='Carkit Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=3,step=0
  : values=0,0
  | dBscale-min=-12.00dB,step=6.00dB,mute=1
numid=43,iface=MIXER,name='CarkitL Mixer AudioL1'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=44,iface=MIXER,name='CarkitL Mixer AudioL2'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=42,iface=MIXER,name='CarkitL Mixer Voice'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=40,iface=MIXER,name='CarkitR Mixer AudioR1'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=41,iface=MIXER,name='CarkitR Mixer AudioR2'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=39,iface=MIXER,name='CarkitR Mixer Voice'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=1,iface=MIXER,name='Codec Operation Mode'
  ; type=ENUMERATED,access=rw------,values=1,items=2
  ; Item #0 'Option 2 (voice/audio)'
  ; Item #1 'Option 1 (audio)'
  : values=1
numid=12,iface=MIXER,name='DAC Voice Analog Downlink Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=11,iface=MIXER,name='DAC Voice Analog Downlink Volume'
  ; type=INTEGER,access=rw---R--,values=1,min=0,max=18,step=0
  : values=12
  | dBscale-min=-24.00dB,step=2.00dB,mute=0
numid=10,iface=MIXER,name='DAC Voice Digital Downlink Volume'
  ; type=INTEGER,access=rw---R--,values=1,min=0,max=49,step=0
  : values=37
  | dBscale-min=-37.00dB,step=1.00dB,mute=1
numid=8,iface=MIXER,name='DAC1 Analog Playback Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=6,iface=MIXER,name='DAC1 Analog Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=18,step=0
  : values=12,12
  | dBscale-min=-24.00dB,step=2.00dB,mute=0
numid=4,iface=MIXER,name='DAC1 Digital Coarse Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=2,step=0
  : values=0,0
  | dBscale-min=0.00dB,step=6.00dB,mute=0
numid=2,iface=MIXER,name='DAC1 Digital Fine Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=63,step=0
  : values=63,63
  | dBscale-min=-63.00dB,step=1.00dB,mute=1
numid=9,iface=MIXER,name='DAC2 Analog Playback Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=7,iface=MIXER,name='DAC2 Analog Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=18,step=0
  : values=12,12
  | dBscale-min=-24.00dB,step=2.00dB,mute=0
numid=5,iface=MIXER,name='DAC2 Digital Coarse Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=2,step=0
  : values=0,0
  | dBscale-min=0.00dB,step=6.00dB,mute=0
numid=3,iface=MIXER,name='DAC2 Digital Fine Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=63,step=0
  : values=63,63
  | dBscale-min=-63.00dB,step=1.00dB,mute=1
numid=24,iface=MIXER,name='Digimic LR Swap'
  ; type=ENUMERATED,access=rw------,values=1,items=2
  ; Item #0 'Not swapped'
  ; Item #1 'Swapped'
  : values=1
numid=60,iface=MIXER,name='Earpiece Mixer AudioL1'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=61,iface=MIXER,name='Earpiece Mixer AudioL2'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=62,iface=MIXER,name='Earpiece Mixer AudioR1'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=59,iface=MIXER,name='Earpiece Mixer Voice'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=16,iface=MIXER,name='Earpiece Playback Volume'
  ; type=INTEGER,access=rw---R--,values=1,min=0,max=3,step=0
  : values=2
  | dBscale-min=-6.00dB,step=6.00dB,mute=1
numid=21,iface=MIXER,name='HS ramp delay'
  ; type=ENUMERATED,access=rw------,values=1,items=8
  ; Item #0 '27/20/14 ms'
  ; Item #1 '55/40/27 ms'
  ; Item #2 '109/81/55 ms'
  ; Item #3 '218/161/109 ms'
  ; Item #4 '437/323/218 ms'
  ; Item #5 '874/645/437 ms'
  ; Item #6 '1748/1291/874 ms'
  ; Item #7 '3495/2581/1748 ms'
  : values=1
numid=38,iface=MIXER,name='HandsfreeL Mux'
  ; type=ENUMERATED,access=rw------,values=1,items=4
  ; Item #0 'Voice'
  ; Item #1 'AudioL1'
  ; Item #2 'AudioL2'
  ; Item #3 'AudioR2'
  : values=2
numid=37,iface=MIXER,name='HandsfreeL Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on
numid=36,iface=MIXER,name='HandsfreeR Mux'
  ; type=ENUMERATED,access=rw------,values=1,items=4
  ; Item #0 'Voice'
  ; Item #1 'AudioR1'
  ; Item #2 'AudioR2'
  ; Item #3 'AudioL2'
  : values=0
numid=35,iface=MIXER,name='HandsfreeR Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=14,iface=MIXER,name='Headset Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=3,step=0
  : values=3,3
  | dBscale-min=-12.00dB,step=6.00dB,mute=1
numid=49,iface=MIXER,name='HeadsetL Mixer AudioL1'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=50,iface=MIXER,name='HeadsetL Mixer AudioL2'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=48,iface=MIXER,name='HeadsetL Mixer Voice'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=46,iface=MIXER,name='HeadsetR Mixer AudioR1'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=47,iface=MIXER,name='HeadsetR Mixer AudioR2'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=45,iface=MIXER,name='HeadsetR Mixer Voice'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=65,iface=MIXER,name='Left Digital Loopback Volume'
  ; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
  : values=0
  | dBrange-
0x00000000,0x00000001,0x00000001,0x00000008,0xfffff448,0x00010258,0x00000002,0x00000003,0x00000001,0x00000008,0xfffff6a0,0x00000000,0x00000004,0x00000007,0x00000001,0x00000008,0xfffff8f8,0x00000258,
numid=69,iface=MIXER,name='Left1 Analog Loopback Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=67,iface=MIXER,name='Left2 Analog Loopback Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=13,iface=MIXER,name='PreDriv Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=3,step=0
  : values=0,0
  | dBscale-min=-12.00dB,step=6.00dB,mute=1
numid=56,iface=MIXER,name='PredriveL Mixer AudioL1'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=57,iface=MIXER,name='PredriveL Mixer AudioL2'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=58,iface=MIXER,name='PredriveL Mixer AudioR2'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=55,iface=MIXER,name='PredriveL Mixer Voice'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=54,iface=MIXER,name='PredriveR Mixer AudioL2'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=52,iface=MIXER,name='PredriveR Mixer AudioR1'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=53,iface=MIXER,name='PredriveR Mixer AudioR2'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=51,iface=MIXER,name='PredriveR Mixer Voice'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=64,iface=MIXER,name='Right Digital Loopback Volume'
  ; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0
  : values=0
  | dBrange-
0x00000000,0x00000001,0x00000001,0x00000008,0xfffff448,0x00010258,0x00000002,0x00000003,0x00000001,0x00000008,0xfffff6a0,0x00000000,0x00000004,0x00000007,0x00000001,0x00000008,0xfffff8f8,0x00000258,
numid=70,iface=MIXER,name='Right1 Analog Loopback Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=68,iface=MIXER,name='Right2 Analog Loopback Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=32,iface=MIXER,name='TX1 Capture Route'
  ; type=ENUMERATED,access=rw------,values=1,items=2
  ; Item #0 'Analog'
  ; Item #1 'Digimic0'
  : values=1
numid=17,iface=MIXER,name='TX1 Digital Capture Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=31,step=0
  : values=31,31
  | dBscale-min=0.00dB,step=1.00dB,mute=0
numid=31,iface=MIXER,name='TX2 Capture Route'
  ; type=ENUMERATED,access=rw------,values=1,items=2
  ; Item #0 'Analog'
  ; Item #1 'Digimic1'
  : values=1
numid=18,iface=MIXER,name='TX2 Digital Capture Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=31,step=0
  : values=31,31
  | dBscale-min=0.00dB,step=1.00dB,mute=0
numid=23,iface=MIXER,name='Vibra H-bridge direction'
  ; type=ENUMERATED,access=rw------,values=1,items=2
  ; Item #0 'Positive polarity'
  ; Item #1 'Negative polarity'
  : values=0
numid=22,iface=MIXER,name='Vibra H-bridge mode'
  ; type=ENUMERATED,access=rw------,values=1,items=2
  ; Item #0 'Vibra H-bridge direction'
  ; Item #1 'Audio data MSB'
  : values=0
numid=34,iface=MIXER,name='Vibra Mux'
  ; type=ENUMERATED,access=rw------,values=1,items=4
  ; Item #0 'AudioL1'
  ; Item #1 'AudioR1'
  ; Item #2 'AudioL2'
  ; Item #3 'AudioR2'
  : values=0
numid=33,iface=MIXER,name='Vibra Route'
  ; type=ENUMERATED,access=rw------,values=1,items=2
  ; Item #0 'Local vibrator'
  ; Item #1 'Audio'
  : values=0
numid=66,iface=MIXER,name='Voice Analog Loopback Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=63,iface=MIXER,name='Voice Digital Loopback Volume'
  ; type=INTEGER,access=rw---R--,values=1,min=0,max=41,step=0
  : values=0
  | dBscale-min=-51.00dB,step=1.00dB,mute=1

 Regards,

Karol