find . -name audio_device.xml | xargs ls -l
audio_device.xml
snd_kcontrol_new
iface:control类型,通常是SNDRV_CTL_ELEM_IFACE_MIXER
name:kcontrol的名字,名字的命名规则遵循”源-方向-功能”
源可理解为control的输入端,如Master, PCM, CD, line等
方向代表kcontrol的数据流向,如Playback, Capture, Bypass, 也可以不定义,这时是双向的
功能,如Switch, Volume, Route等
展开
SOC_ENUM_EXT("Audio_Preamp1_Switch", Audio_UL_Enum[4], // zane
Audio_PreAmp1_Get,
Audio_PreAmp1_Set),
##############################
{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = "Audio_Preamp1_Switch", \ .info = snd_soc_info_enum_double, \ .get = Audio_PreAmp1_Get, .put = Audio_PreAmp1_Set, \ .private_value = (unsigned long)& Audio_UL_Enum[4]}
130|hawaiip:/ # logcat | grep ApplyDeviceTurnonSequenceByName
01-13 17:44:01.978 542 5070 D AudioALSADeviceConfigManager: ApplyDeviceTurnonSequenceByName() DeviceName = builtin_Mic_Mic1 descriptor->DeviceStatusCounte = 0
01-13 17:44:01.993 542 5070 D AudioALSADeviceConfigManager: ApplyDeviceTurnonSequenceByName() DeviceName = headphone_output descriptor->DeviceStatusCounte = 0
0x2080+0x0108 = 0x2188
测试工装上的测试命令
正常的曲线
失败的曲线
题外话,测试APP 用的是
AudioSystem.setParameters("SET_LOOPBACK_TYPE=1,2");
在主麦和耳机之间形成loopback
获得了pass.rar 和 fail.rar
图中文字有误,0x5341 是18dB ,0x5141是6dB , 正好相差了12dB;
当时是分析,前置测试打电话挂断电话时的状态不同,免提挂断时 主麦模拟增益的相应寄存器记录的是 18dB,听筒挂断时候是6dB ;
起频响测试的命令 adb shell am start -n com.ape.factory/.AuTestActivity -S -e mainmic 3
解决方法
adb shell tinymix Audio_PGA1_Setting 18Db;adb shell am start -n com.ape.factory/.AuTestActivity -S -e mainmic 3
fail.rar pass.rar 文件已上传
这篇文章也可以参考甚至可以合并 优快云 《MIC 增益调节 MT6357》