Jetson TX2i HDMI output on costum board

Hi,

Trying to activate HDMI output on a TX2i supported by a custom board.
The custom board does not posses the GPIO Expander as on the P2597 board (evaluation board).

When I compare the terminal from the TX2i installed on the evaluation board vs. when install on the customer board then the configuration of the HDMI stops (specifically, identify a HDMI cable connectivity).
Terminal on Evaluation board:

[0016.223] I> enabling 'vdd-hdmi' regulator
[0016.238] I> regulator 'vdd-hdmi' already enabled
[0016.242] I> hdmi cable connected
[0016.250] I> setting 'vdd-pex-1v05' regulator to 1050000 micro volts
[0016.260] I> setting 'vdd-1v8' regulator to 1800000 micro volts

Terminal on Custom board:

[0016.075] I> enabling 'vdd-hdmi' regulator
[0016.079] C> GPIO driver for chip_id 0x3 could not be found
[0016.090] I> no valid display unit config found in dtb
[0016.095] W> display init failed

First I tried to modify the following file and flash the TX2i from the PC host including the following modified file: /home/nvidia/jetpack/64_TX2/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pmic-quill-p3489-1000-a00.cfg.

########### GENRIC RAIL for baseboard-specific  configurations
# This section is specific to the Jetson developer kit baseboard (P2597).
# The below configuration should be removed or modified per the requirements of the
# baseboard used. Refer to product documentation for additional information.
# Baseboard: P2597: Expander: 5V0_HDMI_EN
# pmic.generic.1.block[4].type = 1; # I2C Type
# pmic.generic.1.block[4].i2c-controller-id = 0;
# pmic.generic.1.block[4].slave-add = 0xE8; # 7BIt:0x74
# pmic.generic.1.block[4].reg-data-size = 8;
# pmic.generic.1.block[4].reg-add-size = 8;
# pmic.generic.1.block[4].block-delay = 10;
# pmic.generic.1.block[4].count = 2;
# pmic.generic.1.block[4].commands[0].0x07.0xFF = 0xEF;
# pmic.generic.1.block[4].commands[1].0x03.0xFF = 0x10;

# Baseboard: P2597: Expander: Enable 1_8_VDD for 1824 EEPROM
# pmic.generic.1.block[5].type = 1; # I2C Type
# pmic.generic.1.block[5].i2c-controller-id = 0;
# pmic.generic.1.block[5].slave-add = 0xE8; # 7BIt:0x74
# pmic.generic.1.block[5].reg-data-size = 8;
# pmic.generic.1.block[5].reg-add-size = 8;
# pmic.generic.1.block[5].block-delay = 10;
# pmic.generic.1.block[5].count = 2;
# pmic.generic.1.block[5].commands[0].0x07.0x02 = 0x00;
# pmic.generic.1.block[5].commands[1].0x03.0x02 = 0x02;

It did not work.

Then I tried to modify the file /usr/src/hardware/nvidia/platform.t18x/common/kernet-dts/t18x-common-platforms/tegra186-quill-power-tree-p3489-1000-a00-00.dtsi to disconnect any connectivity between the HDMI driver to the regulators in the nvdisplay@15210000 node, I also tried remove the fields avdd_hdmi-supply, avdd_hdmi_pll-supply, vdd_hdmi_5v0-supply :

host1x {
		nvdisplay@15200000 {
			avdd_lcd-supply = <&en_avdd_disp_3v3>;
			dvdd_lcd-supply = <&en_vdd_disp_1v8>;
			avdd_dsi_csi-supply = <&spmic_sd1>;
			outp-supply = <&vpp_lcd>;
			outn-supply = <&vmm_lcd>;
			vdd_lcd_bl-supply = <&battery_reg>;
			vdd_lcd_bl_en-supply = <&vdd_bl_en>;
			/* added hdmi for testing in head 0 */
			avdd_hdmi-supply = <&spmic_ldo7>;
			avdd_hdmi_pll-supply = <&spmic_sd2>;
			vdd_hdmi_5v0-supply = <&vdd_hdmi>;
		};
		nvdisplay@15210000 {
			/*avdd_hdmi-supply = <&spmic_ldo7>;
			avdd_hdmi_pll-supply = <&spmic_sd2>;
			vdd_hdmi_5v0-supply = <&vdd_hdmi>;*/
                        avdd_hdmi-supply = <&battery_reg>;
			avdd_hdmi_pll-supply = <&battery_reg>;
			vdd_hdmi_5v0-supply = <&battery_reg>;
		};
		nvdisplay@15220000 {
			vdd-dp-pwr-supply = <&battery_reg>;
			avdd-dp-pll-supply = <&battery_reg>;
			vdd-edp-sec-mode-supply = <&battery_reg>;
			vdd-dp-pad-supply = <&battery_reg>;
			vdd_hdmi_5v0-supply = <&battery_reg>;
		};
		vi@15700000 {
			avdd_dsi_csi-supply = <&spmic_sd1>;
		};
		nvcsi@150c0000 {
			nvidia,csi_regulator = "avdd_dsi_csi";
		};
	};

No success.

Any suggestions?

Regards.

Detection is where it failed. Detection occurs over the DDC wire (the EDID data uses i2c protocol over this wire). Be sure your DDC is correctly connected, and that any i2c/device-tree configuration is correct for that wire. Make sure levels are correct (I don’t know if you need a level converter or not in your design, but sometimes there is an incorrect 1.8V/3.3V mismatch…I think it is 3.3V as the requirement, but you’ll have to double check, I’m not positive). Also, I believe the power to the i2c is provided by the host instead of the monitor (allowing the monitor to be queried even when turned off).

linuxdev, thanks for the reply.

The I2C lanes were copied from the evaluation board so I expect that the code/configuration utilized on the evaluation board comply with the new custom board. Though we see no signal over these lines they are just pulled up to 3.3[V] by our customer board.

The regulator is not accessible (as it is not assembled on our board) don’t you think that the kernel stops accessing the HDMI if the regulator is not available? and thus does not activate any I2C (EDID) access?

The driver accepts only EDID modes, and the i2c PROM in the monitor is powered by the video cable…someone will need to verify, but it seems your system will never be able to detect video if the power provided to the monitor via the cable is not present. So the lack of regulator is probably fatal to video configuration.

We provide the 5[V] permanently once our custom board is activated. So, we do not need any regulator, at least we think so. The monitor is provide the HDMI 5[V].

Upon connect you should see the i2c traffic over the DDC wire (HDMI is hotplug, you can plug in HDMI at any time). If you can’t see i2c traffic upon connect you probably need to find out why…perhaps the Jetson isn’t sending a query even if it knows of the connect…perhaps the Jetson doesn’t send a query at all for lack of knowing of the connect. Carefully check the device tree and wiring for your design versus the DDC wire. Sorry, I can’t suggest what specific check to make.

linuxdev, This is exactly what I’m asking. Why the TX2i does not start the communication over I2C to get the EDID, is it the missing regulator, and how on a custom board I can eliminate it?

thanks for the try.

Is there anyone in Nvidia that can support me on this?

Thanks.

That’s something I can’t answer, but I suspect the missing regulator is the first thing you should check.

Hi,

Isn’t there anyone at Nvidia’s Support that can support with migrating the Jetson TX2 (or TX2i) to a custom board?

thanks.

igal.kroyter,

This is similar topic.
https://devtalk.nvidia.com/default/topic/1031408/jetson-tx2/pmic-change-to-remove-5v0_hdmi_en-and-enable-hdmi-display-on-custom-carrier-board/

Could you share what status is your HDMI monitor? Does hotplug trigger any new log? Please share the dmesg with us.

WaynWWW, hi,

We had a problem understanding the routing of the lanes. It looks like the DP and HDMI channel 1 share the same physical lines, though TX0 and TX2 are swapped, and this what cause the unstable HDMI output. I have attached a picture from P2597_B04_OrCAD_schematics.pdf page 5.

Of course we had to apply the above changes too.

Thanks for the support.

Igal

Hi, it has no problem, please just follow the OEM DG and schematic.