Hello all! I am new in Jetson and Ubuntu. I need to plug OLED display h546dlb01.2 1920x1080 with Jetson TX2. I have full datasheet of display. Firstly I want to output the image from file to display with DSI MIPI.
I read several topics and understood that I need:
"Generally, to bring-up a DSI LCD, please check the following list:
- in board-panel.c, check whether the correct panel configuration is set for corresponding board ID.
- in corresponding panel driver, (e.g. arch/arm/mach-tegra/panel-xxx.c), whether the regulator/gpio pins, like reset/backlight pin, is configured/controlled correctly. If there’s any special command to initialize panel, please add code as well.
- update DTS, for resources like pwm, panel information, timing, etc.
In addition, you can also check kernel log and find out whether there’s DC-related error messages."
https://devtalk.nvidia.com/default/topic/920663/jetson-tx1/jetson-tx1-dsc-of-mipi-dsi-/post/5120676/#5120676
But currently may be there are changes…
How to output information to display? For example image, text, video stream?
May be there are full guide for newbies, because I don’t know what to do with panel driver, what to do with kernel sources (LKM or loading with kernel in booting), with device tree…
Many thanks)
ilyaprokwork,
You question needs a really long explanation. I may not cover all of your questions here.
To output the information to display, by default, we are using X11 based system on L4T. Once your panel is able to work(after your driver works), X11 will launch gnome desktop on it(you can use openGL application then…)
As for how driver works, it would be better to trace our panel driver code by yourself.
Please download the kernel/driver code from here.
https://developer.nvidia.com/embedded/dlc/l4t-tx2-sources-28-2-ga
Panel driver is under:
kernel/display/drivers/video/tegra/dc/panel
Document for building kernel/driver
https://developer.nvidia.com/embedded/dlc/l4t-documentation-28-2-ga
You should also read the TRM(Technical Reference Manual). There is an introduction to our Display Controller(DC) system.
Thank you very much for fast and useful answer. I found guide in document [url]https://developer.nvidia.com/embedded/dlc/l4t-documentation-28-2-ga[/url] “Display Configuration and Bringup” should I follow this guide?
I understad that in
/hardware/nvidia/platform/tegra/common/kernel-dts/ /panel-<panel_type>.dtsi
and in
kernel/display/drivers/video/tegra/dc/panel
there are device tree sources for different displays and drivers. Should I choose the most suitable for my display and make changes? After that I will have 2 files: first - dtsi and, second - driver.c. After that what should I do with these?
What is TRM suitable for Jetson TX2? There are “Tegra X2 (Parker Series SoC) Technical Reference Manual” and “Tegra X1 (SoC) Technical Reference Manual”.
In
/kernel/kernel-4.4/Documentation/devicetree/bindings/video
I found files with names “nvidia,tegra114-dsi”, “nvidia,tegra124-dsi”, “nvidia,tegra186-dsi”, “nvidia,tegra210-dsi” what does mean 114, 124, 186, 210 numbers?
ilyaprokwork,
dts has some info of this board, and driver has some function call that would read it from dts.
For example, below line in panel-s-wuxga-8-0.c would get information of display gpio from device tree.
tegra_panel_gpio_get_dt("s,wuxga-8-0", &panel_of);
I don’t know which hardware you are actually using. You filed this topic on TX2 forum, so I guess you should read TX2 TRM.
tegra124 is tk1, tegra210 is for TX1 and tegra186 is for TX2.
Thank you!
Yes I have Jetson TX2, but I can’t find TX2 TRM, in Jetson download center I found TRM “Tegra X2 (Parker Series SoC) Technical Reference Manual” and “Tegra X1 (SoC) Technical Reference Manual”. Which of them?
Ok, I choose “panel-a-1080p-14-o.dtsi”, after that I make changes according to the datasheet of my display.Next, I should decompile current dtb of my system and copy lines from “panel-a-1080p-14-o.dtsi” to system dts. After that, I should recompile dts to dtb. Correctly? What’s next?
Sorry for my stupid questions.
ilyaprokwork,
Tegra X2 (Parker Series SoC) Technical Reference Manual is what you want.
panel-a-1080p-14-o.dtsi is not a DSI panel but a eDP one. Please use “panel-a-1200-1920-8-0.c”.
dts files are under hardware folder in your downloaded source code, so you don’t need to decompile current dtb.
What means “use”?
I don’t understand how to embed dtsi in my system Jetson and what to do with “panel-a-1200-1920-8-0.c”
in L4T_sources/public_release/hardware/nvidia/platform/tegra/common/kernel-dts/panels I found “panel-a-1080p-14-0.dtsi” and “panel-a-edp-1080p-14-0.dtsi”. Do I understand correctly that there are 2 versions: DSI and eDP?
Also I decompile my dtb to dts
sudo dtc -I fs -O dts -o ./extracted.dtc /proc/device-tree
In file I replace
host1x {
nvdisplay@15200000 {
...
+status = “okay”;
-status = “disabled”;
...
};
...
dsi {
...
+status = “okay”;
-status = “disabled”;
...
I found line
...
panel-s-wuxga-8-0 {
...
But I can’t find “panel-a-1080p-14-0” in this dts. Should I copy block from file “panel-a-1080p-14-0.dtsi” or I should make changes in panel-s-wuxga-8-0?
Help me please, What I do with .dts, .dtsi? or I need recompile full kernel?
Hi ilyaprokwork,
There are lots of panel driver in the code but not all of them are maintained by us. Some of them are legacy driver which may be supported on old platform but not on TX2 anymore.
The current DSI panel by default enabled is panel-s-wuxga-8-0, s stands for Sharp and wuxga means 1920×1200. If you don’t understand how dts works, I suggest you to search it over the Internet because device tree is not from NVIDIA.
https://elinux.org/Device_Tree_Usage
As a result, it would take less work if you start from panel-s-wuxga-8-0. DSI and eDP are two different interface, just as HDMI and DP(displayport) are two different interfaces.
Also, I suggest you to study the driver code and it definitely requires to recompile the kernel image.
Hello, I configured DTS file for my display in section “panel-s-wuxga-8-0” and connected display to display expansion board. After starting system in kern.log I found:
“vpp_lcd regulator get failed
dsi regulator get failed
tegraadc 15200000.nvdisplay: dtsi: video fifo overflow”
What does that mean? How to solve this problem?
Hello! I commented lines in “panel-s-wuxga-8-0”
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;
}
...
vmm_lcd_fail:
if (vpp_lcd) {
regulator_put(vpp_lcd);
vpp_lcd = NULL;
}
vpp_lcd_fail:
if (dvdd_lcd_1v8) {
regulator_put(dvdd_lcd_1v8);
dvdd_lcd_1v8 = NULL;
}
And change nvidia,dsi-pixel-format = <0x3>. After that on my display when Jetson starts I see few flashes orange color with black lines. After starting display is black. In kern.log I see a few repeatable lines “tegradc 15200000.nvidiadisplay: unblank
tegradc 15200000.nvidiadisplay: unblank
tegradc 15200000.nvidiadisplay: blank - powerdown” What does it mean?
You need to follow the power sequence of your panel. It should be listed in your panel datasheet.