RK3399添加支持音频AUDIO功能

进入我们的 音频调试部分,

首先来看我们的原理图,可以知道我们使用的是 rt5640  codec  ,接的是 i2c1 、i2s1

输出我们是喇叭和耳机都有

先来调试喇叭

因为我们使用的是 i2s1 先针对 i2s1 来添加相关时钟的补丁,网盘pl330.c和 simple-card.c

分别与 kernel/drivers/dma/pl330.c    kernel/sound/soc/generic/simple-card.c

进行对比添加修改

接着就是添加我们的 codec 的注册,

  1. 修改添加 dts

参考 网盘 kernel_diff.txt

  1. 确认驱动有编译出来相关 .o 文件

添加 patch 和注册上声卡之后,kernel就会注册上相关的声卡,注意这里需要 支持 spdif 音频接口

就会有下面的声卡, 0 和 1 就是我们声音必须的, 2 就是hdmi的

ALSA device list:

[    1.656193]   #0: rockchip,rt5640-codec

[    1.656198]   #1: ROCKCHIP,SPDIF

[    1.656201]   #2: rk-hdmi-dp-sound

[    1.598744] asoc-simple-card rt5640-sound: rt5640-aif1 <-> ff880000.i2s mapping ok

[    1.606128] asoc-simple-card spdif-sound: dit-hifi <-> ff870000.spdif mapping ok

3.

然后hal 查看路由是否已经存在

rk3399_daluotuo:/ # logcat -s alsa_route

logcat -s alsa_route

--------- beginning of main

--------- beginning of system

05-15 15:08:28.877   241   241 D alsa_route: Get route table for sound card0 rockchiprt5640c

05-15 15:08:37.073   241   322 D alsa_route: route_info->sound_card 0, route_info->devices 0

05-15 15:08:37.073   241   322 D alsa_route: route_set_controls() set route 0

05-15 15:08:41.689   241   322 D alsa_route: route_set_controls() set route 24

接着就可以 使用tinyalsa 的  tinymix 调试 路由,要是到这路由没出来的话,就说明驱动没好,需要重新确认驱动配置

我提前弄好了,只需要控制图中几个路由即可,因为我们现在调试的是 spk 的,所以大家在不知道怎么下手的情况,就抓住 spk相关的字眼,还有MIX 的字眼来打开,打开之后,再去排除不需要打开的即可!

当然,你要一直播放着声音来进行调试!

发现音质不对,就需要通 codec 的FAE 联系,修改寄存器,使用网盘的 rt5640.c  和rt5640.h

与 kernel/sound/soc/codecs/rt5640.c  和 kernel/sound/soc/codecs/rt5640.h 对比

这是因为一些计算的问题

查看寄存器,然后结合 datasheet,最好是和5640 FAE 来进行沟通

播放音乐,单个写寄存器,直到声音正常,然后添加代码里面去,当然这个 patch 和 修改什么寄存器是和原厂直接沟通的,不然那你自己去琢磨一份 datasheet 就很花时间了!

最后,我们把调好的路由给加到 config 中去

二、

接着就是看耳机的,使用的 ADC 检测

然后就是 确认路由的了,这个我就不带大家来进行一步一步调试了,我也是直接上我的修改,添加到 config 中去,然后 push 库进去即可

三、

录音也是一样的呢,你也可以先使用 tinycap 来调试,我呢为了更直观,直接使用系统的录音软件边录音边调试路由,但是发现还要先去掉

{

        .ctl_name = "ADC IF2 Data Switch",

        .str_val = "right copy to left",

},

这个配置

然后就是使用 tinymix 来调试路由

成功之后,添加到代码,编译,push 库进去即可

至于 tinymix 的路由是什么意思,大家需要看驱动来进行理解

static const struct snd_soc_dapm_route rt5640_dapm_routes[] = {

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荣敢飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值