R32.3.1 mipi dsi lcd

please answer #17

[ 43.541159] tps65132 0-003e: Probe deffered

using your dtb from #15, got the above message.

Help still not getting any dsi clocks out of the nvidia.

Where exactly is the tps65132 located, the dev kit does not show any tps65132, there are tps53015 and tps22915 on the dev kit.

I am using a jetson tx2, so how long do I have to wait to get the dtb to control the tx2 hardware and the dev kit hardware

my hardware looks like this.

gpiochip4: GPIOs 216-223, parent: platform/max77620-gpio, max77620-gpio, can sleep:
gpio-216 ( |external-connection:) in hi
gpio-221 ( |spmic_gpio_input ) in lo
gpio-222 ( |spmic_gpio_input ) in hi

gpiochip3: GPIOs 224-239, parent: i2c/0-0077, tca9539, can sleep:
gpio-227 ( |en-vdd-sys ) out lo
gpio-228 ( |lcd-bias-rails ) out hi
gpio-233 ( |en-vdd-cam ) out lo
gpio-234 ( |en-vdd-cam-1v2 ) out lo

gpiochip2: GPIOs 240-255, parent: i2c/0-0074, tca9539, can sleep:
gpio-240 ( |vdd-usb2-5v ) out lo
gpio-241 ( |en-vdd-ts-1v8 ) out hi
gpio-242 ( |en-vdd-ts-hv-3v3 ) out hi
gpio-243 ( |en-vdd-disp-3v3 ) out hi
gpio-244 ( |vdd-fan ) out lo
gpio-247 ( |en-mdm-pwr-3v7 ) out lo
gpio-249 ( |gpio-249 ) out hi
gpio-250 ( |dis-vdd-1v2 ) out hi
gpio-252 ( |vdd-hdmi ) out hi
gpio-253 ( |en-vdd-cam-hv-2v8 ) out lo

gpiochip1: GPIOs 256-319, parent: platform/c2f0000.gpio, tegra-gpio-aon:
gpio-259 ( |GPIO3_PS.03-output-h) out hi
gpio-272 ( |temp-alert ) in hi
gpio-312 ( |Power ) in hi
gpio-313 ( |Volume Up ) in hi
gpio-314 ( |Volume Down ) in hi
gpio-315 ( |wifi-wake-ap ) in lo
gpio-316 ( |bt_host_wake ) in lo

gpiochip0: GPIOs 320-511, parent: platform/2200000.gpio, tegra-gpio:
gpio-381 ( |reset_gpio ) out lo
gpio-412 ( |vdd-usb0-5v ) out lo
gpio-413 ( |vdd-usb1-5v ) out lo
gpio-420 ( |eqos_phy_reset ) out hi
gpio-424 ( |wlan_pwr ) out hi
gpio-426 ( |camera-control-outpu) out lo
gpio-441 ( |hdmi2.0_hpd ) in lo
gpio-443 ( |GPIO3_PP.03-output-h) out hi
gpio-444 ( |wp ) in lo
gpio-445 ( |cd ) in hi
gpio-446 ( |en-vdd-sd ) out lo
gpio-456 ( |camera-control-outpu) out lo
gpio-457 ( |camera-control-outpu) out lo
gpio-461 ( |camera-control-outpu) out lo
gpio-479 ( |external-connection:) in lo
gpio-484 ( |bt_ext_wake ) out hi

Hi,

tps65132 is a regulator to provide the power for our internal panel.
This design is only on our internal connector 3320. You could refer to panel-s-wuxga-8-0.c and you shall see below code.

64         vpp_lcd = regulator_get(dev, "outp");
 65         if (IS_ERR_OR_NULL(vpp_lcd)) {
 66                 pr_err("vpp_lcd regulator get failed\n");
 67                 err = PTR_ERR(vpp_lcd);
 68                 vpp_lcd = NULL;
 69                 goto vpp_lcd_fail;
 70         }
 71 
 72         vmm_lcd = regulator_get(dev, "outn");
 73         if (IS_ERR_OR_NULL(vmm_lcd)) {
 74                 pr_err("vmm_lcd regulator get failed\n");
 75                 err = PTR_ERR(vmm_lcd);
 76                 vmm_lcd = NULL;
 77                 goto vmm_lcd_fail;

And for your question #17, that is what dsi driver is doing. Please check why of_dc.c failed in #15.

There is really no DSI document. You could refer to the sample code as I pointed out here.
After of_dc.c finds the panel, it will use the function under panel-s-wuxga-8-0.c. You need to write this panel driver by yourself since the power sequence may vary between different panels.

Please answer #19

How do I know if the mipi dsi clock has been configured, it is not working based on the analyzer on my desk…

Need device tree for r32.3.1 tx2 to enable mipi dsi clock.

My device is powered up and is waiting on the mipi dsi clock, my reset pin goes from zero to one.

What is wrong with my attached regs from /sys/kernel/debug/tegra_dsi?
regs.txt (6.22 KB)

Have you enabled the dsi driver? Could you share current dmesg with us?

For the trace, you could refer to below page to know how to use trace even in linux kernel.
https://www.kernel.org/doc/html/v4.18/trace/events.html

You could enable

sys/kernel/debug/tracing/events/display/display_readl
sys/kernel/debug/tracing/events/display/display_writel

and the trace result would be under sys/kernel/debug/tracing/trace.

looks like the device tree to enable mipi dsi clocks has not made the move to r32.3.1

will attach dmesg

and then wait for a day to get a response.
dmesg-3-12.gz (20.3 KB)

Please provide nvidia self tests and or manufacturing tests for mipi dsi, How do I know that the mipi dsi is working on my tx2?

Thanks,

dsi: dsi { /* dsi@15300000 /
compatible = “nvidia,tegra186-dsi”;
reg = <0x0 0x15300000 0x0 0x00040000>, /
DSIA /
<0x0 0x15400000 0x0 0x00040000>, /
DSIB /
<0x0 0x15900000 0x0 0x00040000>, /
DSIC /
<0x0 0x15940000 0x0 0x00040000>, /
DSID /
<0x0 0x15880000 0x0 0x00010000>; /
PADCTL REG */

what does the above device tree snippet do and should the addresses be changing values?

Please tell me how to find the documentation on 0x15300000 bits.

What module supports tegra186-dsi?

on my tx2 I run “dtc -I fs /proc/device-tree” and get these messages, what do they mean?
: Warning (simple_bus_reg): Node /host1x/dsi simple-bus unit address format error, expected “15300000”
: Warning (simple_bus_reg): Node /host1x/sor1 simple-bus unit address format error, expected “15580000”
: Warning (simple_bus_reg): Node /host1x/dc_common simple-bus unit address format error, expected “15200000”

looking at my dmesg see this. Why the fails?
[ 0.000000] OF: fdt:Reserved memory: failed to reserve memory for node ‘fb0_carveout’: base 0x0000000000000000, size 0 MiB
[ 0.000000] OF: fdt:Reserved memory: failed to reserve memory for node ‘fb0_carveout’: base 0x0000000000000000, size 0 MiB
[ 0.000000] OF: fdt:Reserved memory: failed to reserve memory for node ‘fb2_carveout’: base 0x0000000000000000, size 0 MiB
[ 0.000000] OF: fdt:Reserved memory: failed to reserve memory for node ‘fb2_carveout’: base 0x0000000000000000, size 0 MiB
[ 1.276170] tegradc 15210000.nvdisplay: hdmi: tegra_hdmi_tmds_range_read(bd) failed
[ 6.456754] dhd_preinit_ioctls pspretend_threshold for HostAPD failed -23
[ 6.467507] dhd_interworking_enable: failed to set WNM info, ret=-23

According to your dmesg in #28, the dsi driver seems probed.
Now you need to write your own customized “panel-s-wuxga-8-0.c” and panel-s-wuxga-8-0.dtsi for your own panel.

and for #29, I am not sure what do you want to know about it. We can have dsi panel enabled by using our own connector and panel. You could also share your board schematic for us to review if you suspect any problem.

#30,

It is not a good idea to modify these register or anything in the dtsi files under the soc folder. But if you really want to know where to check this register, you could check the TX2 TRM from our download center and read the chapter of DSI.

It is common to see error when you compile directly through dtc because some reference may be missing. Better using the dts file to build dtb.

#31

These logs are not fatal to your dsi issue.

  1. I can see the fdt log on my side even with my working dsi.

  2. tegradc 15210000.nvdisplay → this is due to we enable HDMI on nvdisplay@15210000 but I think you are not using hdmi,right? You could just disable nvdisplay@15210000

  3. dhd* → these logs from from wifi. Also, not fatal error.

I think it is obvious to notice we are working in different timezone. Thanks for your patience to wait for response.

So changed it to use panel-s-wuxga-8-0.c now seeing

[ 1.207940] dvdd_lcd_1v8 regulator get failed

How does this relate to the previous dmesg errors I was seeing.

This error comes from panel-s-wuxga-8-0.c, because this regulator is not working on your custom carrier board so it failed.

You could check “hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-platforms/tegra186-quill-power-tree-p3310-1000-a00-00.dtsi” → dvdd_lcd-supply = <&en_vdd_disp_1v8>;

Using nvidia standard development board, will continue to look for regulator problems in you code.

Probably something else that did not make it to r32.3.1 from the r28.x code.

how to make mipi dsi display work if using an nvidia development board.

What is tps65132 used for and how does it interact with a mipi dsi device?

Still not getting mipi dsi clock.

Also need new information on how to attach my dmesg

what is tegra-panel-en and how do I set it, can’t find it in r32.31. or r28.x board-panel.c is looking for it and it seems to be missing.

Is there a tps65132 on the evaluation board?

Hi,

Actually, I believe no other forum users are trying their DSI on nvidia devkit (development board)… All the cases here are using their own custom carrier board with the guide of OEM design guide.

The nvidia devkit is able to run DSI panel only with our internal connector. tps65132 is also on this connector too.

what does this code from panel-wuxga-8-0.c do and what really needs to be done it appears to be assuming tps65132@3e for outp and outn, on my development board there is not i2c device @3e on any of the i2c’s So what did this do, and what do I have to do to match your previous functionality. Is it just setting some gpios on @74 or @77 to high/1?

vpp_lcd = regulator_get(dev, "outp");
if (IS_ERR_OR_NULL(vpp_lcd)) {
	pr_err("vpp_lcd regulator get failed\n");
	err = PTR_ERR(vpp_lcd);
	vpp_lcd = NULL;
	goto vpp_lcd_fail;
}

vmm_lcd = regulator_get(dev, "outn");
if (IS_ERR_OR_NULL(vmm_lcd)) {
	pr_err("vmm_lcd regulator get failed\n");
	err = PTR_ERR(vmm_lcd);
	vmm_lcd = NULL;
	goto vmm_lcd_fail;
}

Then later in the code it does

if (vpp_lcd) {
	err = regulator_enable(vpp_lcd);
	if (err < 0) {
		pr_err("vpp_lcd regulator enable failed\n");
		goto fail;
	}

	if (!vmm_vpp_fixed_regulators) {
		err = regulator_set_voltage(vpp_lcd, 5500000, 5500000);
		if (err < 0) {
			pr_err("vpp_lcd regulator failed changing voltage\n");
			goto fail;
		}
	}
}

    if (vmm_lcd) {
  	err = regulator_enable(vmm_lcd);
	if (err < 0) {
		pr_err("vmm_lcd regulator enable failed\n");
		goto fail;
	}
    	if (!vmm_vpp_fixed_regulators) {
	        err = regulator_set_voltage(vmm_lcd, 5500000, 5500000);
		if (err < 0) {
			pr_err("vmm_lcd regulator failed changing voltage\n");
			goto fail;
		}
	}
}

is there any dsi logging/tracing available? How to use them?

Hi,

You could just use google search for tps65132 and you shall find the document.

As I said many times, this tps65132 is on a connector which we use to enable dsi panel on devkit. But the design of this connector is not released. Every forum user who enables DSI panel is following the document → OEM product design guide. They are not using devkit at all.

Currently, I think your problem is the hardware design. Please try to find other power source and use them as regulators.
You don’t need to match our functionality because you may not use the same panel as ours. Just follow the spec of your own panel and write your own power sequence and init command in driver and dtsi.