3288 配置声卡芯片

根据需求 要HDMI codec 不同同时输出。


1、
hdmi_analog_sound: hdmi-analog-sound {
    status = "disabled";

2、rt5640 改成你实际对应的codec,如es8316,

sound: sound {
    status = "okay";
    compatible = "simple-audio-card";
    simple-audio-card,format = "i2s";
    simple-audio-card,name = "rockchip,rt5640-codec";
    simple-audio-card,mclk-fs = <512>;
    simple-audio-card,widgets =
        "Microphone", "Microphone Jack",
        "Headphone", "Headphone Jack";
    simple-audio-card,routing =
        "MIC1", "Microphone Jack",
        "MIC2", "Microphone Jack",
        "Microphone Jack", "micbias1",
        "Headphone Jack", "HPOL",
        "Headphone Jack", "HPOR";

    simple-audio-card,dai-link@0 {
        format = "i2s";
        cpu {
            sound-dai = <&i2s>;
        };

        codec {
            sound-dai = <&rt5640>;
        };
    };

    simple-audio-card,dai-link@1 {
        format = "i2s";
        cpu {
            sound-dai = <&i2s>;
        };

        codec {
            sound-dai = <&hdmi>;
        };
    };
};

3、 注册后 ls /dev/snd/ -al

rk3288:/ $ ls /dev/snd -al
pcmC0D1p 是HDMI 声卡。
ls /dev/snd -al
total 0
drwxr-xr-x  2 root   root       140 2013-01-18 08:50 .
drwxr-xr-x 17 root   root      1540 2013-01-18 08:50 ..
crw-rw----  1 system audio 116,   2 2013-01-18 08:50 controlC0
crw-rw----  1 system audio 116,   4 2013-01-18 08:50 pcmC0D0c
crw-rw----  1 system audio 116,   3 2013-01-18 08:50 pcmC0D0p
crw-rw----  1 system audio 116,   5 2013-01-18 08:50 pcmC0D1p
crw-rw----  1 system audio 116,  33 2013-01-18 08:50 timer
rk3288:/ $

4打patch

/hardware/rockchip/audio/tinyalsa_hal$ git diff ./
diff --git a/tinyalsa_hal/audio_hw.c b/tinyalsa_hal/audio_hw.c
index d1e6e41..a924eba 100755
--- a/tinyalsa_hal/audio_hw.c
+++ b/tinyalsa_hal/audio_hw.c
@@ -645,6 +645,7 @@ static int start_output_stream(struct stream_out *out)
            }
#endif
#endif
+        out->pcm_device = 1;
         out->pcm[PCM_CARD_HDMI] = pcm_open(PCM_CARD_HDMI, out->pcm_device,
                    PCM_OUT | PCM_MONOTONIC, &out->config);
         if (out->pcm[PCM_CARD_HDMI] &&
@@ -664,7 +665,20 @@ static int start_output_stream(struct stream_out *out)
                    AUDIO_DEVICE_OUT_WIRED_HEADSET |
                    AUDIO_DEVICE_OUT_WIRED_HEADPHONE |
                    AUDIO_DEVICE_OUT_ALL_SCO)) {
-
+        /* open & close hdmi card to mute hdmi audio */
+       out->pcm_device = 1;
+       out->pcm[PCM_CARD_HDMI] = pcm_open(PCM_CARD_HDMI, out->pcm_device,
+                       PCM_OUT | PCM_MONOTONIC, &out->config);
+        if (out->pcm[PCM_CARD_HDMI] &&
+                    !pcm_is_ready(out->pcm[PCM_CARD_HDMI])) {
+            ALOGE("pcm_open(PCM_CARD_HDMI) failed: %s",
+                   pcm_get_error(out->pcm[PCM_CARD_HDMI]));
+            pcm_close(out->pcm[PCM_CARD_HDMI]);
+            return -ENOMEM;
+        }
+        if (out->pcm[PCM_CARD_HDMI])
+               pcm_close(out->pcm[PCM_CARD_HDMI]);
+       out->pcm_device = 0;
     out->pcm[PCM_CARD] = pcm_open(PCM_CARD, out->pcm_device,
                   PCM_OUT | PCM_MONOTONIC, &out->config);
     if (out->pcm[PCM_CARD] && !pcm_is_ready(out->pcm[PCM_CARD])) {
@@ -677,7 +691,8 @@ static int start_output_stream(struct stream_out *out)
 }

 if (out->device & AUDIO_DEVICE_OUT_SPDIF) {
-       out->pcm[PCM_CARD_SPDIF] = pcm_open(PCM_CARD_SPDIF, out->pcm_device,
+       out->pcm_device = 0;
+       out->pcm[PCM_CARD_SPDIF] = pcm_open(PCM_CARD_SPDIF, out->pcm_device,
                 PCM_OUT | PCM_MONOTONIC, &out->config);

     if (out->pcm[PCM_CARD_SPDIF] &&

5、

hardware/rockchip/audio/tinyalsa_hal$ 目录下面所有的PCM_CARD_HDMI 改为 		
PCM_CARD_HDMI = 0;

技术交流群
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值