Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 May 2011 22:36:17 +0000 (UTC)
From:      Xin LI <delphij@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r222152 - in head: share/man/man4 sys/dev/atkbdc
Message-ID:  <201105202236.p4KMaH28003661@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: delphij
Date: Fri May 20 22:36:17 2011
New Revision: 222152
URL: http://svn.freebsd.org/changeset/base/222152

Log:
  Add a new knob to atkbd(4) to enable typematic rate detection on boot,
  which is now disabled by default.  The detection is known to cause hangs
  on boot with some new Lenovo laptops on FreeBSD/amd64.
  
  Reported by:	gnn
  Discussed with:	jkim
  MFC after:	3 months

Modified:
  head/share/man/man4/atkbd.4
  head/sys/dev/atkbdc/atkbd.c
  head/sys/dev/atkbdc/atkbdreg.h

Modified: head/share/man/man4/atkbd.4
==============================================================================
--- head/share/man/man4/atkbd.4	Fri May 20 22:24:26 2011	(r222151)
+++ head/share/man/man4/atkbd.4	Fri May 20 22:36:17 2011	(r222152)
@@ -26,7 +26,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd January 29, 2008
+.Dd May 20, 2011
 .Dt ATKBD 4
 .Os
 .Sh NAME
@@ -176,6 +176,11 @@ When this option is given, the
 .Nm
 driver will not test the keyboard port during the probe routine.
 Some machines hang during boot when this test is performed.
+.It bit 4 (PROBE_TYPEMATIC)
+When this option is given, the
+.Nm
+driver will try to probe the keyboard typematic rate on boot.
+Some machines hang during boot when this test is performed.
 .El
 .\".Sh FILES
 .Sh EXAMPLES

Modified: head/sys/dev/atkbdc/atkbd.c
==============================================================================
--- head/sys/dev/atkbdc/atkbd.c	Fri May 20 22:24:26 2011	(r222151)
+++ head/sys/dev/atkbdc/atkbd.c	Fri May 20 22:36:17 2011	(r222152)
@@ -1097,6 +1097,9 @@ get_typematic(keyboard_t *kbd)
 	x86regs_t regs;
 	uint8_t *p;
 
+	if (!(kbd->kb_config & KB_CONF_PROBE_TYPEMATIC))
+		return (ENODEV);
+
 	if (x86bios_get_intr(0x15) == 0 || x86bios_get_intr(0x16) == 0)
 		return (ENODEV);
 

Modified: head/sys/dev/atkbdc/atkbdreg.h
==============================================================================
--- head/sys/dev/atkbdc/atkbdreg.h	Fri May 20 22:24:26 2011	(r222151)
+++ head/sys/dev/atkbdc/atkbdreg.h	Fri May 20 22:36:17 2011	(r222152)
@@ -36,6 +36,7 @@
 #define KB_CONF_NO_RESET	(1 << 1) /* don't reset the keyboard */
 #define KB_CONF_ALT_SCANCODESET	(1 << 2) /* assume the XT type keyboard */
 #define	KB_CONF_NO_PROBE_TEST	(1 << 3) /* don't test keyboard during probe */
+#define	KB_CONF_PROBE_TYPEMATIC	(1 << 4) /* probe keyboard typematic */
 
 #ifdef _KERNEL
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201105202236.p4KMaH28003661>