Freescale:
你好
OS: Android 4.4.2
板子是自己的,是基于freescale SDB设计的。
audio codec 是ad1937 有点类似CS42888,蓝牙芯片是BCM4334(BT/WIFI/FM)
情况如下:
我们主要是用esai方式播放声音,android UI这边都没有问题的,之后我们要做FMRadio,FM的连线是AUD6 <--> FM I2S, FM这里我们是用SSI方式进行处理,
实现声卡0挂载两个device,这个也是成功的,请见如下信息
/dev/snd 下 | |
controlC0 | |
controlC1 | |
pcmC0D0c 主device | |
pcmC0D0p | |
pcmC0D1c 第二个device(FM) | |
pcmC0D1p | |
pcmC1D0p |
timer
我开始是在linux下使用tinyplay/tinycap进行测试, Card 0 Device 0 播放录制都正常, Card 0 Device 1 也就是FM这里,我用tinycap test.wav -D 0 -d 1 -c 2 -r 48000 -b 16 也是可以正确录制FM的声音,并且用tinyplay 可以播放录制好的FM声音(其实是用Card 0 Device 0 esai方式播放)所有的都很正常,之后我就要去做在Android UI中打开FM app的时候也要发出声音,这里就不行了,播放音乐是可以的,应该就是从SSI得到的数据没有送到esai的输入才导致这个现象的。
整体的过程应该是 FM data -》AUDMUX -》SSI -》 “MEMORY” -》ESAI input -》 playback
我现在初步推断 我的android HAL这块可能是没配置对, 我的配置如下
主要是参考CS42888的配置。我自己加了AUDIO_DEVICE_OUT_AUX_DIGITAL AUDIO_DEVICE_IN_AUX_DIGITAL
static struct audio_card ad193x_card = {
.name = "ad193x-audio",
.driver_name = "ad193x-audio",
.supported_out_devices = (AUDIO_DEVICE_OUT_EARPIECE |
AUDIO_DEVICE_OUT_SPEAKER |
AUDIO_DEVICE_OUT_WIRED_HEADSET |
AUDIO_DEVICE_OUT_WIRED_HEADPHONE |
AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET |
AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET |
AUDIO_DEVICE_OUT_ALL_SCO |
AUDIO_DEVICE_OUT_DEFAULT |
AUDIO_DEVICE_OUT_AUX_DIGITAL ),
.supported_in_devices = (
AUDIO_DEVICE_IN_COMMUNICATION |
AUDIO_DEVICE_IN_AMBIENT |
AUDIO_DEVICE_IN_BUILTIN_MIC |
AUDIO_DEVICE_IN_WIRED_HEADSET |
AUDIO_DEVICE_IN_BACK_MIC |
AUDIO_DEVICE_IN_ALL_SCO |
AUDIO_DEVICE_IN_DEFAULT |
AUDIO_DEVICE_IN_AUX_DIGITAL),
.defaults = NULL,
.bt_output = NULL,
.speaker_output = NULL,
.hs_output = NULL,
.earpiece_output = NULL,
.vx_hs_mic_input = NULL,
.mm_main_mic_input = NULL,
.vx_main_mic_input = NULL,
.mm_hs_mic_input = NULL,
.vx_bt_mic_input = NULL,
.mm_bt_mic_input = NULL,
.card = 0,
.out_rate = 0,
.out_channels = 0,
.out_format = 0,
.in_rate = 0,
.in_channels = 0,
.in_format = 0,
};
audio_policy.conf如下:
内容太多了,我就不全放上了,我改动的就是添加了AUDIO_DEVICE_IN_AUX_DIGITAL,这个也是参考AI board去加的
inputs {
primary {
sampling_rates 8000|11025|16000|22050|24000|32000|44100|48000
channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_WIRED_HEADSET|AUDIO_DEVICE_IN_USB_DEVICE|AUDIO_DEVICE_IN_AUX_DIGITAL
}
}
以上就是我修改的,肯定有遗漏,但是就不知道哪里不对,Android UI FM就是没声音输出,应该就是route这里我没搞对, 我也参考过AI board, 它也有FM,是si4763,虽然si4763跟我的机制有些不一样,但是Android HAL这块应该差不多啊,但是我就是没找到原因为什么我的audio route配置哪里有问题啊。。。。 按道理说AI board 的si4763肯定在Android UI上也会有声音输出,而不是用linux下的tinyplay/tinycap去做。
请帮忙给点意见,搞了好久了,现在就差这一个问题了,谢谢!!!!!
兄弟我也遇到了你同样的问题.能不能一起探讨一下.我的qq 542270618.