android 9.0 tinyalsa能不能配置两个codec

问题描述:在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有问题呀,哪里都有你。