当前位置: 首页 > news >正文

屏幕与触摸调试

本章配套视频介绍:

../../_images/video.png

《28-屏幕与触摸设置》

【鲁班猫】28-屏幕与触摸设置_哔哩哔哩_bilibili

LubanCat-RK3588系列板卡都支持mipi屏以及hdmi显示屏的显示。

19.1. 旋转触摸屏

参考文章 触摸校准

参考文章 旋转触摸方向

配置触摸旋转方向

1
2
# 1.查看触摸输入设备
xinput list

如下图,可以看到 Goodix Capacitive TouchScreen 的设备, Goodix Capacitive TouchScreen 是野火1080p的触摸屏,如果使用的屏幕是树莓派5寸屏,则显示 fts_ts

注意

需要进入桌面后才能使用xinput命令,请保持进入桌面。如果是用ssh进终端操作,请先输入export DISPLAY=:0

未找到图片

 123456789
10
11
12
13
14
15
16
17
18
# 根据名字列出变量
xinput list-props 'pointer:Goodix Capacitive TouchScreen' | grep "Coordinate Transformation Matrix"# 根据id列出变量
xinput list-props 10 | grep "Coordinate Transformation Matrix"#修改触摸方向(可根据名字修改) 默认方向
xinput set-prop 10 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1#修改触摸方向(可根据名字修改) 向左90度
xinput set-prop 10 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1#修改触摸方向(可根据名字修改) 向右90度
xinput set-prop 10 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1#修改触摸方向(可根据名字修改) 旋转180度
xinput set-prop 10 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1

19.1.1. 永久配置(单屏)

注意

本方法将会永久配置屏幕的触摸方向,配置完成后需要重启或者重启服务才能运行,直到重新修改配置

 123456789
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#修改配置文件
sudo vi /etc/X11/xorg.conf.d/20-modesetting.conf#在文件的后面添加或者修改下面内容(四选一,选择自己要调整的)
#"Goodix Capacitive TouchScreen"是5.5寸屏的修改方法,树莓派屏可以修改为``fts_ts``#(默认,不旋转)
Section "InputClass"Identifier "Goodix Capacitive TouchScreen"Option "Coordinate Transformation Matrix" " 1 0 0 0 1 0 0 0 1 "
EndSection#(默认,向右旋转90度)
Section "InputClass"Identifier "Goodix Capacitive TouchScreen"Option "Coordinate Transformation Matrix" " 0 1 0 -1 0 1 0 0 1 "
EndSection#(默认,向左旋转90度)
Section "InputClass"Identifier "Goodix Capacitive TouchScreen"Option "Coordinate Transformation Matrix" " 0 -1 1 1 0 0 0 0 1 "
EndSection#(默认,旋转180度)
Section "InputClass"Identifier "Goodix Capacitive TouchScreen"Option "Coordinate Transformation Matrix" " -1 0 1 0 -1 1 0 0 1 "
EndSection#修改完成后可以重启或者运行下列命令重启显示服务
sudo systemctl restart lightdm.service

19.1.2. 永久配置(多屏)

注意

当要在多屏上实现触摸的旋转,如果屏幕的名字一样会导致相同名字的屏幕都进行旋转的情况,如果多屏情况下需要分别配置这时候使用id来设置旋转会更好

以下是dsi0和dis1分别接5.5寸屏幕的情况。

 123456789
10
11
12
13
14
15
16
#查看触摸输入设备
xinput list#信息输出如下⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Goodix Capacitive TouchScreen             id=7    [slave  pointer  (2)]
⎜   ↳ Goodix Capacitive TouchScreen             id=8    [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]↳ headset-keys                              id=6    [slave  keyboard (3)]↳ rk805 pwrkey                              id=9    [slave  keyboard (3)]↳ febd0030.pwm                              id=10   [slave  keyboard (3)]↳ Goodix Capacitive TouchScreen             id=11   [slave  keyboard (3)]↳ Goodix Capacitive TouchScreen             id=12   [slave  keyboard (3)]

因为设备树插件是顺序加载的,触摸驱动是顺序注册的,所以以上id为7对应dsi0的触摸,id为8对应dsi1的触摸,可以通过以下脚本分别配置两个屏幕触摸。

 123456789
10
11
12
13
14
15
16
#!/bin/bash#获取dsi0触摸id
dis0_touch_id=$(xinput list | grep "Goodix Capacitive TouchScreen" | cut -f 2 | cut -d "=" -f 2 | head -n 1)
#获取dsi1触摸id
dis1_touch_id=$(xinput list | grep "Goodix Capacitive TouchScreen" | cut -f 2 | cut -d "=" -f 2 | tail -n +2 | head -n 1)#打印id信息
echo dis0_touch_id=$dis0_touch_id
echo dis1_touch_id=$dis1_touch_id#配置dsi0触摸,可自定义旋转方向
xinput set-prop $dis0_touch_id 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1#配置dsi1触摸,可自定义旋转方向
xinput set-prop $dis1_touch_id 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1

19.2. 触摸屏绑定屏幕

1
2
# 1.查看触摸输入设备
xinput list

如下图,可以看到 Goodix Capacitive TouchScreen 的设备, Goodix Capacitive TouchScreen 是野火1080p的触摸屏,如果使用的屏幕是树莓派5寸屏,则显示 fts_ts

因为触摸屏是指针设备,所以我们的触摸屏是要带着 slave  pointer

未找到图片

 123456789
10
11
12
13
14
15
#查看当前的屏幕
xrandr -qDSI-1:mipi屏
DSI-2:mipi屏
HDMI-1:HDMI屏
DP-1:DP屏幕
eDP-1:eDP屏幕小编在用DSI-1,后面以DSI-1作为屏幕修改配置#已知上面的Goodix Capacitive TouchScreen触摸屏的id号为10
#然后通过触摸屏的id号来绑定屏幕xinput map-to-output 10 DSI-1

完成后就可以看到可以支持触摸屏映射了。

19.3. 旋转屏幕方向

19.3.1. 命令行配置

 123456789
10
11
12
13
14
15
16
17
18
19
20
21
22
#查看当前的屏幕
xrandr -qDSI-1:mipi屏
DSI-2:mipi屏
HDMI-1:HDMI屏
DP-1:DP屏幕
eDP-1:eDP屏幕小编在用DSI-1,后面以DSI-1作为屏幕修改配置#旋转屏幕-正常
xrandr --output DSI-1 --rotate normal#旋转屏幕-向左90度
xrandr --output DSI-1 --rotate left#旋转屏幕-向右90度
xrandr --output DSI-1 --rotate right#旋转屏幕-旋转180度
xrandr --output DSI-1 --rotate inverted

19.3.2. 桌面配置

右击打开选择屏幕显示设置,然后可以按照下面图片的方法配置

未找到图片

19.4. 多屏异显

默认情况下为多屏异显,不需要进行配置,打开多个屏幕的设备树插件,接上屏幕即可显示不同内容。

19.5. 多屏同显

19.5.1. 使用命令脚本配置

以下以1080P HDMI屏幕和5.5寸mipi屏幕为例,通过udev规则调用脚本来支持HDMI热插拔时能够同显,通过自启动服务确保启动能够同显:

因为5.5寸屏幕默认是竖屏的,并且只能通过桌面配置图像输出来旋转,无法通过驱动或设备树修改显示方向,所以要通过前面介绍的屏幕和触摸旋转方法进行配置。

19.5.1.1. 创建udev规则
1
2
#创建udev规则文件
sudo vim /etc/udev/rules.d/99-monitor-hotplug.rules

然后在99-monitor-hotplug.rules添加以下内容

1
2
ACTION=="add", SUBSYSTEM=="drm", DEVPATH=="/devices/platform/display-subsystem/drm/card0", RUN+="/home/cat/monitor-hotplug.sh"
ACTION=="remove", SUBSYSTEM=="drm", DEVPATH=="/devices/platform/display-subsystem/drm/card0", RUN+="/home/cat/monitor-hotplug.sh"

然后重新加载规则:

1
2
sudo udevadm control --reload-rules
sudo systemctl restart udev

以上规则是插入和拔掉HDMI都会调用/home/cat/monitor-hotplug.sh脚本。

19.5.1.2. 自启动调用配置

在桌面登录用户的家目录下创建启动文件:

1
2
3
4
5
#以cat用户为例
mkdir /home/cat/.config/autostart#创建配置文件
vim /home/cat/.config/autostart/screen_settings.desktop

在screen_settings.desktop文件中添加以下内容:

1
2
3
4
5
6
7
8
[Desktop Entry]
Type=Application
Exec=/home/cat/monitor-hotplug.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=My App
Comment=Start My App on login

以上自启动配置是启动自动调用/home/cat/monitor-hotplug.sh脚本

19.5.1.3. 创建同显脚本
1
2
#创建udev调用的脚本
sudo vim /home/cat/monitor-hotplug.sh

然后在monitor-hotplug.sh添加以下内容

 123456789
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bashexport DISPLAY=:0# Define your desired resolutions and settings
DSI_MODE="1080x1920"
HDMI_MODE="1920x1080"
ROTATION="right"# Function to detect HDMI connection status
function check_hdmi_connection {HDMI_STATUS=$(</sys/class/drm/card0-HDMI-A-1/status)if [ "$HDMI_STATUS" = connected ]; thenxrandr --output DSI-1 --mode $DSI_MODE --rotate $ROTATIONxrandr --output HDMI-1 --mode $HDMI_MODExrandr --output HDMI-1 --same-as DSI-1 --autoelif [ "$HDMI_STATUS" = disconnected ]; thenxrandr --output DSI-1 --mode $DSI_MODE --rotate $ROTATIONfi
}# Run the function to check HDMI connection status
check_hdmi_connection

然后添加脚本执行权限:

1
sudo chmod 777 /home/cat/monitor-hotplug.sh

以上monitor-hotplug.sh脚本中就使用了前面介绍的命令进行旋转和同显,截取代码如下:

1
2
3
xrandr --output DSI-1 --mode $DSI_MODE --rotate $ROTATION
xrandr --output HDMI-1 --mode $HDMI_MODE
xrandr --output HDMI-1 --same-as DSI-1 --auto

重启后进入可以发现两个屏幕同显了,并且拔掉HDMI再插入也弄够进行同显。

19.6. 关闭桌面登录及保留屏幕开启

一般屏幕开启与桌面登录会绑定在一起,你开启了屏幕,屏幕就会作为一个新的终端, 下文教你如何在使用屏幕的情况下关闭屏幕终端

1
2
3
4
5
6
7
8
9
#关闭用户图形界面,使用tty登录。sudo systemctl set-default multi-user.target
sudo reboot#开启用户图形界面。sudo systemctl set-default graphical.target
sudo reboot

19.7. 屏幕调试方法

19.7.1. mipi 屏幕

mipi屏幕调试一般都要着重关注屏幕的上电初始序列 :panel-init-sequence和下电初始化序列:panel-exit-sequence。

准备工作:在拿到一块新mipi屏幕的时候,一般屏幕厂商都会给我们两样东西,分别是 屏幕规格书 和 屏幕初始化序列。 以下拿野火5.5寸1080p屏幕为例。屏幕的资料请查阅 (野火)5.5寸 1080p 屏幕资料文档

在 屏幕规格书 可以获取到屏幕参数,在 初始化序列中 可以获取到屏幕的panel-init-sequence代码。如下图:

未找到图片

19.7.1.1. 调试步骤分析:

mipi屏幕的点亮流程如下,以猫2为例。

  • 步骤一先将屏幕的背光点亮

在猫2的设备树配置的节点中,我们需要添加关于背光的配置。如图:

未找到图片

由mipi屏幕的接口电路图得知,屏幕背光由PWM4去配置,如下

未找到图片

按照rk屏幕背光的配置方法,我们可以得到如下backlight节点

 123456789
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 backlight: backlight {status = "okay";compatible = "pwm-backlight";pwms = <&pwm4 0 50000 0>;brightness-levels = <95  95  95  95  95  95  95  9595  95  95  95  95  95  95  9595  95  95  95  95  95  95  9595  95  95  95  95  95  95  9595  95  95  95  95  95  95  9595  95  95  95  95  95  95  9595  95  95  95  95  95  95  9595  95  95  95  95  95  95  9595  95  95  95  95  95  95  9595  95  95  95  95  95  95  9595  95  95  95  95  95  95  9588  89  90  91  92  93  94  9596  97  98  99 100 101 102 103104 105 106 107 108 109 110 111112 113 114 115 116 117 118 119120 121 122 123 124 125 126 127128 129 130 131 132 133 134 135136 137 138 139 140 141 142 143144 145 146 147 148 149 150 151152 153 154 155 156 157 158 159160 161 162 163 164 165 166 167168 169 170 171 172 173 174 175176 177 178 179 180 181 182 183184 185 186 187 188 189 190 191192 193 194 195 196 197 198 199200 201 202 203 204 205 206 207208 209 210 211 212 213 214 215216 217 218 219 220 221 222 223224 225 226 227 228 229 230 231232 233 234 235 236 237 238 239240 241 242 243 244 245 246 247248 249 250 251 252 253 254 255>;default-brightness-level = <200>;};
  • 步骤二根据屏幕规格书和初始化序列配置dsi节点

屏幕初始化代码部分截图如下。

未找到图片

在linux系统中,LCD屏会有初始化和反初始化的过程。我们需要在MIPI DSI驱动中,将这些厂家提供的初始化代码转换为相应的DCS序列。

由于屏幕厂商没有提供寄存器手册,所以我不用知道他们到底设置了哪一个寄存器,我们只需要将初始化代码转化为如下格式的设备树配置就行了。

1
命令类型+延时+数据长度+数据

在屏幕初始化序列代码中包含三类指令,分别是: SET_GENERIC W_D delay_ms

在讲转换之前,我们先来看一下rk屏幕设备树初始化序列的命令类型。

  • 0x05 命令类型: 单字节数据 (DCS Short Write, no parameters)

  • 0x15 命令类型: 双字节数据 (DCS Short Write, 1 parameter)

  • 0x39 命令类型: 多字节数据 (DCS Long Write, n parameters n > 2)

那么我们该如何转换呢?首先,我们先数一下个数,以 SET_GENERIC 为开始,下一个 SET_GENERIC 为结束作为一次数据发送,数一数一共有几个数据。其次看延时,看看厂家提供的初始化代码里面有没有延时。

那么对于双字节序列:

1
2
3
 //Set_D2SET_GENERIC(2);W_D(0xD2);W_D(0x77);

我们将其转化成如下配置:

1
 15 00 02 D2 77

对于多字节序列:

1
2
 SET_GENERIC(4);W_D(0xB9);W_D(0xFF);W_D(0x83);W_D(0x99);

我们将其转化成如下配置:

1
 39 00 04 B9 FF 83 99

对于单字节延时序列:

1
2
3
 SET_GENERIC(1);W_D(0x11);delay_ms(200);

我们将其转化成如下配置:

1
 05 C8 01 11

将初始化序列代码整理一下就可以得到RK 屏幕的DCS序列,如下

 123456789
10
11
12
13
14
15
16
17
18
19
20
21
panel-init-sequence = [39 00 04 B9 FF 83 9915 00 02 D2 7739 00 10 B1 02 04 74 94 01 32 33 11 11 AB 4D 56 73 02 0239 00 10 B2 00 80 80 AE 05 07 5A 11 00 00 10 1E 70 03 D415 00 02 36 0239 00 2D B4 00 FF 02 C0 02 C0 00 00 08 00 04 06 00 32 04 0A 08 21 03 01 00 0F B8 8B 02 C0 02 C0 00 00 08 00 04 06 00 32 04 0A 08 01 00 0F B8 0139 05 22 D3 00 00 00 00 00 00 06 00 00 10 04 00 04 00 00 00 00 00 00 00 00 00 00 01 00 05 05 07 00 00 00 05 4039 05 21 D5 18 18 19 19 18 18 21 20 01 00 07 06 05 04 03 02 18 18 18 18 18 18 2F 2F 30 30 31 31 18 18 18 1839 05 21 D6 18 18 19 19 40 40 20 21 06 07 00 01 02 03 04 05 40 40 40 40 40 40 2F 2F 30 30 31 31 40 40 40 4039 00 11 D8 A2 AA 02 A0 A2 A8 02 A0 B0 00 00 00 B0 00 00 0015 00 02 BD 0139 00 11 D8 B0 00 00 00 B0 00 00 00 E2 AA 03 F0 E2 AA 03 F015 00 02 BD 0239 00 09 D8 E2 AA 03 F0 E2 AA 03 F015 00 02 BD 0039 00 03 B6 8D 8D39 05 37 E0 00 0E 19 13 2E 39 48 44 4D 57 5F 66 6C 76 7F 85 8A 95 9A A4 9B AB B0 5C 58 64 77 00 0E 19 13 2E 39 48 44 4D 57 5F 66 6C 76 7F 85 8A 95 9A A4 9B AB B0 5C 58 64 7705 C8 01 1105 C8 01 29];

再结合屏幕规格书中的屏幕参数,得到如下配置。

未找到图片

未找到图片

 123456789
10
11
12
13
14
15
16
17
18
 disp_timings0: display-timings {native-mode = <&dsi0_timing0>;dsi0_timing0: timing0 {clock-frequency = <131376000>;hactive = <1080>;vactive = <1920>;hsync-len = <10>;hback-porch = <20>;hfront-porch = <10>;vsync-len = <5>;vback-porch = <20>;vfront-porch = <10>;hsync-active = <0>;vsync-active = <0>;de-active = <0>;pixelclk-active = <0>;};};
  • 步骤三打开对应的dsi节点,开机logo,pwm等

 123456789
10
11
12
13
14
15
16
17
18
19
20
&route_dsi0 {status = "okay";connect = <&vp1_out_dsi0>;
};&video_phy0 {status = "okay";
};&dsi0_in_vp0 {status = "disabled";
};&dsi0_in_vp1 {status = "okay";
};&pwm4 {status = "okay";
};
  • 步骤四编译烧写,调试屏幕

19.7.2. lvds 屏幕

  • GM8775C

原生显示接口不支持双通道LVDS屏幕的数据输出,因此需要借助显示转换芯片才能实现单/双通道lvds屏幕的驱动。下面介绍使用GM8775C芯片的显 示方案。以rk3566 LubanCat-1H为例。

GM8775C 型 DSI 转 LVDS 发送器主要实现将 MIPI DSI 转单/双通道 LVDS功能,电路图如下

未找到图片

GM8775C 型 DSI 转 LVDS 发送器主要实现将 MIPI DSI 转单/双通道 LVDS功能,MIPI 支持 1/2/3/4 通道可选,最大支持 4Gbps 速率。 GM8775C 主要应用于前端视频应用处理器和后端显示设备之间,用于做 DSI 到 LVDS转换驱动输出功能。前端视频应用处理器输出 4lane DSI 数据,并 同步输出 1lane DSI 时钟信号。 GM8775C 将该 DSI 信号转换成 LVDS 差分信号输出,驱动后级显示器完成转换、传输和显示功能。示意图如下

未找到图片

以野火在售的单通道lvds屏幕为例,panel-init-sequence 需要填写 MIPI 向 GM8775C 芯片下发的寄存器参数,根据屏幕时序参数和硬件连接情况,此 处借助 GM8775C 配套的上位机软件,在软件界面中设置屏幕的参数,即可得到转换好的实际寄存器设置参数。

屏幕参数如下

 123456789
10
11
12
13
14
15
16
17
18
dsi0_timing0: timing0 {clock-frequency = <71107200>;hactive = <1280>;vactive = <800>;hsync-len   = <32>;hback-porch = <80>;hfront-porch= <48>; //1440vsync-len    = <6>;vback-porch  = <14>;vfront-porch = <3>;  //823hsync-active = <0>;vsync-active = <0>;de-active = <0>;pixelclk-active = <0>;};

上位机软件配置如下

未找到图片

mipi时钟计算 dsi clk = Bitclk / 2  = H-total x V-total x fps x 位深 / lane number / 2

后续加上SSR展频,得到完整panel-init-sequence配置

 123456789
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
     panel-init-sequence = [23 00 02 27 AA23 00 02 48 0223 00 02 B6 2023 00 02 01 0023 00 02 02 2023 00 02 03 3523 00 02 04 0823 00 02 05 2023 00 02 06 0A23 00 02 07 0023 00 02 08 0323 00 02 09 0623 00 02 0A 0323 00 02 0B 8223 00 02 0C 2723 00 02 0D 0123 00 02 0E 8023 00 02 0F 2023 00 02 10 2023 00 02 11 0323 00 02 12 1B23 00 02 13 0323 00 02 14 0123 00 02 15 2323 00 02 16 4023 00 02 17 0023 00 02 18 0123 00 02 19 2323 00 02 1A 4023 00 02 1B 0023 00 02 1E 4623 00 02 51 3023 00 02 1F 1023 00 02 2A 01//如下为SSR展频,不加可能点不亮23 00 02 6A     0823 00 02 6C     9E23 00 02 6D 0723 00 02 6E     0023 00 02 6F     8A23 00 02 70 1923 64 02 71 00];

19.7.3. edp 屏幕

edp屏幕的适配较为简单,只需要修改下时序即可。野火在售的edp屏幕的设备树插件配置如下:

  123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
     #include <dt-bindings/gpio/gpio.h>#include <dt-bindings/pinctrl/rockchip.h>#include <dt-bindings/display/drm_mipi_dsi.h>#include <dt-bindings/interrupt-controller/irq.h>#include <dt-bindings/display/rockchip_vop.h>/ {fragment@0 {target = <&route_edp>;__overlay__ {status = "okay";connect = <&vp0_out_edp>;};};fragment@1 {target = <&edp_phy>;__overlay__ {status = "okay";};};fragment@2 {target = <&edp_in_vp0>;__overlay__ {status = "okay";};};fragment@3 {target = <&edp_in_vp1>;__overlay__ {status = "disabled";};};fragment@4 {target = <&edp>;__overlay__ {status = "okay";// hpd-gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>; //热插拔信号检测force-hpd; //强制hpd,忽略物理hdp信号ports {#address-cells = <1>;#size-cells = <0>;port@1 {reg = <1>;edp_out_panel: endpoint@0 {remote-endpoint = <&panel_in_edp>;};};};};};fragment@5 {target-path = "/";__overlay__ {edp_panel: edp-panel {compatible = "simple-panel";backlight = <&backlight_lvds_edp>;status = "okay";//bus-format = <MEDIA_BUS_FMT_RBG888_1X24>;prepare-delay-ms = <100>; //AUX通信前延时enable-delay-ms = <100>;display-timings {native-mode = <&timing0>;timing0: timing0 {clock-frequency = <75590000>;hactive = <1280>;vactive = <800>;hfront-porch = <126>;hsync-len = <100>;hback-porch = <10>;vfront-porch = <16>;vsync-len = <12>;vback-porch = <3>;hsync-active = <0>;vsync-active = <0>;de-active = <0>;pixelclk-active = <0>;};};ports {panel_in_edp: endpoint {remote-endpoint = <&edp_out_panel>;};};};};};fragment@6 {target = <&route_hdmi>;__overlay__ {status = "disabled";};};fragment@7 {target = <&hdmi_in_vp0>;__overlay__ {status = "disabled";};};fragment@8 {target = <&hdmi_in_vp1>;__overlay__ {status = "disabled";};};fragment@9 {target = <&hdmi>;__overlay__ {status = "disabled";};};fragment@10 {target = <&vp0>;__overlay__ {rockchip,plane-mask = <(1 << ROCKCHIP_VOP2_CLUSTER0 | 1 << ROCKCHIP_VOP2_ESMART0 | \1 << ROCKCHIP_VOP2_SMART0)>;rockchip,primary-plane = <ROCKCHIP_VOP2_SMART0>;};};};
http://www.xdnf.cn/news/427303.html

相关文章:

  • Retrofit vs Feign: 介绍、对比及示例
  • 关于 javax.validation.constraints的详细说明
  • Visual Studio 项目 .gitignore 文件指南
  • 如何界定合法收集数据?
  • 【C++】【设计模式】生产者-消费者模型
  • EDR与XDR如何选择适合您的网络安全解决方案
  • 自我奖励语言模型:突破人类反馈瓶颈
  • WebGIS开发面试题:前端篇(六)
  • 【递归、搜索与回溯】专题一:递归(二)
  • electron 基础知识
  • 软考软件评测师——计算机组成与体系结构(分级存储架构)
  • 当三维地理信息遇上气象预警:电网安全如何实现“先知先觉”?
  • 项目中会出现的css样式
  • MQTT协议详解:物联网通信的轻量级解决方案
  • JMeter同步定时器 模拟多用户并发访问场景
  • Qt进阶开发:QTcpSocket的详解
  • Leetcode 3542. Minimum Operations to Convert All Elements to Zero
  • APISQL免费版安装教程(视频)
  • java刷题基础知识
  • 【Folium】使用离线地图
  • 我的MCP相关配置记录
  • Cursor 编辑器 的 高级使用技巧与创意玩法
  • JavaScript异步编程 Async/Await 使用详解:从原理到最佳实践
  • 基于RT-Thread的STM32F4开发第三讲——DAC
  • 基于TI AM6442+FPGA解决方案,支持6网口,4路CAN,8个串口
  • 《ffplay 读线程与解码线程分析:从初始化到 seek 操作,对比视频与音频解码的差异》
  • Vue 3.5 :新特性全解析与开发实践指南
  • MQTT 协议详解:物联网通信的利器
  • 【Unity】WebGL开发问题汇总
  • 专栏项目框架介绍