Some sparc64 pci frame buffers incorrectly have the `depth' property
spelled `depth ' with a trailing space.

This can be found in this E450 eeprom -p output:
  http://pastebin.com/P4ab4Xt4

Because of this, gfxp(4) attaches believing the display is only 8bpp,
and the display gets garbled.

The following diff will fix this issue. I don't think sparc needs a
similar fix as there are no Sun sparc systems with pci slots.

Index: fb.c
===================================================================
RCS file: /OpenBSD/src/sys/arch/sparc64/dev/fb.c,v
retrieving revision 1.25
diff -u -p -r1.25 fb.c
--- fb.c        21 Oct 2013 10:36:19 -0000      1.25
+++ fb.c        28 Mar 2016 12:54:32 -0000
@@ -131,7 +131,12 @@ fb_setsize(struct sunfb *sf, int def_dep
 {
        int def_linebytes;
 
-       sf->sf_depth = getpropint(node, "depth", def_depth);
+       /*
+        * Some PCI devices lack the `depth' property, but have a `depth '
+        * property (with a trailing space) instead.
+        */
+       sf->sf_depth = getpropint(node, "depth",
+           getpropint(node, "depth ", def_depth));
        sf->sf_width = getpropint(node, "width", def_width);
        sf->sf_height = getpropint(node, "height", def_height);
 

Reply via email to