Amiga input driver compile fixes
Subsystems (5)
PATCH 1/1 Amiga input driver compile fixes
Hi!
Geert fixed the input drivers on Amiga to at least compile properly.
===================================================================
You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual. 'bk pull bk://linux-input.bkbits.net/linux-input' should work as well.
===================================================================
[email protected], 2002-08-19 11:20:09+02:00, [email protected]
Compile fixes for Amiga input drivers
joystick/Config.help | 4 ++-- joystick/Config.in | 2 +- joystick/amijoy.c | 31 +++++++++++++++---------------- keyboard/amikbd.c | 25 +++++++++++++------------ mouse/amimouse.c | 9 +++++---- 5 files changed, 36 insertions(+), 35 deletions(-)
===================================================================
drivers/input/joystick/Config.help +2 -2
@@ -203,13 +203,13 @@ The module will be called turbografx.o. If you want to compile it as a module, say M here and read <file:Documentation/modules.txt>. -CONFIG_JOYSTICK_AMIJOY +CONFIG_JOYSTICK_AMIGA Say Y here if you have an Amiga with a digital joystick connected to it. This driver is also available as a module ( = code which can be inserted in and removed from the running kernel whenever you want). - The module will be called joy-amiga.o. If you want to compile it as + The module will be called amijoy.o. If you want to compile it as a module, say M here and read <file:Documentation/modules.txt>. CONFIG_INPUT_JOYDUMP
drivers/input/joystick/Config.in +1 -1
@@ -28,7 +28,7 @@ dep_tristate ' Multisystem joysticks via TurboGraFX device' CONFIG_JOYSTICK_TURBOGRAFX $CONFIG_INPUT $CONFIG_INPUT_JOYSTICK $CONFIG_PARPORT if [ "$CONFIG_AMIGA" = "y" ]; then - dep_tristate ' Amiga joysticks' CONFIG_JOYSTICK_AMIJOY $CONFIG_INPUT $CONFIG_INPUT_JOYSTICK + dep_tristate ' Amiga joysticks' CONFIG_JOYSTICK_AMIGA $CONFIG_INPUT $CONFIG_INPUT_JOYSTICK fi dep_tristate ' Gameport data dumper' CONFIG_INPUT_JOYDUMP $CONFIG_INPUT $CONFIG_INPUT_JOYSTICK
drivers/input/joystick/amijoy.c +15 -16
@@ -37,6 +37,7 @@#include <asm/system.h> #include <asm/amigahw.h> +#include <asm/amigaints.h> MODULE_AUTHOR ("Vojtech Pavlik <[email protected]>" );MODULE_DESCRIPTION ("Driver for Amiga joysticks" );
@@ -78,13 +79,13 @@if ((*used)++)return 0 ; - -if (request_irq (IRQ_AMIGA_VERTB , amijoy_interrupt,0 ,"amijoy" ,NULL )) { + +if (request_irq (IRQ_AMIGA_VERTB , amijoy_interrupt,0 ,"amijoy" , amijoy_interrupt)) { (*used)--; -printk (KERN_ERR "amijoy.c: Can't allocate irq %d\n" , amijoy_irq); +printk (KERN_ERR "amijoy.c: Can't allocate irq %d\n" ,IRQ_AMIGA_VERTB );return -EBUSY ; } - +return 0 ; }
@@ -99,8 +100,9 @@static int __init amijoy_setup (char *str) {int i; -int ints[4 ] - str = get_options(str, ARRAY_SIZE(ints), ints); +int ints[4 ]; + + str =get_options (str,ARRAY_SIZE (ints), ints);for (i =0 ; i <= ints[0 ] && i <2 ; i++) amijoy[i] = ints[i+1 ];return 1 ; }
@@ -110,9 +112,6 @@ { int i, j; - init_timer(amijoy_timer); - port->timer.function = amijoy_timer; - for (i = 0; i < 2; i++) if (amijoy[i]) { if (!request_mem_region(CUSTOM_PHYSADDR+10+i*2, 2,
@@ -134,12 +133,12 @@ amijoy_dev[i].absmax[ABS_X + j] =1 ; } - amijoy->dev[i].name = amijoy_name; - amijoy->dev[i].phys = amijoy_phys[i]; - amijoy->dev[i].id.bustype =BUS_AMIGA ; - amijoy->dev[i].id.vendor =0x0001 ; - amijoy->dev[i].id.product =0x0003 ; - amijoy->dev[i].id.version =0x0100 ; + amijoy_dev[i].name = amijoy_name; + amijoy_dev[i].phys = amijoy_phys[i]; + amijoy_dev[i].id.bustype =BUS_AMIGA ; + amijoy_dev[i].id.vendor =0x0001 ; + amijoy_dev[i].id.product =0x0003 ; + amijoy_dev[i].id.version =0x0100 ; amijoy_dev[i].private = amijoy_used + i;
@@ -149,7 +148,7 @@return 0 ; } -static void _exit amijoy_exit(void) +static void __exit amijoy_exit(void) {int i;
drivers/input/keyboard/amikbd.c +13 -12
@@ -34,6 +34,7 @@#include <linux/module.h> #include <linux/init.h> #include <linux/input.h> +#include <linux/delay.h> #include <asm/amigaints.h> #include <asm/amigahw.h>
@@ -51,9 +52,9 @@57 ,14 ,15 ,96 ,28 ,1 ,111 ,0 ,0 ,0 ,74 ,0 ,103 ,108 ,106 ,105 ,59 ,60 ,61 ,62 ,63 ,64 ,65 ,66 ,67 ,68 ,69 ,70 ,98 ,55 ,78 ,87 ,42 ,54 ,58 ,29 ,56 ,100 -} +}; -static char *amikbd_messages[] = { +static const char *amikbd_messages[8 ] = {KERN_ALERT "amikbd: Ctrl-Amiga-Amiga reset warning!!\n" ,KERN_WARNING "amikbd: keyboard lost sync\n" , KERN_WARNING "amikbd: keyboard buffer overflow\n",
@@ -79,19 +80,19 @@ ciaa.cra &= ~0x40 ;/* switch CIA serial port to input mode */ down = scancode &1 ;/* lowest bit is release bit */ - scancode = scancode >>1 ; + scancode >>=1 ;if (scancode <0x78 ) {/* scancodes < 0x78 are keys */ scancode = amikbd_keycode[scancode]; - -if (scancode ==KEY_CAPS ) {/* CapsLock is a toggle switch key on Amiga */ + +if (scancode ==KEY_CAPSLOCK ) {/* CapsLock is a toggle switch key on Amiga */ input_report_key (&amikbd_dev, scancode,1 );input_report_key (&amikbd_dev, scancode,0 );input_sync (&amikbd_dev);return ; } - +input_report_key (&amikbd_dev, scancode, down);input_sync (&amikbd_dev);
@@ -106,20 +107,20 @@int i;if (!AMIGAHW_PRESENT (AMI_KEYBOARD )) -return -EIO ; +return -EIO ; -if (!request_mem_region (CIAA_PHYSADDR -1 +0xb00 ,0x100 ,"amikeyb" )) +if (!request_mem_region (CIAA_PHYSADDR -1 +0xb00 ,0x100 ,"amikeyb" ))return -EBUSY ; - amikbd_dev.evbit[0 ] =BIT (EV_KEY ) |BIT (EV_REP ); + amikbd_dev.evbit[0 ] =BIT (EV_KEY ) |BIT (EV_REP ); amikbd_dev.keycode = amikbd_keycode; - -for (i =0 ; i <0x78 ; i++) + +for (i =0 ; i <0x78 ; i++)if (amikbd_keycode[i])set_bit (amikbd_keycode[i], amikbd_dev.keybit); ciaa.cra &= ~0x41 ;/* serial data in, turn off TA */ -request_irq (IRQ_AMIGA_CIAA_SP , amikbd_interrupt,0 ,"amikbd" ,NULL ); +request_irq (IRQ_AMIGA_CIAA_SP , amikbd_interrupt,0 ,"amikbd" , amikbd_interrupt); amikbd_dev.name = amikbd_name; amikbd_dev.phys = amikbd_phys;
drivers/input/mouse/amimouse.c +5 -4
@@ -64,7 +64,7 @@input_report_rel (&amimouse_dev,REL_X , dx);input_report_rel (&amimouse_dev,REL_Y , dy); - +input_report_key (&amimouse_dev,BTN_LEFT , ciaa.pra &0x40 );input_report_key (&amimouse_dev,BTN_MIDDLE , potgor &0x0100 );input_report_key (&amimouse_dev,BTN_RIGHT , potgor &0x0400 );
@@ -84,9 +84,9 @@ amimouse_lastx = joy0dat &0xff ; amimouse_lasty = joy0dat >>8 ; -if (request_irq (IRQ_AMIGA_VERTB , amimouse_interrupt,0 ,"amimouse" ,NULL )) { +if (request_irq (IRQ_AMIGA_VERTB , amimouse_interrupt,0 ,"amimouse" , amimouse_interrupt)) { amimouse_used--; -printk (KERN_ERR "amimouse.c: Can't allocate irq %d\n" , amimouse_irq); +printk (KERN_ERR "amimouse.c: Can't allocate irq %d\n" ,IRQ_AMIGA_VERTB );return -EBUSY ; }
@@ -116,10 +116,11 @@ amimouse_dev.id.vendor =0x0001 ; amimouse_dev.id.product =0x0002 ; amimouse_dev.id.version =0x0100 ; - +input_register_device (&amimouse_dev);printk (KERN_INFO "input: %s at joy0dat\n" , amimouse_name); +return 0 ; } static void __exit amimouse_exit(void)
===================================================================
This BitKeeper patch contains the following changesets:
+
## Wrapped with gzip_uu ##
begin 664 bkpatch13023 M'XL(`)U%8CT``\U9;7/:2!+^C'Y%GW-7,;&!&;TAR#H5@MDLYVSLPTZJ<DF* M$M(`LT82JQEA>X_[[]<S$@X&0C";;!VX1M)HU-,O3S_=PD_@G6!ILS1+?I,L M&!M/X)=$R&9)9()5@S_PNI<D>%T;)Q&K%:MJ@^L:CZ>9-/#^A2^#,<Q8*IHE M6K7N9^3=E#5+O<[K=V]:/<,X.8'VV(]'[))).#DQ9)+._$DH7OIR/$GBJDS] M6$1,^M4@B>;W2^<F(29^'5JWB./.J4OL^CR@(:6^35E(3-MS;6/FQV&:S-C+ M65-9IE$U5=E>-0U+:=.S+GI>M0R3H%6[08!8M:(5Z,-H+1IDB9I'!&S20B, M&$OERPF/L]M*Y'K7U20=P9$#%6*\@N^K?=L(H)U$4SYA,.2W3,P2:$5\9$/ MVL\0IEQYV#@#TW8:CG'QQ9E&Y9$?PR^,5[5(5ILP'%=K5@[*>UWY([(7EP M76LG\9"/JF,VF2X,<PFA=6K-B6?5&_-&X#3"!B$-SZ04#=[HPWOAVK(MTCW:
M(T\<^:VY=A*XP)^+^4-G_#16%:SX$9%^J'$*$'LUOR(ZY-JD$NK$PM5\FPZ M=RFUK7GHVK9#+&*ZOC^DYF773=+7NB)X34;"*Q=];QF=X/$3T,E\'H0KBI* MYI18EC.W+$(8^IAYKD,<>Q<]OR+YBZ*FY5$3%=T.X\TH0)EXOI"IL6VK(%'+ M)=[<](>!93-FDX.AJ[[*@\%+VD+D%/[*EN`2L>K^I+2-WQYD/3\JUZ&/IN MG5#;W9SVWX#L0O828#W3LS3G?1OLB@Q_?"H:NV'RZQO438>XB$>5C5Z#:OKT MULC3V4J>)E3,'T.>YV]_[K[N__/\P^55MWW6;_W:Q7,8)1)2%OL1"W'33:M> MM_!I-+KB:[)=>2#'(Y)N3D#G4$EO]!^2Z,4.H=V#FD\QD$"-;G[8K/&I24V] M1A\KL8,HB3,L'I@<"<P8!#XDPG:4"144H7N$.Z2#&[\6"K+@J+:<F^V&H M//YVS?XN^;<G3A?BEU#J(4PU2NEZC=\.4PH5^G\'4P2A)I5'@9#'^T#0H@I= M>@2D$W[,N5"^I+!4RC:DL5.XNEF?>'OQ73W[<6[JX=7]TNW6]1"_;%W>/* MU&-A]UZHHY2QS7MN6E:IOL5;G2W@PX[2^K^1:UEKGX3[P%4H!6&$'$A>#S" M=C.89"%;W)G<^'<".T4AP$<D!SI(V2S/M=(3=GO&1.RS]/?#\O%(S_S6\!K MB+-HP%+]:[K:<IC>7V_;GE3P2(>)&AL<>],L9CD$3XO9#8<PF&,*2*RE($_ M2+=EF,N((G9L1*LZ&[,@FO<YH;+,;S/0[FL$+Z+)&)9N,BF+!U.,NSCX&;, M)1-3/V"JO=:MQFY)M@#!'CG6M16QI/"V_"3+Z*:+D'H(U$=OS!./0JFT?5, M'#\9)8X^6/9VM_>O/,_Z[SN]JU?'143[^#A+TVPJCX$<PT$^>[!^NUR&_^`> MMDIT/99*17S..KVW_4ZOMWBX&C2A[<=/L5!,)DF@2$"%]Q_AIQCEKNA1?HY" MZUJH&C\9IY0H"[K8RH*%9B!\E(4?[<_/E5E"IG"""2'[R53R)!:'.',,K5ZO M]:%_V?UWYU"M+A_KAY1P[&50SBFUZN"B5-O$0ZE4*LQ#9'[DGZN*25%L,:FN MGJ\OFHX1V/>+U!7.;EC'P^H@$^IE%E>_>G>9F[MYX8S%8:(L(K<$N['-BZ8I MENI+E997Q.5"G1(OHH2HFQW=-7/#XJ.>8!O&IB)_3Z[584\EZ'.#]5\>0.] MKKT9*'K]D:\K?U+X%V(E9L/.W]D?2ZP6$NL/:CLW$:M6?P=JW<)_O_K7K!#5 MCY@0_HB)CY^Q:8L%ACD.04Q9P(=WV+X)$/R/A<Q+'DTG:EZ,^5JWJTA_?)1 M'"%O+]%AVY\*>),$UX!&AQ.E@F+(AZ2O6LB'#)_3ZVH=F/HI9ACRRF[\JM\\
MM_+K&A;VXE?W;]J4-1"-O'O-+LZFOGT^%],+4?WW'HL$BOWM6HIX-EJ)+S/ MF):*/G4^ZK$DC\.$MSJQ8L3H#D-*O[V<O[6!'Z_!M/RK/.AWVY=7+XY;Y\A M%Y=JSW14=%"X*K8R&8T06@)]'HP!?8+UKNB]GM6,TX8V0(^:91N:&O2A5$J9 MS-(8*IWNN>9,W<_E!ZW(WQ9AC5C43]D(B>:PW6VU^A>_?+ALG9[V*O2(W`X( MEA!R2TE1251<#LIE)=#.!>K"47@'T5!ELP&7'XERSZONU6'G?1_-+,-\<=7K M7.0D[NJ:0.NY<U3B'')%=<^!PT^X9]W#LZ,CM9>9DYX^E#:70*WZY<7Q(F76 MBR#.'JS?1EW6&7+U-Y[="7*_WYW^G/![?J3$*QI/YY'\B'VG_=>Q8Z%^\_MP MS3[-9I$<:&S&=J*L_%>]K92U&IU]WKI<W3>Y1=^TU$7MU/SIC3<@7\\?;%I2 MM(":./0(*Y]-#>$B?(]K"2G-Z4D?/BUELXX$]C;W_S30C;S(HI.AZ3AUVZT; *_P--*'V8H1@`````
`
end
Signature · 2 lines
Vojtech Pavlik SuSE Labs
PATCH 1/2 Fix shift-pgup problems in i8042.c
Hi!
You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual. 'bk pull bk://linux-input.bkbits.net/linux-input' should work as well.
===================================================================
[email protected], 2002-08-21 19:00:13+02:00, [email protected]
Fix i8042.c to ignore fake key releases generated by AT keyboard in translated set 2. This fixes a problem where shift-pgup, with the pgup released first generated an unknown scancode warning and the shift remained stuck.
i8042.c | 4 ++++ 1 files changed, 4 insertions(+)
===================================================================
drivers/input/serio/i8042.c +4 -0
@@ -54,6 +54,7 @@static struct serio i8042_aux_port;static unsigned char i8042_initial_ctr;static unsigned char i8042_ctr; +static unsigned char i8042_last_e0;struct timer_list i8042_timer;#ifdef I8042_DEBUG_IO
@@ -366,12 +367,15 @@if (data >0x7f ) {if (test_and_clear_bit (data &0x7f , i8042_unxlate_seen)) {serio_interrupt (&i8042_kbd_port,0xf0 , dfl); +if (i8042_last_e0 && (data ==0xaa || data ==0xb6 )) +set_bit (data &0x7f , i8042_unxlate_seen); data = i8042_unxlate_table[data &0x7f ]; } }else {set_bit (data, i8042_unxlate_seen); data = i8042_unxlate_table[data]; } + i8042_last_e0 = (data ==0xe0 ); }serio_interrupt (&i8042_kbd_port, data, dfl); }
===================================================================
This BitKeeper patch contains the following changesets:
+
## Wrapped with gzip_uu ##
begin 664 bkpatch5769 M'XL(`#?'8ST``[54;4_;,!#^7/^*DY0")J<G==VZ@1C;$.;-,3@<^4Z;N,U M=:K8H67*CY_3E@*58*\D413[[IX[^7F>[,&-D56_<UM^MU+D9\^E<;V.Z8V MTA,_W/JJ+-W:S\N9]#=9_FCJ*SVO+7'Q2VY%#K>R,OT.]8+MCKV;RW[GZOSC MS9?3*T(&SC+N9[(;]+"8$!L6=WR(C,GW.9%J3U;<6UFTG)/E+-FF]HP1.;N MB"8!1G%#8PR31M",4AY2F2$+TS@DF\%.-F/OUJ>,8N3>81,QEL;D/5OH@C( M?$Q]1H'V^HA]&APA<Q^PP='%+I(WL'_'?J,"/B@EJ!2#)DG'#JHB2XK"6,^ ME3"5=U#)0G(C#4RDEA6W,H/1'9Q>M\%1R:O,02@-JSF*5=BXXV4>7.?*P%@M M72F'>56."CF#12X=N,G5V';GDWI^#ME<P=A<PGMQGV_S)56QC[JRC74>JK+ MA08CN!9E)F'!*ZWTQ,6R#<8*VH',N-+M++864X]\AHB&*9++!P60[A]>A"!' M\G;+C%VH0DURZ]5BT1*>5:J5X%J6OI.T*OW-N:[92#"@+(IIW1.#*Q)L"6" M4R$QI&/,=CG_-:(3%4T0L==$O9;.5N(O%+6B?[7I_P&9A2P($TJ;,.YALK)& MNFL,[#UGC/"UC''Q6TYH1?>L%6:M2-E*?RN"OD*W6JP>IZ?+E[CZ"WE>1#%0 M8BRW2CBK&.=D-X+(>;7V][#@Q@XEOB$709P"(YWUI<9P\"0!]O?A(..6.\$ M+CF'IH&']2@^/+RO[3BS#T?*KM/W7309'V_:U7K9GL+02*D/VZ9)Z.9;MWS2 ?;O"XFT27N_V%BUR*J:EG@QA9)#"FY">W!0:/+P8`````
`
end
Signature · 2 lines
Vojtech Pavlik SuSE Labs
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/1 Franz Sirl's final PPC input conversion part
Hi!
You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual. 'bk pull bk://linux-input.bkbits.net/linux-input' should work as well.
===================================================================
[email protected], 2002-08-21 22:30:28+02:00, [email protected]
Hi Vojtech,
I noticed you just pushed the pc_keyb.c removal to linux-input, here is the PPC part of it that removes now superflous stuff. The small change in keyboard.c is a bugfix from 2.4 and ruby that didn't make it into 2.5 yet. Franz.
arch/ppc/config.in | 5 -- arch/ppc/platforms/chrp_setup.c | 17 ------ arch/ppc/platforms/pmac_setup.c | 12 ---- drivers/char/keyboard.c | 2 drivers/macintosh/Makefile | 2 drivers/macintosh/mac_hid.c | 98 +--------------------------------------- include/asm-ppc/machdep.h | 6 -- 7 files changed, 6 insertions(+), 136 deletions(-)
===================================================================
arch/ppc/config.in +0 -5
@@ -540,11 +540,6 @@ bool ' Support for mouse button 2+3 emulation' CONFIG_MAC_EMUMOUSEBTN fi fi - # This is for drivers/macintosh/mac_hid.o, which is needed if the input - # layer is used. - if [ "$CONFIG_INPUT" != "n" ]; then - define_bool CONFIG_MAC_HID y - fi if [ "$CONFIG_ADB_CUDA" != "n" ]; then bool 'Support for ANS LCD display' CONFIG_ANSLCD fi
arch/ppc/platforms/chrp_setup.c +0 -17
@@ -68,7 +68,6 @@void btext_progress (char *,unsigned short );extern unsigned long pmac_find_end_of_memory (void ); -extern void select_adb_keyboard (void );extern int of_show_percpuinfo (struct seq_file *,int );extern kdev_t boot_dev;
@@ -437,22 +436,6 @@if (ppc_md.progress) ppc_md.progress (" Have fun! " ,0x7777 ); - -#if defined(CONFIG_VT ) && defined(CONFIG_INPUT ) -/* see if there is a keyboard in the device tree -with a parent of type "adb" */ - { -struct device_node *kbd; - -for (kbd =find_devices ("keyboard" ); kbd; kbd = kbd->next) { -if (kbd->parent && kbd->parent->type - &&strcmp (kbd->parent->type,"adb" ) ==0 ) { -select_adb_keyboard (); -break ; - } - } - } -#endif /* CONFIG_VT && CONFIG_INPUT */ }void __init
arch/ppc/platforms/pmac_setup.c +0 -12
@@ -66,7 +66,6 @@#include <asm/ohare.h> #include <asm/mediabay.h> #include <asm/machdep.h> -#include <asm/keyboard.h> #include <asm/dma.h> #include <asm/bootx.h> #include <asm/cputable.h>
@@ -618,15 +617,6 @@ }void __init -select_adb_keyboard (void ) -{ -#ifdef CONFIG_VT - ppc_md.kbd_translate = mac_hid_kbd_translate; - ppc_md.kbd_unexpected_up = mac_hid_kbd_unexpected_up; -#endif /* CONFIG_VT */ -} - -void __init pmac_init (unsigned long r3,unsigned long r4,unsigned long r5,unsigned long r6,unsigned long r7) {
@@ -665,8 +655,6 @@ ppc_md.find_end_of_memory = pmac_find_end_of_memory; ppc_md.feature_call = pmac_do_feature_call; - -select_adb_keyboard ();#ifdef CONFIG_BOOTX_TEXT ppc_md.progress = pmac_progress;
drivers/char/keyboard.c +1 -1
@@ -222,7 +222,7 @@if (!test_bit (k, key_down))continue ; - sym =U (plain_map[k]); + sym =U (key_maps[0 ][k]);if (KTYP (sym) !=KT_SHIFT &&KTYP (sym) !=KT_SLOCK )continue ;
drivers/macintosh/Makefile +1 -1
@@ -20,7 +20,7 @@ ifneq ($(CONFIG_MAC),y) obj-$(CONFIG_NVRAM) += nvram.o endif -obj-$(CONFIG_MAC_HID) += mac_hid.o +obj-$(CONFIG_MAC_EMUMOUSEBTN) += mac_hid.o obj-$(CONFIG_INPUT_ADBHID) += adbhid.o obj-$(CONFIG_PPC_RTC) += rtc.o obj-$(CONFIG_ANSLCD) += ans-lcd.o
drivers/macintosh/mac_hid.c +4 -94
139 lines not on this page · raw message
include/asm-ppc/machdep.h +0 -6
@@ -57,12 +57,6 @@unsigned char (*nvram_read_val)(int addr);void (*nvram_write_val)(int addr,unsigned char val); -/* Tons of keyboard stuff. */ -int (*kbd_translate)(unsigned char scancode, -unsigned char *keycode, -char raw_mode); -char (*kbd_unexpected_up)(unsigned char keycode); -/* * optional PCI "hooks" */
===================================================================
This BitKeeper patch contains the following changesets:
+
## Wrapped with gzip_uu ##
begin 664 bkpatch19000 M'XL(`'CX8ST``\U8:V^;2!3];'[%E;K2]F4\,PP#9)55NDD?T39ME,=*JZJ* M!A@"#0;$0-)4_/B]0!*[=KS$SK;:)()@P[UG[CES'SR!4ZW*K=%E_J5206P\
M@7>YKK9&NM;*#+[A]5&>X_4DSJ=J<G/7Q+^8)%E15P9^?RBK((9+5>JM$36M MNT^JZT)MC8Y>OSU]_^K(,+:W83>6V;DZ5A5L;QM57E[*--0[LHK3/#.K4F9Z MJBII!OFTN;NU880P_+6I8Q%;-%00[C0!#2F5G*J0,.X*;MPV[F!O?B\RRAU MB."LL5U/>,8>4-.F#B;$'?"*#"V99$MYKX@;(L0>(-@OIG'29F.+U29J70G ME76E2E\&<8L/7C@P)L8?\-^N8M<(X%T"?_6+>8E7^Y#E51*H$*[S&K[4NH*B MUC%>5[&"(CB[4->^&4"IICD"03R0)EG]==S1\Q)B52I(='LW6CL\W(5"EA7D M$205?BBK_DFET<\5Z+I0993FM09=U5%[email protected]!T:X$D0SNMTUR6(3I& MVQ+\^CQ*OD)48F28R4%F(92U?]U["),P^[6"J;Q0K=<D0Y#,M.%:528:ZV-M M_F6XQB',Y$8XS5_#(-(8OP^P(DL4;]%$4QZ8B?%59G6E5U809S-''"[(8Z MGDL;VV8JXB$+!0L9L^[email protected]^BE1645Y.]3UN4).,6*T;8KGN^L"#N"Q6D>5 M\<:U")61;47*I4&H-L*][&6&FS&/#^,.RZ1-#A,,0$N]CMO_SN(D7(!-14,( MM41C^\+Q.+=I:-N^=(=A#WJ80>;"<L0&D]0O%&2JD7$S!:6VP12<FFK2$FJ M/.(/YX]!#W/B<ES'XP8=VDYF6W/[^2CE+VJ-<H'H1$"9^%D8HB2SP<[KWF M9UBIQ9UAK'<J"_(L2L[-)%N4KV#"H8VT'1)RR_&B0#&4\AKZ7;!\BYWW/,H M&T289$%:AVHB]73<FD.6XE59CR?QSWN81YW/%RVQ+#ZS'<%L64DAW$.V)\% MU":$.%WM7%[:<!'=--!&&89UELIB)]=A:N;E^>K(4HNZ-D=I"<MR>%=8.5VJ MJ_S!=97`V/XA=?6HJW.P^_'#F_VW9P>O=L_>[>]AU>D5\1'&Y57WAW7D\)YH M;U"-]FQN@?T]>_<GUC6HW#3YWW5(U562)N=Q9=;!5=LI/2CG.XQC!]4E9X=9 MM*.9B26:[75HILZ/Y/DV26%_HY.P5KKM,/J"M8KK^P.P"?$.!8P1YP2H6,7_ M?$.P/O_K=RWK"	NH/[W&+"PJ+/7:R@G0"6]_EZF_70!=HS7,__SZ-^%? M>"W_N."HX80+K!.!2NJZ##[CZKN2[/14#%O)R5L:JAE67U"]Q[!,T6>?PC- M;W#@*/*RPE'H=NY@OL.9('A%0O>A%G<24CM?G\:C4;Z>@K;</H4K9Y-9:$_ MD<^?+CX_^^T[OI>;O(=3OFD+:ES(9*<JJ%G6<3FNLV3LYT%<3\U0#=IVF(-% M'7=\0[#-<3L-N/]'#:RJZ5W+O$($RXO>2=6)X/VF/M?QK\\G</P^N#TX./I M\>L_3CX\&[W8AMMA)%\ABKMA91-5K#=+K2P"@X8=+"'4%MA"8QD0?0?@/$(3 M',8>_^GYOQ__!I5QM_9-I.&VRF@/\!Q.XD1#M^$QWBGH/,_5S?O7$+)CZ2 MEWG9OH^1&=3=2QO-%WJ0@8*@Y.GIK%'/6!M/R&ZKJ*SWQV?)!&$*.%,A;?Z M._[[>/?D_3-$X8*P\5';:6_O3Z/1Y#GLRC2]S9ES->CYI/7#6P_4Z\H7([0_ M]5+O3O_BL=7VRKEF6-F/&[F,LM;5]4Y[#/*R:"V:LAXRZC#!&'.9:1WL1UM M-4VMQS4UXJ=KNI\1%S2]<N4;M3,$Q.Q-;Q"KX$+7T^W#7W?IY;Q#^0_@H9$ #%@``
`
end
Signature · 2 lines
Vojtech Pavlik SuSE Labs
PATCH 1/1 Two minor fixes for the PPC input conversion.
Hi!
You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual. 'bk pull bk://linux-input.bkbits.net/linux-input' should work as well.
===================================================================
[email protected], 2002-08-22 11:07:41+02:00, [email protected]
Two minor fixes on top of the PPC final input conversion.
adbhid.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-)
===================================================================
drivers/macintosh/adbhid.c +2 -1
@@ -37,7 +37,6 @@#include <linux/init.h> #include <linux/notifier.h> #include <linux/input.h> -#include <linux/kbd_ll.h> #include <linux/adb.h> #include <linux/cuda.h>
@@ -51,6 +50,8 @@#define KEYB_KEYREG 0/* register # for key up/down data */ #define KEYB_LEDREG 2/* register # for leds on ADB keyboard */ #define MOUSE_DATAREG 0/* reg# for movement/button codes from mouse */ + +extern struct pt_regs *kbd_pt_regs;static int adb_message_handler (struct notifier_block *,unsigned long ,void *);static struct notifier_block adbhid_adb_notifier = {
===================================================================
This BitKeeper patch contains the following changesets:
+
## Wrapped with gzip_uu ##
begin 664 bkpatch25220 M'XL(`/FI9#T``[V46V_3,!3'G^M/<:2],37Q<2Y.@HH*'3$$E7'WIFUW&; MT"2N8J<=4SX\;E4VA;A)FP_^/ARCO[G_.PSN#:JS48[_<DJ69SN-3&9B/3 M&>7).V<OM':V7^A:^:=3_G+CE\VVL\3MSX65!>Q4:[(1>L']BOV\5=EH\?+U M];OG"T(F$Y@5HEFK*V5A,B%6MSM1Y68J;%'IQK.M:$RMK/"DKOO[HSVCE+D> M(0]H%/<8TY#W$G-$$:+**0N3."2OW.T[[ZILJ_%&M8VJII7HK&J70A:/.4P8 M,AI0EO24!IR3"TOP@H\VGB,P:(&>59B.>4993"D'\X1QA3\@+^K:P9D?!A MKZ$N&]W"JKQ5!G3C@FQ!K\6"N;SF5MO17'@H#4S:$4I0M-WCH5/"'SA\23 M\6\V0JB@Y-FK+PM#T']6LBRL=H4OLB719E[\AN=(<6X#S")PCY<(5<4HR1- M>1RE^6!Z!R,DC-&4\H#W%/D1]Q^?&>8O[]51$XO96KW956N"^MU<N_>TZ!C MSB+$*&:AQ-C/(*9?H]EP'\92P9C_"]8KMSL*Y"/HG@HRWL8M_OC<&C-?U*A M/P#U(J2Y$T4",?B;IU:6CV+:3%K;VIE5K`T\VR_SF9#Q]^+QDH>3&=/4D 0B9<!9VE,O@#-M3R,%P4`````
`
end
Signature · 2 lines
Vojtech Pavlik SuSE Labs
PATCH 1/1 (re)implement setkeycode/getkeycode/kd_mksound/kbd_setrate via the input core
Hi!
You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual. 'bk pull bk://linux-input.bkbits.net/linux-input' should work as well.
===================================================================
[email protected], 2002-08-25 15:21:22+02:00, [email protected]
This (re)implements getkeycode/setkeycode, kbd_rate and kd_mksound as functions interfacing to the input core. PC-Speaker handling is moved to a separate file. Uinput is moved to a input/misc directory.
===================================================================
b/drivers/char/keyboard.c | 126 ++++++++++- b/drivers/char/vt.c | 72 ------ b/drivers/input/Config.help | 9 b/drivers/input/Config.in | 2 b/drivers/input/Makefile | 2 b/drivers/input/input.c | 5 b/drivers/input/keyboard/amikbd.c | 2 b/drivers/input/keyboard/atkbd.c | 2 b/drivers/input/keyboard/newtonkbd.c | 2 b/drivers/input/keyboard/sunkbd.c | 3 b/drivers/input/keyboard/xtkbd.c | 2 b/drivers/input/misc/Config.help | 28 ++ b/drivers/input/misc/Config.in | 8 b/drivers/input/misc/Makefile | 12 + b/drivers/input/misc/pcspkr.c | 94 ++++++++ b/drivers/input/misc/uinput.c | 385 +++++++++++++++++++++++++++++++++++ b/include/linux/input.h | 1 b/include/linux/vt_kern.h | 4 drivers/input/uinput.c | 385 ----------------------------------- 19 files changed, 655 insertions(+), 489 deletions(-)
===================================================================
drivers/char/keyboard.c +110 -16
@@ -80,7 +80,7 @@static fn_handler_fn *fn_handler[] = {FN_HANDLERS };/* -* Variables/functions exported for vt_ioctl.c +* Variables exported for vt_ioctl.c */ /* maximum values each key_handler can handle */
@@ -98,21 +98,7 @@int spawnpid, spawnsig;/* -* Translation of scancodes to keycodes. -*/ - -int getkeycode (unsigned int scancode) -{ -return 0 ;/* FIXME */ -} - -int setkeycode (unsigned int scancode,unsigned int keycode) -{ -return 0 ;/* FIXME */ -} - -/* -* Variables/function exported for vt.c +* Variables exported for vt.c */ int shift_state =0 ;
@@ -137,6 +123,114 @@unsigned int mask; unsigned char valid:1; } ledptrs[3 ]; + +/* +* Translation of scancodes to keycodes. We set them on only the first attached +* keyboard - for per-keyboard setting, /dev/input/event is more useful. +*/ +int getkeycode (unsigned int scancode) +{ +struct input_handle *handle; +unsigned int keycode; + +for (handle = kbd_handler.handle; handle; handle = handle->hnext) +if (handle->dev->keycodesize)break ; + +if (!handle->dev->keycodesize) +return -ENODEV ; + +switch (handle->dev->keycodesize) { +case 1 : keycode = *(u8 *)(handle->dev->keycode + scancode);break ; +case 2 : keycode = *(u16 *)(handle->dev->keycode + scancode *2 );break ; +case 4 : keycode = *(u32 *)(handle->dev->keycode + scancode *4 );break ; +default :return -EINVAL ; + } + +return keycode; +} + +int setkeycode (unsigned int scancode,unsigned int keycode) +{ +struct input_handle *handle; + +for (handle = kbd_handler.handle; handle; handle = handle->hnext) +if (handle->dev->keycodesize)break ; + +if (!handle->dev->keycodesize) +return -ENODEV ; + +switch (handle->dev->keycodesize) { +case 1 : *(u8 *)(handle->dev->keycode + scancode) = keycode;break ; +case 2 : *(u16 *)(handle->dev->keycode + scancode *2 ) = keycode;break ; +case 4 : *(u32 *)(handle->dev->keycode + scancode *4 ) = keycode;break ; + } + +return 0 ; +} + +/* +* Making beeps and bells. +*/ +static void kd_nosound (unsigned long ignored) +{ +struct input_handle *handle; + +for (handle = kbd_handler.handle; handle; handle = handle->hnext) +if (test_bit (EV_SND , handle->dev->evbit)) { +if (test_bit (SND_TONE , handle->dev->sndbit)) +input_event (handle->dev,EV_SND ,SND_TONE ,0 ); +if (test_bit (SND_BELL , handle->dev->sndbit)) +input_event (handle->dev,EV_SND ,SND_BELL ,0 ); + } +} + +static struct timer_list kd_mksound_timer = { function: kd_nosound }; + +void kd_mksound (unsigned int hz,unsigned int ticks) +{ +struct input_handle *handle; + +del_timer (&kd_mksound_timer); + +if (hz) { +for (handle = kbd_handler.handle; handle; handle = handle->hnext) +if (test_bit (EV_SND , handle->dev->evbit)) { +if (test_bit (SND_TONE , handle->dev->sndbit)) { +input_event (handle->dev,EV_SND ,SND_TONE , hz); +break ; + } +if (test_bit (SND_BELL , handle->dev->sndbit)) { +input_event (handle->dev,EV_SND ,SND_BELL ,1 ); +break ; + } + } +if (ticks) +mod_timer (&kd_mksound_timer, jiffies + ticks); + }else +kd_nosound (0 ); +} + +/* +* Setting the keyboard rate. +*/ +int kbd_rate (struct kbd_repeat *rep) +{ +struct input_handle *handle; + +if (rep->rate <0 || rep->delay <0 ) +return -EINVAL ; + +for (handle = kbd_handler.handle; handle; handle = handle->hnext) +if (test_bit (EV_REP , handle->dev->evbit)) { +if (rep->rate >HZ ) rep->rate =HZ ; + handle->dev->rep[REP_PERIOD ] = rep->rate ? (HZ / rep->rate) :0 ; + handle->dev->rep[REP_DELAY ] = rep->delay *HZ /1000 ; +if (handle->dev->rep[REP_DELAY ] < handle->dev->rep[REP_PERIOD ]) + handle->dev->rep[REP_DELAY ] = handle->dev->rep[REP_PERIOD ]; + } + +return 0 ; +}/* * Helper Functions.
drivers/char/vt.c +0 -72
78 lines not on this page · raw message
drivers/input/Config.help +0 -9
@@ -88,12 +88,3 @@ inserted in and removed from the running kernel whenever you want). The module will be called joydev.o. If you want to compile it as a module, say M here and read <file:Documentation/modules.txt>. - -CONFIG_INPUT_UINPUT - Say Y here if you want to support user level drivers for input - subsystem accessible under char device 10:223 - /dev/input/uinput. - - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you want). - The module will be called uinput.o. If you want to compile it as a - module, say M here and read <file:Documentation/modules.txt>.
drivers/input/Config.in +1 -1
@@ -22,7 +22,6 @@ fi dep_tristate ' Event interface' CONFIG_INPUT_EVDEV $CONFIG_INPUT dep_tristate ' Event debugging' CONFIG_INPUT_EVBUG $CONFIG_INPUT -dep_tristate ' User level driver support' CONFIG_INPUT_UINPUT $CONFIG_INPUT $CONFIG_EXPERIMENTAL comment 'Input I/O drivers' source drivers/input/gameport/Config.in
@@ -34,6 +33,7 @@ source drivers/input/mouse/Config.in source drivers/input/joystick/Config.in source drivers/input/touchscreen/Config.in + source drivers/input/misc/Config.in fi endmenu
drivers/input/Makefile +1 -1
@@ -15,12 +15,12 @@ obj-$(CONFIG_INPUT_TSDEV) += tsdev.o obj-$(CONFIG_INPUT_POWER) += power.o obj-$(CONFIG_INPUT_EVBUG) += evbug.o -obj-$(CONFIG_INPUT_UINPUT) += uinput.o obj-$(CONFIG_INPUT_KEYBOARD) += keyboard/ obj-$(CONFIG_INPUT_MOUSE) += mouse/ obj-$(CONFIG_INPUT_JOYSTICK) += joystick/ obj-$(CONFIG_INPUT_TOUCHSCREEN) += touchscreen/ +obj-$(CONFIG_INPUT_MISC) += misc/ # The global Rules.make.
drivers/input/input.c +2 -3
@@ -105,7 +105,7 @@change_bit (code, dev->key); -if (test_bit (EV_REP , dev->evbit) && value) { +if (test_bit (EV_REP , dev->evbit) && dev->rep[REP_PERIOD ] && value) { dev->repeat_key = code;mod_timer (&dev->timer, jiffies + dev->rep[REP_DELAY ]); }
@@ -165,10 +165,9 @@case EV_SND : -if (code >SND_MAX || !test_bit (code, dev->sndbit) || !!test_bit (code, dev->snd) == value) +if (code >SND_MAX || !test_bit (code, dev->sndbit))return ; -change_bit (code, dev->snd);if (dev->event) dev->event (dev, type, code, value);break ;
drivers/input/keyboard/amikbd.c +2 -0
@@ -114,6 +114,8 @@ amikbd_dev.evbit[0 ] =BIT (EV_KEY ) |BIT (EV_REP ); amikbd_dev.keycode = amikbd_keycode; + amikbd_dev.keycodesize =sizeof (unsigned char ); + amikbd_dev.keycodemax =ARRAY_SIZE (amikbd_keycode);for (i =0 ; i <0x78 ; i++)if (amikbd_keycode[i])
drivers/input/keyboard/atkbd.c +2 -0
@@ -470,6 +470,8 @@ atkbd->serio = serio; atkbd->dev.keycode = atkbd->keycode; + atkbd->dev.keycodesize =sizeof (unsigned char ); + atkbd->dev.keycodemax =ARRAY_SIZE (atkbd_set2_keycode); atkbd->dev.event = atkbd_event; atkbd->dev.private = atkbd;
drivers/input/keyboard/newtonkbd.c +2 -0
@@ -94,6 +94,8 @@ nkbd->serio = serio; nkbd->dev.keycode = nkbd->keycode; + nkbd->dev.keycodesize =sizeof (unsigned char ); + nkbd->dev.keycodemax =ARRAY_SIZE (nkbd_keycode); nkbd->dev.private = nkbd; serio->private = nkbd;
drivers/input/keyboard/sunkbd.c +3 -0
@@ -245,6 +245,9 @@ sunkbd->tq.data = sunkbd; sunkbd->dev.keycode = sunkbd->keycode; + sunkbd->dev.keycodesize =sizeof (unsigned char ); + sunkbd->dev.keycodemax =ARRAY_SIZE (sunkbd_keycode); + sunkbd->dev.event = sunkbd_event; sunkbd->dev.private = sunkbd;
drivers/input/keyboard/xtkbd.c +2 -0
@@ -101,6 +101,8 @@ xtkbd->serio = serio; xtkbd->dev.keycode = xtkbd->keycode; + xtkbd->dev.keycodesize =sizeof (unsigned char ); + xtkbd->dev.keycodemax =ARRAY_SIZE (xtkbd_keycode); xtkbd->dev.private = xtkbd; serio->private = xtkbd;
drivers/input/misc/Config.help new file +28 -0
@@ -0,0 +1,28 @@ +CONFIG_INPUT_MISC + + Say Y here, and a list of miscellaneous input drivers will be displayed. + Everything that didn't fit into the other categories is here. This option + doesn't affect the kernel. + + If unsure, say Y. + +CONFIG_INPUT_PCSPKR + Say Y here if you want the standard PC Speaker to be used for + bells and whistles. + + If unsure, say Y. + + This driver is also available as a module ( = code which can be + inserted in and removed from the running kernel whenever you want). + The module will be called pcspkr.o. If you want to compile it as a + module, say M here and read <file:Documentation/modules.txt>. + + +CONFIG_INPUT_UINPUT + Say Y here if you want to support user level drivers for input + subsystem accessible under char device 10:223 - /dev/input/uinput. + + This driver is also available as a module ( = code which can be + inserted in and removed from the running kernel whenever you want). + The module will be called uinput.o. If you want to compile it as a + module, say M here and read <file:Documentation/modules.txt>.
drivers/input/misc/Config.in new file +8 -0
@@ -0,0 +1,8 @@ +# +# Input misc drivers configuration +# + +bool 'Misc' CONFIG_INPUT_MISC + +dep_tristate ' PC Speaker support' CONFIG_INPUT_PCSPKR $CONFIG_INPUT $CONFIG_INPUT_MISC +dep_tristate ' User level driver support' CONFIG_INPUT_UINPUT $CONFIG_INPUT $CONFIG_INPUT_MISC
drivers/input/misc/Makefile new file +12 -0
@@ -0,0 +1,12 @@ +# +# Makefile for the input misc drivers. +# + +# Each configuration option enables a list of files. + +obj-$(CONFIG_INPUT_PCSPKR) += pcspkr.o +obj-$(CONFIG_INPUT_UINPUT) += uinput.o + +# The global Rules.make. + +include $(TOPDIR)/Rules.make
drivers/input/misc/pcspkr.c new file +94 -0
94 lines not on this page · raw message
drivers/input/misc/uinput.c new file +385 -0
385 lines not on this page · raw message
drivers/input/uinput.c deleted +0 -385
385 lines not on this page · raw message
include/linux/input.h +1 -0
@@ -570,6 +570,7 @@#define SND_CLICK 0x00#define SND_BELL 0x01 +#define SND_TONE 0x02#define SND_MAX 0x07/*
include/linux/vt_kern.h +2 -2
@@ -32,8 +32,8 @@wait_queue_head_t paste_wait; } *vt_cons[MAX_NR_CONSOLES ]; -extern void (*kd_mksound)(unsigned int hz,unsigned int ticks); -extern int (*kbd_rate)(struct kbd_repeat *rep); +extern void kd_mksound (unsigned int hz,unsigned int ticks); +extern int kbd_rate (struct kbd_repeat *rep);/* console.c */
===================================================================
This BitKeeper patch contains the following changesets:
+
## Wrapped with gzip_uu ##
begin 664 bkpatch26655 M'XL(`.39:#T``]U<>W?;-K+_V_H4:-*;RJXE7S3CGV;VDZKD\3VL>/<;3?W MZ%D9+&F2"U)^9%5O_N=`4B)DJ@'E77W9M,>2R*!P6!F\,/,8,B7Y";A\<'. M??1'RMU^[27Y-4K2@YUDE/"F^P5^7T41_&[UHP%O9:U:W;N6'PY':0WN7SJI MVR?W/$X.=EA3G5Q)GX;\8.?J[)>;]V^N:K6C(W+2=\);?LU3<G142Z/XW@F\
MY"<G[0=1V$QC)TP&/'6:;C083YJ.%4H5^$]GIDIU8\P,JIECEWF,.1KC'E4T MR]!J;Z'WE^:U'P>-.QZ'//@I<$8IC[N.VR\C:"D*M:FIL3%ES+1JIX0U=:81 MJK2HU5)TPO0#A1THRH]4.:"49!/_*1,+^9%9I$%K/Y-_[31.:B[YV/<34H_Y MKC\8!GSPS0AMSR]XT]NY/%6,OFZ3^ZZ7B=V4DZ<T"-W7F=PET2CT,B3D)Z MH]!-_2A,B!^")'J.ZX>WP"])^YP([1$WBGF37)XTKH?<;D18-<+L)F?)%! M=,\][.&0A\=,5+/#Z#+C>P/C!;:B&NM@9^XQ/-C[H)HGIJU=T133$NK74[5 M7VM4_%>K48?6CM<(VP_=802@@F,'J5]-OM%P=N@;D/3F#7NJ4K74E3#Z''* M'6K-ZW<5+4O1F:HPH,)TW5*K2':>SE/7NSCRI46B=1V/-OFWT>#'.^#$J9 MR=0QM9$O0S&YBZ9@>8:G*HM\K:$WY8T:FFX";SF!],$/_-M^VARY#XN$P**Z MD1-[K9_I%$(=M5T)47@C2E4H\I8LTQFC,T>TRW/9H:A&"Y5W#4<+B=<$"-3 M-%9@M9P2VE4^83^<IZ$K!K7&EL5ZH$W+-'JJJUC:5Y"TX2=8S&9L#=UD>!>7 MSQ,SACK#F!-CW69V?,4UF/;4[3'&DB?55>KDQ952E6F4DNC8V9;C(V[7<_F M"N4>4PW;5#?5ZS-Z9P5R]:5ZAPFH["$108B-"U];*B&XZJTVX7+CFHJF_(X M2W7*I*'9U%X+**6++3<42FP+NC8T#7#'%O<,3S*3;77U2W+V6SEEA@RHVI5 MJ+M/.[CI+8*=RC3*QH[9];H*Z+K;Z_9LO@;KYH@5C)FJIKZQ8D<2,PLHPC0& MBP%8,M6QY^@P4<<V70>1%_DJ61)S%(4?#$=Q:]HMEE1EQ]@M\.=;%Z5E!J@ M2K-G4=OVJ<2,ZBSCKM98D5,@JE67PF/96N5C155T?4Q[_*NKBC,,'7+@(UW MPW7P6+Y60:.V4@EYR[8:U8:O\%>##<NQ5$-1'<4SOXHHH*^N5EBA;M^))[/- MYYFIE6IC7;>!)-=<6*!&5_%ZO-=3C:4<EE(KS%>#S74SJ2TS#?BE*6/%,"W5 M=;M=Q85U8-G;4[3'S+*4BO*Z3Q<E9:@,$$,W#$/M.4QW#\<=<']749G.D'- ML,RJBW)F?1?@53-L?:QXEJIX7L_T+,KXVDUT$2LR4P7O8(OM<^"7[Y]45?6Q MJE+?:9RR]"IOL[I6$*TP*-B`X\8+RUU]C!^>CZGLU;9Z800BAHJ:%VUP67" M6,J8CZ28M2R2HJ1A/TL@]0%"$R)W#0Q0Q/*!RV\\+_O^C@@G^8(TX@?Q/T0:
ME\NEOD78<FHS8L_H<@Y;UD?"7P5QZ^/B-9@'OK]*%1W<,"V+DAG=7+4,&C>8 M\2S:1366AL5D$C<[(OQMYJ;0Y7R8R%YFR<1(2UT33'F[?,8XMLX&A!$M/TI M'9Y%U$XX":5Y22-]B2WAB4&-2?B;<S)4@FKM<5?LD<^.;'O=.>$/XXC&+@ MD_2B&+CO^)&;!C#$*:Y:*G69DQ?TP=:MR%>(8Q:M<^UUAXV_HA:"H082=0C MB>N$*.$$)Y]).VF2_Q$B1&D,"#8,@R<AFIX?)REQTA1L#40(]"9R;XA!ASQN M3"YE6M@G+8_?9XN/WX/T998!5-6U1L%32#4JH$>"MJOC\+$OPUA+G@]9W.W M]L_:3I+&(S>5:NJ(]8G>_+SL+8STR\C=@C3WT'VZEGS(Y%GD3_B9M:7S'Y" M(_FE<=P/^6.Z2VH[.WXOI]$XADDUCG.9^5_X+NG&W+D3@V&[[Y8V!$(Q3T=Q M2!IGYQ>G9Y]$G^3!QR3;"OHP^1W723AA!_G4@,N]^LC:VRWM1GZ<BNXP9R^C MH<S18,9Z(J!P98&0-D=(538BI!4)>;SGC(+T@$SDTC[_].8]W/H319-=G:@3 M+PJ[6&,O^Z3,'-9;T7^>N6QH)#C53,B+YE+%2)83T@XJ&4D9H3]K.Q.;H-(:
M)+J!*XVP/]T6NCP(,\$P"2X>V!VRQ>9U32F=6IX<F=DO@*P"3]]>82&8A M*4_23M=/ZV>?.M?GI_MD1B[\'F[M2FW.-H>VG8\7YV=S'9+0$SVP_8YD7J!N M4=S[)!]K2H3N'I8.\?/9^_=?/80D(H?X4V@L4T<FY-0?\+@3^+"]3+/>'7$5 MQ/;/2>K[H*Z\B>J(==GUF<6"/I?YB``AKQ+-M*NQP,Y?OW5/$>[DT7;_R(5 M\Z\PA:JV4,D8LBY5['F=B@[318PZJYTY!4V4FED28<M&_C/?,5(+<*50>0M MT](^^</O]7SP;7[,U([007B0<.A90"TRBF&7&>^(_H[,U[EU$W)#VGJF0V) MWWS(G93LP>=&YH73@+:-8^&POB:4C,=$7##<Y[PR@SP9_OA,\'.U=GE.MB9 M,GM,?OU]ETQ_'\%OH:09G#_[T"V<WEVU;XX_5]H->WQWZ3^Z^^D-;VR2PX0 MR9?1.#U[_^:W"0DIH#TB2#!*Z02W5G5^35:Q)Z%L]>"K^DM<F]N6%J)$],DK MQH>;IW2F5/%@=S.:IJ(!35UEF*56=!D.ZI4B?5-YOE!_R6EH%JSD3?>S$]7 M\'!2)*I616PB--HB5C,MK-=FL?QP\UUN\T!Q&99G.D!1)[#T76=2M6:%0)] M"//_73D<>6*R21+'#[?1(TZ_UE8-C)\)9.*(?I?=9!8HO,\:UM5Y=7.*=:H M?#YU/-&X2IDI-&Y_(QH7!RLK-9[/=1N%,PL5KF"2)>K^T?B^?G)Q_K;]2Z=] M?GGSL?.A?7VRN_/C4<;-HJZSU'-555?*?D\I#WEX"]+:G#00@$^5VF--L0U5 M@OA"X<MRQ2NDH3Z+XJ^D3R321[]3[=+3"%4?B%QQ'F\MX$0?2%QH)>%ZP MQ8+K(=S!/2+\Q40DXD2B?Z6)9%+9RD*H,!'Y4>*+"P>IX!B15Z](J9L#UT&* M(Q%^GS)#4C4*5$5D>RRF]^'-W]#K^VXRD,Q9S(98I\QDT!NMLK2$9;U5?D45 MS0+^K*%YJP7:.86K:-++5<X=2/5?Y%0+--*Q!]QDD[+N8].R#>;I.2&YY MR(6C(=*2<!F3GI@ZYO\8\=514^R-FC.$OEL84!MG532V_]#C8."<W9T= M^DB5$N5/SO2KJK]:94'-@^7WDQLE3\VD>]MTW*:3KB9H,IW9.E/-,:.&PJH> M'0$6/8\_6?>A3,Y\2Q!WV$DDC\\!EL(CR#]QTRC,3)0$(:&H^_1!SH"+5 M@ZF$>0=TS3&"++58:3P306Z#7ZI.%.'2*#4(\8,V28O<IAWWB3*/2S9*>=K M-ZS_F#J#$\6-.V]HEHM34.SW:%"\((*QQRT>=(I?\[*?O.@P%N(@Y?6W MK35"PHT0YKBP]RTTO"(+8O@;H8_@)&YA7\^G%E8!&YZI0/<M.\[(LM3IBOT M8=&_6)!Q=4&V*5&LVH+[6?L,D<BU\T1^$V>6^P)2'"+RH5%/.*8\")R01Z,D M0Y:,-?+@!P'I0OSB)\/>>)>$TB=P:VGM"_S6+!@/=\+?TC![CCE0%4!'\0 M\5)^&\68)@.G#=ORGKE:(CY5J#E13S!SDZOQ]TTRXOAP7-3<-WN(9*,D.D$ M)X!79^9W>7)]^>YJ9G[H#3Y%(_+@A))@DL*$,=%V>4+RRF5@LRN.",5Y)O07 MR7PAF0=@,UXLIP#(B<AA80S<X(D(LZ]XP=X5BK.?F&S]T;PO4Z.B/#*@*S; M%_YEP,%/TRX.$X%M,=18RY+H\6!,G(=C\(012S%=W!B\#A\JGM-@4?/!\H M5U6VRV0YBZB),YB*(P)F!D-$"-6\@E$)$YOP]2A)(CQR.O!;B>1NYH<D+> MDNV39OJ8'J,XYE1R(SY6J"0BR6B(A\DH_Y@$,*U@8G'H0<EG!2!X'G63IR3E M^*XX%$E/@H7MANTK+Z3>UJP_1TH$'XUBD?!6?7?-Z*LC%M0UC-K:X?OS5; MJ\PT;;*Q^F'5;7732NS_D$T5!(3I!YCA2KB'9E=D001_R89:22$5MM/GW4U% MJ?W&N^E6>3S82ZW:R]I+TA8;HGQ,)<,H5]=Q6*!0://M6X4!>2'#]#H!U*V M_WI\V$EC'X\E.?F!%'>B#OG^LE]C7Q?O#C[2Y*>)WPSCZA+Z-^44"RCOP0J MB@G*E4@Q2:QM"A352F"_=9R8B>,6E/*K7C2YHHL3/]Y,6(+752"*8\)T;( MN?U&/$5F5^"*8(C)@L!_1>IO%Y$32:B=>DC,''8LB@&3.,.&A++2;>N9( M4KBA)7EE"1"[.YA:SGV]LG9RH<MVN9LA&$%OY#:(NDYKH2#,(!)-$7MDT@< MD._K'R\N3]M7NZWI_65XD)^0K<6#R5':IGA0[5FI;QT/"B>-8H+E-CMI=446 M!/"\B+"%-BH@@JT])R+(9^'6(\)$NELA@JUEI1[%/;XKC2';D1$DWF-6#IJ) MEB?1\"G&YPI(W=TE."OR2<J&7#KW@7]7THK9MD(N8@Y(\7LWBJ.'Y,Z7]%K3 M>EP,?(9Q=!L[XQ\>C&':#CJI0].S]%G($A3LPAO<GHCM*9:1>BU@$0(' MO_<$%Y"4C+H0VE(>#Q)$)_SQR_D-^46DMP-R.>H&O@LS<SF$2^();X0U!0.7 M(=Y+^A#J=)^0'/9]B]Q<9]R0MYA'E`Z5G,++'(=>RPQFEA;H'R_<D1%.V1T_ M]-/RZR*57KSA)(.6'^&US[4/%Z<W[\\Z;VX^_GIQ57\QJPOR.K=;^1#(\8O= MP[S'Z=GUR57[\F/[XKS^8IG^"^W?MT_.SJ_/ZB]^N7S_0A1^985K(KS=DY;8 M"9T!UL$4"+XX+&TX[#\EV-!/'$H-)J=)IXUGRH8@5LXV#OPJQA[Z81"Y=QUH MDM;[2#;';P"1*\OV^>=]Q<G[SHWY_AQ=EI@%S.Z&2U9@[4PTIZHQIK-"C\- MYVMHY1$5?I/'7%CK--=@!'^/1#G/;&UE+W!NDTGQ$](FWQUEY5_%6B<V4]\J MZU(GM:QYE=@!)BSJV5&;^(Q\V*@24L\0SE846;,1$E8SI(D<PS+>W*,1UX3 M53$-$_G+9\:8K3)+(2W9Y!#+?EQ0@\=/_Y'XMSS^JLY!>W+^4]K!P4Y.;/6 M7N9:2.F!'2JXPG9VHE':[0SK?HA_Z:/!=LF8J/M$?#V4/;%2'T!W@"D&Q*T) MB7V@TGT"P'B(??A;)$@??S:0BJ9.J028W</:80;K*TJMI=3?P4]>CW13Q'] M\&X]NWE\3*S=A2:RWBZ?)(#8LEG.S!&IO#V93E,4@0L1C\)<R(BK4;Q&SK-% MPH6ET.D@\.0KK_7\<!$F/-TR37%8>_?*59__=S^F!5E(D>%-O*D=MHHMU!4 M5?X;[7"NFWP2XFAF40J>"VTR6"FS"R-#$T*V#)[W_>:W5$B5AKP=G/=:5^_ M66@!WL15MG21TI9;^$^[$X>(H5L0%D);F-B8,5R!:N,"5F-_"OL5%4]AT MZJ^F/86"2/9O&(-2[NKOSJ[.P2E^>P$B?T/R'\EG\,7^T4)K%"L./+J=/CC M5+/X?:+9?#3)VRA<S1T2EON6M(^"K<#=[(Z@7QBK]%1LX0%!],&?\X'%VBWG M<?J3V$D;\.Z:T;Q[89/+3*;VO#-&"NJ!;&3>(U*I?/;YSO$+SS=D#_TA;\' MSB/9XIG&*)01#QMN;)09&'NVSB2C.%IZXXD(=9"D;\C@A]1;WKNBGX8L!B M!YS$7ES=?7FM\YU^_>S>M8D?UYEM4VE6YM4A5=(?!UM"$(41=5UH*T;619" M^::,2KX#8T.C2K>V*<U4A$TA!5%HO*E-+718M"ELT@%G0=G,K@JO=]G"MBJ_ M=>;K!PC8[JA:&.J&)KV#0*7?&O.9C96F/XV=F8+ZHK6ME"^P4C"S>&K?P] M+EO85K47RWPE]8E5Z;I!C:I6I?[[K4J^&&<SJ\KGOHU)*9I)5/#21U6MJJ3' M@EW)-@7+^KS*MAZWWA*KO*GEZVA/[,J@JJ[^/T4K9Y6;A2^:V<RL'K??$,&] M1:1ZK+HA+G98L"G19"58S;RD:'-KJO:BI.V(@OEHJ@&[*36H;I:8#UH0_4MS MZK+B&T.T^6.%B0@;QZLDC&`EWORTTJIFNU0WJ<G;+-T^=^^2T>#([GFJYW35 +VO\![J0JRSI3````
`
end
Signature · 2 lines
Vojtech Pavlik SuSE Labs
PATCH 1/1 Stricter checks in [gs]etkeycode, recompute keybit there also
Hi!
You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual. 'bk pull bk://linux-input.bkbits.net/linux-input' should work as well.
===================================================================
[email protected], 2002-08-26 11:13:55+02:00, [email protected]
Shorten the keycode handling code in keyboard.c and evdev.c. Recompute keybit when keycode table changes. Stricter checks on input keycode/scancode values.
===================================================================
drivers/char/keyboard.c | 39 ++++++++++++++++++++++----------------- drivers/input/evdev.c | 29 ++++++++++++----------------- include/linux/input.h | 3 +++ 3 files changed, 37 insertions(+), 34 deletions(-)
===================================================================
drivers/char/keyboard.c +22 -17
@@ -131,39 +131,44 @@int getkeycode (unsigned int scancode) {struct input_handle *handle; -unsigned int keycode; +struct input_dev *dev =NULL ;for (handle = kbd_handler.handle; handle; handle = handle->hnext) -if (handle->dev->keycodesize)break ; +if (handle->dev->keycodesize) { dev = handle->dev;break ; } -if (!handle->dev->keycodesize) +if (!dev)return -ENODEV ; -switch (handle->dev->keycodesize) { -case 1 : keycode = *(u8 *)(handle->dev->keycode + scancode);break ; -case 2 : keycode = *(u16 *)(handle->dev->keycode + scancode *2 );break ; -case 4 : keycode = *(u32 *)(handle->dev->keycode + scancode *4 );break ; -default :return -EINVAL ; - } +if (scancode <0 || scancode >= dev->keycodemax) +return -EINVAL ; -return keycode; +return INPUT_KEYCODE (dev, scancode); }int setkeycode (unsigned int scancode,unsigned int keycode) {struct input_handle *handle; +struct input_dev *dev =NULL ; +int i, oldkey;for (handle = kbd_handler.handle; handle; handle = handle->hnext) -if (handle->dev->keycodesize)break ; +if (handle->dev->keycodesize) { dev = handle->dev;break ; } -if (!handle->dev->keycodesize) +if (!dev)return -ENODEV ; -switch (handle->dev->keycodesize) { -case 1 : *(u8 *)(handle->dev->keycode + scancode) = keycode;break ; -case 2 : *(u16 *)(handle->dev->keycode + scancode *2 ) = keycode;break ; -case 4 : *(u32 *)(handle->dev->keycode + scancode *4 ) = keycode;break ; - } +if (scancode <0 || scancode >= dev->keycodemax) +return -EINVAL ; + + oldkey =INPUT_KEYCODE (dev, scancode); +INPUT_KEYCODE (dev, scancode) = keycode; + +for (i =0 ; i < dev->keycodemax; i++) +if (INPUT_KEYCODE (dev, scancode) == oldkey) +break ; +if (i == dev->keycodemax) +clear_bit (oldkey, dev->keybit); +set_bit (keycode, dev->keybit);return 0 ; }
drivers/input/evdev.c +12 -17
@@ -234,7 +234,7 @@struct evdev *evdev = list->evdev;struct input_dev *dev = evdev->handle.dev;struct input_absinfo abs; -int t, u; +int i, t, u;if (!evdev->exist)return -ENODEV ;
@@ -258,26 +258,21 @@case EVIOCGKEYCODE :if (get_user (t, ((int *) arg) +0 ))return -EFAULT ; -if (t <0 || t > dev->keycodemax)return -EINVAL ; -switch (dev->keycodesize) { -case 1 : u = *(u8 *)(dev->keycode + t);break ; -case 2 : u = *(u16 *)(dev->keycode + t *2 );break ; -case 4 : u = *(u32 *)(dev->keycode + t *4 );break ; -default :return -EINVAL ; - } -if (put_user (u, ((int *) arg) +1 ))return -EFAULT ; +if (t <0 || t > dev->keycodemax || !dev->keycodesize)return -EINVAL ; +if (put_user (INPUT_KEYCODE (dev, t), ((int *) arg) +1 ))return -EFAULT ;return 0 ;case EVIOCSKEYCODE :if (get_user (t, ((int *) arg) +0 ))return -EFAULT ; -if (t <0 || t > dev->keycodemax)return -EINVAL ; -if (get_user (u, ((int *) arg) +1 ))return -EFAULT ; -switch (dev->keycodesize) { -case 1 : *(u8 *)(dev->keycode + t) = u;break ; -case 2 : *(u16 *)(dev->keycode + t *2 ) = u;break ; -case 4 : *(u32 *)(dev->keycode + t *4 ) = u;break ; -default :return -EINVAL ; - } +if (t <0 || t > dev->keycodemax || !dev->keycodesize)return -EINVAL ; + u =INPUT_KEYCODE (dev, t); +if (get_user (INPUT_KEYCODE (dev, t), ((int *) arg) +1 ))return -EFAULT ; + +for (i =0 ; i < dev->keycodemax; i++) +if (INPUT_KEYCODE (dev, t) == u)break ; +if (i == dev->keycodemax)clear_bit (u, dev->keybit); +set_bit (INPUT_KEYCODE (dev, t), dev->keybit); +return 0 ;case EVIOCSFF :
include/linux/input.h +3 -0
@@ -757,6 +757,9 @@#define BIT (x) (1UL<<((x)%BITS_PER_LONG))#define LONG (x) ((x)/BITS_PER_LONG) +#define INPUT_KEYCODE (dev, scancode) ((dev->keycodesize == 1) ? ((u8*)dev->keycode)[scancode] : \ + ((dev->keycodesize == 1) ? ((u16*)dev->keycode)[scancode] : (((u32*)dev->keycode)[scancode]))) +struct input_dev {void *private;
===================================================================
This BitKeeper patch contains the following changesets:
+
## Wrapped with gzip_uu ##
begin 664 bkpatch9436 M'XL(`&CQ:3T``]U8:T_C1A3];/^*N]HO,1!G9OP.#5T*M$6+61+I:I4R+'' MQ$MB(WN<?=3][[WC24+("PJTE1JBC#SW,6?NW'-L\Q8N2UYTM7'^2?!HH+^% MG_-2=+6R*KD9?</K\SS'Z\X@'_'.Q*O3O^VDV5TE=+2?A2(:P)@795>CIC6; M$5_O>%<[/_KI\F3_7-=[/3@8A-D-O^">CU=Y,4X',;ENU,AGEFBB+,RA$7 MH1GEHWKF6C-"&/XYU+.(X];4);971S2F-+0ICPFS?=?6)\#>36OQOO,H1;S MF%?;5AP_1"HZ=@,".L0O\-<H+1+K:[C;!/6)006TL&V!6VB_P"O"_IC^!B MD!>"9R&'&[YURB/.6":>)AF-]!<I9DT]/.PB,T(T1\'/.Q&9D8?LYQ83R( M)KB?"O@\X-DLD0C[0PY1`ZN4[A>B2"/!"YSCT6T)>0;-.4XC.F449DTH;K.2 M,>_!MFS/T<_N3T]O_\V/KI.0Z'N/5"_-HF&%$'#GU1?57N9@OI*!36O7MJE? M)Q;K^\QRW803'A)_\;PVY?*92P)J.:RV**6/PXJ+5/:V2M*9E'X.EHU#[2(\
MK^:!G]@LOMQ%-I>D"S!VI#K'I:+B>F38>'A%IW[_G@C-BUXP0TJ+D=Q82[ M?18G/$DL=RVPE=FFT&C-@\K)JF\)N!Q8K\(]Q+-'\$M24^Q7RR;(-TDZ2E= MXCQ=QWG&H$V]_X;U_Q*WU8%^@';QN?DB5\_6G>TS:'](+1NH?JP&K11%%0F% MZAI['[;D3P].+T].=J6SIYSEH&EIJVF)KR]AW[MO<D^RO0;-^/4+%S'KO0 M+WAXNPM_RER!RB6')M4;]##0@*KOHL'V@"G#K"S?8&ZAMGU7@_FUQV%7PR$ M57!1%1FTCXY/?]EO8-MJJ6:8FH]/SRX_7K\_^O7@P^%1"]/LS/(:N^CLV'+Y [email protected]/8X0@5W)4@9S7*)"C4#M+!7(9.&APD2"O4Z$K75-;0#2;ZZ)M M,F/T9)TF99(7T$IQDNQ"BL@6@.#D]K;15*FU.6MO4F#IK*D"J6VGTK9B?]&0 MA\4U$K*EG=F3C@G=U%RT9@G88OV>?U\<"=XNGH^XV:D]Y'.F+>?WMSE66QF M7)AAM2DCJABU9.::V(RX2C_=)?UDZ_23_O_U4]VKU^CG@Y(^1SV9$D0U3-5 M[$"%6L!<"C[:7%\*B1(#,26H@+W%QI73;Y958I&KDTQ2C_8BU74$<8.M%H2 MS98!87%CP#908R[5C_N7)Q\E1,]J(/H$@M>%6*U6DH9\:IT;_O(-7,ED3Y69 M=4(C&H6I#)@JB[9>6^!>6:HE4=%FLK)F2P_]KQJ96?D<_+C,O.!1?.D1;>.C M^/0!C3J.K][*J/=T@?G'7LKVXWBAOPP8A5&12\ZKUX8%SJ_<Y3,X?^SA#1G? MH6.>I!G?>+O$'EXDBVPJ:L#W:*K\+6/>;/PV#?P=NH"MO3F:NIO"6^AAL;4> <AF'(_IO^(T#I:37J6<0E<>(Z^E]T]1+!=1``````
`
end
Signature · 2 lines
Vojtech Pavlik SuSE Labs