diff options
Diffstat (limited to 'source/a/kbd/sources/kbd-1.15-sparc.patch')
-rw-r--r-- | source/a/kbd/sources/kbd-1.15-sparc.patch | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/source/a/kbd/sources/kbd-1.15-sparc.patch b/source/a/kbd/sources/kbd-1.15-sparc.patch new file mode 100644 index 00000000..a858a253 --- /dev/null +++ b/source/a/kbd/sources/kbd-1.15-sparc.patch @@ -0,0 +1,97 @@ +diff -up kbd-1.15/man/man8/kbdrate.8_old kbd-1.15/man/man8/kbdrate.8 +--- kbd-1.15/man/man8/kbdrate.8_old 2008-12-10 14:20:33.000000000 +0100 ++++ kbd-1.15/man/man8/kbdrate.8 2008-12-10 14:41:10.000000000 +0100 +@@ -22,7 +22,7 @@ Using + without any options will reset the repeat rate to 10.9 characters per second (cps) + and the delay to 250 milliseconds (ms) for Intel- and M68K-based systems. + These are the IBM defaults. On SPARC-based systems it will reset the repeat rate +-to 5 cps and the delay to 200 ms. ++to 20 cps and the delay to 200 ms. + + .SH OPTIONS + .TP +@@ -69,3 +69,5 @@ When these ioctls fail an ioport interfa + .I /etc/rc.local + .br + .I /dev/port ++.br ++.I /dev/kbd +diff -up kbd-1.15/src/kbdrate.c_old kbd-1.15/src/kbdrate.c +--- kbd-1.15/src/kbdrate.c_old 2008-12-10 14:00:25.000000000 +0100 ++++ kbd-1.15/src/kbdrate.c 2008-12-10 14:20:11.000000000 +0100 +@@ -77,7 +77,6 @@ beats rebuilding the kernel! + + #ifdef __sparc__ + #include <asm/param.h> +-#include <asm/kbio.h> + #endif + + #ifndef KDKBDREP +@@ -109,11 +108,15 @@ static int valid_delays[] = { 250, 500, + + static int + KDKBDREP_ioctl_ok(double rate, int delay, int silent) { ++#if defined(KDKBDREP) && !defined(__sparc__) + /* + * This ioctl is defined in <linux/kd.h> but is not + * implemented anywhere - must be in some m68k patches. ++ * We cannot blindly try unimplemented ioctls on sparc64 - ++ * the 32<->64bit transition layer does not like it. + * Since 2.4.9 also on i386. +- */ ++ */ ++ + struct my_kbd_repeat kbdrep_s; + + /* don't change, just test */ +@@ -177,6 +180,9 @@ KDKBDREP_ioctl_ok(double rate, int delay + rate, kbdrep_s.delay ); + + return 1; /* success! */ ++#else /* no KDKBDREP or __sparc__ */ ++ return 0; ++#endif /* KDKBDREP */ + } + + static int +@@ -221,7 +227,7 @@ sigalrmhandler( int sig ) { + int + main( int argc, char **argv ) { + #ifdef __sparc__ +- double rate = 5.0; /* Default rate */ ++ double rate = 20.0; /* Default rate */ + int delay = 200; /* Default delay */ + #else + double rate = 10.9; /* Default rate */ +@@ -272,7 +278,9 @@ main( int argc, char **argv ) { + + + /* The ioport way */ ++ /* The ioport way - will crash on sparc */ + ++#ifndef __sparc__ + for (i = 0; i < RATE_COUNT; i++) + if (rate * 10 >= valid_rates[i]) { + value &= 0x60; +@@ -335,5 +343,7 @@ main( int argc, char **argv ) { + valid_rates[value & 0x1f] / 10.0, + valid_delays[ (value & 0x60) >> 5 ] ); + ++#endif ++ + return 0; + } +diff -up kbd-1.15/src/setleds.c_old kbd-1.15/src/setleds.c +--- kbd-1.15/src/setleds.c_old 2008-12-10 14:00:02.000000000 +0100 ++++ kbd-1.15/src/setleds.c 2008-12-10 14:00:16.000000000 +0100 +@@ -14,10 +14,6 @@ + #include "nls.h" + #include "version.h" + +-#ifdef __sparc__ +-#include <asm/kbio.h> +-#endif +- + static void + usage(void) + { |