Just for reference, I’m attaching the device tree configuration. This is decompiled
from the final .dtb so the definitions are missing, but it’s guaranteed to have all
the fields available to of_dsi.c and of_dc.c.
Large lookup tables and status = “Disabled” sections have been removed.
Note there is only one dsi section. Should there be two, one for DSI-A and one
for DSI-C? Looking at of_dsi.c this doesn’t seem necessary, but I could be
wrong.
Note we have tried many resolution combinations in addition to this one.
Cary
nvdisplay@15200000 {
compatible = "nvidia,tegra186-dc";
reg = <0x0 0x15200000 0x0 0x10000>;
interrupts = <0x0 0x99 0x4>;
win-mask = <0x7>;
#stream-id-cells = <0x1>;
nvidia,dc-ctrlnum = <0x0>;
clocks = <0xbc 0xd 0x9c 0xd 0x9e 0xd 0x9b 0xd 0x9f 0xd 0xa0 0xd 0x9d 0xd 0x10d 0xd 0x207 0xd 0x210 0xd 0x206 0xd 0x10b 0xd 0x3a 0xd 0x261>;
clock-names = "clk32k_in", "nvdisplay_disp", "nvdisplayhub", "nvdisplay_p0", "nvdisplay_p1", "nvdisplay_p2", "nvdisp_dsc", "pllp_display", "plld2", "plld3", "pll_d", "pll_d_out1", "disp1_emc", "emc_latency";
resets = <0xd 0x5c 0xd 0x5d 0xd 0x5e 0xd 0x5f 0xd 0x60 0xd 0x61 0xd 0x62 0xd 0x59>;
reset-names = "misc", "wgrp0", "wgrp1", "wgrp2", "wgrp3", "wgrp4", "wgrp5", "head0";
status = "ok";
nvidia,dc-flags = <0x1>;
nvidia,emc-rate = <0x11e1a300>;
nvidia,fb-bpp = <0x20>;
nvidia,fb-flags = <0x1>;
nvidia,fb-win = <0x0>;
nvidia,dc-or-node = "/host1x/dsi";
nvidia,cmu-enable = <0x1>;
avdd_lcd-supply = <0xbd>;
dvdd_lcd-supply = <0xbe>;
avdd_dsi_csi-supply = <0x2f>;
outp-supply = <0xbf>;
outn-supply = <0xc0>;
vdd_lcd_bl-supply = <0x1a>;
vdd_lcd_bl_en-supply = <0xc1>;
avdd_hdmi-supply = <0xc2>;
avdd_hdmi_pll-supply = <0xe>;
vdd_hdmi_5v0-supply = <0xc3>;
linux,phandle = <0x59>;
phandle = <0x59>;
};
// skipping HDMI heads...
dsi {
compatible = "nvidia,tegra186-dsi";
reg = <0x0 0x15300000 0x0 0x40000 0x0 0x15400000 0x0 0x40000 0x0 0x15900000 0x0 0x40000 0x0 0x15940000 0x0 0x40000 0x0 0x15880000 0x0 0x10000>;
clocks = <0xbc 0xd 0x73 0xd 0x75 0xd 0x76 0xd 0x77 0xd 0xe7 0xd 0xe8 0xd 0xe9 0xd 0xea>;
clock-names = "clk32k_in", "dsi", "dsia_lp", "dsib", "dsib_lp", "dsic", "dsic_lp", "dsid", "dsid_lp";
resets = <0xd 0x6 0xd 0x7 0xd 0x3f 0xd 0x40 0xd 0x91>;
reset-names = "dsia", "dsib", "dsic", "dsid", "dsi_padctrl";
nvidia,enable-hs-clk-in-lp-mode = <0x1>;
pad-controllers = <0x10 0xf 0x10 0x10 0x10 0x11 0x10 0x12>;
pad-names = "dsia", "dsib", "dsic", "dsid";
status = "ok";
nvidia,dsi-controller-vs = <0x1>;
prod-settings {
#prod-cells = <0x3>;
dsi-padctrl-prod {
prod = <0x24 0x3f0fc3f 0x0 0x28 0x333333 0x0 0x30 0xffffff 0x0 0x34 0xffffff 0x777777 0x54 0x3f0fc3f 0x0 0x58 0x333333 0x0 0x60 0xffffff 0x0 0x64 0xffffff 0x777777 0x84 0x3f0fc3f 0x0 0x88 0x333333 0x0 0x90 0xffffff 0x0 0x94 0xffffff 0x777777 0xb4 0x3f0fc3f 0x0 0xb8 0x333333 0x0 0xc0 0xffffff 0x0 0xc4 0xffffff 0x777777>;
};
};
cmu {
nvidia,cmu-csc = <0x100 0x0 0x0 0x0 0x100 0x0 0x0 0x0 0x100>;
nvidia,cmu-lut2 = // removed
};
nvdisp-cmu {
nvidia,panel-csc = <0xd581 0x2979 0xc5 0x0 0x831 0xcac1 0x20c 0x0 0x189 0x625 0xcc4a 0x0>;
nvidia,cmu-lut = // removed
};
};
panel-s-wqxga-10-1 {
status = "ok";
compatible = "s,wqxga-10-1";
nvidia,dsi-instance = <0x0>;
nvidia,dsi-n-data-lanes = <0x8>;
nvidia,dsi-pixel-format = <0x3>;
nvidia,dsi-refresh-rate = <0x3d>;
nvidia,dsi-rated-refresh-rate = <0x3c>;
nvidia,dsi-te-polarity-low = <0x1>;
nvidia,dsi-video-data-type = <0x0>;
nvidia,dsi-video-clock-mode = <0x0>;
nvidia,dsi-ganged-type = <0x1>;
nvidia,dsi-ganged-write-to-all-links = <0x1>;
nvidia,dsi-controller-vs = <0x1>;
nvidia,dsi-virtual-channel = <0x0>;
nvidia,dsi-panel-reset = <0x1>;
nvidia,dsi-power-saving-suspend = <0x0>;
nvidia,dsi-lp00-pre-panel-wakeup = <0x1>;
nvidia,dsi-suspend-aggr = <0x3>;
nvidia,dsi-ulpm-not-support = <0x1>;
nvidia,dsi-init-cmd = <0x0 0x29 0x3 0x0 0x0 0x10 0x0 0x2a 0x0 0x0 0x1 0x14 0x0 0x5 0x0 0x0 0x0 0x1 0x14 0x0 0x29 0x3 0x0 0x0 0x10 0x1 0x1 0x0 0x0 0x1 0x14 0x0 0x5 0x0 0x0 0x0 0x1 0x14 0x0 0x5 0x35 0x0 0x0 0x1 0x14 0x0 0x5 0x11 0x0 0x0 0x1 0x78 0x0 0x5 0x29 0x0 0x0 0x1 0x14 0x3 0x1 0x1 0x78>;
nvidia,dsi-n-init-cmd = <0x10>;
nvidia,dsi-suspend-cmd = <0x0 0x5 0x28 0x0 0x0 0x1 0x32 0x0 0x5 0x10 0x0 0x0 0x1 0xc8 0x0 0x5 0x34 0x0 0x0 0x1 0x14>;
nvidia,dsi-n-suspend-cmd = <0x6>;
nvidia,panel-rst-gpio = <0x12 0x7b 0x1>;
nvidia,panel-bl-pwm-gpio = <0x1c 0x8 0x1>;
nvidia,dsi-split-link-type = <0x0>;
nvidia,dsi-video-burst-mode = <0x1>;
linux,phandle = <0x12a>;
phandle = <0x12a>;
disp-default-out {
nvidia,out-type = <0x2>;
nvidia,out-width = <0xd8>;
nvidia,out-height = <0x87>;
nvidia,out-flags = <0x0>;
nvidia,out-parent-clk = "pll_d";
nvidia,out-xres = <0x780>;
nvidia,out-yres = <0x438>;
nvidia,out-rotation = <0x0>;
};
display-timings {
3840x1080-32 {
clock-frequency = <0x90013c0>;
hactive = <0x1018>;
vactive = <0x438>;
hfront-porch = <0x58>;
hback-porch = <0x94>;
hsync-len = <0x2c>;
vfront-porch = <0x4>;
vback-porch = <0x24>;
vsync-len = <0x5>;
nvidia,h-ref-to-sync = <0x1>;
nvidia,v-ref-to-sync = <0x1>;
};
};
cmu {
nvidia,cmu-csc = <0x105 0x3d5 0x24 0x3ea 0x121 0x3c1 0x2 0xa 0xf4>;
nvidia,cmu-lut2 = // removed
};
};