From 452a74bfeedb9acdcbffa3ef375771bc27445490 Mon Sep 17 00:00:00 2001 From: Nathan Whitehorn Date: Wed, 30 May 2018 04:15:33 +0000 Subject: [PATCH] If linebytes property is missing from the graphics device, assume no overscan and synthesize it from the display depth and screen width. This may not be right, but it sometimes right and is better than returning CN_DEAD. --- sys/dev/vt/hw/ofwfb/ofwfb.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sys/dev/vt/hw/ofwfb/ofwfb.c b/sys/dev/vt/hw/ofwfb/ofwfb.c index 5d5f421ca9f..cd768e7f878 100644 --- a/sys/dev/vt/hw/ofwfb/ofwfb.c +++ b/sys/dev/vt/hw/ofwfb/ofwfb.c @@ -394,8 +394,7 @@ ofwfb_init(struct vt_device *vd) /* Make sure we have needed properties */ if (OF_getproplen(node, "height") != sizeof(height) || OF_getproplen(node, "width") != sizeof(width) || - OF_getproplen(node, "depth") != sizeof(depth) || - OF_getproplen(node, "linebytes") != sizeof(sc->fb.fb_stride)) + OF_getproplen(node, "depth") != sizeof(depth)) return (CN_DEAD); /* Only support 8 and 32-bit framebuffers */ @@ -406,7 +405,9 @@ ofwfb_init(struct vt_device *vd) OF_getprop(node, "height", &height, sizeof(height)); OF_getprop(node, "width", &width, sizeof(width)); - OF_getprop(node, "linebytes", &stride, sizeof(stride)); + if (OF_getprop(node, "linebytes", &stride, sizeof(stride)) != + sizeof(stride)) + stride = width*depth/8; sc->fb.fb_height = height; sc->fb.fb_width = width;