TX2 HDMI dual display can't work correctly on R32.1/R32.2

Hi I’m trying to be available dual display via HDMI on BSP version R32.1 and R32.2.
The method I’m trying can work on R28.2 and R28.2.1 but can’t work on newer BSPs.
The carrier board now use is own designed carrier board and it is for Jetson TX2.

The phenomenon is as below:

  1. Connect display to both of HDMI ports before booting -> Both of displays work fine.
  2. Connect display to port 1 -> Display 1 works fine but system freezes when another one is connected.
  3. Connect display to port 2 -> Display 2 works fine and another display works fine even if another one is connected.

I’d like to solve the 2nd situation above. How can I solve it?

We had similar case from other forum users recently.

Please note that your log is being truncated by the forum.

Hello WayneWWW,
Thank you for your reply and sorry for too long post.
I’ve checked the forum but I can’t find the way to solve the issue yet.
I got the following log when I connect display 2 with pattern 2.

[   68.891071] tegradc 15210000.nvdisplay: unblank
[   68.891078] tegradc 15200000.nvdisplay: blank - powerdown
[   76.615816] usb 1-2: USB disconnect, device number 5
[   76.615840] usb 1-2.1: USB disconnect, device number 6
[   76.724687] usb 1-2.2: USB disconnect, device number 7
[   77.045516] usb usb1: usb_suspend_both: status 0
[   77.045544] tegra-xusb 3530000.xhci: entering ELPG
[  160.827110] edid invalid
[  161.060978] CPU5: SError detected, daif=1c0, spsr=0x800000c5, mpidr=80000103, esr=bf40c000
[  161.060992] CPU4: SError detected, daif=1c0, spsr=0x800000c5, mpidr=80000102, esr=bf40c000
[  161.061007] CPU3: SError detected, daif=1c0, spsr=0x800000c5, mpidr=80000101, esr=bf40c000
[  161.061061] CPU0: SError detected, daif=140, spsr=0x40000145, mpidr=80000100, esr=bf40c000
[  161.063813] ROC:IOB Machine Check Error:
[  161.063829]   Address Type = Non-Secure MMIO
[  161.063901]   Address = 0x1554045c (Unknown Device)
[  161.160876] CPU4: SError detected, daif=140, spsr=0x40000045, mpidr=80000102, esr=bf40c000
[  161.163508] ROC:IOB Machine Check Error:
[  161.163514]   Address Type = Non-Secure MMIO
[  161.163528]   Address = 0x1554045c (Unknown Device)
[  161.163607] CPU0: SError detected, daif=140, spsr=0x40000045, mpidr=80000100, esr=bf000002
[  161.260639] CPU0: SError detected, daif=140, spsr=0x40000045, mpidr=80000100, esr=bf40c000
[  161.357455] CPU4: SError detected, daif=140, spsr=0x80000045, mpidr=80000102, esr=bf000002
[  161.360020] ROC:CCE Machine Check Error:
[  161.360027]   Address Type = Secure DRAM
[  161.360038]   Address = 0x0 (Unknown Device)
[  161.360279] ROC:IOB Machine Check Error:
[  161.360283]   Address Type = Non-Secure MMIO
[  161.360289]   Address = 0x1554045c (Unknown Device)
[  161.360375] CPU0: SError detected, daif=140, spsr=0x40000045, mpidr=80000100, esr=bf000002
[  161.457330] CPU4: SError detected, daif=1c0, spsr=0xc5, mpidr=80000102, esr=bf000002
[  161.459940] ROC:IOB Machine Check Error:
[  161.459945]   Address Type = Non-Secure MMIO
[  161.459954]   Address = 0x1554045c (Unknown Device)
[  161.460047] CPU0: SError detected, daif=140, spsr=0x40000045, mpidr=80000100, esr=bf40c000
[  161.550692] tegradc 15200000.nvdisplay: blank - powerdown
[  161.550722] tegradc 15200000.nvdisplay: unblank
[  161.557338] CPU4: SError detected, daif=140, spsr=0x40000045, mpidr=80000102, esr=bf000002
[  161.557345] CPU0: SError detected, daif=140, spsr=0x40000045, mpidr=80000100, esr=bf40c000
[  161.559952] ROC:IOB Machine Check Error:
[  161.559958]   Address Type = Non-Secure MMIO
[  161.559974]   Address = 0x1554045c (Unknown Device)
[  161.560024] CPU5: SError detected, daif=1c0, spsr=0x800000c5, mpidr=80000103, esr=bf000002
[  161.753893] CPU4: SError detected, daif=140, spsr=0x80000045, mpidr=80000102, esr=bf000002
[  161.754785] Parent Clock set for DC plld3
[  161.756640] ROC:CCE Machine Check Error:
[  161.756644]   Address Type = Secure DRAM
[  161.756652]   Address = 0x0 (Unknown Device)
[  161.756893] ROC:IOB Machine Check Error:
[  161.756897]   Address Type = Non-Secure MMIO
[  161.756903]   Address = 0x1554045c (Unknown Device)
[  161.756951] CPU5: SError detected, daif=1c0, spsr=0x800000c5, mpidr=80000103, esr=bf00c002
[  161.853938] CPU4: SError detected, daif=1c0, spsr=0xc5, mpidr=80000102, esr=bf000002
[  161.952639] CPU0: SError detected, daif=140, spsr=0x60000045, mpidr=80000100, esr=bf000002
[  161.954076] ROC:IOB Machine Check Error:
[  161.954079]   Address Type = Non-Secure MMIO
[  161.954085]   Address = 0x1554045c (Unknown Device)
[  161.955074] CPU5: SError detected, daif=1c0, spsr=0x800000c5, mpidr=80000103, esr=bf40c000
[  162.052244] CPU0: SError detected, daif=140, spsr=0x40000045, mpidr=80000100, esr=bf000002
[  162.052250] CPU4: SError detected, daif=140, spsr=0x40000045, mpidr=80000102, esr=bf000002
[  162.054741] ROC:CCE Machine Check Error:
[  162.054745]   Address Type = Secure DRAM
[  162.054751]   Address = 0x0 (Unknown Device)
[  162.054993] ROC:IOB Machine Check Error:
[  162.054996]   Address Type = Non-Secure MMIO
[  162.055002]   Address = 0x1554045c (Unknown Device)
[  162.055050] CPU5: SError detected, daif=1c0, spsr=0x800000c5, mpidr=80000103, esr=bf00c002
[  162.152081] CPU0: SError detected, daif=140, spsr=0x40000045, mpidr=80000100, esr=bf000002
[  162.154653] ROC:IOB Machine Check Error:
[  162.154660]   Address Type = Non-Secure MMIO
[  162.154675]   Address = 0x1554045c (Unknown Device)
[  162.251621] CPU5: SError detected, daif=1c0, spsr=0x800000c5, mpidr=80000103, esr=bf40c000
[  162.348470] CPU4: SError detected, daif=140, spsr=0x40000045, mpidr=80000102, esr=bf00c002
[  162.351082] ROC:CCE Machine Check Error:
[  162.351086]   Address Type = Secure DRAM
[  162.351097]   Address = 0x0 (Unknown Device)
[  162.351337] ROC:IOB Machine Check Error:
[  162.351340]   Address Type = Non-Secure MMIO
[  162.351347]   Address = 0x1554045c (Unknown Device)
[  162.351408] CPU0: SError detected, daif=140, spsr=0x40000045, mpidr=80000100, esr=bf000002
[  162.448709] CPU4: SError detected, daif=140, spsr=0x40000045, mpidr=80000102, esr=bf000002
[  162.448722] CPU0: SError detected, daif=140, spsr=0x40000045, mpidr=80000100, esr=bf40c000

Note: At this moment I used nvdisplay@15210000 for display0(sor1) and nvdisplay@15200000 for display1(sor).
Can this phenomenon also be solved by modifying win-mask?

Hi WayneWWW,

I’ve tried the solution I can find on the forum you mentioned.
I can’t get any improved result. It causes same phenomenon and gives the log I uploaded previous post.

I’d very appreciate it if you can let me know another way to solve this phenomenon.

Thank you.

You could follow up the device tree setup as the user “kuznetsovn”.

Actually we didn’t have any users have CPU SError when hotplug display. Does this happen to every tx2 modules?

Please at least compare your device tree with the one user kuznetsovn has and shared it with us.

Hi WayneWWW,

Thank you for your reply!
I’ll compare with his device tree with my own and try it on another TX2 module.
I’ll update the status after check two points.

Thank you.

Hi WayneWWW,

Thank for your patience.
I got different result with kuznetsovn’s device tree.

  1. Connect display to both of HDMI ports before booting, freeze while booting.
  2. Connect display to port 1, Display 1 works fine and HDMI2 can be hot-plugged but can output only 1280x720.
  3. Connect display to port 2, HDMI2 doesn’t output signal. Nothing displayed even though plugged HDMI1.

Currently I got an error log when I hot-plug HDMI2 in case 2 above.

[ 1844.373691] tegradc 15220000.nvdisplay: blank - powerdown
[ 1851.353942] tegra-i2c 31b0000.i2c: no acknowledge from address 0x50
---------------------------------delete-------------------------------
[ 1852.500474] tegra-i2c 31b0000.i2c: no acknowledge from address 0x50
[ 1852.509255] tegradc 15220000.nvdisplay: hdmi: edid read failed
[ 1852.515155] tegradc 15220000.nvdisplay: hdmi: using fallback edid
[ 1852.515237] tegradc 15220000.nvdisplay: blank - powerdown
[ 1852.515246] tegradc 15220000.nvdisplay: unblank
[ 1852.515597] Parent Clock set for DC plld3
[ 1852.518381] tegradc 15220000.nvdisplay: hdmi: tmds rate:74250K prod-setting:prod_c_hdmi_54m_111m
[ 1852.519640] tegradc 15220000.nvdisplay: hdmi: get RGB quant from EDID.
[ 1852.519647] tegradc 15220000.nvdisplay: hdmi: get YCC quant from EDID.
[ 1852.523201] extcon-disp-state external-connection:disp-state: cable 46 state 1
[ 1852.523203] Extcon AUX0(HDMI) enable
[ 1852.523251] extcon-disp-state external-connection:disp-state: cable 40 state 1 already set.
[ 1852.523253] Extcon HDMI: HPD enabled
[ 1852.523314] tegradc 15220000.nvdisplay: hdmi: plugged
[ 1852.527085] tegradc 15210000.nvdisplay: unblank
[ 1852.527094] tegradc 15220000.nvdisplay: blank - powerdown
[ 1852.553156] extcon-disp-state external-connection:disp-state: cable 46 state 0
[ 1852.553157] Extcon AUX0(HDMI) disable
[ 1852.598756] tegradc 15210000.nvdisplay: unblank
[ 1852.598763] tegradc 15220000.nvdisplay: blank - powerdown
[ 1852.606202] tegradc 15210000.nvdisplay: unblank
[ 1852.606211] tegradc 15220000.nvdisplay: blank - powerdown
[ 1852.606225] tegradc 15220000.nvdisplay: unblank
[ 1852.639980] Parent Clock set for DC plld3
[ 1852.643528] tegradc 15220000.nvdisplay: hdmi: tmds rate:74250K prod-setting:prod_c_hdmi_54m_111m
[ 1852.647262] tegradc 15220000.nvdisplay: hdmi: get RGB quant from EDID.
[ 1852.647270] tegradc 15220000.nvdisplay: hdmi: get YCC quant from EDID.
[ 1852.650800] extcon-disp-state external-connection:disp-state: cable 46 state 1
[ 1852.650801] Extcon AUX0(HDMI) enable
[ 1852.650886] tegradc 15220000.nvdisplay: unblank
[ 1852.651498] tegra_nvdisp_program_final_bw_settings: LA/PTSA failed w/ bw=1059023 KB/s,freq=20400000 Hz

Does this error mean one of i2c doesn’t work correctly because of H/W issue?
I suppose that HDMI2 port also has register since it can work on R28.2.1.

Thank you.

Hi,

May I know if there is any dummy regulator (battery_reg) in your device tree for HDMI?

We’ve met many users who have same synopsis.The board can work on rel-28.2.1 but fail after rel-32.
It turned out most of them using battery_reg as their power supply in device tree.

Hi WayneWWW,

Sorry for my delayed response, I’ve been in a business trip for a week.
I checked my device tree for HDMI in “tegra186-quill-power-tree-p3310-1000-a00-00.dtsi”.

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>;
		};
		nvdisplay@15220000 {
			avdd_hdmi-supply = <&spmic_ldo7>;
			avdd_hdmi_pll-supply = <&spmic_sd2>;
			vdd_hdmi_5v0-supply = <&vdd_hdmi>;

And I checked “tegra186-cvb-prod-2597-b00-p3310-1000-a00-00.dtsi” also and there is no dummy regulator found.

vdd_hdmi: regulator@3 {
			compatible = "regulator-fixed-sync";
			reg = <3>;
			regulator-name = "vdd-hdmi";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio_i2c_0_74 12 1>;
			enable-active-high;
			regulator-always-on;
			regulator-boot-on;
};

I tried to add another regulator for HDMI2 as the following and apply it to “nvdisplay@15220000”, then the i2c error has gone but hotplug issue still persists.

vdd_hdmi2: regulator@19 {
			compatible = "regulator-fixed-sync";
			reg = <19>;
			regulator-name = "vdd-hdmi2";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio_i2c_0_74 11 1>;
			enable-active-high;
			regulator-always-on;
			regulator-boot-on;
		};

Is there any point to be checked?

Thank you.

yo2avtj,

How about the test between different tx2 modules? Does this happen on every of them?

Hi WayneWWW,

Sorry for kept you waiting.
Now both of displays can work correctly and hot-plug also working.
I suppose made any mistakes somewhere since the issue is solved after compile it from source file again.
No modifying is needed for device-tree which I modified before.

Thank you for your help!

Ok, glad to hear it is resolved.

Would you mind attaching your final dts here for other forum user to take as a reference?

Hi WayneWWW,

No, not at all.
I need several days to reconfirm regarding my device tree.
After process it, I’m going to leave the files here.

Thank you.

Hi WayneWWW,

Here are dts files I modified.
https://drive.google.com/drive/folders/1RCqkulcqi3PjjHJnbYC1m4ib95sDHEXG?usp=sharing

Some of them might not need to be modified but I don’t have enough time to check it.
Even though modified all of uploaded files, still need to modify “tegra186-quill-p3310-1000-c03-00-base.dtb” file after compile source,
since I can’t find out which item overwrites the final dtb file thus modified c03 file is here also.

It’s very helpful for me if you can let me know regarding overwrite mechanism.

Thank you.

We notice the pinmux has problems. Please try to use the latest pinmux from download center to see if the cpu error is gone or not.