kern/80694: [patch] atkbd looped on Acer TravelMate 2701LC

Vladimir Zarozhevsky vladimir at voip.izhnet.ru
Fri May 6 06:30:03 PDT 2005


>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 at 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:


More information about the freebsd-bugs mailing list