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