Module Name: src Committed By: martin Date: Tue Mar 4 11:51:34 UTC 2025
Modified Files: src/sys/arch/vax/vsa [netbsd-10]: lcg.c Log Message: Pull up following revision(s) (requested by hans in ticket #1069): sys/arch/vax/vsa/lcg.c: revision 1.13 vax/lcg(4): Check vax_siedata in lcg_match() and lcgcnprobe() as well. LCG only exists on two specific VAXstation models, but not the MicroVAXen sharing the same board type. PR port-vax/59109: Booting 10.1 fails on Microvax 3100 model 80 To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.11.2.1 src/sys/arch/vax/vsa/lcg.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/vax/vsa/lcg.c diff -u src/sys/arch/vax/vsa/lcg.c:1.11 src/sys/arch/vax/vsa/lcg.c:1.11.2.1 --- src/sys/arch/vax/vsa/lcg.c:1.11 Sat Dec 10 19:50:43 2022 +++ src/sys/arch/vax/vsa/lcg.c Tue Mar 4 11:51:34 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: lcg.c,v 1.11 2022/12/10 19:50:43 jakllsch Exp $ */ +/* $NetBSD: lcg.c,v 1.11.2.1 2025/03/04 11:51:34 martin Exp $ */ /* * LCG accelerated framebuffer driver * Copyright (c) 2003, 2004 Blaz Antonic @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: lcg.c,v 1.11 2022/12/10 19:50:43 jakllsch Exp $"); +__KERNEL_RCSID(0, "$NetBSD: lcg.c,v 1.11.2.1 2025/03/04 11:51:34 martin Exp $"); #define LCG_NO_ACCEL @@ -435,9 +435,23 @@ lcg_match(struct device *parent, struct struct vsbus_attach_args *va = aux; volatile char * const ch = (char *)va->va_addr; + /* + * Check the VAX board type. LCG can exist on two board types: + * - KA46 (VAXstation 4000/60 or MicroVAX 3100/80) + * - KA48 (VAXstation 4000 VLC or MicroVAX 3100/m{30,40} + */ if ((vax_boardtype != VAX_BTYP_46) && (vax_boardtype != VAX_BTYP_48)) return 0; + /* + * LCG supposedly only exists on VAXstations, not the MicroVAXen using + * the same board type. + * + * These are "magic values", taken from vax/locore.c + */ + if ((vax_siedata & 0x3) != 2) + return 0; + *ch = 1; if ((*ch & 1) == 0) return 0; @@ -953,6 +967,9 @@ lcgcnprobe(struct consdev *cndev) if ((vax_boardtype != VAX_BTYP_46) && (vax_boardtype != VAX_BTYP_48)) return; /* Only for VS 4000/60 and VLC */ + if ((vax_siedata & 0x3) != 2) + return; /* VAXstation only */ + if (vax_confdata & 0x100) return; /* Diagnostic console */