diff -rPu --exclude='*Plo' xf86-video-nouveau/src/nv_bios.c xf86-video-nouveau-fixed/src/nv_bios.c --- xf86-video-nouveau/src/nv_bios.c 2008-02-20 19:23:34.000000000 +0900 +++ xf86-video-nouveau-fixed/src/nv_bios.c 2008-02-20 23:26:58.000000000 +0900 @@ -3144,8 +3144,9 @@ switch (lvds_ver) { case 0x0a: /* pre NV40 */ - lvdsmanufacturerindex = bios->data[fpp->fpxlatemanufacturertableptr + bios->fp.strapping]; - + lvdsmanufacturerindex = 1; + //bios->data[fpp->fpxlatemanufacturertableptr + bios->fp.strapping]; + ErrorF("lvds man index set to 1\n"); headerlen = 2; recordlen = bios->data[bios->fp.lvdsmanufacturerpointer + 1]; diff -rPu --exclude='*Plo' xf86-video-nouveau/src/nv_crtc.c xf86-video-nouveau-fixed/src/nv_crtc.c --- xf86-video-nouveau/src/nv_crtc.c 2008-02-20 19:23:34.000000000 +0900 +++ xf86-video-nouveau-fixed/src/nv_crtc.c 2008-02-21 00:06:36.000000000 +0900 @@ -1376,8 +1376,10 @@ regp->fp_control[nv_crtc->head] |= NV_PRAMDAC_FP_TG_CONTROL_DISPEN_DISABLE; Bool lvds_use_straps = pNv->dcb_table.entry[nv_output->dcb_entry].lvdsconf.use_straps_for_mode; - if (is_lvds && ((lvds_use_straps && pNv->VBIOS.fp.dual_link) || (!lvds_use_straps && adjusted_mode->Clock >= pNv->VBIOS.fp.duallink_transition_clk))) - regp->fp_control[nv_crtc->head] |= (8 << 28); + if (is_lvds && ((lvds_use_straps && pNv->VBIOS.fp.dual_link) || (!lvds_use_straps && adjusted_mode->Clock >= pNv->VBIOS.fp.duallink_transition_clk))) { + //lvds_use_straps is 0, so we always hit this: regp->fp_control[nv_crtc->head] |= (8 << 28); + //note that dual_link is also set in the bios + } if (is_fp) { /* This can override HTOTAL and VTOTAL */ diff -rPu --exclude='*Plo' xf86-video-nouveau/src/nv_driver.c xf86-video-nouveau-fixed/src/nv_driver.c --- xf86-video-nouveau/src/nv_driver.c 2008-02-20 19:23:34.000000000 +0900 +++ xf86-video-nouveau-fixed/src/nv_driver.c 2008-02-20 23:07:05.000000000 +0900 @@ -1446,7 +1446,9 @@ /* Allocate an xf86CrtcConfig */ xf86CrtcConfigInit(pScrn, &nv_xf86crtc_config_funcs); xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); - + //if i do not force this, X select 800x600 for some reason whereas the console starts in 1024x768 (=native) + pScrn->display->virtualX=1024; + pScrn->display->virtualY=1024; xf86CrtcSetSizeRange(pScrn, 320, 200, max_width, max_height); } diff -rPu --exclude='*Plo' xf86-video-nouveau/src/nv_output.c xf86-video-nouveau-fixed/src/nv_output.c --- xf86-video-nouveau/src/nv_output.c 2008-02-20 19:23:34.000000000 +0900 +++ xf86-video-nouveau-fixed/src/nv_output.c 2008-02-21 00:04:43.000000000 +0900 @@ -413,8 +413,9 @@ if (nv_output->type == OUTPUT_TMDS) run_tmds_table(pScrn, nv_output->dcb_entry, nv_crtc->head, clock); /* on panels where we do reset after pclk change, DPMS on will do this */ - else if (!pNv->VBIOS.fp.reset_after_pclk_change) - call_lvds_script(pScrn, nv_crtc->head, nv_output->dcb_entry, LVDS_RESET, clock); + else if (!pNv->VBIOS.fp.reset_after_pclk_change) { + //sets plls to bogus values: call_lvds_script(pScrn, nv_crtc->head, nv_output->dcb_entry, LVDS_RESET, clock); + } } else { /* * We have no crtc, but we do know what output we are and if we were crosswired. @@ -423,9 +424,10 @@ if (nv_output->type == OUTPUT_TMDS) run_tmds_table(pScrn, nv_output->dcb_entry, nv_output->preferred_output ^ crosswired, clock); else { - if (!pNv->VBIOS.fp.reset_after_pclk_change) + if (!pNv->VBIOS.fp.reset_after_pclk_change) { call_lvds_script(pScrn, nv_output->preferred_output ^ crosswired, nv_output->dcb_entry, LVDS_RESET, clock); - call_lvds_script(pScrn, nv_output->preferred_output ^ crosswired, nv_output->dcb_entry, LVDS_PANEL_ON, clock); + } + //call_lvds_script(pScrn, nv_output->preferred_output ^ crosswired, nv_output->dcb_entry, LVDS_PANEL_ON, clock); } } }