RK3588平台HDMIRX功能Bringup

本文档介绍了基于RK3588芯片(搭载Android12)使用HDMIRX模块进行HDMIIN功能的启用和调试,包括HDMIRX的特性、驱动代码与Kernel配置、dts配置、内存预留以及音频和HDCP配置。建议使用RKR12及以上版本以保证功能稳定性和兼容性。

RK3588 HDMI RX开发调试指南

本文档是基于RK3588 Android 12平台使用HDMI RX模块开发 HDMI IN功能的帮助文档。RK3588芯片自带HDMI RX模块,可以接受HDMI信号。本文简单介绍HDMI RX模块的启用和调试。后续文档会更新相关代码模块介绍。

芯片名称Kernel版本Android版本
RK3588Linux 5.10Android12

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功能框图

functional_diagram

根据应用场景需要,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开发指南,具体可以参考相关文档。
后续增加开发过程中的功能调试。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值