配置流程:
- 开启usb
- usb需要绑定dp
- dp绑定vp
查看rk3588内部寄存器可知 需要在USB3.0控制器中打开DP0
在设备树中需要在usb3dp端口。
usbc0: fusb302@4e {
......
ports {
port@1 {
reg = <1>;
dp_altmode_mux: endpoint {
remote-endpoint = <&usbdp_phy0_dp_altmode_mux>;
};
};
查看vp与对应的port
打开DP与绑定port
&dp1 {
pinctrl-0 = <&dp1m2_pins>;
pinctrl-names = "default";
status = "okay";
};
&usbdp_phy1 {
rockchip,dp-lane-mux = < 0 1 2 3>;
status = "okay";
};
&dp1_in_vp2 {
status = "okay";
};
文件系统排查
root@ubuntu2004:/sys/class/drm/card0-DP-1# ls
device dpms edid enabled modes power status subsystem uevent
eanegwRK3588平台开发系列讲解(显示篇)DP显示调试方法_rk3588 dp调试-CSDN博客
enable:使能状态
status:连接状态
modes:支持分辨率列表
edid保存 / # cat /sys/class/drm/card0-DP-1/edid > /data/edid.bin
禁用/启用dp
#强制禁⽤ DP
rk3588_s:/ # echo off > /sys/class/drm/card0-DP-1/status
#强制使能 DP
rk3588_s:/ # echo on > /sys/class/drm/card0-DP-1/status
#恢复热插拔检测
rk3588_s:/ # echo detect > /sys/class/drm/card0-DP-1/status
DPCP读写
文件:/drivers/gpu/drm/drm_dp_aux_dev.c
配置:CONFIG_DRM_DP_AUX_CHARDEV=y
读取
#if 后⾯为 aux 节点,当注册两个 DP 接口时,会有 /dev/drm_dp_aux0 和 /dev/drm_dp_aux1
#skip 值为起始的 DPCD 寄存器地址
#count 值为要读取的 DPCD 寄存器的数量
dd if=/dev/drm_dp_aux0 bs=1 skip=$((0x00200)) count=2 status=none | od -tx1
#如下为读取地址为 0x00200 开始的 2 个 DPCD 寄存器的内容
rk3588_s:/ # dd if=/dev/drm_dp_aux1 bs=1 skip=$((0x00200)) count=2 status=none |
od -tx1
0000000 01 00
0000002
写入
#echo 后为要写⼊的值, 如下为需要写⼊两个 16 进制的值,分别为 0x0a, 0x80
#of 后⾯为 aux 节点,当注册两个 DP 接口时,会有 /dev/drm_dp_aux0 和 /dev/drm_dp_aux1
#seek 后为起始的 DPCD 寄存器地址
#count 值为要写⼊的 DPCD 寄存器的数量
#如下指令为把 0x0a 和 0x80 两个值写⼊ 0x100 起始的两个 DPCD 寄存器处
echo -e -n "\x0a\x80" | dd of=/dev/drm_dp_aux0 bs=1 seek=$((0x100)) count=2
status=none
查看dp寄存器
cat /sys/kernel/debug/regmap/fde50000.dp/registers
查看vop状态
root@ubuntu2004:/sys/kernel/debug/dri/0# cat summary
Video Port0: DISABLED
Video Port1: DISABLED
Video Port2: DISABLED
Video Port3: DISABLED
查看时钟
设备树中的设置
文件系统中查看
调整log 是一个值得参考的方式