rk3568 Android12音频问题

rk3568 Android12音频问题

前言

在调试客户的项目的时候,发现外置的音频功放在打开和关闭音频的时候会出现pop音,严重影响使用体验,好在最后解决了这个问题,遂记录一下解决过程。

tiny-alsa命令的使用

在调试ubuntu等一些纯linux系统的时候,可以使用alsa-utils工具进行调试,由于其过于庞大,安卓中精简了一部分功能,在安卓中叫alsa-utils工具。

#查看本机的声卡
cat /proc/asound/cards
#查询声卡的采样率,格式等信息
tinypcminfo -D 0
#播放音频
tinyplay xxx.wav -D 0
#录制音频
tinycap -D 0
#控制codec通路
tinymix "name" "value"
#查看所有的value
tinymix -a
#例如将"Playback Path"修改成"SPK" 通路
tinymix "Playback Path" SPK
问题原因

通过查看原理图发现客户的外置SPK连接一颗功放ic,并且音频是从耳机通路中引出,并且是单通道功放。
在这里插入图片描述
客户的这个项目中并没有耳机接口,但是SPK走的是耳机的音频通路,一开始想的是,只要让系统检查到耳机的存在就能一直输出音频,所以在rk_headset中把耳机检测gpio配置进去,并且按照其ACTIVE的方向配置gpio状态(内部上下拉),所以就能一直检测到耳机是插入状态,本来正常的情况下,gpio状态要和耳机插入检测gpio ACTIVE的方向相反。

#headset配置rk_headset: rk-headset {compatible = "rockchip_headset";headset_gpio = <&gpio3 RK_PC2 GPIO_ACTIVE_HIGH>;pinctrl-names = "default";pinctrl-0 = <&hp_det>;};
#pinctrl配置
&pinctrl {headphone {hp_det: hp-det {/*  配置成上拉,这样系统就能检测耳机一直保持插入状态,如果headset_gpio ACTIVE配置为LOW那么需要拉低才能实现让系统一直检测到插入状态的效果 */rockchip,pins = <3 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>;};};
};

上述配置完,要想让SPK能成功输出声音,还需要配置codec的相关设备树,其中需要把,spk-ctl-gpio配置成反向,正常情况下要想使能spk,那么spk-ctl-gpio是需要拉高的,但是现在不能拉高,目前系统检测到的是耳机插入,所以会把SPK给禁用掉,那么肯定按照配置的SPK的ACTIVE反向拉gpio,所以配置ACTIVE LOW之后就会拉高spk-ctl-gpio,这样SPK就出声了,但是带来的一个问题就是配置成这种方式(强制检测耳机插入),codec打开和关闭的时候会迅速拉一下SPK的控制引脚,这就导致了pop音的产生。而且状态栏一直有耳机图标显示,本来没插耳机但是会显示耳机,看起来很不舒服。

rk809_codec: codec {#sound-dai-cells = <0>;compatible = "rockchip,rk809-codec", "rockchip,rk817-codec";clocks = <&cru I2S1_MCLKOUT>;clock-names = "mclk";assigned-clocks = <&cru I2S1_MCLKOUT>, <&cru I2S1_MCLK_TX_IOE>;assigned-clock-rates = <12288000>;assigned-clock-parents = <&cru I2S1_MCLKOUT_TX>, <&cru I2S1_MCLKOUT_TX>;pinctrl-names = "default";pinctrl-0 = <&i2s1m0_mclk>;hp-volume = <20>;use-ext-amlifier;spk-ctl-gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_LOW>;spk-volume = <3>;mic-in-differential;status = "okay";
};
解决方法

上述方式肯定是不能满足调试需求的,但是如果把耳机和SPK的配置都按照正常的设置进行配置,又无法出声音(因为走的是SPK通路,客户功放并没有走SPK通路),尝试adb中使用tinymix指令切换播放通路到耳机通路后就能成功出声,但是音频播放结束再次播放又会走SPK通路,那么我把SPK通路和HP通路互换一下不就可以了!打开驱动修改之后,成功解决这个问题,下面是我的patch。

--- a/kernel-4.19/sound/soc/codecs/rk817_codec.c
+++ b/kernel-4.19/sound/soc/codecs/rk817_codec.c
@@ -998,8 +1004,8 @@ static int rk817_digital_mute(struct snd_soc_dai *dai, int mute)snd_soc_component_write(component, RK817_CODEC_ADAC_CFG1,PWD_DACBIAS_ON | PWD_DACD_DOWN |PWD_DACL_ON | PWD_DACR_ON);
-                       rk817_codec_ctl_gpio(rk817, CODEC_SET_SPK, 0);
-                       rk817_codec_ctl_gpio(rk817, CODEC_SET_HP, 1);
+                       rk817_codec_ctl_gpio(rk817, CODEC_SET_SPK, 1);
+                       rk817_codec_ctl_gpio(rk817, CODEC_SET_HP, 0);
--- a/kernel-4.19/sound/soc/codecs/rk817_codec.h
+++ b/kernel-4.19/sound/soc/codecs/rk817_codec.h
@@ -185,9 +185,11 @@ enum {enum {OFF,RCV,
-       SPK_PATH,
+    HP_NO_MIC,HP_PATH,
-       HP_NO_MIC,
+    SPK_PATH,BT,SPK_HP,RING_SPK,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/259621.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于深度学习yolov5钢材瑕疵目标检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介简介YOLOv5钢材瑕疵目标检测系统特性1. 数据预处理2. 模型架构3. 训练策略4. 后处理 性能评估 二、功能三、系统四. 总结 一项目简介 # YOLOv5 钢材瑕疵目标…

什么是HTML?

✨前言✨ 本文主要介绍什么是HTML以及W3C &#x1f352;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f352;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 文章目录 什么是HTMLHTML发展史HTML的特点什么…

微服务01

笔记&#xff1a; day03-微服务01 - 飞书云文档 (feishu.cn) 数据库连接不上&#xff1f; 要在虚拟机启动MySQL容器。docker start mysql 服务治理 服务提供者&#xff1a;暴露服务接口&#xff0c;供其他服务调用 服务消费者&#xff1a;调用其他服务提供的接口 注册中心&…

销售技巧培训之如何提高手机销售技巧

销售技巧培训之如何提高手机销售技巧 随着科技的迅速发展&#xff0c;手机已成为我们日常生活中不可或缺的一部分。作为一名手机销售员&#xff0c;了解手机销售技巧是必不可少的。本文将通过案例分析与实践&#xff0c;为你揭示手机销售的奥秘。 一、了解客户需求 在销售过程…

二百一十四、Linux——Linux系统时间比电脑时间慢5分钟

一、目的 服务器重启后&#xff0c;发现Linux的系统时间比电脑时间慢5分钟&#xff0c;于是看了些博客&#xff0c;终于找到了解决方法&#xff0c;记录一下&#xff0c;以防止后面出现同样的问题 二、问题 通过date查看&#xff0c;Linux系统时间比电脑时间慢5分钟 &#…

解决firefox(火狐)浏览器使用transform: scale导致的border不显示或显示不全的问题;

最近火狐遇到了此问题&#xff0c;查了许久没有解决办法也有说是因为火狐不支持小于1px单位的&#xff0c;也有说火狐浏览器本身的问题&#xff0c;然后也没有解决方案&#xff0c;最后没办法只能用最笨的方法解决。。。。 只针对Firefox使用CSS&#xff0c;使用’-moz-documen…

vue3移动端脚手架(纯净,集成丰富)

概述 一个纯净的移动端框架 &#xff0c;用到了 Vue3 vuex Vite3 Vant3 sass eslint stylelint htmlhint husky commitlint axios axios-adapter VConsole 自定义全局 loading &#xff0c;自定义函数式 dialog &#xff08;api模仿微信小程序&#xff09;&#x…

Amazon CodeWhisperer 开箱初体验

文章作者&#xff1a;Coder9527 科技的进步日新月异&#xff0c;正当人工智能发展如火如荼的时候&#xff0c;各大厂商在“解放”码农的道路上不断创造出各种 Coding 利器&#xff0c;今天在下就带大家开箱体验一个 Coding 利器&#xff1a; Amazon CodeWhisperer。 亚马逊云科…

DAP数据集成与算法模型如何结合使用

企业信息化建设会越来越完善&#xff0c;越来越体系化&#xff0c;当今数据时代背景下更加强调、重视数据的价值&#xff0c;以数据说话&#xff0c;通过数据为企业提升渠道转化率、改善企业产品、实现精准运营&#xff0c;为企业打造自助模式的数据分析成果&#xff0c;以数据…

C# WPF上位机开发(简易图像处理软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 图像处理是工业生产重要的环节。不管是定位、测量、检测还是识别&#xff0c;图像处理在工业生产中扮演重要的角色。而c#由于自身快速开发的特点&a…

红海云eHR 任意文件上传漏洞复现

0x01 产品简介 红海eHR是大中型企业广泛采用人力资源管理系统。红海云是国内顶尖的HR软件供应商,是新一代eHR系统的领导者。 0x02 漏洞概述 红海云EHR系统PtFjk.mob接口处存在未授权文件上传漏洞,攻击者可上传webshell来命令执行,获取服务器权限。 0x03 复现环境 FOFA:…

Navicat 技术指引 | 适用于 GaussDB 分布式的数据查看器

Navicat Premium&#xff08;16.3.3 Windows 版或以上&#xff09;正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结…