Thanks, this is helpful.
I seem to have been able to set the win-mask and nvidia,fb-win values to eliminate errors
during the dt parsing for the display (I enabled debug messages in drivers/video/tegra/dc/of_dc.c).
We have a dsi output that’s disabled for now.
Device tree customizations:
nvdisplay@15200000 {
status = "okay";
win-mask = <0x03>;
nvidia,fb-win = <0>;
nvidia,dc-or-node = "/host1x/sor1";
nvidia,dc-connector = <&sor1>;
};
nvdisplay@15210000 {
status = "disabled";
win-mask = <0x30>;
nvidia,fb-win = <4>;
nvidia,dc-or-node = "/host1x/dsi";
nvidia,dc-connector = <&dsi>;
};
nvdisplay@15220000 {
status = "okay";
win-mask = <0x0C>;
nvidia,fb-win = <2>;
nvidia,dc-or-node = "/host1x/sor";
nvidia,dc-connector = <&sor0>;
};
dmesg:
[ 0.896820] OF_DC_LOG: valid_heads 3
[ 0.898099] OF_DC_LOG: dc controller index 0
[ 0.898130] tegradc 15200000.nvdisplay: disp0 connected to head0->/host1x/sor1
[ 0.898188] OF_DC_LOG: fb bpp 32
[ 0.898210] OF_DC_LOG: fb flip on probe
[ 0.898252] OF_DC_LOG: dc flag 1
[ 0.898288] OF_DC_LOG: out_dcc bus 3
[ 0.898339] OF_DC_LOG: default_out flag 2
[ 0.898358] OF_DC_LOG: tegra dc align msb
[ 0.898377] OF_DC_LOG: tegra order red to blue
[ 0.898397] OF_DC_LOG: parent clk plld2
[ 0.898417] OF_DC_LOG: framebuffer xres 4096
[ 0.898435] OF_DC_LOG: framebuffer yres 2160
[ 0.898459] OF_DC_LOG: fb window Index 0
[ 0.898498] OF_DC_LOG: win mask 0x3
[ 0.898518] OF_DC_LOG: cmu enable 1
[ 0.898538] tegradc 15200000.nvdisplay: DT parsed successfully
[ 0.898610] tegradc 15200000.nvdisplay: Display dc.ffffff800b610000 registered with id=0
[ 0.908059] tegradc 15200000.nvdisplay: vblank syncpt # 8 for dc 0
[ 0.908089] tegradc 15200000.nvdisplay: vpulse3 syncpt # 9 for dc 0
[ 0.913495] tegradc 15200000.nvdisplay: hdmi: invalid prod list prod_list_hdmi_board
[ 0.913535] tegradc 15200000.nvdisplay: hdmi: tegra_hdmi_tmds_range_read(bd) failed
[ 0.949924] tegradc 15200000.nvdisplay: probed
[ 4.205954] tegradc 15200000.nvdisplay: fb registered
[ 4.239754] tegradc 15200000.nvdisplay: hdmi: tmds rate:148500K prod-setting:prod_c_hdmi_111m_223m
[ 4.250139] tegradc 15200000.nvdisplay: hdmi: get RGB quant from EDID.
[ 4.256690] tegradc 15200000.nvdisplay: hdmi: get YCC quant from EDID.
[ 4.278237] OF_DC_LOG: dc controller index 2
[ 4.282526] tegradc 15220000.nvdisplay: disp1 connected to head2->/host1x/sor
[ 4.289695] OF_DC_LOG: fb bpp 32
[ 4.292939] OF_DC_LOG: fb flip on probe
[ 4.300734] OF_DC_LOG: dc flag 1
[ 4.303993] OF_DC_LOG: out_dcc bus 5
[ 4.307586] OF_DC_LOG: default_out flag 2
[ 4.311607] OF_DC_LOG: tegra dc align msb
[ 4.315634] OF_DC_LOG: tegra order red to blue
[ 4.320090] OF_DC_LOG: parent clk plld3
[ 4.323948] OF_DC_LOG: framebuffer xres 4096
[ 4.328229] OF_DC_LOG: framebuffer yres 2160
[ 4.332527] OF_DC_LOG: fb window Index 2
[ 4.336457] OF_DC_LOG: win mask 0xc
[ 4.339954] OF_DC_LOG: emc clk rate 300000000
[ 4.344316] OF_DC_LOG: cmu enable 1
[ 4.347802] tegradc 15220000.nvdisplay: DT parsed successfully
[ 4.353664] tegradc 15220000.nvdisplay: Display dc.ffffff800bc60000 registered with id=1
[ 4.361997] tegradc 15220000.nvdisplay: vblank syncpt # 11 for dc 2
[ 4.368286] tegradc 15220000.nvdisplay: vpulse3 syncpt # 12 for dc 2
[ 4.376976] tegradc 15220000.nvdisplay: hdmi: invalid prod list prod_list_hdmi_board
[ 4.384816] tegradc 15220000.nvdisplay: hdmi: tegra_hdmi_tmds_range_read(bd) failed
[ 4.407284] tegradc 15220000.nvdisplay: probed
[ 4.420294] tegradc 15220000.nvdisplay: fb registered
[ 4.425813] tegradc 15200000.nvdisplay: blank - powerdown
[ 4.503555] tegradc 15200000.nvdisplay: unblank
[ 4.512873] tegradc 15200000.nvdisplay: hdmi: tmds rate:148500K prod-setting:prod_c_hdmi_111m_223m
[ 4.514399] tegradc 15200000.nvdisplay: hdmi: get RGB quant from EDID.
[ 4.514425] tegradc 15200000.nvdisplay: hdmi: get YCC quant from EDID.
[ 7.757246] tegradc 15200000.nvdisplay: hdmi: plugged
[ 106.055244] tegradc 15200000.nvdisplay: blank - powerdown
[ 106.122099] tegradc 15200000.nvdisplay: unblank
[ 106.129542] tegradc 15200000.nvdisplay: hdmi: tmds rate:148500K prod-setting:prod_c_hdmi_111m_223m
[ 106.130963] tegradc 15200000.nvdisplay: hdmi: get RGB quant from EDID.
Now I get two frame buffers, however The X server won’t start.
Xorg -verbose
...
(II) NVIDIA dlloader X Driver 32.1.0 Release Build (integ_stage_rel) (buildbrain@mobile-u64-2988) Wed Mar 13 00:27:33 PDT 2019
(II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
(WW) Falling back to old probe method for NVIDIA
(II) Loading /usr/lib/xorg/modules/libfb.so
(II) Module fb: vendor="X.Org Foundation"
compiled for 1.19.6, module version = 1.0.0
(II) Loading /usr/lib/xorg/modules/libwfb.so
(II) Module wfb: vendor="X.Org Foundation"
compiled for 1.19.6, module version = 1.0.0
(WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
(II) NVIDIA(0): Creating default Display subsection in Screen section
"Default Screen Section" for depth/fbbpp 24/32
(==) NVIDIA(0): Depth 24, (==) framebuffer bpp 32
(==) NVIDIA(0): RGB weight 888
(==) NVIDIA(0): Default visual is TrueColor
(==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
(DB) xf86MergeOutputClassOptions unsupported bus type 0
(**) NVIDIA(0): Enabling 2D acceleration
(II) Loading /usr/lib/xorg/modules/extensions/libglxserver_nvidia.so
(II) Module glxserver_nvidia: vendor="NVIDIA Corporation"
compiled for 4.0.2, module version = 1.0.0
(II) NVIDIA GLX Module 32.1.0 Release Build (integ_stage_rel) (buildbrain@mobile-u64-2988) Wed Mar 13 00:25:11 PDT 2019
(EE) NVIDIA(GPU-0): Failed to initialize the NVIDIA graphics device!
(EE) NVIDIA(0): Failing initialization of X screen 0
(II) Unloading glxserver_nvidia
(EE) Screen(s) found, but none have a usable configuration.
(EE)
Fatal server error:
(EE) no screens found(EE)
(EE)
Two questions:
a) What should the “win-mask” and “nvidia,fb-win” values be for each nvdisplay entry?
We want to be able to run X and one nvoverlaysink on each display, so each display
needs 2 connections to the frame buffer. I think this is what win-mask is for, but I don’t
understand what nvidia,fb-win means or should be set to.
b) Why wouldn’t the X driver start? What configurations would make it mis-operate?
Thanks in advance,
Cary