Bug 92178

Summary: nouveau framebuffer fails to initialize properly on GeForce 2 Go (NV11M)
Product: xorg Reporter: Sernin van de Krol <serninpc>
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED MOVED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: serninpc
Version: unspecified   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
dmesg with nouveau loaded
none
vbios.rom with nouveau loaded
none
Xorg log of using xf86-video-nv none

Description Sernin van de Krol 2015-09-29 09:33:37 UTC
Created attachment 118513 [details]
dmesg with nouveau loaded

When nouveaufb starts the screen does not change from what it was, cursor keeps blinking though.

Attached a dmesg and vbios.rom retrieved with ssh.
Comment 1 Sernin van de Krol 2015-09-29 09:34:27 UTC
Created attachment 118514 [details]
vbios.rom with nouveau loaded
Comment 2 Sernin van de Krol 2015-12-10 22:35:49 UTC
Created attachment 120457 [details]
Xorg log of using xf86-video-nv
Comment 3 Ilia Mirkin 2015-12-10 22:38:37 UTC
The interesting bits from the log:

[   128.852] (II) NV(0): I2C bus "DDC" initialized.
[   128.852] (II) NV(0): Probing for EDID on I2C bus A...
[   128.852] (II) NV(0): I2C device "DDC:ddc2" registered at address 0xA0.
[   128.855] (II) NV(0):   ... none found
[   128.855] (II) NV(0): Probing for EDID on I2C bus B...
[   129.092] (II) NV(0):   ... none found
[   129.092] (--) NV(0): CRTC 1 is currently programmed for DFP
[   129.092] (II) NV(0): Using DFP on CRTC 1
[   129.092] (--) NV(0): Panel size is 1400 x 1050
[   129.092] (II) NV(0): NOTE: This driver cannot reconfigure the BIOS-programmed size.
[   129.092] (II) NV(0): These dimensions will be used as the panel size for mode validation.
[   129.092] (II) NV(0): Panel is LVDS


Note that the xf86-video-nv recognizes device id 112 (and a boatlod of others) as mobile, and for those it forces pNv->FlatPanel = 1, which in turn causes:

             if(pNv->FlatPanel) pNv->CRTCnumber = 1;

    if(pNv->FlatPanel && !pNv->Television) {
       pNv->fpWidth = pNv->PRAMDAC[0x0820/4] + 1;
       pNv->fpHeight = pNv->PRAMDAC[0x0800/4] + 1;
       pNv->fpVTotal = pNv->PRAMDAC[0x804/4] + 1;
       pNv->fpSyncs = pNv->PRAMDAC[0x0848/4] & 0x30000033;
       xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "Panel size is %i x %i\n",
                  pNv->fpWidth, pNv->fpHeight);
       xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NOTE: This driver cannot "
                  "reconfigure the BIOS-programmed size.\n");
       xf86DrvMsg(pScrn->scrnIndex, X_INFO, "These dimensions will be used as "
                  "the panel size for mode validation.\n");
    }

    if(monitorA)
      xf86SetDDCproperties(pScrn, monitorA);

    if(!pNv->FlatPanel || (pScrn->depth != 24) || !pNv->twoHeads)
        pNv->FPDither = FALSE;

    pNv->LVDS = FALSE;
    if(pNv->FlatPanel && pNv->twoHeads) {
        pNv->PRAMDAC0[0x08B0/4] = 0x00010004;
        if(pNv->PRAMDAC0[0x08B4/4] & 1)
           pNv->LVDS = TRUE;
        xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Panel is %s\n", 
                   pNv->LVDS ? "LVDS" : "TMDS");
    }


and later on

    if(pNv->FlatPanel == 1) {
       vertStart = vertTotal - 3;  
       vertEnd = vertTotal - 2;
       vertBlankStart = vertStart;
       horizStart = horizTotal - 5;
       horizEnd = horizTotal - 2;   
       horizBlankEnd = horizTotal + 4;
       if(pNv->Architecture == NV_ARCH_30)
           horizTotal += 2;
    }

We should figure out what all this maps to in nouveau and how to properly fake it.
Comment 4 Martin Peres 2019-12-04 09:04:25 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/issues/219.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.