【技术分享】RK3568适配RK628 RGB to HDMI

电子说

1.3w人已加入

描述

RK628是一款多功能视频桥接芯片,支持多种显示接口的转换。本文基于RK3568平台,分享使用RK628桥接芯片实现RGB信号转换为HDMI输出的适配过程

HDMI

 IDO-SOM3568-V2采用 Rockchip 新一代 64 位处理器 RK3568(四核A55, 主频高达 2.0GHz, 22nm 工艺),集成双核心架构 GPU 以及高效能 NPU;最大支持 8GB 内存;内置独立的 NPU,32Bit位宽LPDDR4/LPDDR4x,频率最高可达1600MHz,支持全链路ECC ,支持Android 11,Ubuntu , Debian,OpenHamoney,麒麟OS等多种系统。

更多产品详情关注深圳触觉智能公众号

HDMI

硬件连接

RK628与RK3568的硬件连接,主要有以下几点:

24MHz时钟:给RK628提供时钟信号;

I2C:用于RK3568与RK628之间的控制通信;

I2S:用于音频信号传输;

RGB:给RK628显示信号源;

其它GPIO:控制供电和复位。


 

添加驱动

本文调试使用的是RK的rk628-for-all v21驱动。将驱动补丁文件添加至 kernel/drivers/misc/rk628/ 目录。

在原有的驱动文件中添加

kernel/drivers/misc/Kconfig

source "drivers/misc/rk628/Kconfig"

kernel/drivers/misc/Makefile

obj-y += rk628/

添加设备树配置

dts配置分显示和音频两部分,显示部分在i2c中添加rk628节点,并将其与rgb绑定;音频部分使用i2s通信,新增一路simple-audio-card。

/ {   rk628_hdmi_sound: rk628-hdmi-sound {     compatible = "simple-audio-card";     simple-audio-card,format = "i2s";     simple-audio-card,name = "rk628-hdmi-sound";     status = "okay";     simple-audio-card,cpu {       sound-dai = < &i2s1_8ch >;     };     simple-audio-card,codec {       sound-dai = < &rk628 >;     };   }; }; &i2s1_8ch {   status = "okay";   rockchip,clk-trcm = < 1 >;   pinctrl-names = "default";   pinctrl-0 = < &i2s1m1_sclktx          &i2s1m1_lrcktx          &i2s1m1_sdo0 >; }; &i2c1 {   status = "okay";   clock-frequency = < 400000 >;   rk628: rk628@50 {     compatible = "rockchip,rk628";     reg = < 0x50 >;     pinctrl-names = "default";     interrupt-parent = < &gpio1 >;     interrupts = ;     enable-gpios = < &gpio3 RK_PD5 GPIO_ACTIVE_HIGH >;     reset-gpios = < &gpio3 RK_PC4 GPIO_ACTIVE_LOW >;     pinctrl-0 = < &refclk_pins >;     assigned-clocks = < &pmucru CLK_WIFI >;     assigned-clock-rates = < 24000000 >;     clocks = < &pmucru CLK_WIFI >;     clock-names = "soc_24M";     #sound-dai-cells = < 0 >;     rk628,rgb-in;     rk628,hdmi-out;     mode-sync-pol=< 0 >;        status = "okay";     port {       rgb_in_hdmi: endpoint {         remote-endpoint = < &rgb_out_hdmi >;       };     };   }; }; &rgb {   status = "okay";   ports {     port@1 {       reg = < 1 >;       rgb_out_hdmi: endpoint {         remote-endpoint = < &rgb_in_hdmi >;       };     };   }; }; &rgb_in_vp2 {   status = "okay"; }; &route_rgb {   status = "okay";   connect = < &vp2_out_rgb >; }; &pinctrl {   refclk {     /omit-if-no-ref/     refclk_pins: refclk-pins {       rockchip,pins =         /* refclk_ou */         < 0 RK_PA0 1 &pcfg_pull_none >;     };   }; }

运行测试

修改驱动编译,更新内核后;插入HDMI显示器,正常的情况下可以成功显示

查看显示参数

cat /sys/kernel/debug/dri/0/summary

HDMI

声卡注册情况如下,可通过播放音乐来测试HDMI是否有声音输出

HDMI

问题排查

确认供电和复位时序是否正常

测量软件24MHz时钟信号是否正常输出

HDMI



  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分