问题描述:在android 9.0上配置一个4向麦克风驱动,mic方面提供了一个codec驱动,这边将其配置到系统后,导致av通道下无法播放音频文件,同时也无法录音。但是此种情况,在HDMI通道下可以录音。目前发现是把mic驱动配置到系统后,将原有的codec给覆盖掉了,导致AV通道下播放音频异常。android系统能不能配置两个codec?或者当前问题有没有办法解决?
尝试过将不用dai_link[0],发现AV通道下音频播放就没有问题。因为只有一路i2s_dai, 有个想法是将新加入的驱动合并到系统的codec中,但是可行性很差
card->dai_link = dai_links; card->num_links = num_dai_links; printk(KERN_INFO "%s -------[4]------>num_dai_links:%d\n\n",__func__,num_dai_links); for (i = 0; i < num_dai_links; i++) { init = NULL; /* CPU sub-node */ cpu_node = of_parse_phandle(np, "cpu_list", i); if (!cpu_node) { dev_err(dev, "parse aml sound card cpu list error\n"); return -EINVAL; } /* CODEC sub-node */ codec_node = of_parse_phandle(np, "codec_list", i); if (!codec_node) { dev_err(dev, "parse aml sound card codec list error\n"); return ret; } /* Platform sub-node */ plat_node = of_parse_phandle(np, "plat_list", i); if (!plat_node) { dev_err(dev, "parse aml sound card platform list error\n"); return ret; } if (i == 0) init = aml_asoc_init; ret = aml_card_dai_parse_of(dev, &dai_links[i], init, cpu_node, codec_node, plat_node); dev_err(dev, "---[rick]--->aml_tv_audio_driver, %d\n",i); } //新增下面代码块,覆盖掉了原有的dai_link[0]的关联 dev_err(dev, "---------------> aml sound card cpu list %s %s \n", card->dai_link[2].codec_dai_name, card->dai_link[2].codec_name); card->dai_link[0].codec_dai_name=codec_dai_name; card->dai_link[0].codec_name=codec_name; card->dai_link[0].codec_of_node =NULL; dev_err(dev, "-------------> aml sound card cpu list %s %s \n", card->dai_link[2].codec_dai_name, card->dai_link[2].codec_name); err: return ret; } //设备树信息,其中只有一路i2s aml_sound_meson { compatible = "aml, meson-snd-card"; status = "okay"; aml-sound-card,format = "i2s"; aml_sound_card,name = "AML-MESONAUDIO"; aml,audio-routing = "Ext Spk","LOUTL", "Ext Spk","LOUTR"; mute_gpio-gpios = <&gpio GPIOH_5 0>; mute_inv; hp_disable; hp_paraments = <800 300 0 5 1>; pinctrl-names = "audio_i2s"; pinctrl-0 = <&audio_i2s_pins>; cpu_list = <&cpudai0 &cpudai1 &cpudai2>; codec_list = <&codec0 &codec1 &codec2>; plat_list = <&i2s_plat &i2s_plat &pcm_plat>; cpudai0: cpudai0 { sound-dai = <&i2s_dai>; }; cpudai1: cpudai1 { sound-dai = <&spdif_dai>; }; cpudai2: cpudai2 { sound-dai = <&pcm_dai>; }; codec0: codec0 { sound-dai = <&amlogic_codec>; }; codec1: codec1 { sound-dai = <&spdif_codec>; }; codec2: codec2 { sound-dai = <&pcm_codec>; }; };
要配置的是一个mic,要实现的是在AV通道下不影响原来的音频播放,并且将mic配置进去。遇到的麻烦就是mic配置完成后,在HDMI通道下测试都通过,但是在AV通道下发现既不能播放音频文件,也不能录音。解决如上冲突问题?
或者不用上述关联dai_link的方法,有没有什么更好的将新的codec配置系统,不影响原有功能的方法?
就那点把戏去骗幼儿园算了
是否可以确认解决
先说说你的思路?
确定可以解决,可以加钱
你就是搅*棍
paperboat2020有问题呀,哪里都有你。