Author: maks-guest
Date: Tue Nov 14 00:43:53 2006
New Revision: 7794

Added:
   dists/trunk/linux-2.6/debian/patches/bugfix/video-nvidiafb-divide-zero.patch
Modified:
   dists/trunk/linux-2.6/debian/changelog
   dists/trunk/linux-2.6/debian/patches/series/6
Log:
add nvidiafb backport for a divide by zero


Modified: dists/trunk/linux-2.6/debian/changelog
==============================================================================
--- dists/trunk/linux-2.6/debian/changelog      (original)
+++ dists/trunk/linux-2.6/debian/changelog      Tue Nov 14 00:43:53 2006
@@ -11,6 +11,7 @@
    - mm: fixup do_wp_page()
    - mm: msync() cleanup (closes: #394392)
   * Add another bcm43xx patch queued for 2.6.18.3.
+  * Backport upstream nvidiafb patch (maybe fixes 398258).
 
   [ Steve Langasek ]
   * [alpha] new titan-video patch, for compatibility with TITAN and similar
@@ -32,7 +33,7 @@
   [ Thiemo Seufer ]
   * Enable raid456 for mips/mipsel qemu kernel.
 
- -- maximilian attems <[EMAIL PROTECTED]>  Tue, 14 Nov 2006 00:27:20 +0100
+ -- maximilian attems <[EMAIL PROTECTED]>  Tue, 14 Nov 2006 00:39:41 +0100
 
 linux-2.6 (2.6.18-5) unstable; urgency=low
 

Added: 
dists/trunk/linux-2.6/debian/patches/bugfix/video-nvidiafb-divide-zero.patch
==============================================================================
--- (empty file)
+++ 
dists/trunk/linux-2.6/debian/patches/bugfix/video-nvidiafb-divide-zero.patch    
    Tue Nov 14 00:43:53 2006
@@ -0,0 +1,156 @@
+From [EMAIL PROTECTED] Mon Nov 13 18:27:28 2006
+Date: Mon, 13 Nov 2006 16:59:04 GMT
+Message-Id: <[EMAIL PROTECTED]>
+From: Linux Kernel Mailing List <[email protected]>
+To: [email protected]
+Subject: [PATCH] Patch for nvidia divide by zero error for 7600 pci-express 
card
+
+commit e40c67597eac7a0b0e676867517b01a5a57f7b4b
+tree 842f4cc8ad5739c9935e4ca1aca8ad0743de54da
+parent 7947d2cc2c2e01125a393de83862d02b621999fe
+author Wink Saville <[EMAIL PROTECTED]> 1163190472 -0800
+committer Linus Torvalds <[EMAIL PROTECTED]> 1163432442 -0800
+
+[PATCH] Patch for nvidia divide by zero error for 7600 pci-express card
+
+The following patch resolves the divide by zero error I encountered on my
+system:
+
+       http://marc.10east.com/?l=linux-fbdev-devel&m=116058257024413&w=2
+
+I accomplished this by merging what I thought was appropriate from:
+
+       http://webcvs.freedesktop.org/xorg/driver/xf86-video-nv/src/
+
+Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
+Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
+
+ drivers/video/nvidia/nv_hw.c    |   12 +++++++++---
+ drivers/video/nvidia/nv_setup.c |   18 +++++++++++++++++-
+ drivers/video/nvidia/nv_type.h  |    1 +
+ drivers/video/nvidia/nvidia.c   |   24 ++++++++++++------------
+ 4 files changed, 39 insertions(+), 16 deletions(-)
+
+diff --git a/drivers/video/nvidia/nv_hw.c b/drivers/video/nvidia/nv_hw.c
+index 9ed640d..ea42611 100644
+--- a/drivers/video/nvidia/nv_hw.c
++++ b/drivers/video/nvidia/nv_hw.c
+@@ -145,12 +145,18 @@ static void nvGetClocks(struct nvidia_pa
+ 
+       if (par->Architecture >= NV_ARCH_40) {
+               pll = NV_RD32(par->PMC, 0x4020);
+-              P = (pll >> 16) & 0x03;
++              P = (pll >> 16) & 0x07;
+               pll = NV_RD32(par->PMC, 0x4024);
+               M = pll & 0xFF;
+               N = (pll >> 8) & 0xFF;
+-              MB = (pll >> 16) & 0xFF;
+-              NB = (pll >> 24) & 0xFF;
++              if (((par->Chipset & 0xfff0) == 0x0290) ||
++                              ((par->Chipset & 0xfff0) == 0x0390)) {
++                      MB = 1;
++                      NB = 1;
++              } else {
++                      MB = (pll >> 16) & 0xFF;
++                      NB = (pll >> 24) & 0xFF;
++              }
+               *MClk = ((N * NB * par->CrystalFreqKHz) / (M * MB)) >> P;
+ 
+               pll = NV_RD32(par->PMC, 0x4000);
+diff --git a/drivers/video/nvidia/nv_setup.c b/drivers/video/nvidia/nv_setup.c
+index a18a9ae..61dc46f 100644
+--- a/drivers/video/nvidia/nv_setup.c
++++ b/drivers/video/nvidia/nv_setup.c
+@@ -359,6 +359,7 @@ int NVCommonSetup(struct fb_info *info)
+       case 0x0186:
+       case 0x0187:
+       case 0x018D:
++      case 0x0228:
+       case 0x0286:
+       case 0x028C:
+       case 0x0316:
+@@ -382,6 +383,10 @@ int NVCommonSetup(struct fb_info *info)
+       case 0x034C:
+       case 0x0160:
+       case 0x0166:
++      case 0x0169:
++      case 0x016B:
++      case 0x016C:
++      case 0x016D:
+       case 0x00C8:
+       case 0x00CC:
+       case 0x0144:
+@@ -639,12 +644,23 @@ int NVCommonSetup(struct fb_info *info)
+               par->fpHeight = NV_RD32(par->PRAMDAC, 0x0800) + 1;
+               par->fpSyncs = NV_RD32(par->PRAMDAC, 0x0848) & 0x30000033;
+ 
+-              printk("Panel size is %i x %i\n", par->fpWidth, par->fpHeight);
++              printk("nvidiafb: Panel size is %i x %i\n", par->fpWidth, 
par->fpHeight);
+       }
+ 
+       if (monA)
+               info->monspecs = *monA;
+ 
++      if (!par->FlatPanel || !par->twoHeads)
++              par->FPDither = 0;
++
++      par->LVDS = 0;
++      if (par->FlatPanel && par->twoHeads) {
++              NV_WR32(par->PRAMDAC0, 0x08B0, 0x00010004);
++              if (par->PRAMDAC0[0x08b4] & 1)
++                      par->LVDS = 1;
++              printk("nvidiafb: Panel is %s\n", par->LVDS ? "LVDS" : "TMDS");
++      }
++
+       kfree(edidA);
+       kfree(edidB);
+ done:
+diff --git a/drivers/video/nvidia/nv_type.h b/drivers/video/nvidia/nv_type.h
+index acdc266..86e65de 100644
+--- a/drivers/video/nvidia/nv_type.h
++++ b/drivers/video/nvidia/nv_type.h
+@@ -129,6 +129,7 @@ struct nvidia_par {
+       int fpHeight;
+       int PanelTweak;
+       int paneltweak;
++      int LVDS;
+       int pm_state;
+       u32 crtcSync_read;
+       u32 fpSyncs;
+diff --git a/drivers/video/nvidia/nvidia.c b/drivers/video/nvidia/nvidia.c
+index eb24107..538e947 100644
+--- a/drivers/video/nvidia/nvidia.c
++++ b/drivers/video/nvidia/nvidia.c
+@@ -1160,20 +1160,20 @@ static u32 __devinit nvidia_get_arch(str
+       case 0x0340:            /* GeForceFX 5700 */
+               arch = NV_ARCH_30;
+               break;
+-      case 0x0040:
+-      case 0x00C0:
+-      case 0x0120:
++      case 0x0040:            /* GeForce 6800 */
++      case 0x00C0:            /* GeForce 6800 */
++      case 0x0120:            /* GeForce 6800 */
+       case 0x0130:
+-      case 0x0140:
+-      case 0x0160:
+-      case 0x01D0:
+-      case 0x0090:
+-      case 0x0210:
+-      case 0x0220:
++      case 0x0140:            /* GeForce 6600 */
++      case 0x0160:            /* GeForce 6200 */
++      case 0x01D0:            /* GeForce 7200, 7300, 7400 */
++      case 0x0090:            /* GeForce 7800 */
++      case 0x0210:            /* GeForce 6800 */
++      case 0x0220:            /* GeForce 6200 */
+       case 0x0230:
+-      case 0x0240:
+-      case 0x0290:
+-      case 0x0390:
++      case 0x0240:            /* GeForce 6100 */
++      case 0x0290:            /* GeForce 7900 */
++      case 0x0390:            /* GeForce 7600 */
+               arch = NV_ARCH_40;
+               break;
+       case 0x0020:            /* TNT, TNT2 */

Modified: dists/trunk/linux-2.6/debian/patches/series/6
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/6       (original)
+++ dists/trunk/linux-2.6/debian/patches/series/6       Tue Nov 14 00:43:53 2006
@@ -14,3 +14,4 @@
 + features/all/sctp-backports-6.patch
 + features/all/sctp-backports-7.patch
 + bugfix/bcm43xx-drain-tx-status-before-starting-irqs.patch
++ bugfix/video-nvidiafb-divide-zero.patch

_______________________________________________
Kernel-svn-changes mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/kernel-svn-changes

Reply via email to