RK809-code切换不同模式

author

daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主

daisy.skye_嵌入式,Linux,Qt-CSDN博客daisy.skye擅长嵌入式,Linux,Qt,等方面的知识https://blog.csdn.net/qq_40715266?type=blog

默认模式下音和收音都是关闭状态

130|rk3568_r:/ # tinymix -D 1
Mixer name: 'rockchip,rk809-codec'
Number of controls: 2
ctl     type    num     name                             value0       ENUM    1       Playback Path                    OFF
1       ENUM    1       Capture MIC Path                 MIC OFF
当打开免提录音的时候

 Capture MIC Path 由原来的Main OFF切换到Main Mic

rk3568_r:/ # tinymix -D 1
Mixer name: 'rockchip,rk809-codec'
Number of controls: 2
ctl     type    num     name                            value0       ENUM    1       Playback Path                   OFF
1       ENUM    1       Capture MIC Path                Main Mic

static int rk817_capture_path_put(struct snd_kcontrol *kcontrol,struct snd_ctl_elem_value *ucontrol)
{struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);struct rk817_codec_priv *rk817 = snd_soc_component_get_drvdata(component);long int pre_path;if (rk817->capture_path == ucontrol->value.integer.value[0]) {dev_dbg(component->dev, "%s:capture_path is not changed!\n",__func__);return 0;}
pre_path = rk817->capture_path;
	rk817->capture_path = ucontrol->value.integer.value[0];DBG("%s : set capture_path %ld, pre_path %ld\n", __func__,
	    rk817->capture_path, pre_path);if (rk817->capture_path != MIC_OFF)clk_prepare_enable(rk817->mclk);elseclk_disable_unprepare(rk817->mclk);switch (rk817->capture_path) {case MIC_OFF:if (pre_path != MIC_OFF)rk817_codec_power_down(component, RK817_CODEC_CAPTURE);break;case MAIN_MIC://看这里,代码会执行下面的参数if (pre_path == MIC_OFF)rk817_codec_power_up(component, RK817_CODEC_CAPTURE);if (rk817->adc_for_loopback) {/* don't need to gain when adc use for loopback */snd_soc_component_update_bits(component,
						      RK817_CODEC_AMIC_CFG0,0xf,0x0);snd_soc_component_write(component,
						RK817_CODEC_DMIC_PGA_GAIN,0x66);snd_soc_component_write(component,
						RK817_CODEC_DADC_VOLL,0x00);snd_soc_component_write(component,
						RK817_CODEC_DADC_VOLR,0x00);break;}
……}
}

当免提喇叭开启时 ,Playback Path会从OFF状态切换到SPK状态,对应的代码位置也会切换到函数 rk817_playback_path_put

rk3568_r:/ # tinymix -1
Mixer name: 'rockchip,rk809-codec'
Number of controls: 2
ctl     type    num     name                           value0       ENUM    1       Playback Path                   SPK
1       ENUM    1       Capture MIC Path                MIC OFF

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

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

相关文章

云渲染平台都开始涨价了?2024年性价比高的云渲染平台推荐

最近部分云渲染平台开始涨价,不论是通过调整机器性能,还是直接提价,都会对成本产生影响。这对已经习惯了平台价格的用户来说,并不是一件好事。这里举一些例子: 比如平台A,原“首小时渲染0.66元模式”已经下…

网络信息安全:nginx漏洞收集(升级至最新版本)

网络&信息安全:nginx漏洞收集(升级至最新版本) 一、风险详情1.1 nginx 越界写入漏洞(CVE-2022-41742)1.2 nginx 缓冲区错误漏洞(CVE-2022-41741)1.3 nginx 拒绝服务漏洞(CNVD-2018-22806) 二、nginx升级步骤 &…

高级运维工程师手把手教从0到1搭建一套linux服务器硬盘监控平台实战训练

高级运维工程师手把手教你获取当前服务器硬盘空间数据并写入MYSQL数据库监控表实战 一、前言 我们在日常工作生活中,经常遇到服务器硬盘爆满的事故,现在互联网的监控产品非常丰富,但是有些场景下不得不自己解决。有些特殊条件下不能用互联网…

【vue2项目总结】——动态渲染

文章目录 主页渲染封装接口页面调用传到子组件 搜索列表渲染根据关键字搜索分类id搜索 主页渲染 封装接口 封装准备接口 api/home.js import request from /utils/request// 获取首页数据 export const getHomeData () > {return request.get(/page/detail, {params: {p…

ThreeJs场景中添加视频

这节讲如何在threejs中添加一个视频的功能,在某些场景中可能会需要播放视频,比如在场景中方式一个大屏幕,大屏幕上需要播放视频,亦或者在场景中添加电视机的模型,电视机的画面上需要播放一些视频等。 其实添加视频和以…

Python读取influxDB数据库

1. influxDB连接 首先用InfluxDBStudio软件连接influxDB数据库来查看所有表: 2. 写sql语句来查询数据 然后和平时写sql查询语句一样,先创建连接client,然后调用其query函数来查询获取数据 self.client influxdb.InfluxDBClient(hostinflu…

Vue+SpringBoot打造校园疫情防控管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生2.2 老师2.3 学校管理部门 三、系统展示四、核心代码4.1 新增健康情况上报4.2 查询健康咨询4.3 新增离返校申请4.4 查询防疫物资4.5 查询防控宣传数据 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBoot…

制片管理工具:提高制片效率的必备工具

一、什么是制片管理工具 制片管理工具是一种为制片人提供支持和协助的软件或工具,并提供一种集中管理制作进度、任务分配、成本预算、资源管理和进度跟踪的方式。它可以帮助制片人在项目的开发、制作和发布方面更有效地进行规划和监督,确保整个流程能够…

线程安全——使用线程安全函数,多线程中执行fork引发的问题及如何解决

目录 一、引例 二、线程安全 三、多线程中执行fork 3.1 多线程中某个线程调用 fork()&#xff0c;子进程会有和父进程相同数量的线程吗? 3.2 父进程被加锁的互斥锁 fork 后在子进程中是否已经加锁 一、引例 在主线程和函数线程中进行语句分割并输出。 #include <stdi…

《Effective Modern C++》- 极精简版 1-4条

本文章属于专栏《业界Cpp进阶建议整理》 本文列出《Effective Modern C》的1-5条的个人理解的极精简版本。 Item1、模版类型推导 个人理解&#xff1a;推导规则是繁琐的&#xff0c;和运算符优先级一样&#xff0c;背下来没有意义&#xff0c;最好的办法是在使用中熟悉。常用的…

vue3: vscode自动补充ref变量的.value属性(解决方式)

操作一下步骤后&#xff0c; 然后重启vscode即可 效果图&#xff1a;

Doris入门

概念&#xff1a; 基于MPP设计理念实现的数据库&#xff0c;支持大数据集存储、实时数据分析&#xff0c;交互式数据分析等。 MPP&#xff1a;将任务并行分散至多个节点&#xff0c;由各节点单独计算&#xff0c;再将各节点计算结果汇总得到最终结果。 原理&#xff1a; FE&…