RK3588 Type-C一线通,DP显示输出实战指南

摘要:RK3588的Type-C接口不仅是数据传输通道,更是一路强大的DisplayPort视频输出接口。本文将手把手教你如何通过Type-C实现DP视频输出,让你使用眺望电子RK3588开发板轻松使用扩展坞连接显示器。

一、方案概述

RK3588 是瑞芯微旗舰级高性能处理器,其Type-C接口内置了USB 3.1 + DP Alt Mode双模支持能力。通过简单的软件配置,即可将Type-C接口切换为DP视频输出模式,实现一线通(One Cable)的视频传输方案。

适用场景:

  • 便携显示器连接

  • 一线通扩展坞方案

  • 嵌入式显示终端

  • 多屏异显系统

二、核心配置步骤

眺望电子RK3588评估板的typec0和typec1接口均支持dp输出,下面以typec0为例,演示如何配置dp输出。

2.1 启用DP控制器

首先需要在设备树中使能DP0接口,并将其绑定到VOP的Video Port2:

cs 复制代码
&dp0 {
    status = "okay";
};
&dp0_in_vp2 {
    status = "okay";
};

备注:RK3588支持多路视频输出,通过dp0_in_vpX可以灵活配置DP输出绑定的显示通道。

2.2 配置USB-Combo PHY

Type-C的DP功能依赖于USB-Combo PHY的灵活复用能力。以下是核心配置:

cs 复制代码
&usbdp_phy0 {
    status = "okay";
    orientation-switch;          // 支持正反插切换
    rockchip,dp-lane-mux = <2 3>; // 配置DP Lane复用
    svid = <0xff01>;             // DP Alt Mode SVID

    // SBU引脚上下拉控制GPIO
    sbu1-dc-gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_HIGH>;
    sbu2-dc-gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;

    // 端口连接配置
    port {
        #address-cells = <1>;
        #size-cells = <0>;

        usbdp_phy0_orientation_switch: endpoint@0 {
            reg = <0>;
            remote-endpoint = <&usbc0_orien_sw>;
        };

        usbdp_phy0_dp_altmode_mux: endpoint@1 {
            reg = <1>;
            remote-endpoint = <&dp0_altmode_mux>;
        };
    };
};

&usbdp_phy0_dp {
    status = "okay";
};

&usbdp_phy0_u3 {
    status = "okay";
};

技术要点解析:

Type-C的SBU1/SBU2引脚与DP的AUX_CH通道是复用的:

●正插:AUX_CH_P → SBU1,AUX_CH_N → SBU2

●反插:AUX_CH_P → SBU2,AUX_CH_N → SBU1

根据DP协议规范,AUX_CH_P需下拉,AUX_CH_N需上拉。因此PHY驱动会根据插入方向动态调整SBU引脚的上下拉状态------这就是为什么需要配置sbu1-dc-gpios和sbu2-dc-gpios。

2.3 配置PD控制器(fusb302)

Type-C接口需要通过Type-C的CC检测和PD协商来配置lane和HPD的状态,所以DP Alt Mode的激活需要Type-C PD(Power Delivery)协商配合。RK3588评估板当前支持fusb302和husb311两种PD芯片:

cs 复制代码
&i2c2 {
 status = "okay";
 usbc0: fusb302@22 {
  compatible = "fcs,fusb302";
  reg = <0x22>;
  interrupt-parent = <&gpio1>;
  interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
  pinctrl-names = "default";
  pinctrl-0 = <&usbc0_int>;
  vbus-supply = <&vbus5v0_typec0>;
  status = "okay";
 
  ports {
   #address-cells = <1>;
   #size-cells = <0>;
 
   port@0 {
    reg = <0>;
    usbc0_role_sw: endpoint@0 {
     remote-endpoint = <&dwc3_0_role_switch>;
    };
   };
  };
 
  usb_con0: connector {
   compatible = "usb-c-connector";
   label = "USB-C";
   data-role = "dual";
   power-role = "dual";
   try-power-role = "sink";
   op-sink-microwatt = <1000000>;
   sink-pdos =
    <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>;
   source-pdos =
    <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
 
   altmodes {
    #address-cells = <1>;
    #size-cells = <0>;
 
    altmode@0 {
     reg = <0>;
     svid = <0xff01>;
     vdo = <0xffffffff>;
    };
   };
 
   ports {
    #address-cells = <1>;
    #size-cells = <0>;
 
    port@0 {
     reg = <0>;
     usbc0_orien_sw: endpoint {
     remote-endpoint = <&usbdp_phy0_orientation_switch>;
     };
    };
 
    port@1 {
     reg = <1>;
     dp0_altmode_mux: endpoint {
     remote-endpoint = <&usbdp_phy0_dp_altmode_mux>;
     };
    };
   };
  };
 };
};

三、内核配置清单

确保以下内核配置已启用:

cs 复制代码
CONFIG_PHY_ROCKCHIP_INNO_USB2
CONFIG_PHY_ROCKCHIP_INNO_USB3
CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY
CONFIG_PHY_ROCKCHIP_NANENG_USB2
CONFIG_PHY_ROCKCHIP_TYPEC
CONFIG_PHY_ROCKCHIP_USB
CONFIG_PHY_ROCKCHIP_USBDP
CONFIG_USB_DWC2
CONFIG_USB_DWC2_DUAL_ROLE
CONFIG_USB_DWC3
CONFIG_USB_DWC3_DUAL_ROLE
CONFIG_USB_DWC3_HAPS
CONFIG_USB_DWC3_OF_SIMPLE

配置完成后重新编译内核即可。

四、调试技巧

● 查看VOP状态

复制代码
cat /sys/kernel/debug/dri/0/summary

● 检查DP连接状态

复制代码
cat /sys/kernel/debug/dp/status

● 重要注意事项

开机Logo限制,当前驱动不支持Type-C接口的DP开机Logo显示,系统启动后的桌面显示不受影响。

五、结语

RK3588通过Type-C实现DP输出,为嵌入式设备提供了简洁高效的显示扩展方案。配合Type-C一线通显示器,可大幅减少设备连接线缆,提升产品便携性和专业感。

如需获取完整的《Rockchip RK3588 DP 软件开发指南》参考文档,或者SDK支持或硬件设计参考,欢迎联系我司技术支持团队。

相关推荐
社交怪人10 分钟前
【判断奇偶】信息学奥赛一本通C语言解法(题号1041)
c语言
ZC跨境爬虫1 小时前
跟着 MDN 学 JavaScript day_2:JavaScript 初体验
开发语言·前端·javascript·学习·ecmascript
Jun6261 小时前
QT(3)-线程中使用控件
开发语言·qt
xiaoshuaishuai81 小时前
C# AvaloniaUI ProgressBar用法
开发语言·c#
咋吃都不胖lyh1 小时前
LangGraph标准构建示例
开发语言·python
Jun6261 小时前
QT(1)-C/C++库生成和调用
c语言·开发语言·c++·qt
Jun6262 小时前
QT(10)-TCP数据收发
开发语言·qt·tcp/ip
*neverGiveUp*2 小时前
Python基础语法
开发语言·python
努力努力再努力wz2 小时前
【Qt入门系列】一文掌握 Qt 常用显示类控件:QLCDNumber、QProgressBar 与 QCalendarWidget
c语言·开发语言·数据结构·数据库·c++·git·qt
右耳朵猫AI2 小时前
JS/TS周刊2026W21 | Deno2.8RC、Angular22RC、TypeORM1.0
开发语言·javascript·ecmascript