PATCH: cyber2010 framebuffer on ARM Netwinder fix...

From: Woody Suwalski
Date: Tue Jan 09 2007 - 12:29:34 EST


Martin Michlmayr wrote:
* Stuart Anderson <anderson@xxxxxxxxxxxx> [2007-01-05 09:40]:
shark w/o any changes to the kernel. I dug a bit further, both in the
driver, and in the HW spec for the shark, and discovered that the video
chip on the shark is connected via the VL bus, not the PCI bus. The
shark does have a VL-PCI bridge, but there doesn't seem to be anything
connected to the PCI side of it (which matches what lspci says). The
function containing the patch in question doesn't appear to even run on
the shark (there is a VL version that is #ifdef SHARK'd), so I'd have
to say the patch would have not impact on the shark.

OK, good news. Thanks for checking. Woody, can you submit the patch
(with proper intentation) to linux-fbdev-devel@xxxxxxxxxxxxxxxxxxxxx

As suggested - I am sending this patch to fbdev-devel....

The Netwinder machines with Cyber2010 crash badly when starting Xserver.
The workaround is to disable pci burst option for this revision of video chip.

Thanks, Woody

The Netwinder machines with Cyber2010 crash badly when starting Xserver.
The workaround is to disable pci burst option for this revision of video chip.

Signed-off-by: Woody Suwalski <woodys@xxxxxxxxxxx>

---

--- a/drivers/video/cyber2000fb.c 2006-11-29 16:57:37.000000000 -0500
+++ b/drivers/video/cyber2000fb.c 2007-01-09 12:20:01.000000000 -0500
@@ -1539,16 +1539,24 @@ static int cyberpro_pci_enable_mmio(stru
/*
* 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);
-
- val |= EXT_BUS_CTL_PCIBURST_WRITE;
-
- if (cfb->id == ID_CYBERPRO_5000)
- val |= EXT_BUS_CTL_PCIBURST_READ;
-
- cyber2000_grphw(EXT_BUS_CTL, val, cfb);
+ 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;
+
+ if (cfb->id == ID_CYBERPRO_5000)
+ val |= EXT_BUS_CTL_PCIBURST_READ;
+
+ cyber2000_grphw(EXT_BUS_CTL, val, cfb);
+ }
}

return 0;