RK3399三屏显示及声音调试

这个文档主要讲述怎么调试三屏显示及三个声卡配置及调试过程

声卡调试

最近在调试RK3399平板,调试到HDMI和cdn_dp过程中出现一些问题,我的目标是三屏分别是HDMI、edp、cdn_dp,分别对的声卡为HDMI_sound,rt5640_codec,rockchip-cdndp-sound,三屏同显,声音自动切换输出。
在调试过程中,cdn_dp的声音一直无法输出,发现参考官方提供的
/{
hdmi_dp_sound: hdmi-dp-sound {
status = “disabled”;
compatible = “rockchip,rk3399-hdmi-dp”;
rockchip,cpu = <&i2s2>;
rockchip,codec = <&hdmi>, <&cdn_dp>;
};
};
&hdmi_dp_sound{
status = “okay”;
};
这样设置只能出现一个声卡就是rt5640,其他的声卡都无法注册成功。
经过rockchip工程师指导,将kernel-4.19\sound\soc\rockchip\rockchip_cdndp.c和kernel-4.19\sound\soc\rockchip\rockchip_hdmi_dp.c加入编译,并修改设备树为
/{
dp_sound: dp-sound {
status = “disabled”;
compatible = “rockchip,cdndp-sound”;
rockchip,cpu = <&spdif>;
rockchip,codec = <&cdn_dp 1>;
};
};
&cdn_dp {
status = “okay”;
extcon = <&fusb0>;
phys = <&tcphy0_dp>;
};
&dp_sound {
status = “okay”;
};
&spdif{
status = “okay”;
};
这个时候发现dp_sound 还是注册不上,最后通过查看代码发现是rockchip_cdndp.c中固定了.codec_dai_name = “spdif-hifi”,
static struct snd_soc_dai_link cdndp_dailink = {
.name = “DP”,
.stream_name = “DP PCM”,
.codec_dai_name = “spdif-hifi”,
.ops = &rockchip_sound_cdndp_ops,
.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
SND_SOC_DAIFMT_CBS_CFS,
};
从而将设备树修改下,最终可以注册成功,使用tinyplay播放音频正常。

/{
dp_sound: dp-sound {
status = “disabled”;
compatible = “rockchip,cdndp-sound”;
rockchip,cpu = <&spdif>;
rockchip,codec = <&cdn_dp>;
};
};


至此声卡调试OK

同显调试

最后在测试的过程中发现把HDMI和扩展坞的HDMI都插上之后,扩展坞插着的HDMI显示器,显示的图像颜色不对,偏粉。

查看HDMI的显示模式,得到的是YUV444,由于cdn_dp和HDMI是在一个VOP上,从而导致扩展坞上的HDMI显示不正确。通过帖子https://blog.csdn.net/qq_37858386/article/details/114267928中的修改方法修改。最终得到正确的颜色
至此三屏同显调试完成。

最终的设备树及修改的详情

/{
dp_sound: dp-sound {
status = “disabled”;
compatible = “rockchip,cdndp-sound”;
rockchip,cpu = <&spdif>;
rockchip,codec = <&cdn_dp>;
};
hdmi_sound: hdmi-sound {
status = “okay”;
compatible = “simple-audio-card”;
simple-audio-card,format = “i2s”;
simple-audio-card,mclk-fs = <256>;
simple-audio-card,name = “rockchip,hdmi”;

 simple-audio-card,cpu {sound-dai = <&i2s2>;};simple-audio-card,codec {sound-dai = <&hdmi>;};
};
rt5640-sound {compatible = "simple-audio-card";simple-audio-card,format = "i2s";simple-audio-card,name = "rockchip,rt5640-codec";simple-audio-card,mclk-fs = <256>;simple-audio-card,widgets ="Microphone", "Mic Jack","Line", "Mic Headset","Headphone", "Headphone Jack";simple-audio-card,routing ="Mic Jack", "MICBIAS1","IN2P", "Mic Jack","DMIC1", "Mic Headset","DMIC2", "Mic Headset","Headphone Jack", "HPOL","Headphone Jack", "HPOR";simple-audio-card,cpu {sound-dai = <&i2s0>;};simple-audio-card,codec {sound-dai = <&rt5640>;};
};panel {compatible = "simple-panel";backlight = <&backlight>;status = "okay";//power-supply = <&vcc3v3_lcd_edp>;enable-gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_HIGH>;bus-format = <MEDIA_BUS_FMT_RGB888_1X24>;bpc = <8>;prepare-delay-ms = <210>;enable-delay-ms = <210>;display-timings {native-mode = <&timing0>;timing0: timing0 {clock-frequency = <148500000>;    //1080P50Hz    117800000hactive = <1920>;vactive = <1080>;hfront-porch = <192>;hsync-len = <44>;hback-porch = <44>;vfront-porch = <36>;vsync-len = <5>;vback-porch = <4>;hsync-active = <0>;vsync-active = <0>;de-active = <0>;pixelclk-active = <0>;};};ports {panel_in: endpoint {remote-endpoint = <&edp_out>;};};
};

};
&pwm3{
pinctrl-0 = <&pwm3a_pin>;
status = “okay”;
};
//EDP、HDMI、DP
&cdn_dp {
status = “okay”;
extcon = <&fusb0>;
phys = <&tcphy0_dp>;
};
&dp_sound {
status = “okay”;
};
&spdif{
status = “okay”;
};
&hdmi_sound{
status = “okay”;
};
&display_subsystem {
status = “okay”;
};
&vopb {
status = “okay”;
assigned-clocks = <&cru DCLK_VOP0_DIV>;
assigned-clock-parents = <&cru PLL_VPLL>;
};
&vopl {
status = “okay”;
assigned-clocks = <&cru DCLK_VOP1_DIV>;
assigned-clock-parents = <&cru PLL_CPLL>;
};
&vopb_mmu {
status = “okay”;
};
&vopl_mmu {
status = “okay”;
};
&edp {
status = “okay”;
force-hpd;
//enable-delay-ms = <200>;
ports {
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
edp_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
};
};

&edp_in_vopb {
status = “disabled”;
};

&edp_in_vopl {
status = “okay”;
};

&route_edp{
status = “okay”;
logo,uboot = “logo.bmp”; // 指定U-Boot logo显示的图片
logo,kernel = “logo_kernel.bmp”; // 指定kernel logo显示的图片
logo,mode = “center”; // center:居中显示,fullscreen:全屏显示
charge_logo,mode = “center”; // center:居中显示,fullscreen:全屏显示
connect = <&vopl_out_edp>;
};

&hdmi {
pinctrl-names = “default”;
pinctrl-0 = <&hdmi_i2c_xfer>, <&hdmi_cec>;
// #address-cells = <1>;
// #size-cells = <0>;
#sound-dai-cells = <0>;
// rockchip,defaultmode = <4>;
status = “okay”;
};

&hdmi_in_vopl {
status = “disabled”;
};
&hdmi_in_vopb {
status = “okay”;
};

&hdmi {
status = “okay”;
};
&dp_in_vopb {
status = “okay”;
};
&dp_in_vopl {
status = “disabled”;
};
&i2s2 {
#sound-dai-cells = <0>;
status = “okay”;
};
&tcphy0 {
extcon = <&fusb0>;
status = “okay”;
};
&u2phy0 {
status = “okay”;
extcon = <&fusb0>;

u2phy0_otg: otg-port {status = "okay";
};u2phy0_host: host-port {phy-supply = <&vcc5v0_host>;status = "okay";
};

};
&usbdrd3_0 {
status = “okay”;
};

&usbdrd_dwc3_0 {
status = “okay”;
extcon = <&fusb0>;
};

引用:
[1]: https://blog.csdn.net/qq_37858386/article/details/114267928

RK3399在android12中三屏显示及声音调试相关推荐

  1. RK3399 双路mipi拼接屏+HDMI 三屏显示

    VOP Rockchip 平台的LCD Controller 称为VOP(Video Output Processor),芯片中一般集成1~2 个VOP.只有支持两个VOP 的芯片,才能支持双屏异显. ...

  2. DISPLAY(3)——RK3399 双路mipi拼接屏+HDMI 三屏显示

    VOP Rockchip 平台的LCD Controller 称为VOP(Video Output Processor),芯片中一般集成1~2 个VOP.只有支持两个VOP 的芯片,才能支持双屏异显. ...

  3. 集成显卡+独立显卡实现三屏显示

    以研华AIMB-501 + Geforce 独显客户需要实现3个VGA同时显示,在 BIOS里面需要修改地方:       依次进入CHIPSET-->System Agent configur ...

  4. 笔记本屏幕30hz_扩展显示-(多屏幕)三屏显示方案全攻略

    此文做为自己对扩展显示屏的各种方案记录,多屏幕可以极大提高工作效率,现在显示器价格也非常便宜,不管是个人工作室,还是公司使用,多显示器已经慢慢成为一种标配. 本来我是想给自己的X1C外接2个显示器,因 ...

  5. RK3568 buildroot文件系统下的三屏显示

    启扬智能IAC-RK3568-Kit开发板基于瑞芯微RK3568四核Cortex-A55处理器,支持HDMI.LVDS.MIPI.EDP四种显示接口,能够实现三屏同显,三屏异显,满足智能广告机.智能终 ...

  6. 一机三屏台式计算机,如何组建三屏显示

    三.如何组建三屏显示 三屏显示的接口插接方式 组建三屏显示首先需要显卡支持Eyefinity多屏显示技术,其次最少还需要一个Diplay Port接口以及两个DVI接口,而显示器方面其中一个必须配备D ...

  7. java安卓图片全屏_在Android中全屏显示GIF图片(演示代码)

    [实例简介] 在Android中全屏显示GIF图片(演示代码),详细内容请参考:http://blog.csdn.net/u012939909/article/details/77418173 [实例 ...

  8. 【USB转HDMI】笔记本 三屏显示 :同时外接HDMI显示器和 USB2HDMI的VGA显示器

    笔记本 三屏显示 自带的屏幕很大,但是距离远,因为分辨率很高,看不清 LG的外界显示器是HDMI 公司的比较老旧,是VGA的1080p VGA2HDMI + UBS2HDMI 作为一个显示器 达尔稳的 ...

  9. Intellij IDEA中分屏显示方法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 今天才发现IDEA中还有split view的功能,上网查的时候查到了很多莫名其妙的东西. 实际上对 ...

最新文章

  1. oracle needs compile,Oracle:为什么在基础视图中的数据更改后,我的MW无效到NEEDS_COMPILE状态...
  2. 完美/兼容版添加事件以及删除事件
  3. 去除List集合中的重复元素,并保持原有数据的初始顺序
  4. oralce11g RAC 启动后 CRS-0184: Cannot communicate with the CRS daemon.
  5. 树状数组--快捷的线段树
  6. vim mark bookmarks使用
  7. 7.业务架构·应用架构·数据架构实战 --- 业务架构书
  8. 关于科研和工作的几点思考
  9. JavaWeb学习之EL表达式和JSTL标签库
  10. 路由器刷机教程图解_斐讯路由器K1/K2/K2P系列刷机流程图文教程
  11. 响应式网站建设的优缺点
  12. R语言寻找数据集缺失值位置
  13. 最全支付系统设计包含:账户,对账,风控...
  14. 第二人生的源码分析(十九)人物组合显示
  15. Ubuntu 12.04无法识别华为U8500
  16. ABAP FIELD-SYMBOLS
  17. 探究正雅S8-SGTB与S8-SGHB
  18. 修复win10的更新服务器,Win10系统无法更新如何修复Windows Update组件
  19. 我的面试宝典(1):给自己定位-霍兰德职业测试
  20. PHP实现将网页转为图片:html-pdf-png

热门文章

  1. 1! 5!(7月3日)
  2. 全国网通DNS服务器地址
  3. Java通俗易懂30天 第30天:Java9- 14 新特性
  4. 配置SSM环境---上
  5. 内部排序 (一):各种内部排序方法的比较
  6. PowerBI自定义分区
  7. iOS RTMP 视频直播开发笔记(5)------- iOS H.264 实时硬编码实现原理
  8. 产品经理如何与研发工程师相处?-- Julie Zhuo
  9. 用JavaScript写一个可以聊天的桌面宠物
  10. 前端利器 —— 提升《500倍开发效率》 传一张设计稿,点击一建生成项目 好牛