RK3588 HDMI RX开发调试指南
本文档是基于RK3588 Android 12平台使用HDMI RX模块开发 HDMI IN功能的帮助文档。RK3588芯片自带HDMI RX模块,可以接受HDMI信号。本文简单介绍HDMI RX模块的启用和调试。后续文档会更新相关代码模块介绍。
| 芯片名称 | Kernel版本 | Android版本 |
|---|---|---|
| RK3588 | Linux 5.10 | Android12 |
HDMI IN功能概述
HDMI RX模块特性简介
- HDMI 1.4b/2.0 RX:Up to 4K@60fps
- Support FMT:RGB888/YUV420/YUV422/YUV444 8bit
- Pixel clock:Up to 600MHz
- HDCP1.4/2.3
- CEC hardware engine
- E-EDID configuration
- S/PDIF 2channel output
- I2S 2/4/6/8channel output
注:RK3588S不含HDMI RX模块。
HDMI IN功能框图

根据应用场景需要,HDMI RX可适配TIF框架或是Camera框架,适配TIF框架图像传输延时更低,适配Camera框架可以使用标准Camera API,更方便录像、对接后端算法等应用功能开发。
RK3588-HDMIRX功能是基于的android代码版本是RKR6及以上版本,编译完成后串口敲命令确认。完善功能及稳定性建议更新到RKR12及以后版本。
console:/ # getprop | grep rksdk
[ro.rksdk.version]: [ANDROID12_RKR12]
驱动代码和Kernel配置
驱动代码:
drivers/media/platform/rockchip/hdmirx/
Kernel Config配置:
CONFIG_VIDEO_ROCKCHIP_HDMIRX=y
dts配置说明
参考SDK中RK3588 EVB1的dts配置:
arch/arm64/boot/dts/rockchip/rk3588-evb1-lp4.dtsi
HDMI RX控制器配置
/* Should work with at least 128MB cma reserved above. */
&hdmirx_ctrler {
status = "okay";
/* Effective level used to trigger HPD: 0-low, 1-high */
hpd-trigger-level = <1>;
hdmirx-det-gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&hdmim1_rx &hdmirx_det>;
};
hdmi {
hdmirx_det: hdmirx-det {
rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
预留内存
RK3588 HDMI RX模块只能使用物理连续内存,需要预留至少128MB的CMA内存:
注:按3840x2160分辨率,RGB888图像格式,4个轮转Buffer计算。
/* If hdmirx node is disabled, delete the reserved-memory node here. */
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
/* Reserve 128MB memory for hdmirx-controller@fdee0000 */
cma {
compatible = "shared-dma-pool";
reusable;
reg = <0x0 (256 * 0x100000) 0x0 (128 * 0x100000)>;
linux,cma-default;
};
};
Audio配置
diff --git a/arch/arm64/boot/dts/rockchip/rk3588-evb1-lp4.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-evb1-lp4.dtsi
index 4aa6a8ce9364..84c9c51d3b7f 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-evb1-lp4.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3588-evb1-lp4.dtsi
@@ -47,6 +47,26 @@ play-pause-key {
};
};
+ hdmiin_dc: hdmiin-dc {
+ compatible = "rockchip,dummy-codec";
+ #sound-dai-cells = <0>;
+ };
+
+ hdmiin-sound {
+ compatible = "simple-audio-card";
+ simple-audio-card,format = "i2s";
+ simple-audio-card,name = "rockchip,hdmiin";
+ simple-audio-card,bitclock-master = <&dailink0_master>;
+ simple-audio-card,frame-master = <&dailink0_master>;
+ status = "okay";
+ simple-audio-card,cpu {
+ sound-dai = <&i2s7_8ch>;
+ };
+ dailink0_master: simple-audio-card,codec {
+ sound-dai = <&hdmiin_dc>;
+ };
+ };
+
pcie20_avdd0v85: pcie20-avdd0v85 {
compatible = "regulator-fixed";
regulator-name = "pcie20_avdd0v85";
@@ -460,6 +480,10 @@ &i2s6_8ch {
status = "okay";
};
+&i2s7_8ch {
+ status = "okay";
+};
+
HDCP配置
- 单独支持 HDCP1.4:
&hdmirx_ctrler {
status = "okay";
hdcp1x-enable;
};
- 单独支持 HDCP2.3:
&hdcp1 {
status = "okay";
};
&hdmirx_ctrler {
status = "okay";
hdcp2x-enable;
};
- 同时支持 HDCP1.4 和 HDCP2.3,开机默认打开 HDCP2.3 功能:
&hdcp1 {
status = "okay";
};
&hdmirx_ctrler {
status = "okay";
hdcp1x-enable;
hdcp2x-enable;
};
以上内容大部分摘录自RK3588 HDMI RX开发指南,具体可以参考相关文档。
后续增加开发过程中的功能调试。
本文档介绍了基于RK3588芯片(搭载Android12)使用HDMIRX模块进行HDMIIN功能的启用和调试,包括HDMIRX的特性、驱动代码与Kernel配置、dts配置、内存预留以及音频和HDCP配置。建议使用RKR12及以上版本以保证功能稳定性和兼容性。



5171

被折叠的 条评论
为什么被折叠?



