我正在构建一个基于高通sdm845 SoC的安卓设备。对于音频,我使用一个简单的USB音频编解码器。然而,在高通SOM模块附带的开发套件上,他们使用了sdm845 WCD9340编解码器。我的通用串行总线音频编解码器实际上是一个连接了I2S数模转换器和I2S麦克风的Teensy 3.2 (恩智浦Kinetis Cortex-M4)突破。当我将这个设备连接到开发工具包的USB端口(运行定制的Android 9 BSP)时,我通过USB获得音频I/O。所以HAL的支持是存在的。
在我的自定义印刷电路板上携带相同的custom,但是,sdm845音频设备将不会输出任何声音。在Linux内核级别上,在adb shell上使用tinyplay和tinycap可以很好地工作。所以硬件和内核都很好,问题可能出在Android HAL上,它可能还在期待WCD9340。
我正在寻找Android HAL中的某个地方,在那里Android和Linux设备之间的实际映射是完成的,或者是另一种强制USB声卡成为主要输出设备的方法。
在设备配置中有一个"TARGET_USES_AOSP_FOR_AUDIO“选项,有效地删除了所有高通特定的音频实现,但这也没有给我任何结果。奇怪,因为我已经成功地在Hikey960上使用了相同的USB音频编解码器和一个普通的AOSP构建。
有谁有这方面的经验吗?
发布于 2020-08-31 16:27:33
为了它的价值,这里是我最终如何解决这个问题的方法。虽然还没有为生产做好准备,但它完成了工作:我修改了WCD9340内核驱动程序代码中的Slimbus读写调用,使它们基本上成为存根。在WCD9340的存根初始化之后,USB音频编解码器接管并正常执行音频I/O。
https://stackoverflow.com/questions/63598470
复制相似问题