rk3568 适配rk809音频

RK809是一款集成了多种功能的电源管理芯片,主要用于笔记本电脑、平板电脑、工控机等设备的电源管理。以下是RK809的详细功能介绍:

  1. 电源管理:控制电源的开关、电压、电流等参数,保证设备的稳定运行。
  2. 音频管理:支持PDM/I2S音频播放和录制,不仅支持耳机录音和播放用能,还可以直接驱动 2W喇叭。
  3. 电池管理:支持多种电池类型,包括锂离子电池、聚合物电池等,可以实现电池的充放电管理,延长电池寿命。
  4. 供电管理:支持多种供电方式,包括AC适配器、USB供电等,可以智能切换供电方式,保证设备的稳定运行。
  5. 温度管理:支持温度监测和控制,可以防止设备过热,保护设备安全。
  6. 时间管理:支持RTC时间记录、定时唤醒,以及输出RTC时钟信号。

相比之下,RK817在功能上比RK809更加强大,主要体现在以下方面:
(1)USB PD快充:支持USB PD 3.0协议,最高输出功率可达100W,可以快速充电支持PD协议的设备。
(2)Type-C接口:支持Type-C接口的设备,可以实现数据传输和充电功能。
(3)QC3.0快充:支持QC3.0协议,可以快速充电支持QC3.0协议的设备。

作者:炭烤毛蛋 ,查看博主了解更多。


提示:RK809的功耗比RK817低,比较适合功耗要求较低的设备,例如智能音箱等。RK817的功耗比RK809高,更适合功耗要求较高的设备,例如平板电脑、笔记本电脑等。

文章目录

  • rk3568 适配rk809音频
  • 1. 核查硬件,适配rk809音频
    • 1.1 声卡适配
    • 1.2 耳机适配
    • 1.3 喇叭适配
  • 2. 适配音频路由
    • 2.1 适配 Android 音频路由
    • 2.2 适配 Linux 音频路由
  • Tips
  • 总结

1. 核查硬件,适配rk809音频


rk809 音频需要外部提供 SPK_HP 供电和I2S(PDM)信号;输入立体声MIC可拆分为左声道和右声道; 喇叭则只有单声道输出,功率限定 2W; 耳机则为立体声。部分用户需要使用立体声喇叭,从耳机取音频经过功放放大推动喇叭。
VCC_SPK_HP 与 vcc_5v0直接相连,无需增加外部控制。

1.1 声卡适配

#mermaid-svg-7Nv42cXNxJzfeNRQ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-7Nv42cXNxJzfeNRQ .error-icon{fill:#552222;}#mermaid-svg-7Nv42cXNxJzfeNRQ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7Nv42cXNxJzfeNRQ .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-7Nv42cXNxJzfeNRQ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7Nv42cXNxJzfeNRQ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7Nv42cXNxJzfeNRQ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7Nv42cXNxJzfeNRQ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7Nv42cXNxJzfeNRQ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7Nv42cXNxJzfeNRQ .marker.cross{stroke:#333333;}#mermaid-svg-7Nv42cXNxJzfeNRQ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7Nv42cXNxJzfeNRQ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-7Nv42cXNxJzfeNRQ .cluster-label text{fill:#333;}#mermaid-svg-7Nv42cXNxJzfeNRQ .cluster-label span{color:#333;}#mermaid-svg-7Nv42cXNxJzfeNRQ .label text,#mermaid-svg-7Nv42cXNxJzfeNRQ span{fill:#333;color:#333;}#mermaid-svg-7Nv42cXNxJzfeNRQ .node rect,#mermaid-svg-7Nv42cXNxJzfeNRQ .node circle,#mermaid-svg-7Nv42cXNxJzfeNRQ .node ellipse,#mermaid-svg-7Nv42cXNxJzfeNRQ .node polygon,#mermaid-svg-7Nv42cXNxJzfeNRQ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7Nv42cXNxJzfeNRQ .node .label{text-align:center;}#mermaid-svg-7Nv42cXNxJzfeNRQ .node.clickable{cursor:pointer;}#mermaid-svg-7Nv42cXNxJzfeNRQ .arrowheadPath{fill:#333333;}#mermaid-svg-7Nv42cXNxJzfeNRQ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7Nv42cXNxJzfeNRQ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7Nv42cXNxJzfeNRQ .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-7Nv42cXNxJzfeNRQ .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-7Nv42cXNxJzfeNRQ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7Nv42cXNxJzfeNRQ .cluster text{fill:#333;}#mermaid-svg-7Nv42cXNxJzfeNRQ .cluster span{color:#333;}#mermaid-svg-7Nv42cXNxJzfeNRQ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7Nv42cXNxJzfeNRQ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

Audio
I2S
i2c
rk809_sound
HP
SPK
rk809
rk3568
graph LRA --> Bsubgraph Subgraph1C1 --> C2C2 --> C3C3 --> C4note right of C4: This is a subgraphlabel Subgraph1subgraph Subgraph2D1 --> D2D2 --> D3D3 --> D4note right of D4: This is another subgraphD4(( )) --> D5(( ))D5 --> D6D6 --> D7note right of D7: This is a node with a labelendend

注册rk809声卡前准备条件:

  • rk809声卡驱动相关宏开启(RK内核已经匹配rk809声卡)
  • 匹配设备树以及关联总线
  • 注册声卡设备树
    废话不多说,直接上设备树配置。
/ {rk809_sound: rk809-sound {status = "okay";compatible = "simple-audio-card";simple-audio-card,format = "i2s";simple-audio-card,name = "rockchip,rk809-codec";simple-audio-card,mclk-fs = <256>;simple-audio-card,cpu {sound-dai = <&i2s1_8ch>;};simple-audio-card,codec {sound-dai = <&rk809_codec>;};};
};&i2c0 {status = "okay";rk809: pmic@20 {compatible = "rockchip,rk809";reg = <0x20>;......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>;spk-volume = <3>;mic-in-differential;status = "okay";};};
};&i2s1_8ch {status = "okay";rockchip,clk-trcm = <1>;pinctrl-names = "default";pinctrl-0 = <&i2s1m0_sclktx&i2s1m0_lrcktx&i2s1m0_sdi0&i2s1m0_sdo0>;
};

刷新内核后,可以看到 rk809声卡

cat /proc/asound/cards0 [rockchiprk809co]: rockchip_rk809- - rockchip,rk809-codecrockchip,rk809-codec

1.2 耳机适配

耳机检测检测GPIO可以在rk809_sound中添加也可以单独注册耳机驱动。对比rk809声卡注册耳机检测,单独耳机检测增加hook,进而识别三段、四段耳机;也有耳机 uevent 上报,音频HAL层进而切换音频路由。

/ {rk_headset: rk-headset {compatible = "rockchip_headset";headset_gpio = <&gpio3 RK_PA2 GPIO_ACTIVE_LOW>;pinctrl-names = "default";pinctrl-0 = <&hp_det>;io-channels = <&saradc 2>;};
};&saradc {status = "okay";vref-supply = <&vcca_1v8>;
};

1.3 喇叭适配


双喇叭方案,音频取自耳机左右声道,经功放推动喇叭。功放由GPIO控制,高电平开启,低电平关闭。驱动中有此相关控制,只需增加到 rk809_codec声卡即可。

&rk809_codec {spk-ctl-gpio = <&gpio3 RK_PC3 GPIO_ACTIVE_HIGH>;
};

2. 适配音频路由

耳机、喇叭控制都正确,但是发现喇叭无声音。HAL层默认喇叭由 rk809直接推动,并非本文中提及的耳机音源放大。将喇叭播放音频路由从"SPK"改为"SPK_HP"才有声音,也就是适配音频路由。

2.1 适配 Android 音频路由

适配过程可参考《rk3568 Android audio 调试》,废话不多说直接上修改内容。

--- a/tinyalsa_hal/codec_config/default_config.h
+++ b/tinyalsa_hal/codec_config/default_config.h
@@ -19,36 +19,36 @@const struct config_control default_speaker_normal_controls[] = {{.ctl_name = "Playback Path",
-        .str_val = "SPK",
+        .str_val = "SPK_HP",},};const struct config_control default_speaker_incall_controls[] = {{.ctl_name = "Playback Path",
-        .str_val = "SPK",
+        .str_val = "SPK_HP",},{.ctl_name = "Voice Call Path",
-        .str_val = "SPK",
+        .str_val = "SPK_HP",},};const struct config_control default_speaker_ringtone_controls[] = {{.ctl_name = "Playback Path",
-        .str_val = "RING_SPK",
+        .str_val = "RING_SPK_HP",},};const struct config_control default_speaker_voip_controls[] = {{.ctl_name = "Playback Path",
-        .str_val = "SPK",
+        .str_val = "SPK_HP",},{.ctl_name = "Voip Path",
-        .str_val = "SPK",
+        .str_val = "SPK_HP",},};@@ -62,7 +62,7 @@ const struct config_control default_earpiece_normal_controls[] = {const struct config_control default_earpiece_incall_controls[] = {{.ctl_name = "Playback Path",
-        .str_val = "SPK",
+        .str_val = "SPK_HP",},{.ctl_name = "Voice Call Path",

2.2 适配 Linux 音频路由

适配过程可参考《Linux 音频路由适配 (amixer)》,废话不多说直接上修改内容。

--- a/overlay/usr/share/alsa/ucm/rockchip,rk809-codec/HiFi.conf
+++ b/overlay/usr/share/alsa/ucm/rockchip,rk809-codec/HiFi.conf
@@ -40,7 +40,7 @@ SectionDevice."Speaker" {EnableSequence [cdev "hw:rockchiprk809co"-               cset "name='Playback Path' SPK"
+               cset "name='Playback Path' SPK_HP"]

Tips

  1. HP_DET 和 SPK_CTL 被复用情况可能引起驱动注册失败,需要先查GPIO复用。
  2. 音频路由可以使用命令调整音频路由,再编译代码确认结果。
  3. 耳机或者主mic录音时只有单声道,属于正常现象;需要软件作音频搬移实现“立体声”。
  4. 耳机和主mic可以合并为立体声录音,此时无法再使用单独录音。

总结

不枉博主一片辛苦,欢迎订阅博主–炭烤毛蛋 。

rk3568 适配rk809音频相关推荐

  1. rk3568适配温控风扇

    rk3568 适配温控风扇 温度控制风扇通常是由主板上的温度传感器监测 CPU 温度,并根据预设的温度阈值来控制风扇的转速.当 CPU 温度超过预设的阈值时,风扇会自动加速转动,以降低 CPU 温度. ...

  2. rk3568 适配摄像头 (双摄)

    rk3568 适配摄像头 (mipi 双摄) rk3568 适配双摄像其实就是逐个适配单摄像头,只是两颗摄像头的数据总线可能不同(cif+mipi),也可能相同(mipi(2lane) x 2).几乎 ...

  3. 利用html5标签audio在不同客户端下适配播放音频

    //声明:ios系统不支持falsh,故而采用各平台支持的html5 audio标签 <script> //创建audio标签 var audio = document.createEle ...

  4. Buildroot_5.10 rk809音频(实现 耳机+喇叭 切换)+ HDMI音频 + 视频播放测试指令(4K)

    1. \EM3568_Buildroot\kernel\arch\arm64\boot\dts\rockchip\rk3568-evb.dtsi hdmi音频 hdmi_sound: hdmi-sou ...

  5. [RK3568 Android11] RK809开机短按时间设置和长按电源键设置

    一.长按电源键 在产品设计中,为防备系统跑挂了,需要设计通过长按电源键实现硬关机和重启.这里简单介绍RK809实现长按电源键关机和重启功能. 通过查阅RK809手册PMIC_PWEON_KEY寄存器, ...

  6. js会计年度_比较会计年度摘要中的工作日

    js会计年度 In the retail businesses, some days of the week are busier than others. So, if you're looking ...

  7. rk3568 Android 适配红外遥控器

    rk3568 适配红外遥控器 生活中充满了各种波长的电磁波,所谓的可见(色)光就是人眼可见的电磁波谱,其波长为 380~770nm,为了避免遥控器发射的光造成人眼不适及减少一般人造光源干扰,故选用人眼 ...

  8. OpenHarmony音频驱动介绍

    OpenHarmony官方音频驱动介绍文档路径: https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/driv ...

  9. rk3568 点亮LCD (BT656 BT1120)

    rk3568 适配 BT656/BT1120 BT.656 TX 和 BT.1120 TX,是一种并行输出接口,而 Camera 对应的是 BT.656 RX和 BT.1120 RX,是一种并行输入接 ...

最新文章

  1. saas的计费数据库设计_如何构建和扩展SaaS计费解决方案
  2. 如果学习编程可以重来
  3. qxidc项目/crtsurfdata程序 杀青总结
  4. semget创建文件_linux信号灯操作
  5. python while 循环 if elif else 判断
  6. firewall防火墙
  7. a标签去除下划线css_数据分析师所需的编程技能 : CSS篇
  8. vijos p1347(最大乘积(整数划分?))(25—100分)
  9. 6、mybatis中的sql映射文件详解(1)
  10. python lock_python多线程Lock和RLock的区别
  11. 政府 开源软件_为什么不是所有的政府软件都是开源的?
  12. cisco路由器基本实验之六 CHAP and RIP (Boson NetSim)
  13. LinuxROS与Android哪个重要?
  14. 下载速度15MB/s?网友实测度盘的这个新版本后惊了!
  15. 整理好全球半导体公司,看看哪些你的上下游厂家
  16. 图像处理之灰度化和二值化
  17. kdj买卖指标公式源码_量+优化kdj买卖指标公式、源码-大智慧公式 -程序化交易(CXH99.COM)...
  18. 800万像素摄像头,评估可以看到多远的红绿灯【1】?
  19. ssm个人微空间图片相册共享系统
  20. 网易人工智能事业部:“悄无声息”再捞金!

热门文章

  1. 将 H264 + PCMA 转为MP4格式(RTSP协议)
  2. 成都计算机考研,成都考研全日制班靠谱排名
  3. 经典题目——n阶幻方
  4. 爬取智联招聘有用信息存入数据库
  5. 图论算法之最短路径(Dijkstra、Floyd、Bellman-ford和SPFA)
  6. 第11.9节 Python正则表达式的贪婪模式和非贪婪模式
  7. 2021-06-05 简易万年历的制作
  8. 浪漫博主使用 Javascript 做了个表白工具,最后升华了
  9. C++知识入门——关键字命名空间
  10. python任务队列框架_Python实现简单多线程任务队列