Fix to work 1bpp Xorg server again on 1bpp framebuffer hardware.
authoraoyama <aoyama@openbsd.org>
Fri, 12 Aug 2022 13:36:19 +0000 (13:36 +0000)
committeraoyama <aoyama@openbsd.org>
Fri, 12 Aug 2022 13:36:19 +0000 (13:36 +0000)
Recent xenocara wsfb driver can treat LUNA's framebuffer "offset", but it
requires one more page by mmap() when we use offset.

Noticed and tested on nono emulator with 1bpp setting.

sys/arch/luna88k/dev/lunafb.c

index 7f0e2e6..b273013 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: lunafb.c,v 1.29 2022/07/15 17:57:26 kettenis Exp $ */
+/* $OpenBSD: lunafb.c,v 1.30 2022/08/12 13:36:19 aoyama Exp $ */
 /* $NetBSD: lunafb.c,v 1.7.6.1 2002/08/07 01:48:34 lukem Exp $ */
 
 /*-
@@ -301,7 +301,8 @@ omfbmmap(void *v, off_t offset, int prot)
        if (offset >= 0 && offset < OMFB_SIZE)
                cookie = (paddr_t)(trunc_page(dc->dc_videobase) + offset);
 #else
-       if (offset >= 0 && offset < dc->dc_rowbytes * dc->dc_ht * hwplanebits)
+       if (offset >= 0 &&
+           offset < dc->dc_rowbytes * dc->dc_ht * hwplanebits + PAGE_SIZE)
                cookie = (paddr_t)(trunc_page(OMFB_FB_RADDR) + offset);
 #endif
        return cookie;