RK3399在android12中三屏显示及声音调试
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中三屏显示及声音调试相关推荐
- RK3399 双路mipi拼接屏+HDMI 三屏显示
VOP Rockchip 平台的LCD Controller 称为VOP(Video Output Processor),芯片中一般集成1~2 个VOP.只有支持两个VOP 的芯片,才能支持双屏异显. ...
- DISPLAY(3)——RK3399 双路mipi拼接屏+HDMI 三屏显示
VOP Rockchip 平台的LCD Controller 称为VOP(Video Output Processor),芯片中一般集成1~2 个VOP.只有支持两个VOP 的芯片,才能支持双屏异显. ...
- 集成显卡+独立显卡实现三屏显示
以研华AIMB-501 + Geforce 独显客户需要实现3个VGA同时显示,在 BIOS里面需要修改地方: 依次进入CHIPSET-->System Agent configur ...
- 笔记本屏幕30hz_扩展显示-(多屏幕)三屏显示方案全攻略
此文做为自己对扩展显示屏的各种方案记录,多屏幕可以极大提高工作效率,现在显示器价格也非常便宜,不管是个人工作室,还是公司使用,多显示器已经慢慢成为一种标配. 本来我是想给自己的X1C外接2个显示器,因 ...
- RK3568 buildroot文件系统下的三屏显示
启扬智能IAC-RK3568-Kit开发板基于瑞芯微RK3568四核Cortex-A55处理器,支持HDMI.LVDS.MIPI.EDP四种显示接口,能够实现三屏同显,三屏异显,满足智能广告机.智能终 ...
- 一机三屏台式计算机,如何组建三屏显示
三.如何组建三屏显示 三屏显示的接口插接方式 组建三屏显示首先需要显卡支持Eyefinity多屏显示技术,其次最少还需要一个Diplay Port接口以及两个DVI接口,而显示器方面其中一个必须配备D ...
- java安卓图片全屏_在Android中全屏显示GIF图片(演示代码)
[实例简介] 在Android中全屏显示GIF图片(演示代码),详细内容请参考:http://blog.csdn.net/u012939909/article/details/77418173 [实例 ...
- 【USB转HDMI】笔记本 三屏显示 :同时外接HDMI显示器和 USB2HDMI的VGA显示器
笔记本 三屏显示 自带的屏幕很大,但是距离远,因为分辨率很高,看不清 LG的外界显示器是HDMI 公司的比较老旧,是VGA的1080p VGA2HDMI + UBS2HDMI 作为一个显示器 达尔稳的 ...
- Intellij IDEA中分屏显示方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 今天才发现IDEA中还有split view的功能,上网查的时候查到了很多莫名其妙的东西. 实际上对 ...
最新文章
- oracle needs compile,Oracle:为什么在基础视图中的数据更改后,我的MW无效到NEEDS_COMPILE状态...
- 完美/兼容版添加事件以及删除事件
- 去除List集合中的重复元素,并保持原有数据的初始顺序
- oralce11g RAC 启动后 CRS-0184: Cannot communicate with the CRS daemon.
- 树状数组--快捷的线段树
- vim mark bookmarks使用
- 7.业务架构·应用架构·数据架构实战 --- 业务架构书
- 关于科研和工作的几点思考
- JavaWeb学习之EL表达式和JSTL标签库
- 路由器刷机教程图解_斐讯路由器K1/K2/K2P系列刷机流程图文教程
- 响应式网站建设的优缺点
- R语言寻找数据集缺失值位置
- 最全支付系统设计包含:账户,对账,风控...
- 第二人生的源码分析(十九)人物组合显示
- Ubuntu 12.04无法识别华为U8500
- ABAP FIELD-SYMBOLS
- 探究正雅S8-SGTB与S8-SGHB
- 修复win10的更新服务器,Win10系统无法更新如何修复Windows Update组件
- 我的面试宝典(1):给自己定位-霍兰德职业测试
- PHP实现将网页转为图片:html-pdf-png