r32.3.1 How to make a mipi DSI display work.

Terry

Hi Terry,

We have a working case for DSI panel.

  1. Enable some necessities in dts.

Some reference: This is what we wrote in plugin-manager. When some internal board is connected, it would enabled some nodes here. Since you don’t have this internal board, you could just enable these nodes in the device tree directly instead of using plugin-manager.

hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-plugin-manager/tegra186-quill-display-plugin-manager.dtsi

18                 fragment-e3320-a00@1 {
 19                         ids = "3320-1000-000", "3320-1100-000";
 20                         overrides@1 {
 21                                 target = <&{/i2c@3160000/tps65132@3e}>;
 22                                 _overlay_ {
 23                                         status = "okay";
 24                                         outp {
 25                                                 ti,enable-gpio = <&gpio_i2c_0_21 2 0>;
 26                                         };
 27                                         outn {
 28                                                 ti,enable-gpio = <&gpio_i2c_0_21 3 0>;
 29                                         };
 30                                 };
 31                         };
 32                         overrides@2 {
 33                                 target = <&{/host1x}>;
 34                                 _overlay_ {
 35                                         nvdisplay@15200000 {
 36                                                 status = "okay";
 37                                         };
 38                                         dsi {
 39                                                 status = "okay";
 40                                                 nvidia,active-panel = <&panel_s_wuxga_8_0>;
 41                                                 panel-s-wuxga-8-0 {
 42                                                         status = "okay";
 43                                                 };
 44                                         };
 45                                 };
 46                         };
 47                         overrides@3 {
 48                                 target = <&{/i2c@3160000}>;
 49                                 _overlay_ {
 50                                         gpio@21 {
 51                                                 status = "okay";
 52                                         };
 53                                         lp8557-backlight-s-wuxga-8-0@2c {
 54                                                 status = "okay";
 55                                         };
 56                                 };
 57                         };
 58                 };
  1. Check the panel select logic in kernel driver and see if it selects your panel.
    kernel/nvidia/drivers/video/tegra/dc/of_dc.c -> tegra_dc_parse_panel_ops

  2. Other remaining files to check as panel specific driver and device tree in kernel source.

kernel/nvidia/drivers/video/tegra/dc/panel/panel-s-wuxga-8-0.c
hardware/nvidia/platform/tegra/common/kernel-dts/panels/panel-s-wuxga-8-0.dtsi

WayneWWW,

Thanks for the info, looked at all of the pointers you made and still don’t understand what you are telling me.

Please explain “Enable some necessities in dts.” I as a user do not have any clue what is in you clip of the dtb.

Thanks,
Terry

WayneWWW

any more information about “Enable some necessities in dts.”

remove plugin from the base dtb, added the plugin dtsi.

Now I get Initializing plugin-manager
followed by
Plugin module not found.

Could you give me a path to the actual plugin module?

any more information about “Enable some necessities in dts.”

The necessities here are the “target” in the device tree in #2.

Plugin-manager is a mechanism to override device tree content when specific board is detected from eeprom.

For the example in #2,
When some board named 3320 is connected to tx2, below id is detected and trigger the mechanism.

ids = "3320-1000-000"

The plugin-manager would try to override all items under “override@#”.
For example, it goes to “i2c@3160000/tps65132@3e” and change its status to “okay” and change rest of gpio settings.

overrides@1 {
                                  target = <&{/i2c@3160000/tps65132@3e}>;

Since you don’t have eeprom design here, you don’t need to use plugin-manager. Just directly modify the target node in your dts manually.

so can I get more information on “Since you don’t have eeprom design here, you don’t need to use plugin-manager. Just directly modify the target node in your dts manually.”

Hi Terry,

Plugin-manager is a tool to override a existing nodes in device tree. As I said in previous comment and example, you need to check the code in #2.

For example, below codes from #2 mean the nvdisplay@15200000 under host1x in device tree would be set to “okay”. The same rule could be applicable to other nodes in #2 as well.

overrides@2 {
                                  target = <&{/host1x}>;
                                _overlay_ {
                                          nvdisplay@15200000 {
                                                  status = "okay";
                                          };