NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

re: kern/50142: Cannot install NetBSD on machine with USB keyboard



please try this image:

   http://ftp.netbsd.org/pub/NetBSD/misc/mrg/NetBSD-7.0_RC2-amd64.iso

which has the patch below applied.


.mrg.

Index: sys/dev/usb/ukbd.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/ukbd.c,v
retrieving revision 1.129.4.1
diff -p -u -r1.129.4.1 ukbd.c
--- sys/dev/usb/ukbd.c	21 Mar 2015 17:30:43 -0000	1.129.4.1
+++ sys/dev/usb/ukbd.c	11 Aug 2015 06:45:55 -0000
@@ -410,15 +410,14 @@ ukbd_attach(device_t parent, device_t se
 	sc->sc_flags = 0;
 
 	aprint_naive("\n");
+	aprint_normal("\n");
 
 	if (!pmf_device_register(self, NULL, NULL)) {
-		aprint_normal("\n");
 		aprint_error_dev(self, "couldn't establish power handler\n");
 	}
 
 	parseerr = ukbd_parse_desc(sc);
 	if (parseerr != NULL) {
-		aprint_normal("\n");
 		aprint_error_dev(self, "attach failed, %s\n", parseerr);
 		return;
 	}
@@ -437,7 +436,7 @@ ukbd_attach(device_t parent, device_t se
 #endif
 
 #ifdef DIAGNOSTIC
-	aprint_normal(": %d modifier keys, %d key codes", sc->sc_nmod,
+	aprint_normal_dev(self, "%d modifier keys, %d key codes\n", sc->sc_nmod,
 	       sc->sc_nkeycode);
 	if (sc->sc_flags & FLAG_APPLE_FN)
 		aprint_normal(", apple fn key");
@@ -446,7 +445,6 @@ ukbd_attach(device_t parent, device_t se
 	if (sc->sc_flags & FLAG_GDIUM_FN)
 		aprint_normal(", Gdium fn key");
 #endif
-	aprint_normal("\n");
 
 	/*
 	 * Remember if we're the console keyboard.
@@ -1048,10 +1046,10 @@ ukbd_parse_desc(struct ukbd_softc *sc)
 	struct hid_item h;
 	int size;
 	void *desc;
-	int imod;
+	int imod, imodfull;
 
 	uhidev_get_report_desc(sc->sc_hdev.sc_parent, &desc, &size);
-	imod = 0;
+	imod = imodfull = 0;
 	sc->sc_nkeycode = 0;
 	d = hid_start_parse(desc, size, hid_input);
 	while (hid_get_item(d, &h)) {
@@ -1082,8 +1080,8 @@ ukbd_parse_desc(struct ukbd_softc *sc)
 				sc->sc_mods[imod].mask = 1 << imod;
 				sc->sc_mods[imod].key = HID_GET_USAGE(h.usage);
 				imod++;
-			} else
-				return ("too many modifier keys");
+			}
+			imodfull++;
 		} else {
 			/* Array */
 			if (h.loc.size != 8)
@@ -1099,6 +1097,9 @@ ukbd_parse_desc(struct ukbd_softc *sc)
 		}
 	}
 	sc->sc_nmod = imod;
+	if (imod != imodfull)
+		aprint_error_dev(sc->sc_hdev.sc_dev, "too many modifier keys, "
+			"found %d, only support %d\n", imodfull, imod);
 	hid_end_parse(d);
 
 	hid_locate(desc, size, HID_USAGE2(HUP_LEDS, HUD_LED_NUM_LOCK),


Home | Main Index | Thread Index | Old Index