Black screen video output

Continuing the discussion from Step by step, how to compile DTS with include files:

I had time to get back to this a few months ago, and was able to manage to build a DTB for the 2nd gen Cube that partially boots CoreElec. From the dmesg, the OS appears to be loading fairly far in, and may even be semi-functional. But I’m not able to get any video output, other that an active black screen.

I’ve been bouncing back and forth between CE v19.5 and EE v4.6, and I’m encountering the same problem with video output in both ROMs. I got a s905x4 to use as a reference unit, to get a rough idea about how the system should be loading.

I have a couple general questions. Does the device bootloader matter at all if I’m able to get the CE kernel loaded into memory and started? I have seen some comments saying that devices that use older Android firmware may not have bootloaders that work with CE/EE? But I don’t understand why the bootloader version would matter once the kernel has taken over? For reference the Cube uses FireOS7 (Android Pie).

The Cube doesn’t have an ENV partition (#define env nowhere), again I don’t think this should matter as long as I can get the kernel loaded? Are there any env variables from uboot that are vital to the kernel boot process?

I’ve been trying to trouble shoot the broken video output for sometime now, and I have a question about the amhdmitx node in the DTB. The supported s922x devices node looks like the following:

	amhdmitx {
		compatible = "amlogic, amhdmitx";
		dev_name = "amhdmitx";
		status = "okay";
		vend-data = <0x2f>;
		pinctrl-names = "default\0hdmitx_i2c";
		pinctrl-0 = <0x30 0x31>;
		pinctrl-1 = <0x32 0x33>;
		clocks = <0x02 0x56 0x02 0x4f 0x02 0x50 0x02 0x96 0x02 0x8d>;
		clock-names = "venci_top_gate\0venci_0_gate\0venci_1_gate\0hdmi_vapb_clk\0hdmi_vpu_clk";
		interrupts = <0x00 0x39 0x04 0x00 0x03 0x01>;
		interrupt-names = "hdmitx_hpd\0viu1_vsync";
		ic_type = <0x0b>;
		phandle = <0xd7>;

		vend_data {
			vendor_name = "Amlogic";
			product_desc = "MBox Meson Ref";
			vendor_id = <0x00>;
			phandle = <0x2f>;
		};
	};

and the native Cube version is:

	amhdmitx {
		compatible = "amlogic, amhdmitx";
		dev_name = "amhdmitx";
		status = "okay";
		vend-data = <0x3b>;
		pinctrl-names = "default\0hdmitx_i2c";
		pinctrl-0 = <0x3c 0x3d>;
		pinctrl-1 = <0x3e 0x3f>;
		clocks = <0x0d 0x55 0x0d 0x4e 0x0d 0x4f 0x0d 0x95 0x0d 0x8c>;
		clock-names = "venci_top_gate\0venci_0_gate\0venci_1_gate\0hdmi_vapb_clk\0hdmi_vpu_clk";
		interrupts = <0x00 0x39 0x01>;
		interrupt-names = "hdmitx_hpd";
		ic_type = <0x0b>;
		hdmiocp-gpio = <0x26 0x3d 0x00>;
		phandle = <0xf7>;

		vend_data {
			vendor_name = "Amlogic";
			vendor_id = <0x00>;
			phandle = <0x3b>;
		};
	};

Initially I had tried sticking with the default node from Amazon that doesn’t include 0viu1_vsync interrupt. Then I tried going with the version used by the supported device DTBs, but neither produced any video output other than a black screen. I’m not sure if this different configuration is related to a possible video out configuration incompatibility?

Unplugging/plugging the HDMI connector triggers the hdp, and I can see the display information in the uart output.

Do you have any suggestions on what nodes I should be paying attention? Or maybe my problem isn’t the DTB?

I’m attaching my dmseg, and current dts. I do still have a couple audio hardware issues i need to fix including an issue with the snd-usb-audio driver that’s causing a 40sec SCPI timeout. I am working on fixing these too, but I want to make sure that it’s possible to get video output from this device.
dmseg-dts.zip (42.2 KB)

Share your source dts file, otherwise we can’t help.
What SoC is assembled? rev.a or rev.b or rev.c?

And share the dumped Android dtb, not decompiled to.

1 Like

Hi, It’s an s922x rev.b

I’m including the source dts, I’m using to compile for CE/EE. I’m sorry it’s a bit of a work in progress at the moment, so it’s messy. I’ve included the Android DTB, g12brevb-raven-2g is the DTB used by the device.

dts_source-android_dtb.zip (66.7 KB)

It’s way to much modified. And why you use coreelec_g12b_a.dtsi for rev.a when you have rev.b?

Start with this and add other items step by step:

#include "coreelec_g12b.dtsi"

/{
	model = "Amazon Raven";
	coreelec-dt-id = "g12b_s922x_amazon_raven_revb_2g";

	memory@00000000 {
		linux,usable-memory = <0x0 0x100000 0x0 0x7ff00000>;
	};

	/delete-node/ t9015;
	/delete-node/ rtc;
};

&ethmac {
	status = "disabled";
};
1 Like

That was an early mistake, before I realized there were different dtsi files for rev.a and rev.b. That’s a fair point, the amount of changes have gotten a little out of hand. Now that I have a better idea what I’m doing, I should spend some time starting from the beginning again.

I started over with the minimal source dts you recommended. That’s enough to get the device to boot to the audio hardware initiation. On my s905x4 reference device, there is video output ~1.5sec into the loading of the kernel, after HDMITX finishes initiating.

On the Cube the Cube I still get an active black screen ~2sec into the boot. I wanted to check if there is anything I should work on or look at first related to video output before I start making too many dts modifications?
source-dts_compiled-dtb_log.zip (31.0 KB)