[PATCH] cyber2010 framebuffer on ARM Netwinder fix
authorWoody Suwalski <woodys@xandros.com>
Mon, 12 Feb 2007 08:55:00 +0000 (00:55 -0800)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Mon, 12 Feb 2007 17:48:42 +0000 (09:48 -0800)
The Netwinder machines with Cyber2010 crash badly when starting Xserver.
The workaround is to disable pci burst option for this revision of video
chip.

[akpm@osdl.org: cleanup]
Signed-off-by: Woody Suwalski <woodys@xandros.com>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Cc: James Simmons <jsimmons@infradead.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/video/cyber2000fb.c

index aae6d9c26e8818646c4a44499f4224b0bd91ab5f..7a6eeda5ae9aabf48bc4032093be88fc08c8eac5 100644 (file)
@@ -1539,16 +1539,21 @@ static int cyberpro_pci_enable_mmio(struct cfb_info *cfb)
        /*
         * Allow the CyberPro to accept PCI burst accesses
         */
-       val = cyber2000_grphr(EXT_BUS_CTL, cfb);
-       if (!(val & EXT_BUS_CTL_PCIBURST_WRITE)) {
-               printk(KERN_INFO "%s: enabling PCI bursts\n", cfb->fb.fix.id);
+       if (cfb->id == ID_CYBERPRO_2010) {
+               printk(KERN_INFO "%s: NOT enabling PCI bursts\n", cfb->fb.fix.id);
+       } else {
+               val = cyber2000_grphr(EXT_BUS_CTL, cfb);
+               if (!(val & EXT_BUS_CTL_PCIBURST_WRITE)) {
+                       printk(KERN_INFO "%s: enabling PCI bursts\n",
+                               cfb->fb.fix.id);
 
-               val |= EXT_BUS_CTL_PCIBURST_WRITE;
+                       val |= EXT_BUS_CTL_PCIBURST_WRITE;
 
-               if (cfb->id == ID_CYBERPRO_5000)
-                       val |= EXT_BUS_CTL_PCIBURST_READ;
+                       if (cfb->id == ID_CYBERPRO_5000)
+                               val |= EXT_BUS_CTL_PCIBURST_READ;
 
-               cyber2000_grphw(EXT_BUS_CTL, val, cfb);
+                       cyber2000_grphw(EXT_BUS_CTL, val, cfb);
+               }
        }
 
        return 0;