Which system do you use? Android, Ubuntu, OOWOW or others?
Android
Which version of system do you use? Please provide the version of the system here:
edge2-android-14-v250708
Also confirmed the issue with some previous versions, including Android 12.1.
Please describe your issue below:
If two displays are connected to the Khadas Edge2 board, one to HDMI and the other one to DisplayPort. The display connected to the display port does often not work properly after reset or reboot of the system. Booting from complete power off state however works 99.9% of the time.
I used a wide variety of different Displays and also various HDMI/DisplayPort cables and adapters. In my opinion this issue happens with any display/cable combination that is basically compatible with the board. It doesn’t matter if HDMI or DisplayPort is used on the display end. To keep it simple, I describe only one particular set.
2nd Display connected to DisplayPort remains black. However, it has some kind of signal.
Checking with dumpsys display it appears as if Android thinks the display is 640x480!?!
Tries
1 - ok
2 - nok
3 - ok
4 - nok
5 - nok
Please note. Sometimes it looks like the display works always and sometimes there is a long series of black screens only cycles. Turning off the power for 5 minutes and then power on everything resolves the problem almost always.
@jkoehler I have tried here 10 times before, but it didn’t come out.
What is the probability of you appearing over there?
What is the resolution of your DP monitor?
Can you verify the Android 13 firmware?
@goenjoy, you are right, the issue doesn’t seem to happen with the Android 13 image (Though I believe I saw it with custom Android 12.1 image).
The display resolution is 1920x1080 and the display runs at 60Hz but it seems like it has no influence.
However, with Android 14 it is relatively easy for me to reproduce.
I swapped the Khadas Edge2 board, cables, adapters and displays several times with basically the same results.
My hunch is there might be some uninitialized variable in play.
I conducted several testes. Please see results below:
edge2-android-12-v230625.img
No official support for dual display
I saw the issue with custom build but it is not important to me
edge2-android-13-v241206
1 - ok
2 - ok
3 - ok
4 - ok
5 - ok
6 - ok
7 - ok
8 - ok
9 - ok
10 - ok
edge2-android-14-v250708 + USB-C Magedok 1920x1080
1 - nok
2 - ok
3 - nok
4 - nok
5 - nok
6 - nok
7 - nok
8 - ok
9 - ok
10 - ok
edge2-android-14-v250708 + USB-C CableMatters HDMI-Adaptor + HDMI Magedock 1920x1080
1 - ok
2 - ok
3 - ok
4 - nok
5 - nok
6 - ok
7 - nok
8 - nok
9 - nok
10 - ok
edge2-android-14-v250708 + USB-C CableMatters HDMI-Adaptor + HDMI Elecrow 1024x600
1 - ok
2 - ok
3 - ok
4 - nok
5 - nok
6 - ok
7 - ok
8 - nok
9 - ok
10 - ok
edge2-android-14-updated + USB-C CableMatters HDMI-Adaptor + HDMI Elecrow 1024x600
1 - ok
2 - nok
3 - ok
4 - nok
5 - ok
6 - nok
7 - ok
8 - nok
9 - nok
10 - ok
@jkoehler I have tried 20 times here, but still haven’t reproduced the problem you mentioned. But on my end, it’s not a type-c to HDMI interface, it’s still a direct type-c interface connection. Please make the following modifications to see if there are any improvements?
kernel-6.1$ git diff
diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts b/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts
index 5266b643eb66..bde9d1189e78 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts
@@ -246,7 +246,7 @@ &i2s5_8ch {
};
&dsi0 {
- status = "okay";
+ status = "disabled";
reset-delay-ms = <20>;
reset-gpios = <&gpio4 RK_PA3 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
@@ -254,7 +254,7 @@ &dsi0 {
};
&dsi0_in_vp2 {
- status = "okay";
+ status = "disabled";
};
&dsi0_in_vp3 {
@@ -262,21 +262,21 @@ &dsi0_in_vp3 {
};
&route_dsi0 {
- status = "okay";
+ status = "disabled";
connect = <&vp2_out_dsi0>;
};
&mipi_dcphy0 {
- status = "okay";
+ status = "disabled";
};
&dsi0_panel {
- status = "okay";
+ status = "disabled";
power-supply = <&vcc3v3_lcd1_en>;
};
&dsi1 {
- status = "okay";
+ status = "disabled";
reset-delay-ms = <20>;
reset-gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
@@ -288,20 +288,20 @@ &dsi1_in_vp2 {
};
&dsi1_in_vp3 {
- status = "okay";
+ status = "disabled";
};
&route_dsi1 {
- status = "okay";
+ status = "disabled";
connect = <&vp3_out_dsi1>;
};
&mipi_dcphy1 {
- status = "okay";
+ status = "disabled";
};
&dsi1_panel {
- status = "okay";
+ status = "disabled";
power-supply = <&vcc3v3_lcd2_en>;
};
If the above modifications still do not improve, please continue with the following modifications based on the previous ones and try again:
kernel-6.1$ git diff
diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts b/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts
index bde9d1189e78..c1322f6fa521 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dts
@@ -186,7 +186,7 @@ &dp0 {
status = "okay";
};
-&dp0_in_vp2 {
+&dp0_in_vp0 {
status = "okay";
};
@@ -225,7 +225,7 @@ &hdmi0 {
status = "okay";
};
-&hdmi0_in_vp0 {
+&hdmi0_in_vp2 {
status = "okay";
};
Dear @goenjoy,
thank you very much for your great support!
Disabling the MIPI interfaces dsi0 and dsi1 (patch #1) solves the issue.
Since I don’t use dsi0 nor dsi1 this solution is very good for my purposes.
Just as a side note: I noticed that the id of the dp display sometimes varies between 2 and 3 if MIPI is enabled. Maybe Android confuses the different display connectors sometimes.
However, thank you very much for providing a workaround.