Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 May 2005 18:29:20 +0500 (SAMST)
From:      Vladimir Zarozhevsky <vladimir@voip.izhnet.ru>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   kern/80694: [patch] atkbd looped on Acer TravelMate 2701LC
Message-ID:  <200505061329.j46DTKav087154@voip.izhnet.ru>
Resent-Message-ID: <200505061330.j46DU3kX091549@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         80694
>Category:       kern
>Synopsis:       [patch] atkbd looped on Acer TravelMate 2701LC
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri May 06 13:30:02 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Vladimir Zarozhevsky
>Release:        FreeBSD 5.3-STABLE i386
>Organization:
INT Ltd.
>Environment:
Laptop Acer TraverlMate 2701LC
System: FreeBSD voip.izhnet.ru 5.3-STABLE FreeBSD 5.3-STABLE #4: Sat Nov 13 12:04:35 SAMT 2004 vladimir@voip.izhnet.ru:/var/spool/obj/usr/src/sys/voip i386


	
>Description:
	For running FreeBSD kernel need disable atkbd keyboard
	and use USB keyboard. After install FreeBSD for use internal
	keyboard need patch sys/dev/kdb/atkbdc.c file and recompile
	kernel, install kernel and reboot our Laptop.
>How-To-Repeat:
	
>Fix:
	Patch included.

	

--- atkbdc.c.patch begins here ---
*** atkbdc.c.orig	Wed May  4 15:02:31 2005
--- atkbdc.c	Fri May  6 13:12:00 2005
*************** empty_aux_buffer(KBDC p, int wait)
*** 758,765 ****
      int c2 = 0;
  #endif
      int delta = 2;
  
!     for (t = wait; t > 0; ) { 
          if ((f = read_status(kbdcp(p))) & KBDS_ANY_BUFFER_FULL) {
  	    DELAY(KBDD_DELAYTIME);
              b = read_data(kbdcp(p));
--- 758,766 ----
      int c2 = 0;
  #endif
      int delta = 2;
+     int twait = wait;
  
!     for (t = twait; t > 0; ) { 
          if ((f = read_status(kbdcp(p))) & KBDS_ANY_BUFFER_FULL) {
  	    DELAY(KBDD_DELAYTIME);
              b = read_data(kbdcp(p));
*************** empty_aux_buffer(KBDC p, int wait)
*** 771,777 ****
  		++c2;
  #endif
  	    }
! 	    t = wait;
  	} else {
  	    t -= delta;
  	}
--- 772,778 ----
  		++c2;
  #endif
  	    }
! 	    t = twait--;
  	} else {
  	    t -= delta;
  	}
*************** empty_both_buffers(KBDC p, int wait)
*** 796,804 ****
      int c2 = 0;
  #endif
      int delta = 2;
  
!     for (t = wait; t > 0; ) { 
!         if ((f = read_status(kbdcp(p))) & KBDS_ANY_BUFFER_FULL) {
  	    DELAY(KBDD_DELAYTIME);
              (void)read_data(kbdcp(p));
  #if KBDIO_DEBUG >= 2
--- 797,807 ----
      int c2 = 0;
  #endif
      int delta = 2;
+     int twait = wait;
  
!     for (t = twait; t > 0; ) { 
! 	f = read_status(kbdcp(p));
!         if (f & KBDS_ANY_BUFFER_FULL) {
  	    DELAY(KBDD_DELAYTIME);
              (void)read_data(kbdcp(p));
  #if KBDIO_DEBUG >= 2
*************** empty_both_buffers(KBDC p, int wait)
*** 807,813 ****
              else
  		++c2;
  #endif
! 	    t = wait;
  	} else {
  	    t -= delta;
  	}
--- 810,816 ----
              else
  		++c2;
  #endif
! 	    t = twait--;
  	} else {
  	    t -= delta;
  	}
--- atkbdc.c.patch ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



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