# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet v2.6.2-rc1 -> 1.1578 # drivers/usb/input/hid.h 1.27.1.2 -> 1.29 # Documentation/video4linux/bttv/README 1.5 -> 1.6 # drivers/input/serio/i8042.c 1.35.1.3 -> 1.38 # Documentation/video4linux/bttv/CARDLIST 1.9 -> 1.10 Documentation/video4linux/CARDLIST.bttv (moved) # Documentation/video4linux/bttv/Insmod-options 1.6 -> 1.7 # arch/i386/kernel/cpu/mcheck/non-fatal.c 1.7 -> 1.8 # drivers/input/mouse/psmouse-base.c 1.43.1.1 -> 1.46 # arch/sparc64/defconfig 1.110 -> 1.111 # drivers/input/keyboard/maple_keyb.c 1.4.1.1 -> 1.6 # drivers/input/mouse/synaptics.c 1.15 -> 1.16 # drivers/input/keyboard/98kbd.c 1.2 -> 1.3 # drivers/char/keyboard.c 1.38.1.1 -> 1.42 # drivers/usb/input/hid-input.c 1.20.1.1 -> 1.22 # drivers/usb/input/hiddev.c 1.41.1.1 -> 1.43 # include/linux/input.h 1.40.1.1 -> 1.44 # drivers/usb/input/hid-ff.c 1.4 -> 1.5 # arch/alpha/kernel/signal.c 1.19 -> 1.20 # drivers/input/joydev.c 1.20.1.1 -> 1.23 # include/asm-alpha/elf.h 1.6 -> 1.7 # security/selinux/netif.c 1.1 -> 1.2 # drivers/usb/input/hid-core.c 1.67.1.1 -> 1.70 # arch/sparc64/kernel/sys_sparc32.c 1.84 -> 1.85 # drivers/input/mouse/logips2pp.c 1.4 -> 1.5 # drivers/usb/input/hid-lgff.c 1.5 -> 1.6 # drivers/input/keyboard/atkbd.c 1.42.1.1 -> 1.48 # drivers/input/mouse/psmouse.h 1.4 -> 1.5 # drivers/media/dvb/ttusb-dec/ttusb_dec.c 1.10 -> 1.11 # drivers/input/keyboard/amikbd.c 1.13 -> 1.14 # arch/ppc/kernel/setup.c 1.49 -> 1.50 # drivers/usb/input/usbkbd.c 1.32.1.1 -> 1.34 # drivers/macintosh/adbhid.c 1.16 -> 1.17 # (new) -> 1.1 Documentation/video4linux/CARDLIST.saa7134 # (new) -> 1.1 drivers/input/keyboard/hpps2atkbd.h # (new) -> 1.1 Documentation/video4linux/README.cx88 # (new) -> 1.1 Documentation/video4linux/README.saa7134 # (new) -> 1.1 Documentation/video4linux/CARDLIST.tuner # (new) -> 1.1 Documentation/video4linux/README.ir # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 04/01/20 torvalds@home.osdl.org 1.1569 # Linux 2.6.2-rc1 # -------------------------------------------- # 04/01/20 torvalds@home.osdl.org 1.1570 # Merge bk://are.twiddle.net/axp-2.6 # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 04/01/20 davem@nuts.ninka.net 1.1569.1.1 # [SPARC64]: Fix 32-bit execve out_mm error path. # # Do not pass a NULL mm to mmdrop(). # -------------------------------------------- # 04/01/21 davem@nuts.ninka.net 1.1569.1.2 # [TTUSB]: ttusb_dec.c needs linux/init.h # -------------------------------------------- # 04/01/21 vojtech@ucw.cz 1.1571 # Merge ucw.cz:/home/vojtech/bk/linus into ucw.cz:/home/vojtech/bk/input # -------------------------------------------- # 04/01/21 davem@nuts.ninka.net 1.1569.1.3 # [SPARC64]: Update defconfig. # -------------------------------------------- # 04/01/21 davem@kernel.bkbits.net 1.1570.1.1 # Merge davem@nuts.ninka.net:/disk1/davem/BK/sparc-2.6 # into kernel.bkbits.net:/home/davem/sparc-2.6 # -------------------------------------------- # 04/01/21 dtor_core@ameritech.net 1.1572 # input: Allow Synaptics packet rate to be controlled by the # psmouse_rate= option. # -------------------------------------------- # 04/01/21 dtor_core@ameritech.net 1.1573 # input: If we get a byte with timeout or parity flags in psmouse.c, # we take the appropriate action. (throw the byte away, reset # byte counter, return NAK if acking, and complain). # -------------------------------------------- # 04/01/21 torvalds@home.osdl.org 1.1574 # Merge bk://kernel.bkbits.net/davem/sparc-2.6 # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 04/01/21 kraxel@bytesex.org 1.1575 # [PATCH] selinux build fix # # trivial one: uses __init and thus needs linux/init.h # -------------------------------------------- # 04/01/21 kraxel@bytesex.org 1.1576 # [PATCH] video4linux driver documentation update # # This updates / adds documentation for the bttv, saa7134 and cx88 # video4linux drivers. # -------------------------------------------- # 04/01/21 davej@redhat.com 1.1577 # [PATCH] Check for MCE ability before checking registers. # # Here's a novel idea, check the CPU has machine check capabilities # before we start polling registers. # # I was wondering why my VIA C3 was starting this. Who knows it may solve # some of the random crashes I saw there. # -------------------------------------------- # 04/01/21 trini@kernel.crashing.org 1.1578 # [PATCH] Elvis^H^H^H^H^HPaul has left the building # # > Paul Mackerras: # > o sort exception tables # # And as more proof that Paul is leaving us ppc32 folks, *sniff*, the # following is needed for PPC32 to compile: # -------------------------------------------- # diff -Nru a/Documentation/video4linux/CARDLIST.bttv b/Documentation/video4linux/CARDLIST.bttv --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/Documentation/video4linux/CARDLIST.bttv Wed Jan 21 11:54:31 2004 @@ -0,0 +1,115 @@ +card=0 - *** UNKNOWN/GENERIC *** +card=1 - MIRO PCTV +card=2 - Hauppauge (bt848) +card=3 - STB, Gateway P/N 6000699 (bt848) +card=4 - Intel Create and Share PCI/ Smart Video Recorder III +card=5 - Diamond DTV2000 +card=6 - AVerMedia TVPhone +card=7 - MATRIX-Vision MV-Delta +card=8 - Lifeview FlyVideo II (Bt848) LR26 / MAXI TV Video PCI2 LR26 +card=9 - IMS/IXmicro TurboTV +card=10 - Hauppauge (bt878) +card=11 - MIRO PCTV pro +card=12 - ADS Technologies Channel Surfer TV (bt848) +card=13 - AVerMedia TVCapture 98 +card=14 - Aimslab Video Highway Xtreme (VHX) +card=15 - Zoltrix TV-Max +card=16 - Prolink Pixelview PlayTV (bt878) +card=17 - Leadtek WinView 601 +card=18 - AVEC Intercapture +card=19 - Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only) +card=20 - CEI Raffles Card +card=21 - Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50 +card=22 - Askey CPH050/ Phoebe Tv Master + FM +card=23 - Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878 +card=24 - Askey CPH05X/06X (bt878) [many vendors] +card=25 - Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar +card=26 - Hauppauge WinCam newer (bt878) +card=27 - Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50 +card=28 - Terratec TerraTV+ Version 1.1 (bt878) +card=29 - Imagenation PXC200 +card=30 - Lifeview FlyVideo 98 LR50 +card=31 - Formac iProTV, Formac ProTV I (bt848) +card=32 - Intel Create and Share PCI/ Smart Video Recorder III +card=33 - Terratec TerraTValue Version Bt878 +card=34 - Leadtek WinFast 2000/ WinFast 2000 XP +card=35 - Lifeview FlyVideo 98 LR50 / Chronos Video Shuttle II +card=36 - Lifeview FlyVideo 98FM LR50 / Typhoon TView TV/FM Tuner +card=37 - Prolink PixelView PlayTV pro +card=38 - Askey CPH06X TView99 +card=39 - Pinnacle PCTV Studio/Rave +card=40 - STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100 +card=41 - AVerMedia TVPhone 98 +card=42 - ProVideo PV951 +card=43 - Little OnAir TV +card=44 - Sigma TVII-FM +card=45 - MATRIX-Vision MV-Delta 2 +card=46 - Zoltrix Genie TV/FM +card=47 - Terratec TV/Radio+ +card=48 - Askey CPH03x/ Dynalink Magic TView +card=49 - IODATA GV-BCTV3/PCI +card=50 - Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP +card=51 - Eagle Wireless Capricorn2 (bt878A) +card=52 - Pinnacle PCTV Studio Pro +card=53 - Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS +card=54 - Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90] +card=55 - Askey CPH031/ BESTBUY Easy TV +card=56 - Lifeview FlyVideo 98FM LR50 +card=57 - GrandTec 'Grand Video Capture' (Bt848) +card=58 - Askey CPH060/ Phoebe TV Master Only (No FM) +card=59 - Askey CPH03x TV Capturer +card=60 - Modular Technology MM100PCTV +card=61 - AG Electronics GMV1 +card=62 - Askey CPH061/ BESTBUY Easy TV (bt878) +card=63 - ATI TV-Wonder +card=64 - ATI TV-Wonder VE +card=65 - Lifeview FlyVideo 2000S LR90 +card=66 - Terratec TValueRadio +card=67 - IODATA GV-BCTV4/PCI +card=68 - 3Dfx VoodooTV FM (Euro), VoodooTV 200 (USA) +card=69 - Active Imaging AIMMS +card=70 - Prolink Pixelview PV-BT878P+ (Rev.4C,8E) +card=71 - Lifeview FlyVideo 98EZ (capture only) LR51 +card=72 - Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM) +card=73 - Sensoray 311 +card=74 - RemoteVision MX (RV605) +card=75 - Powercolor MTV878/ MTV878R/ MTV878F +card=76 - Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP) +card=77 - GrandTec Multi Capture Card (Bt878) +card=78 - Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF +card=79 - DSP Design TCVIDEO +card=80 - Hauppauge WinTV PVR +card=81 - IODATA GV-BCTV5/PCI +card=82 - Osprey 100/150 (878) +card=83 - Osprey 100/150 (848) +card=84 - Osprey 101 (848) +card=85 - Osprey 101/151 +card=86 - Osprey 101/151 w/ svid +card=87 - Osprey 200/201/250/251 +card=88 - Osprey 200/250 +card=89 - Osprey 210/220 +card=90 - Osprey 500 +card=91 - Osprey 540 +card=92 - Osprey 2000 +card=93 - IDS Eagle +card=94 - Pinnacle PCTV Sat +card=95 - Formac ProTV II (bt878) +card=96 - MachTV +card=97 - Euresys Picolo +card=98 - ProVideo PV150 +card=99 - AD-TVK503 +card=100 - Hercules Smart TV Stereo +card=101 - Pace TV & Radio Card +card=102 - IVC-200 +card=103 - Grand X-Guard / Trust 814PCI +card=104 - Nebula Electronics DigiTV +card=105 - ProVideo PV143 +card=106 - PHYTEC VD-009-X1 MiniDIN (bt878) +card=107 - PHYTEC VD-009-X1 Combi (bt878) +card=108 - PHYTEC VD-009 MiniDIN (bt878) +card=109 - PHYTEC VD-009 Combi (bt878) +card=110 - IVC-100 +card=111 - IVC-120G +card=112 - pcHDTV HD-2000 TV +card=113 - Twinhan DST + clones +card=114 - Winfast VC100 diff -Nru a/Documentation/video4linux/CARDLIST.saa7134 b/Documentation/video4linux/CARDLIST.saa7134 --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/Documentation/video4linux/CARDLIST.saa7134 Wed Jan 21 11:54:31 2004 @@ -0,0 +1,23 @@ + 0 -> UNKNOWN/GENERIC + 1 -> Proteus Pro [philips reference design] [1131:2001,1131:2001] + 2 -> LifeView FlyVIDEO3000 [5168:0138] + 3 -> LifeView FlyVIDEO2000 [5168:0138] + 4 -> EMPRESS [1131:6752] + 5 -> SKNet Monster TV [1131:4e85] + 6 -> Tevion MD 9717 + 7 -> KNC One TV-Station RDS / Typhoon TV+Radio 90031 [1131:fe01] + 8 -> Terratec Cinergy 400 TV [153B:1142] + 9 -> Medion 5044 + 10 -> Kworld/KuroutoShikou SAA7130-TVPCI + 11 -> Terratec Cinergy 600 TV [153B:1143] + 12 -> Medion 7134 [16be:0003] + 13 -> ELSA EX-VISION 300TV [1048:226b] + 14 -> ELSA EX-VISION 500TV [1048:226b] + 15 -> ASUS TV-FM 7134 [PCI_VENDOR_ID_ASUSTEK:4842,PCI_VENDOR_ID_ASUSTEK:4830] + 16 -> AOPEN VA1000 POWER [1131:7133] + 17 -> 10MOONS PCI TV CAPTURE CARD [1131:2001] + 18 -> BMK MPEX No Tuner + 19 -> Compro VideoMate TV [185b:c100] + 20 -> Matrox CronosPlus [PCI_VENDOR_ID_MATROX:48d0] + 21 -> Medion 2819 [1461:a70b] + 22 -> BMK MPEX Tuner diff -Nru a/Documentation/video4linux/CARDLIST.tuner b/Documentation/video4linux/CARDLIST.tuner --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/Documentation/video4linux/CARDLIST.tuner Wed Jan 21 11:54:31 2004 @@ -0,0 +1,43 @@ +tuner=0 - Temic PAL (4002 FH5) +tuner=1 - Philips PAL_I (FI1246 and compatibles) +tuner=2 - Philips NTSC (FI1236,FM1236 and compatibles) +tuner=3 - Philips (SECAM+PAL_BG) (FI1216MF, FM1216MF, FR1216MF) +tuner=4 - NoTuner +tuner=5 - Philips PAL_BG (FI1216 and compatibles) +tuner=6 - Temic NTSC (4032 FY5) +tuner=7 - Temic PAL_I (4062 FY5) +tuner=8 - Temic NTSC (4036 FY5) +tuner=9 - Alps HSBH1 +tuner=10 - Alps TSBE1 +tuner=11 - Alps TSBB5 +tuner=12 - Alps TSBE5 +tuner=13 - Alps TSBC5 +tuner=14 - Temic PAL_BG (4006FH5) +tuner=15 - Alps TSCH6 +tuner=16 - Temic PAL_DK (4016 FY5) +tuner=17 - Philips NTSC_M (MK2) +tuner=18 - Temic PAL_I (4066 FY5) +tuner=19 - Temic PAL* auto (4006 FN5) +tuner=20 - Temic PAL_BG (4009 FR5) or PAL_I (4069 FR5) +tuner=21 - Temic NTSC (4039 FR5) +tuner=22 - Temic PAL/SECAM multi (4046 FM5) +tuner=23 - Philips PAL_DK (FI1256 and compatibles) +tuner=24 - Philips PAL/SECAM multi (FQ1216ME) +tuner=25 - LG PAL_I+FM (TAPC-I001D) +tuner=26 - LG PAL_I (TAPC-I701D) +tuner=27 - LG NTSC+FM (TPI8NSR01F) +tuner=28 - LG PAL_BG+FM (TPI8PSB01D) +tuner=29 - LG PAL_BG (TPI8PSB11D) +tuner=30 - Temic PAL* auto + FM (4009 FN5) +tuner=31 - SHARP NTSC_JP (2U5JF5540) +tuner=32 - Samsung PAL TCPM9091PD27 +tuner=33 - MT2032 universal +tuner=34 - Temic PAL_BG (4106 FH5) +tuner=35 - Temic PAL_DK/SECAM_L (4012 FY5) +tuner=36 - Temic NTSC (4136 FY5) +tuner=37 - LG PAL (newer TAPC series) +tuner=38 - Philips PAL/SECAM multi (FM1216ME MK3) +tuner=39 - LG NTSC (newer TAPC series) +tuner=40 - HITACHI V7-J180AT +tuner=41 - Philips PAL_MK (FI1216 MK) +tuner=42 - Philips 1236D ATSC/NTSC daul in diff -Nru a/Documentation/video4linux/README.cx88 b/Documentation/video4linux/README.cx88 --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/Documentation/video4linux/README.cx88 Wed Jan 21 11:54:31 2004 @@ -0,0 +1,59 @@ + +cx8800 release notes +==================== + +This is a v4l2 device driver for the cx2388x chip. + + +current status +============== + +video + Basically works. Some minor quality glitches. For now + only capture, overlay support isn't completed yet. + +audio + Doesn't work. Also the chip specs for the on-chip TV sound + decoder are next to useless :-/ + Most tuner chips do provide mono sound, which may or may not + be useable depending on the board design. With the Hauppauge + cards it works, so there is at least mono sound. Not nice, + but better than nothing. + +vbi + not implemented yet (but I don't expect problems here, just + found no time for that yet). + + +how to add support for new cards +================================ + +The driver needs some config info for the TV cards. This stuff is in +cx88-cards.c. If the driver doesn't work well you likely need a new +entry for your card in that file. Check the kernel log (using dmesg) +to see whenever the driver knows your card or not. There is a line +like this one: + + cx8800[0]: subsystem: 0070:3400, board: Hauppauge WinTV \ + 34xxx models [card=1,autodetected] + +If your card is listed as "board: UNKNOWN/GENERIC" it is unknown to +the driver. + +You can try to create a new entry yourself, or you can mail me the +config information. I need at least the following informations to +add the card: + + * the PCI Subsystem ID ("0070:3400" from the line above, "lspci -v" + output is fine too). + * the tuner type used by the card. You can try to find one by + trial-and-error using the tuner= insmod option. If you + know which one the card has you can also have a look at the + list in CARDLIST.tuner + +Have fun, + + Gerd + +-- +Gerd Knorr [SuSE Labs] diff -Nru a/Documentation/video4linux/README.ir b/Documentation/video4linux/README.ir --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/Documentation/video4linux/README.ir Wed Jan 21 11:54:31 2004 @@ -0,0 +1,72 @@ + +infrared remote control support in video4linux drivers +====================================================== + + +basics +------ + +Current versions use the linux input layer to support infrared +remote controls. I suggest to download my input layer tools +from http://bytesex.org/snapshot/input-.tar.gz + +Modules you have to load: + + saa7134 statically built in, i.e. just the driver :) + bttv ir-kbd-gpio or ir-kbd-i2c depending on your + card. + +ir-kbd-gpio and ir-kbd-i2c don't support all cards lirc supports +(yet), mainly for the reason that the code of lirc_i2c and lirc_gpio +was very confusing and I decided to basically start over from scratch. +Feel free to contact me in case of trouble. Note that the ir-kbd-* +modules work on 2.6.x kernels only through ... + + +how it works +------------ + +The modules register the remote as keyboard within the linux input +layer, i.e. you'll see the keys of the remote as normal key strokes +(if CONFIG_INPUT_KEYBOARD is enabled). + +Using the event devices (CONFIG_INPUT_EVDEV) it is possible for +applications to access the remote via /dev/input/event devices. +You might have to create the special files using "/sbin/MAKEDEV +input". The input layer tools mentioned above use the event device. + +The input layer tools are nice for trouble shooting, i.e. to check +whenever the input device is really present, which of the devices it +is, check whenever pressing keys on the remote actually generates +events and the like. You can also use the kbd utility to change the +keymaps (2.6.x kernels only through). + + +using with lircd +================ + +The cvs version of the lircd daemon supports reading events from the +linux input layer (via event device). The input layer tools tarball +comes with a lircd config file. + + +using without lircd +=================== + +XFree86 likely can be configured to recognise the remote keys. Once I +simply tried to configure one of the multimedia keyboards as input +device, which had the effect that XFree86 recognised some of the keys +of my remote control and passed volume up/down key presses as +XF86AudioRaiseVolume and XF86AudioLowerVolume key events to the X11 +clients. + +It likely is possible to make that fly with a nice xkb config file, +I know next to nothing about that through. + + +Have fun, + + Gerd + +-- +Gerd Knorr diff -Nru a/Documentation/video4linux/README.saa7134 b/Documentation/video4linux/README.saa7134 --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/Documentation/video4linux/README.saa7134 Wed Jan 21 11:54:31 2004 @@ -0,0 +1,73 @@ + + +What is it? +=========== + +This is a v4l2/oss device driver for saa7130/33/34/35 based capture / TV +boards. See http://www.semiconductors.philips.com/pip/saa7134hl for a +description. + + +Status +====== + +Almost everything is working. video, sound, tuner, radio, mpeg ts, ... + +As with bttv, card-specific tweaks are needed. Check CARDLIST for a +list of known TV cards and saa7134-cards.c for the drivers card +configuration info. + + +Build +===== + +Pick up videodev + v4l2 patches from http://bytesex.org/patches/. +Configure, build, install + boot the new kernel. You'll need at least +these config options: + + CONFIG_I2C=m + CONFIG_VIDEO_DEV=m + +Type "make" to build the driver now. "make install" installs the +driver. "modprobe saa7134" should load it. Depending on the card you +might have to pass card= as insmod option, check CARDLIST for +valid choices. + + +Changes / Fixes +=============== + +Please mail me unified diffs ("diff -u") with your changes, and don't +forget to tell me what it changes / which problem it fixes / whatever +it is good for ... + + +Known Problems +============== + +* The tuner for the flyvideos isn't detected automatically and the + default might not work for you depending on which version you have. + There is a tuner= insmod option to override the driver's default. + +Card Variations: +================ + +Cards can use either of these two crystals (xtal): + - 32.11 MHz -> .audio_clock=0x187de7 + - 24.576MHz -> .audio_clock=0x200000 +(xtal * .audio_clock = 51539600) + + +Credits +======= + +andrew.stevens@philips.com + werner.leeb@philips.com for providing +saa7134 hardware specs and sample board. + + +Have fun, + + Gerd + +-- +Gerd Knorr [SuSE Labs] diff -Nru a/Documentation/video4linux/bttv/CARDLIST b/Documentation/video4linux/bttv/CARDLIST --- a/Documentation/video4linux/bttv/CARDLIST Wed Jan 21 11:54:31 2004 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,141 +0,0 @@ -bttv.o - card=0 - *** UNKNOWN/GENERIC *** - card=1 - MIRO PCTV - card=2 - Hauppauge (bt848) - card=3 - STB, Gateway P/N 6000699 (bt848) - card=4 - Intel Create and Share PCI/ Smart Video Recorder III - card=5 - Diamond DTV2000 - card=6 - AVerMedia TVPhone - card=7 - MATRIX-Vision MV-Delta - card=8 - Lifeview FlyVideo II (Bt848) LR26 - card=9 - IMS/IXmicro TurboTV - card=10 - Hauppauge (bt878) - card=11 - MIRO PCTV pro - card=12 - ADS Technologies Channel Surfer TV (bt848) - card=13 - AVerMedia TVCapture 98 - card=14 - Aimslab Video Highway Xtreme (VHX) - card=15 - Zoltrix TV-Max - card=16 - Prolink Pixelview PlayTV (bt878) - card=17 - Leadtek WinView 601 - card=18 - AVEC Intercapture - card=19 - Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only) - card=20 - CEI Raffles Card - card=21 - Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50 - card=22 - Askey CPH050/ Phoebe Tv Master + FM - card=23 - Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878 - card=24 - Askey CPH05X/06X (bt878) [many vendors] - card=25 - Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar - card=26 - Hauppauge WinCam newer (bt878) - card=27 - Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50 - card=28 - Terratec TerraTV+ Version 1.1 (bt878) - card=29 - Imagenation PXC200 - card=30 - Lifeview FlyVideo 98 LR50 - card=31 - Formac iProTV - card=32 - Intel Create and Share PCI/ Smart Video Recorder III - card=33 - Terratec TerraTValue Version Bt878 - card=34 - Leadtek WinFast 2000/ WinFast 2000 XP - card=35 - Lifeview FlyVideo 98 LR50 / Chronos Video Shuttle II - card=36 - Lifeview FlyVideo 98FM LR50 / Typhoon TView TV/FM Tuner - card=37 - Prolink PixelView PlayTV pro - card=38 - Askey CPH06X TView99 - card=39 - Pinnacle PCTV Studio/Rave - card=40 - STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100 - card=41 - AVerMedia TVPhone 98 - card=42 - ProVideo PV951 - card=43 - Little OnAir TV - card=44 - Sigma TVII-FM - card=45 - MATRIX-Vision MV-Delta 2 - card=46 - Zoltrix Genie TV/FM - card=47 - Terratec TV/Radio+ - card=48 - Askey CPH03x/ Dynalink Magic TView - card=49 - IODATA GV-BCTV3/PCI - card=50 - Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP - card=51 - Eagle Wireless Capricorn2 (bt878A) - card=52 - Pinnacle PCTV Studio Pro - card=53 - Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS - card=54 - Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90] - card=55 - Askey CPH031/ BESTBUY Easy TV - card=56 - Lifeview FlyVideo 98FM LR50 - card=57 - GrandTec 'Grand Video Capture' (Bt848) - card=58 - Askey CPH060/ Phoebe TV Master Only (No FM) - card=59 - Askey CPH03x TV Capturer - card=60 - Modular Technology MM100PCTV - card=61 - AG Electronics GMV1 - card=62 - Askey CPH061/ BESTBUY Easy TV (bt878) - card=63 - ATI TV-Wonder - card=64 - ATI TV-Wonder VE - card=65 - Lifeview FlyVideo 2000S LR90 - card=66 - Terratec TValueRadio - card=67 - IODATA GV-BCTV4/PCI - card=68 - 3Dfx VoodooTV FM (Euro), VoodooTV 200 (USA) - card=69 - Active Imaging AIMMS - card=70 - Prolink Pixelview PV-BT878P+ (Rev.4C,8E) - card=71 - Lifeview FlyVideo 98EZ (capture only) LR51 - card=72 - Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM) - card=73 - Sensoray 311 - card=74 - RemoteVision MX (RV605) - card=75 - Powercolor MTV878/ MTV878R/ MTV878F - card=76 - Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP) - card=77 - GrandTec Multi Capture Card (Bt878) - card=78 - Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF - card=79 - DSP Design TCVIDEO - card=80 - Hauppauge WinTV PVR - card=81 - GV-BCTV5/PCI - card=82 - Osprey 100/150 (878) - card=83 - Osprey 100/150 (848) - card=84 - Osprey 101 (848) - card=85 - Osprey 101/151 - card=86 - Osprey 101/151 w/ svid - card=87 - Osprey 200/201/250/251 - card=88 - Osprey 200/250 - card=89 - Osprey 210/220 - card=90 - Osprey 500 - card=91 - Osprey 540 - card=92 - Osprey 2000 - card=93 - IDS Eagle - card=94 - Pinnacle PCTV Sat - card=95 - Formac ProTV II - card=96 - MachTV - card=97 - Euresys Picolo - -tuner.o - type=0 - Temic PAL (4002 FH5) - type=1 - Philips PAL_I (FI1246 and compatibles) - type=2 - Philips NTSC (FI1236,FM1236 and compatibles) - type=3 - Philips (SECAM+PAL_BG) (FI1216MF, FM1216MF, FR1216MF) - type=4 - NoTuner - type=5 - Philips PAL_BG (FI1216 and compatibles) - type=6 - Temic NTSC (4032 FY5) - type=7 - Temic PAL_I (4062 FY5) - type=8 - Temic NTSC (4036 FY5) - type=9 - Alps HSBH1 - type=10 - Alps TSBE1 - type=11 - Alps TSBB5 - type=12 - Alps TSBE5 - type=13 - Alps TSBC5 - type=14 - Temic PAL_BG (4006FH5) - type=15 - Alps TSCH6 - type=16 - Temic PAL_DK (4016 FY5) - type=17 - Philips NTSC_M (MK2) - type=18 - Temic PAL_I (4066 FY5) - type=19 - Temic PAL* auto (4006 FN5) - type=20 - Temic PAL_BG (4009 FR5) or PAL_I (4069 FR5) - type=21 - Temic NTSC (4039 FR5) - type=22 - Temic PAL/SECAM multi (4046 FM5) - type=23 - Philips PAL_DK (FI1256 and compatibles) - type=24 - Philips PAL/SECAM multi (FQ1216ME) - type=25 - LG PAL_I+FM (TAPC-I001D) - type=26 - LG PAL_I (TAPC-I701D) - type=27 - LG NTSC+FM (TPI8NSR01F) - type=28 - LG PAL_BG+FM (TPI8PSB01D) - type=29 - LG PAL_BG (TPI8PSB11D) - type=30 - Temic PAL* auto + FM (4009 FN5) - type=31 - SHARP NTSC_JP (2U5JF5540) - type=32 - Samsung PAL TCPM9091PD27 - type=33 - MT2032 universal - type=34 - Temic PAL_BG (4106 FH5) - type=35 - Temic PAL_DK/SECAM_L (4012 FY5) - type=36 - Temic NTSC (4136 FY5) - type=37 - LG PAL (newer TAPC series) - type=38 - Philips PAL/SECAM multi (FM1216ME MK3) - type=39 - LG NTSC (newer TAPC series) diff -Nru a/Documentation/video4linux/bttv/Insmod-options b/Documentation/video4linux/bttv/Insmod-options --- a/Documentation/video4linux/bttv/Insmod-options Wed Jan 21 11:54:31 2004 +++ b/Documentation/video4linux/bttv/Insmod-options Wed Jan 21 11:54:31 2004 @@ -1,4 +1,10 @@ +Note: "modinfo " prints various informations about a kernel +module, among them a complete and up-to-date list of insmod options. +This list tends to be outdated because it is updated manually ... + +========================================================================== + bttv.o the bt848/878 (grabber chip) driver diff -Nru a/Documentation/video4linux/bttv/README b/Documentation/video4linux/bttv/README --- a/Documentation/video4linux/bttv/README Wed Jan 21 11:54:31 2004 +++ b/Documentation/video4linux/bttv/README Wed Jan 21 11:54:31 2004 @@ -1,88 +1,37 @@ -IMPORTANT: Don't send me mails with images attached unless I ask you -to do so. Mails with images attached will go to /dev/null unseen. - - -Release notes for bttv-0.7.x -============================ - -This version is based on Ralphs 0.6.4 release. There are alot of -changes. Bugfixes, merged patches from other people, merged fixes -from the kernel version, port to the new i2c stack, removed support -for 2.0.x, code cleanups, ... - -To compile this bttv version, you'll the new i2c stack. Kernels -newer than 2.3.34 have this already included. If you have a older -kernel, download it from: - http://www2.lm-sensors.nu/~lm78/download.html +Release notes for bttv +====================== You'll need at least these config options for bttv: -CONFIG_I2C=m -CONFIG_I2C_ALGOBIT=m -CONFIG_VIDEO_DEV=m + CONFIG_I2C=m + CONFIG_I2C_ALGOBIT=m + CONFIG_VIDEO_DEV=m The latest bttv version is available from http://bytesex.org/bttv/ -You'll find Ralphs original (mostly outdated) documentation in the -ralphs-doc subdirectory. - - -Compile bttv ------------- - -If you are compiling the kernel version, just say 'm' if you are asked -for bttv. I /strongly/ recommend to compile bttv as module, because -there are some insmod options for configuring the driver. Starting -with 0.7.49 the most important ones are available as kernel args too. - -If you downloaded the separate bttv bundle: You need configured kernel -sources to compile the bttv driver. The driver uses some Makefile -magic to compile the modules with your kernel's configuration -(wrt. module-versions, SMP, ...). If you already have compiled the -kernel at least once, you probably don't have do worry about this. If -not, go to /usr/src/linux and run at least "make config". Even -better, compile your own kernel, you'll never become a real hacker -else ;-) -Note that you have to turn on video4linux support (CONFIG_VIDEO_DEV) -in the kernel to get the videodev.o module which is required by bttv. - Make bttv work with your card ----------------------------- -Setup your /etc/modules.conf file and let kmod load the modules. -See also: +Just try "modprobe bttv" and see if that works. -Modules.conf: some sample entries for /etc/modules.conf -Insmod-options: list of all insmod options available for bttv and - the helper modules. -MAKEDEV: a script to create the special files for v4l -CARDLIST: List of all supported cards -Cards: more detailed descriptions of known TV cards: - OEM name variants, used i2c chips, ... - also includes non-bttv cards. - -Loading just the bttv modules isn't enouth for most cards. The -drivers for the i2c tuner/sound chips must also be loaded. bttv tries -to load them automagically by calling request_module() now, but this -obviously works only with kmod enabled. +If it doesn't bttv likely could not autodetect your card and needs some +insmod options. The most important insmod option for bttv is "card=n" +to select the correct card type. If you get video but no sound you've +very likely specified the wrong (or no) card type. A list of supported +cards is in CARDLIST.bttv If bttv takes very long to load (happens sometimes with the cheap cards which have no tuner), try adding this to your modules.conf: options i2c-algo-bit bit_test=1 -The most important insmod option for bttv is "card=n" to select the -correct card type in case the autodetection does'nt work. If you get -video but no sound you've very likely specified the wrong (or no) -card type. A list of supported cards is in CARDLIST. - For the WinTV/PVR you need one firmware file from the driver CD: hcwamc.rbf. The file is in the pvr45xxx.exe archive (self-extracting zip file, unzip can unpack it). Put it into the /etc/pvr directory or use the firm_altera= insmod option to point the driver to the location of the file. -If your card isn't listed in CARDLIST or if you have trouble making +If your card isn't listed in CARDLIST.bttv or if you have trouble making audio work, you should read the Sound-FAQ. @@ -103,14 +52,6 @@ in bttv-cards.c (in case you are intrested or want to mail patches with updates). -Old driver versions used to have a heuristic which could identify some -bt848-based cards. It worked for Hauppauge and Miro cards in most -cases (simply because these where the first cards available on the -market), but misdetected other bt848 cards. That code is gone now for -exactly this reason, the misdetection confused lots of people. If you -have a old Hauppauge or Miro card, you'll have to load the driver with -card=1 or card=2 these days. - Still doesn't work? ------------------- @@ -146,4 +87,4 @@ Gerd -- -Gerd Knorr +Gerd Knorr diff -Nru a/arch/alpha/kernel/signal.c b/arch/alpha/kernel/signal.c --- a/arch/alpha/kernel/signal.c Wed Jan 21 11:54:31 2004 +++ b/arch/alpha/kernel/signal.c Wed Jan 21 11:54:31 2004 @@ -201,10 +201,13 @@ * Do a signal return; undo the signal stack. */ +#if _NSIG_WORDS > 1 +# error "Non SA_SIGINFO frame needs rearranging" +#endif + struct sigframe { struct sigcontext sc; - unsigned long extramask[_NSIG_WORDS-1]; unsigned int retcode[3]; }; @@ -268,19 +271,20 @@ return err; } +/* Note that this syscall is also used by setcontext(3) to install + a given sigcontext. This because it's impossible to set *all* + registers and transfer control from userland. */ + asmlinkage void -do_sigreturn(struct sigframe *frame, struct pt_regs *regs, +do_sigreturn(struct sigcontext *sc, struct pt_regs *regs, struct switch_stack *sw) { sigset_t set; /* Verify that it's a good sigcontext before using it */ - if (verify_area(VERIFY_READ, frame, sizeof(*frame))) + if (verify_area(VERIFY_READ, sc, sizeof(*sc))) goto give_sigsegv; - if (__get_user(set.sig[0], &frame->sc.sc_mask) - || (_NSIG_WORDS > 1 - && __copy_from_user(&set.sig[1], &frame->extramask, - sizeof(frame->extramask)))) + if (__get_user(set.sig[0], &sc->sc_mask)) goto give_sigsegv; sigdelsetmask(&set, ~_BLOCKABLE); @@ -289,7 +293,7 @@ recalc_sigpending(); spin_unlock_irq(¤t->sighand->siglock); - if (restore_sigcontext(&frame->sc, regs, sw)) + if (restore_sigcontext(sc, regs, sw)) goto give_sigsegv; /* Send SIGTRAP if we're single-stepping: */ @@ -314,10 +318,9 @@ struct switch_stack *sw) { sigset_t set; - stack_t st; - /* Verify that it's a good sigcontext before using it */ - if (verify_area(VERIFY_READ, frame, sizeof(*frame))) + /* Verify that it's a good ucontext_t before using it */ + if (verify_area(VERIFY_READ, &frame->uc, sizeof(frame->uc))) goto give_sigsegv; if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) goto give_sigsegv; @@ -331,12 +334,6 @@ if (restore_sigcontext(&frame->uc.uc_mcontext, regs, sw)) goto give_sigsegv; - if (__copy_from_user(&st, &frame->uc.uc_stack, sizeof(st))) - goto give_sigsegv; - /* It is more difficult to avoid calling this function than to - call it and ignore errors. */ - do_sigaltstack(&st, NULL, rdusp()); - /* Send SIGTRAP if we're single-stepping: */ if (ptrace_cancel_bpt (current)) { siginfo_t info; @@ -437,10 +434,6 @@ goto give_sigsegv; err |= setup_sigcontext(&frame->sc, regs, sw, set->sig[0], oldsp); - if (_NSIG_WORDS > 1) { - err |= __copy_to_user(frame->extramask, &set->sig[1], - sizeof(frame->extramask)); - } if (err) goto give_sigsegv; diff -Nru a/arch/i386/kernel/cpu/mcheck/non-fatal.c b/arch/i386/kernel/cpu/mcheck/non-fatal.c --- a/arch/i386/kernel/cpu/mcheck/non-fatal.c Wed Jan 21 11:54:31 2004 +++ b/arch/i386/kernel/cpu/mcheck/non-fatal.c Wed Jan 21 11:54:31 2004 @@ -74,6 +74,16 @@ static int __init init_nonfatal_mce_checker(void) { + struct cpuinfo_x86 *c = &boot_cpu_data; + + /* Check for MCE support */ + if (!cpu_has(c, X86_FEATURE_MCE)) + return -ENODEV; + + /* Check for PPro style MCA */ + if (!cpu_has(c, X86_FEATURE_MCA)) + return -ENODEV; + /* Some Athlons misbehave when we frob bank 0 */ if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD && boot_cpu_data.x86 == 6) diff -Nru a/arch/ppc/kernel/setup.c b/arch/ppc/kernel/setup.c --- a/arch/ppc/kernel/setup.c Wed Jan 21 11:54:31 2004 +++ b/arch/ppc/kernel/setup.c Wed Jan 21 11:54:31 2004 @@ -675,7 +675,6 @@ if ( ppc_md.progress ) ppc_md.progress("arch: exit", 0x3eab); paging_init(); - sort_exception_table(); /* this is for modules since _machine can be a define -- Cort */ ppc_md.ppc_machine = _machine; diff -Nru a/arch/sparc64/defconfig b/arch/sparc64/defconfig --- a/arch/sparc64/defconfig Wed Jan 21 11:54:31 2004 +++ b/arch/sparc64/defconfig Wed Jan 21 11:54:31 2004 @@ -379,6 +379,7 @@ CONFIG_MD_RAID0=m CONFIG_MD_RAID1=m CONFIG_MD_RAID5=m +CONFIG_MD_RAID6=m CONFIG_MD_MULTIPATH=m CONFIG_BLK_DEV_DM=m # CONFIG_DM_IOCTL_V4 is not set @@ -969,7 +970,7 @@ CONFIG_PHONE_IXJ=m # -# Unix 98 PTY support +# Unix98 PTY support # CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTY_COUNT=256 @@ -1054,16 +1055,21 @@ CONFIG_I2C_ALI15X3=m CONFIG_I2C_AMD756=m CONFIG_I2C_AMD8111=m +CONFIG_I2C_ELV=m CONFIG_I2C_I801=m CONFIG_I2C_I810=m +CONFIG_I2C_ISA=m CONFIG_I2C_NFORCE2=m CONFIG_I2C_PHILIPSPAR=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m CONFIG_I2C_PROSAVAGE=m CONFIG_I2C_SAVAGE4=m CONFIG_SCx200_ACB=m CONFIG_I2C_SIS5595=m CONFIG_I2C_SIS630=m CONFIG_I2C_SIS96X=m +CONFIG_I2C_VELLEMAN=m CONFIG_I2C_VIA=m CONFIG_I2C_VIAPRO=m CONFIG_I2C_VOODOO3=m @@ -1073,14 +1079,20 @@ # CONFIG_I2C_SENSOR=m CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_EEPROM=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM75=m CONFIG_SENSORS_LM78=m CONFIG_SENSORS_LM83=m CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM90=m CONFIG_SENSORS_VIA686A=m CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83L785TS=m +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set # # File systems @@ -1572,12 +1584,15 @@ # # USB Miscellaneous drivers # +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m # CONFIG_USB_TIGL is not set CONFIG_USB_AUERSWALD=m CONFIG_USB_RIO500=m CONFIG_USB_LEGOTOWER=m # CONFIG_USB_BRLVGER is not set CONFIG_USB_LCD=m +CONFIG_USB_LED=m CONFIG_USB_SPEEDTOUCH=m CONFIG_USB_TEST=m # CONFIG_USB_GADGET is not set diff -Nru a/arch/sparc64/kernel/sys_sparc32.c b/arch/sparc64/kernel/sys_sparc32.c --- a/arch/sparc64/kernel/sys_sparc32.c Wed Jan 21 11:54:31 2004 +++ b/arch/sparc64/kernel/sys_sparc32.c Wed Jan 21 11:54:31 2004 @@ -2023,7 +2023,8 @@ security_bprm_free(&bprm); out_mm: - mmdrop(bprm.mm); + if (bprm.mm) + mmdrop(bprm.mm); out_file: if (bprm.file) { diff -Nru a/drivers/char/keyboard.c b/drivers/char/keyboard.c --- a/drivers/char/keyboard.c Wed Jan 21 11:54:31 2004 +++ b/drivers/char/keyboard.c Wed Jan 21 11:54:31 2004 @@ -493,9 +493,13 @@ static void fn_dec_console(struct vc_data *vc, struct pt_regs *regs) { - int i; - - for (i = fg_console-1; i != fg_console; i--) { + int i, cur = fg_console; + + /* Currently switching? Queue this next switch relative to that. */ + if (want_console != -1) + cur = want_console; + + for (i = cur-1; i != cur; i--) { if (i == -1) i = MAX_NR_CONSOLES-1; if (vc_cons_allocated(i)) @@ -506,9 +510,13 @@ static void fn_inc_console(struct vc_data *vc, struct pt_regs *regs) { - int i; + int i, cur = fg_console; + + /* Currently switching? Queue this next switch relative to that. */ + if (want_console != -1) + cur = want_console; - for (i = fg_console+1; i != fg_console; i++) { + for (i = cur+1; i != cur; i++) { if (i == MAX_NR_CONSOLES) i = 0; if (vc_cons_allocated(i)) @@ -941,14 +949,14 @@ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 93, 86, 87, 88, 94, 95, 85,259,375,260, 90, - 284,285,309,311,312, 91,327,328,329,331,333,335,336,337,338,339, - 367,288,302,304,350, 89,334,326,116,377,109,111,126,347,348,349, - 360,261,262,263,298,376,100,101,321,316,373,286,289,102,351,355, + 80, 81, 82, 83, 84,118, 86, 87, 88,115,120,119,121,112,123, 92, + 284,285,309,298,312, 91,327,328,329,331,333,335,336,337,338,339, + 367,288,302,304,350, 89,334,326,267,126,268,269,125,347,348,349, + 360,261,262,263,268,376,100,101,321,316,373,286,289,102,351,355, 103,104,105,275,287,279,306,106,274,107,294,364,358,363,362,361, 291,108,381,281,290,272,292,305,280, 99,112,257,258,359,113,114, - 264,117,271,374,379,115,125,273,121,123, 92,265,266,267,268,269, - 120,119,118,277,278,282,283,295,296,297,299,300,301,293,303,307, + 264,117,271,374,379,265,266, 93, 94, 95, 85,259,375,260, 90,116, + 377,109,111,277,278,282,283,295,296,297,299,300,301,293,303,307, 308,310,313,314,315,317,318,319,320,357,322,323,324,325,276,330, 332,340,365,342,343,344,345,346,356,270,341,368,369,370,371,372 }; @@ -978,10 +986,10 @@ put_queue(vc, 0x1d | up_flag); put_queue(vc, 0x45 | up_flag); return 0; - case KEY_LANG1: + case KEY_HANGUEL: if (!up_flag) put_queue(vc, 0xf1); return 0; - case KEY_LANG2: + case KEY_HANJA: if (!up_flag) put_queue(vc, 0xf2); return 0; } diff -Nru a/drivers/input/joydev.c b/drivers/input/joydev.c --- a/drivers/input/joydev.c Wed Jan 21 11:54:31 2004 +++ b/drivers/input/joydev.c Wed Jan 21 11:54:31 2004 @@ -143,7 +143,7 @@ static void joydev_free(struct joydev *joydev) { - devfs_remove("js%d", joydev->minor); + devfs_remove("input/js%d", joydev->minor); joydev_table[joydev->minor] = NULL; class_simple_device_remove(MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + joydev->minor)); kfree(joydev); @@ -291,7 +291,7 @@ struct joydev_list *list = file->private_data; struct joydev *joydev = list->joydev; struct input_dev *dev = joydev->handle.dev; - int i; + int i, j; if (!joydev->exist) return -ENODEV; @@ -325,8 +325,14 @@ case JSIOCGBUTTONS: return put_user(joydev->nkey, (__u8 *) arg); case JSIOCSCORR: - return copy_from_user(joydev->corr, (struct js_corr *) arg, - sizeof(struct js_corr) * joydev->nabs) ? -EFAULT : 0; + if (copy_from_user(joydev->corr, (struct js_corr *)arg, + sizeof(struct js_corr) * joydev->nabs)) + return -EFAULT; + for (i = 0; i < joydev->nabs; i++) { + j = joydev->abspam[i]; + joydev->abs[i] = joydev_correct(dev->abs[j], joydev->corr + i); + } + return 0; case JSIOCGCORR: return copy_to_user((struct js_corr *) arg, joydev->corr, sizeof(struct js_corr) * joydev->nabs) ? -EFAULT : 0; @@ -427,6 +433,7 @@ j = joydev->abspam[i]; if (dev->absmax[j] == dev->absmin[j]) { joydev->corr[i].type = JS_CORR_NONE; + joydev->abs[i] = dev->abs[j]; continue; } joydev->corr[i].type = JS_CORR_BROKEN; @@ -444,7 +451,7 @@ joydev_table[minor] = joydev; devfs_mk_cdev(MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + minor), - S_IFCHR|S_IRUGO|S_IWUSR, "js%d", minor); + S_IFCHR|S_IRUGO|S_IWUSR, "input/js%d", minor); class_simple_device_add(input_class, MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + minor), dev->dev, "js%d", minor); diff -Nru a/drivers/input/keyboard/98kbd.c b/drivers/input/keyboard/98kbd.c --- a/drivers/input/keyboard/98kbd.c Wed Jan 21 11:54:31 2004 +++ b/drivers/input/keyboard/98kbd.c Wed Jan 21 11:54:31 2004 @@ -47,9 +47,9 @@ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 43, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 41, 26, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 27, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 12, 57,184,109,104,110,111,103,105,106,108,102,107, - 74, 98, 71, 72, 73, 55, 75, 76, 77, 78, 79, 80, 81,117, 82,124, - 83,185, 87, 88, 85, 89, 90, 0, 0, 0, 0, 0, 0, 0,102, 0, + 51, 52, 53, 12, 57, 92,109,104,110,111,103,105,106,108,102,107, + 74, 98, 71, 72, 73, 55, 75, 76, 77, 78, 79, 80, 81,117, 82,121, + 83, 94, 87, 88,183,184,185, 0, 0, 0, 0, 0, 0, 0,102, 0, 99,133, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 0, 0, 0, 0, 54, 58, 42, 56, 29 }; diff -Nru a/drivers/input/keyboard/amikbd.c b/drivers/input/keyboard/amikbd.c --- a/drivers/input/keyboard/amikbd.c Wed Jan 21 11:54:31 2004 +++ b/drivers/input/keyboard/amikbd.c Wed Jan 21 11:54:31 2004 @@ -48,8 +48,8 @@ static unsigned char amikbd_keycode[0x78] = { 41, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 43, 0, 82, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 79, 80, 81, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 75, 76, 77, - 0, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 83, 71, 72, 73, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 43, 0, 75, 76, 77, + 86, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 83, 71, 72, 73, 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,179,180, 98, 55, 78,138, 42, 54, 58, 29, 56,100,125,126 diff -Nru a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c --- a/drivers/input/keyboard/atkbd.c Wed Jan 21 11:54:31 2004 +++ b/drivers/input/keyboard/atkbd.c Wed Jan 21 11:54:31 2004 @@ -38,7 +38,7 @@ static int atkbd_set = 2; module_param_named(set, atkbd_set, int, 0); MODULE_PARM_DESC(set, "Select keyboard code set (2 = default, 3, 4)"); -#if defined(__i386__) || defined (__x86_64__) +#if defined(__i386__) || defined(__x86_64__) || defined(__hppa__) static int atkbd_reset; #else static int atkbd_reset = 1; @@ -57,15 +57,19 @@ * are loadable via an userland utility. */ +#if defined(__hppa__) +#include "hpps2atkbd.h" +#else + static unsigned char atkbd_set2_keycode[512] = { 0, 67, 65, 63, 61, 59, 60, 88, 0, 68, 66, 64, 62, 15, 41,117, - 0, 56, 42,182, 29, 16, 2, 0, 0, 0, 44, 31, 30, 17, 3, 0, - 0, 46, 45, 32, 18, 5, 4,186, 0, 57, 47, 33, 20, 19, 6, 85, - 0, 49, 48, 35, 34, 21, 7, 89, 0, 0, 50, 36, 22, 8, 9, 90, + 0, 56, 42, 93, 29, 16, 2, 0, 0, 0, 44, 31, 30, 17, 3, 0, + 0, 46, 45, 32, 18, 5, 4, 95, 0, 57, 47, 33, 20, 19, 6,183, + 0, 49, 48, 35, 34, 21, 7,184, 0, 0, 50, 36, 22, 8, 9,185, 0, 51, 37, 23, 24, 11, 10, 0, 0, 52, 53, 38, 39, 25, 12, 0, - 0,181, 40, 0, 26, 13, 0, 0, 58, 54, 28, 27, 0, 43, 0,194, - 0, 86,193,192,184, 0, 14,185, 0, 79,182, 75, 71,124, 0, 0, + 0, 89, 40, 0, 26, 13, 0, 0, 58, 54, 28, 27, 0, 43, 0, 85, + 0, 86, 91, 90, 92, 0, 14, 94, 0, 79,124, 75, 71,121, 0, 0, 82, 83, 80, 76, 77, 72, 1, 69, 87, 78, 81, 74, 55, 73, 70, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -80,6 +84,8 @@ 0, 0, 0, 65, 99, }; +#endif + static unsigned char atkbd_set3_keycode[512] = { 0, 0, 0, 0, 0, 0, 0, 59, 1,138,128,129,130, 15, 41, 60, @@ -87,11 +93,11 @@ 134, 46, 45, 32, 18, 5, 4, 63,135, 57, 47, 33, 20, 19, 6, 64, 136, 49, 48, 35, 34, 21, 7, 65,137,100, 50, 36, 22, 8, 9, 66, 125, 51, 37, 23, 24, 11, 10, 67,126, 52, 53, 38, 39, 25, 12, 68, - 113,114, 40, 84, 26, 13, 87, 99, 97, 54, 28, 27, 43, 84, 88, 70, + 113,114, 40, 43, 26, 13, 87, 99, 97, 54, 28, 27, 43, 43, 88, 70, 108,105,119,103,111,107, 14,110, 0, 79,106, 75, 71,109,102,104, - 82, 83, 80, 76, 77, 72, 69, 98, 0, 96, 81, 0, 78, 73, 55, 85, + 82, 83, 80, 76, 77, 72, 69, 98, 0, 96, 81, 0, 78, 73, 55,183, - 89, 90, 91, 92, 74,185,184,182, 0, 0, 0,125,126,127,112, 0, + 184,185,186,187, 74, 94, 92, 93, 0, 0, 0,125,126,127,112, 0, 0,139,150,163,165,115,152,150,166,140,160,154,113,114,167,168, 148,149,147,140 }; @@ -246,10 +252,10 @@ atkbd->release = 1; goto out; case ATKBD_RET_HANGUEL: - atkbd_report_key(&atkbd->dev, regs, KEY_LANG1, 3); + atkbd_report_key(&atkbd->dev, regs, KEY_HANGUEL, 3); goto out; case ATKBD_RET_HANJA: - atkbd_report_key(&atkbd->dev, regs, KEY_LANG2, 3); + atkbd_report_key(&atkbd->dev, regs, KEY_HANJA, 3); goto out; case ATKBD_RET_ERR: printk(KERN_WARNING "atkbd.c: Keyboard on %s reports too many keys pressed.\n", serio->phys); @@ -272,6 +278,11 @@ atkbd->release ? "released" : "pressed", atkbd->translated ? "translated" : "raw", atkbd->set, code, serio->phys); + if (atkbd->translated && atkbd->set == 2 && code == 0x7a) + printk(KERN_WARNING "atkbd.c: This is an XFree86 bug. It shouldn't access" + " hardware directly.\n"); + else + printk(KERN_WARNING "atkbd.c: Use 'setkeycodes %s%02x ' to make it known.\n", code & 0x80 ? "e0" : "", code & 0x7f); break; default: value = atkbd->release ? 0 : @@ -338,6 +349,10 @@ if (command == ATKBD_CMD_RESET_BAT) timeout = 2000000; /* 2 sec */ + + if (receive && param) + for (i = 0; i < receive; i++) + atkbd->cmdbuf[(receive - 1) - i] = param[i]; if (command & 0xff) if (atkbd_sendbyte(atkbd, command & 0xff)) @@ -390,7 +405,7 @@ 133, 149, 167, 182, 200, 217, 232, 250, 270, 303, 333, 370, 400, 435, 470, 500 }; const short delay[4] = { 250, 500, 750, 1000 }; - char param[2]; + unsigned char param[2]; int i, j; if (!atkbd->write) @@ -400,9 +415,9 @@ case EV_LED: - *param = (test_bit(LED_SCROLLL, dev->led) ? 1 : 0) - | (test_bit(LED_NUML, dev->led) ? 2 : 0) - | (test_bit(LED_CAPSL, dev->led) ? 4 : 0); + param[0] = (test_bit(LED_SCROLLL, dev->led) ? 1 : 0) + | (test_bit(LED_NUML, dev->led) ? 2 : 0) + | (test_bit(LED_CAPSL, dev->led) ? 4 : 0); atkbd_command(atkbd, param, ATKBD_CMD_SETLEDS); if (atkbd->set == 4) { @@ -461,6 +476,7 @@ * should make sure we don't try to set the LEDs on it. */ + param[0] = param[1] = 0xa5; /* initialize with invalid values */ if (atkbd_command(atkbd, param, ATKBD_CMD_GETID)) { /* @@ -479,6 +495,11 @@ return -1; atkbd->id = (param[0] << 8) | param[1]; + if (atkbd->id == 0xaca1 && atkbd->translated) { + printk(KERN_ERR "atkbd.c: NCD terminal keyboards are only supported on non-translating\n"); + printk(KERN_ERR "atkbd.c: controllers. Use i8042.direct=1 to disable translation.\n"); + return -1; + } return 0; } @@ -662,6 +683,7 @@ if (atkbd_probe(atkbd)) { serio_close(serio); + serio->private = NULL; kfree(atkbd); return; } diff -Nru a/drivers/input/keyboard/hpps2atkbd.h b/drivers/input/keyboard/hpps2atkbd.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/input/keyboard/hpps2atkbd.h Wed Jan 21 11:54:31 2004 @@ -0,0 +1,105 @@ +/* + * drivers/input/keyboard/hpps2atkbd.h + * + * Copyright (c) 2004 Helge Deller + * Copyright (c) 2002 Laurent Canet + * Copyright (c) 2002 Thibaut Varene + * + * based on linux-2.4's hp_mouse.c & hp_keyb.c + * Copyright (c) 1999 Alex deVries + * Copyright (c) 1999-2000 Philipp Rumpf + * Copyright (c) 2000 Xavier Debacker + * Copyright (c) 2000-2001 Thomas Marteau + * + * HP PS/2 AT-compatible Keyboard, found in PA/RISC Workstations + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive + * for more details. + */ + + +#define KBD_UNKNOWN 0 + +/* Raw SET 2 scancode table */ + +#if 0 + /* conflicting keys between a RDI Precisionbook keyboard and a normal HP keyboard */ + keytable[0x07] = KEY_F1; /* KEY_F12 */ + keytable[0x11] = KEY_LEFTCTRL; /* KEY_LEFTALT */ + keytable[0x14] = KEY_CAPSLOCK; /* KEY_LEFTCTRL */ + keytable[0x61] = KEY_LEFT; /* KEY_102ND */ +#endif + + +static unsigned char atkbd_set2_keycode[512] = { + + /* 00 */ KBD_UNKNOWN, KEY_F9, KBD_UNKNOWN, KEY_F5, KEY_F3, KEY_F1, KEY_F2, KEY_F1, + /* 08 */ KEY_ESC, KEY_F10, KEY_F8, KEY_F6, KEY_F4, KEY_TAB, KEY_GRAVE, KEY_F2, + /* 10 */ KBD_UNKNOWN, KEY_LEFTCTRL, KEY_LEFTSHIFT, KBD_UNKNOWN, KEY_CAPSLOCK, KEY_Q, KEY_1, KEY_F3, + /* 18 */ KBD_UNKNOWN, KEY_LEFTALT, KEY_Z, KEY_S, KEY_A, KEY_W, KEY_2, KEY_F4, + /* 20 */ KBD_UNKNOWN, KEY_C, KEY_X, KEY_D, KEY_E, KEY_4, KEY_3, KEY_F5, + /* 28 */ KBD_UNKNOWN, KEY_SPACE, KEY_V, KEY_F, KEY_T, KEY_R, KEY_5, KEY_F6, + /* 30 */ KBD_UNKNOWN, KEY_N, KEY_B, KEY_H, KEY_G, KEY_Y, KEY_6, KEY_F7, + /* 38 */ KBD_UNKNOWN, KEY_RIGHTALT, KEY_M, KEY_J, KEY_U, KEY_7, KEY_8, KEY_F8, + /* 40 */ KBD_UNKNOWN, KEY_COMMA, KEY_K, KEY_I, KEY_O, KEY_0, KEY_9, KEY_F9, + /* 48 */ KBD_UNKNOWN, KEY_DOT, KEY_SLASH, KEY_L, KEY_SEMICOLON, KEY_P, KEY_MINUS, KEY_F10, + /* 50 */ KBD_UNKNOWN, KBD_UNKNOWN, KEY_APOSTROPHE,KBD_UNKNOWN, KEY_LEFTBRACE, KEY_EQUAL, KEY_F11, KEY_SYSRQ, + /* 58 */ KEY_CAPSLOCK, KEY_RIGHTSHIFT,KEY_ENTER, KEY_RIGHTBRACE,KEY_BACKSLASH, KEY_BACKSLASH,KEY_F12, KEY_SCROLLLOCK, + /* 60 */ KEY_DOWN, KEY_LEFT, KEY_PAUSE, KEY_UP, KEY_DELETE, KEY_END, KEY_BACKSPACE, KEY_INSERT, + /* 68 */ KBD_UNKNOWN, KEY_KP1, KEY_RIGHT, KEY_KP4, KEY_KP7, KEY_PAGEDOWN, KEY_HOME, KEY_PAGEUP, + /* 70 */ KEY_KP0, KEY_KPDOT, KEY_KP2, KEY_KP5, KEY_KP6, KEY_KP8, KEY_ESC, KEY_NUMLOCK, + /* 78 */ KEY_F11, KEY_KPPLUS, KEY_KP3, KEY_KPMINUS, KEY_KPASTERISK,KEY_KP9, KEY_SCROLLLOCK,KEY_103RD, + /* 80 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 88 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 90 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 98 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* a0 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* a8 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* b0 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* b8 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* c0 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* c8 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* d0 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* d8 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* e0 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* e8 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* f0 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* f8 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + + /* These are offset for escaped keycodes: */ + + /* 00 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KEY_F7, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 08 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KEY_LEFTMETA, KEY_RIGHTMETA, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 10 */ KBD_UNKNOWN, KEY_RIGHTALT, KBD_UNKNOWN, KBD_UNKNOWN, KEY_RIGHTCTRL, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 18 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 20 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 28 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 30 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 38 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 40 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 48 */ KBD_UNKNOWN, KBD_UNKNOWN, KEY_KPSLASH, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 50 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 58 */ KBD_UNKNOWN, KBD_UNKNOWN, KEY_KPENTER, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 60 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 68 */ KBD_UNKNOWN, KEY_END, KBD_UNKNOWN, KEY_LEFT, KEY_HOME, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 70 */ KEY_INSERT, KEY_DELETE, KEY_DOWN, KBD_UNKNOWN, KEY_RIGHT, KEY_UP, KBD_UNKNOWN, KBD_UNKNOWN, + /* 78 */ KBD_UNKNOWN, KBD_UNKNOWN, KEY_PAGEDOWN, KBD_UNKNOWN, KEY_SYSRQ, KEY_PAGEUP, KBD_UNKNOWN, KBD_UNKNOWN, + /* 80 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 88 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 90 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* 98 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* a0 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* a8 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* b0 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* b8 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* c0 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* c8 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* d0 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* d8 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* e0 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* e8 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* f0 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, + /* f8 */ KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN, KBD_UNKNOWN + +}; diff -Nru a/drivers/input/keyboard/maple_keyb.c b/drivers/input/keyboard/maple_keyb.c --- a/drivers/input/keyboard/maple_keyb.c Wed Jan 21 11:54:31 2004 +++ b/drivers/input/keyboard/maple_keyb.c Wed Jan 21 11:54:31 2004 @@ -20,13 +20,13 @@ 0, 0, 0, 0, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38, 50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 21, 44, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 28, 1, 14, 15, 57, 12, 13, 26, - 27, 43, 84, 39, 40, 41, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64, + 27, 43, 43, 39, 40, 41, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 87, 88, 99, 70,119,110,102,104,111,107,109,106, 105,108,103, 69, 98, 55, 74, 78, 96, 79, 80, 81, 75, 76, 77, 71, - 72, 73, 82, 83, 86,127,116,117, 85, 89, 90, 91, 92, 93, 94, 95, - 120,121,122,123,134,138,130,132,128,129,131,137,133,135,136,113, - 115,114, 0, 0, 0,124, 0,181,182,183,184,185,186,187,188,189, - 190,191,192,193,194,195,196,197,198, 0, 0, 0, 0, 0, 0, 0, + 72, 73, 82, 83, 86,127,116,117,183,184,185,186,187,188,189,190, + 191,192,193,194,134,138,130,132,128,129,131,137,133,135,136,113, + 115,114, 0, 0, 0,121, 0, 89, 93,124, 92, 94, 95, 0, 0, 0, + 122,123, 90, 91, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, diff -Nru a/drivers/input/mouse/logips2pp.c b/drivers/input/mouse/logips2pp.c --- a/drivers/input/mouse/logips2pp.c Wed Jan 21 11:54:31 2004 +++ b/drivers/input/mouse/logips2pp.c Wed Jan 21 11:54:31 2004 @@ -150,7 +150,7 @@ static int logitech_wheel[] = { 52, 53, 75, 76, 80, 81, 83, 88, 112, -1 }; static int logitech_ps2pp[] = { 12, 13, 40, 41, 42, 43, 50, 51, 52, 53, 73, 75, 76, 80, 81, 83, 88, 96, 97, 112, -1 }; - static int logitech_mx[] = { 112, -1 }; + static int logitech_mx[] = { 61, 112, -1 }; psmouse->vendor = "Logitech"; psmouse->model = ((param[0] >> 4) & 0x07) | ((param[0] << 3) & 0x78); diff -Nru a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c --- a/drivers/input/mouse/psmouse-base.c Wed Jan 21 11:54:31 2004 +++ b/drivers/input/mouse/psmouse-base.c Wed Jan 21 11:54:31 2004 @@ -121,6 +121,19 @@ if (psmouse->state == PSMOUSE_IGNORE) goto out; + if (flags & (SERIO_PARITY|SERIO_TIMEOUT)) { + if (psmouse->state == PSMOUSE_ACTIVATED) + printk(KERN_WARNING "psmouse.c: bad data from KBC -%s%s\n", + flags & SERIO_TIMEOUT ? " timeout" : "", + flags & SERIO_PARITY ? " bad parity" : ""); + if (psmouse->acking) { + psmouse->ack = -1; + psmouse->acking = 0; + } + psmouse->pktcnt = 0; + goto out; + } + if (psmouse->acking) { switch (data) { case PSMOUSE_RET_ACK: @@ -231,6 +244,11 @@ if (command == PSMOUSE_CMD_RESET_BAT) timeout = 4000000; /* 4 sec */ + /* initialize cmdbuf with preset values from param */ + if (receive) + for (i = 0; i < receive; i++) + psmouse->cmdbuf[(receive - 1) - i] = param[i]; + if (command & 0xff) if (psmouse_sendbyte(psmouse, command & 0xff)) return (psmouse->cmdcnt = 0) - 1; @@ -241,8 +259,9 @@ while (psmouse->cmdcnt && timeout--) { - if (psmouse->cmdcnt == 1 && command == PSMOUSE_CMD_RESET_BAT) - timeout = 100000; + if (psmouse->cmdcnt == 1 && command == PSMOUSE_CMD_RESET_BAT && + timeout > 100000) /* do not run in a endless loop */ + timeout = 100000; /* 1 sec */ if (psmouse->cmdcnt == 1 && command == PSMOUSE_CMD_GETID && psmouse->cmdbuf[1] != 0xab && psmouse->cmdbuf[1] != 0xac) { @@ -410,7 +429,7 @@ * in case of an IntelliMouse in 4-byte mode or 0x04 for IM Explorer. */ - param[0] = param[1] = 0xa5; + param[0] = 0xa5; if (psmouse_command(psmouse, param, PSMOUSE_CMD_GETID)) return -1; @@ -574,12 +593,14 @@ serio->private = psmouse; if (serio_open(serio, dev)) { kfree(psmouse); + serio->private = NULL; return; } if (psmouse_probe(psmouse) <= 0) { serio_close(serio); kfree(psmouse); + serio->private = NULL; return; } diff -Nru a/drivers/input/mouse/psmouse.h b/drivers/input/mouse/psmouse.h --- a/drivers/input/mouse/psmouse.h Wed Jan 21 11:54:31 2004 +++ b/drivers/input/mouse/psmouse.h Wed Jan 21 11:54:31 2004 @@ -67,6 +67,7 @@ int psmouse_command(struct psmouse *psmouse, unsigned char *param, int command); extern int psmouse_smartscroll; +extern unsigned int psmouse_rate; extern unsigned int psmouse_resetafter; #endif /* _PSMOUSE_H */ diff -Nru a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c --- a/drivers/input/mouse/synaptics.c Wed Jan 21 11:54:31 2004 +++ b/drivers/input/mouse/synaptics.c Wed Jan 21 11:54:31 2004 @@ -214,7 +214,9 @@ { struct synaptics_data *priv = psmouse->private; - mode |= SYN_BIT_ABSOLUTE_MODE | SYN_BIT_HIGH_RATE; + mode |= SYN_BIT_ABSOLUTE_MODE; + if (psmouse_rate >= 80) + mode |= SYN_BIT_HIGH_RATE; if (SYN_ID_MAJOR(priv->identity) >= 4) mode |= SYN_BIT_DISABLE_GESTURE; if (SYN_CAP_EXTENDED(priv->capabilities)) diff -Nru a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c --- a/drivers/input/serio/i8042.c Wed Jan 21 11:54:31 2004 +++ b/drivers/input/serio/i8042.c Wed Jan 21 11:54:31 2004 @@ -377,65 +377,60 @@ unsigned long flags; unsigned char str, data; unsigned int dfl; - struct { - int data; - int str; - } buffer[I8042_BUFFER_SIZE]; - int i, j = 0; spin_lock_irqsave(&i8042_lock, flags); - - while (j < I8042_BUFFER_SIZE && - (buffer[j].str = i8042_read_status()) & I8042_STR_OBF) - buffer[j++].data = i8042_read_data(); - + str = i8042_read_status(); + data = i8042_read_data(); spin_unlock_irqrestore(&i8042_lock, flags); - for (i = 0; i < j; i++) { - - str = buffer[i].str; - data = buffer[i].data; - - dfl = ((str & I8042_STR_PARITY) ? SERIO_PARITY : 0) | - ((str & I8042_STR_TIMEOUT) ? SERIO_TIMEOUT : 0); - - if (i8042_mux_values[0].exists && (str & I8042_STR_AUXDATA)) { - - if (str & I8042_STR_MUXERR) { - switch (data) { - case 0xfd: - case 0xfe: dfl = SERIO_TIMEOUT; break; - case 0xff: dfl = SERIO_PARITY; break; - } - data = 0xfe; - } else dfl = 0; - - dbg("%02x <- i8042 (interrupt, aux%d, %d%s%s)", - data, (str >> 6), irq, - dfl & SERIO_PARITY ? ", bad parity" : "", - dfl & SERIO_TIMEOUT ? ", timeout" : ""); - - serio_interrupt(i8042_mux_port + ((str >> 6) & 3), data, dfl, regs); - continue; - } + if (~str & I8042_STR_OBF) { + if (irq) dbg("Interrupt %d, without any data", irq); + return IRQ_RETVAL(0); + } + + dfl = ((str & I8042_STR_PARITY) ? SERIO_PARITY : 0) | + ((str & I8042_STR_TIMEOUT) ? SERIO_TIMEOUT : 0); + + if (i8042_mux_values[0].exists && (str & I8042_STR_AUXDATA)) { + + if (str & I8042_STR_MUXERR) { + switch (data) { + case 0xfd: + case 0xfe: dfl = SERIO_TIMEOUT; break; + case 0xff: dfl = SERIO_PARITY; break; + } + data = 0xfe; + } else dfl = 0; - dbg("%02x <- i8042 (interrupt, %s, %d%s%s)", - data, (str & I8042_STR_AUXDATA) ? "aux" : "kbd", irq, + dbg("%02x <- i8042 (interrupt, aux%d, %d%s%s)", + data, (str >> 6), irq, dfl & SERIO_PARITY ? ", bad parity" : "", dfl & SERIO_TIMEOUT ? ", timeout" : ""); - if (i8042_aux_values.exists && (str & I8042_STR_AUXDATA)) { - serio_interrupt(&i8042_aux_port, data, dfl, regs); - continue; - } + serio_interrupt(i8042_mux_port + ((str >> 6) & 3), data, dfl, regs); + + goto irq_ret; + } - if (!i8042_kbd_values.exists) - continue; + dbg("%02x <- i8042 (interrupt, %s, %d%s%s)", + data, (str & I8042_STR_AUXDATA) ? "aux" : "kbd", irq, + dfl & SERIO_PARITY ? ", bad parity" : "", + dfl & SERIO_TIMEOUT ? ", timeout" : ""); - serio_interrupt(&i8042_kbd_port, data, dfl, regs); + if (i8042_aux_values.exists && (str & I8042_STR_AUXDATA)) { + serio_interrupt(&i8042_aux_port, data, dfl, regs); + goto irq_ret; } - return IRQ_RETVAL(j); + if (!i8042_kbd_values.exists) + goto irq_ret; + + serio_interrupt(&i8042_kbd_port, data, dfl, regs); + +irq_ret: + + mod_timer(&i8042_timer, jiffies + I8042_POLL_PERIOD); + return IRQ_RETVAL(1); } /* @@ -519,17 +514,8 @@ static int __init i8042_check_mux(struct i8042_values *values) { - static int i8042_check_mux_cookie; unsigned char mux_version; -/* - * Check if AUX irq is available. - */ - if (request_irq(values->irq, i8042_interrupt, SA_SHIRQ, - "i8042", &i8042_check_mux_cookie)) - return -1; - free_irq(values->irq, &i8042_check_mux_cookie); - if (i8042_enable_mux_mode(values, &mux_version)) return -1; @@ -635,6 +621,7 @@ if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) { printk(KERN_WARNING "i8042.c: Can't write CTR while registering.\n"); + values->exists = 0; return -1; } @@ -653,7 +640,6 @@ static void i8042_timer_func(unsigned long data) { i8042_interrupt(0, NULL, NULL); - mod_timer(&i8042_timer, jiffies + I8042_POLL_PERIOD); } @@ -666,8 +652,6 @@ static int i8042_controller_init(void) { - if (i8042_noaux) - i8042_nomux = 1; /* * Test the i8042. We need to know if it thinks it's working correctly * before doing anything else. @@ -939,6 +923,9 @@ dbg_init(); + init_timer(&i8042_timer); + i8042_timer.function = i8042_timer_func; + if (i8042_platform_init()) return -EBUSY; @@ -951,20 +938,18 @@ if (i8042_dumbkbd) i8042_kbd_port.write = NULL; - for (i = 0; i < 4; i++) - i8042_init_mux_values(i8042_mux_values + i, i8042_mux_port + i, i); - - if (!i8042_nomux && !i8042_check_mux(&i8042_aux_values)) - for (i = 0; i < 4; i++) - i8042_port_register(i8042_mux_values + i, i8042_mux_port + i); - else - if (!i8042_noaux && !i8042_check_aux(&i8042_aux_values)) + if (!i8042_noaux && !i8042_check_aux(&i8042_aux_values)) { + if (!i8042_nomux && !i8042_check_mux(&i8042_aux_values)) + for (i = 0; i < 4; i++) { + i8042_init_mux_values(i8042_mux_values + i, i8042_mux_port + i, i); + i8042_port_register(i8042_mux_values + i, i8042_mux_port + i); + } + else i8042_port_register(&i8042_aux_values, &i8042_aux_port); + } i8042_port_register(&i8042_kbd_values, &i8042_kbd_port); - init_timer(&i8042_timer); - i8042_timer.function = i8042_timer_func; mod_timer(&i8042_timer, jiffies + I8042_POLL_PERIOD); if (sysdev_class_register(&kbc_sysclass) == 0) { diff -Nru a/drivers/macintosh/adbhid.c b/drivers/macintosh/adbhid.c --- a/drivers/macintosh/adbhid.c Wed Jan 21 11:54:31 2004 +++ b/drivers/macintosh/adbhid.c Wed Jan 21 11:54:31 2004 @@ -69,8 +69,8 @@ 22, 26, 23, 25, 28, 38, 36, 40, 37, 39, 43, 51, 53, 49, 50, 52, 15, 57, 41, 14, 96, 1, 29,125, 42, 58, 56,105,106,108,103, 0, 0, 83, 0, 55, 0, 78, 0, 69, 0, 0, 0, 98, 96, 0, 74, 0, - 0,117, 82, 79, 80, 81, 75, 76, 77, 71, 0, 72, 73,183,181,124, - 63, 64, 65, 61, 66, 67,191, 87,190, 99, 0, 70, 0, 68,101, 88, + 0,117, 82, 79, 80, 81, 75, 76, 77, 71, 0, 72, 73,124, 89,121, + 63, 64, 65, 61, 66, 67,123, 87,122, 99, 0, 70, 0, 68,101, 88, 0,119,110,102,104,111, 62,107, 60,109, 59, 54,100, 97,126,116 }; diff -Nru a/drivers/media/dvb/ttusb-dec/ttusb_dec.c b/drivers/media/dvb/ttusb-dec/ttusb_dec.c --- a/drivers/media/dvb/ttusb-dec/ttusb_dec.c Wed Jan 21 11:54:31 2004 +++ b/drivers/media/dvb/ttusb-dec/ttusb_dec.c Wed Jan 21 11:54:31 2004 @@ -30,6 +30,7 @@ #include #include #include +#include #include "dmxdev.h" #include "dvb_demux.h" diff -Nru a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c --- a/drivers/usb/input/hid-core.c Wed Jan 21 11:54:31 2004 +++ b/drivers/usb/input/hid-core.c Wed Jan 21 11:54:31 2004 @@ -1357,6 +1357,9 @@ #define USB_VENDOR_ID_BERKSHIRE 0x0c98 #define USB_DEVICE_ID_BERKSHIRE_PCWD 0x1140 +#define USB_VENDOR_ID_ALPS 0x0433 +#define USB_DEVICE_ID_IBM_GAMEPAD 0x1101 + struct hid_blacklist { __u16 idVendor; __u16 idProduct; @@ -1407,6 +1410,7 @@ { USB_VENDOR_ID_ESSENTIAL_REALITY, USB_DEVICE_ID_ESSENTIAL_REALITY_P5, HID_QUIRK_IGNORE }, { USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU, HID_QUIRK_2WHEEL_MOUSE_HACK }, { USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD, HID_QUIRK_IGNORE }, + { USB_VENDOR_ID_ALPS, USB_DEVICE_ID_IBM_GAMEPAD, HID_QUIRK_BADPAD }, { 0, 0 } }; @@ -1525,9 +1529,9 @@ continue; if (!(hid->urbout = usb_alloc_urb(0, GFP_KERNEL))) goto fail; - pipe = usb_sndbulkpipe(dev, endpoint->bEndpointAddress); - usb_fill_bulk_urb(hid->urbout, dev, pipe, hid->outbuf, 0, - hid_irq_out, hid); + pipe = usb_sndintpipe(dev, endpoint->bEndpointAddress); + usb_fill_int_urb(hid->urbout, dev, pipe, hid->outbuf, 0, + hid_irq_out, hid, 1); hid->urbout->transfer_dma = hid->outbuf_dma; hid->urbout->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; } diff -Nru a/drivers/usb/input/hid-ff.c b/drivers/usb/input/hid-ff.c --- a/drivers/usb/input/hid-ff.c Wed Jan 21 11:54:31 2004 +++ b/drivers/usb/input/hid-ff.c Wed Jan 21 11:54:31 2004 @@ -5,7 +5,7 @@ * Not all hid devices use the same protocol. For example, some use PID, * other use their own proprietary procotol. * - * Copyright (c) 2002 Johann Deneux + * Copyright (c) 2002-2004 Johann Deneux */ /* @@ -24,7 +24,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Should you need to contact me, the author, you can do so by - * e-mail - mail your message to + * e-mail - mail your message to */ #include @@ -52,8 +52,9 @@ static struct hid_ff_initializer inits[] = { #ifdef CONFIG_LOGITECH_FF - {0x46d, 0xc211, hid_lgff_init}, - {0x46d, 0xc283, hid_lgff_init}, + {0x46d, 0xc211, hid_lgff_init}, // Logitech Cordless rumble pad + {0x46d, 0xc283, hid_lgff_init}, // Logitech Wingman Force 3d + {0x46d, 0xc295, hid_lgff_init}, // Logitech MOMO force wheel #endif #ifdef CONFIG_HID_PID {0x45e, 0x001b, hid_pid_init}, diff -Nru a/drivers/usb/input/hid-input.c b/drivers/usb/input/hid-input.c --- a/drivers/usb/input/hid-input.c Wed Jan 21 11:54:31 2004 +++ b/drivers/usb/input/hid-input.c Wed Jan 21 11:54:31 2004 @@ -40,13 +40,13 @@ 0, 0, 0, 0, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38, 50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 21, 44, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 28, 1, 14, 15, 57, 12, 13, 26, - 27, 43, 84, 39, 40, 41, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64, + 27, 43, 43, 39, 40, 41, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 87, 88, 99, 70,119,110,102,104,111,107,109,106, 105,108,103, 69, 98, 55, 74, 78, 96, 79, 80, 81, 75, 76, 77, 71, - 72, 73, 82, 83, 86,127,116,117, 85, 89, 90, 91, 92, 93, 94, 95, - 120,121,122,123,134,138,130,132,128,129,131,137,133,135,136,113, - 115,114,unk,unk,unk,124,unk,181,182,183,184,185,186,187,188,189, - 190,191,192,193,194,195,196,197,198,unk,unk,unk,unk,unk,unk,unk, + 72, 73, 82, 83, 86,127,116,117,183,184,185,186,187,188,189,190, + 191,192,193,194,134,138,130,132,128,129,131,137,133,135,136,113, + 115,114,unk,unk,unk,121,unk, 89, 93,124, 92, 94, 95,unk,unk,unk, + 122,123, 90, 91, 85,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk, unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk, unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk, unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk, diff -Nru a/drivers/usb/input/hid-lgff.c b/drivers/usb/input/hid-lgff.c --- a/drivers/usb/input/hid-lgff.c Wed Jan 21 11:54:31 2004 +++ b/drivers/usb/input/hid-lgff.c Wed Jan 21 11:54:31 2004 @@ -6,7 +6,7 @@ * - WingMan Cordless RumblePad * - WingMan Force 3D * - * Copyright (c) 2002 Johann Deneux + * Copyright (c) 2002-2004 Johann Deneux */ /* @@ -25,13 +25,13 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Should you need to contact me, the author, you can do so by - * e-mail - mail your message to + * e-mail - mail your message to */ #include #include -#define DEBUG +//#define DEBUG #include #include @@ -179,8 +179,7 @@ kfree(private); return -1; } - private->rumble->field[0]->value[0] = 0x03; - private->rumble->field[0]->value[1] = 0x42; + private->rumble->field[0]->value[0] = 0x42; private->condition = hid_lgff_duplicate_report(report); @@ -207,7 +206,7 @@ add_timer(&private->timer); /*TODO: only run the timer when at least one effect is playing */ - printk(KERN_INFO "Force feedback for Logitech force feedback devices by Johann Deneux \n"); + printk(KERN_INFO "Force feedback for Logitech force feedback devices by Johann Deneux \n"); return 0; } @@ -254,7 +253,7 @@ signed short* ff; u16 idVendor = hid->dev->descriptor.idVendor; u16 idProduct = hid->dev->descriptor.idProduct; - struct hid_input *hidinput = list_entry(&hid->inputs, struct hid_input, list); + struct hid_input *hidinput = list_entry(hid->inputs.next, struct hid_input, list); while (dev->idVendor && (idVendor != dev->idVendor || idProduct != dev->idProduct)) dev++; @@ -511,10 +510,10 @@ hid_submit_report(hid, lgff->constant, USB_DIR_OUT); } - if (left != lgff->rumble->field[0]->value[3] - || right != lgff->rumble->field[0]->value[4]) { - lgff->rumble->field[0]->value[3] = left; - lgff->rumble->field[0]->value[4] = right; + if (left != lgff->rumble->field[0]->value[2] + || right != lgff->rumble->field[0]->value[3]) { + lgff->rumble->field[0]->value[2] = left; + lgff->rumble->field[0]->value[3] = right; dbg("(left,right)=(%04x, %04x)", left, right); hid_submit_report(hid, lgff->rumble, USB_DIR_OUT); } diff -Nru a/drivers/usb/input/usbkbd.c b/drivers/usb/input/usbkbd.c --- a/drivers/usb/input/usbkbd.c Wed Jan 21 11:54:31 2004 +++ b/drivers/usb/input/usbkbd.c Wed Jan 21 11:54:31 2004 @@ -49,13 +49,13 @@ 0, 0, 0, 0, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38, 50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 21, 44, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 28, 1, 14, 15, 57, 12, 13, 26, - 27, 43, 84, 39, 40, 41, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64, + 27, 43, 43, 39, 40, 41, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 87, 88, 99, 70,119,110,102,104,111,107,109,106, 105,108,103, 69, 98, 55, 74, 78, 96, 79, 80, 81, 75, 76, 77, 71, - 72, 73, 82, 83, 86,127,116,117, 85, 89, 90, 91, 92, 93, 94, 95, - 120,121,122,123,134,138,130,132,128,129,131,137,133,135,136,113, - 115,114, 0, 0, 0,124, 0,181,182,183,184,185,186,187,188,189, - 190,191,192,193,194,195,196,197,198, 0, 0, 0, 0, 0, 0, 0, + 72, 73, 82, 83, 86,127,116,117,183,184,185,186,187,188,189,190, + 191,192,193,194,134,138,130,132,128,129,131,137,133,135,136,113, + 115,114, 0, 0, 0,121, 0, 89, 93,124, 92, 94, 95, 0, 0, 0, + 122,123, 90, 91, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, diff -Nru a/include/asm-alpha/elf.h b/include/asm-alpha/elf.h --- a/include/asm-alpha/elf.h Wed Jan 21 11:54:31 2004 +++ b/include/asm-alpha/elf.h Wed Jan 21 11:54:31 2004 @@ -122,27 +122,19 @@ instruction set this CPU supports. This is trivial on Alpha, but not so on other machines. */ -#define ELF_HWCAP \ -({ \ - /* Sadly, most folks don't yet have assemblers that know about \ - amask. This is "amask v0, v0" */ \ - register long _v0 __asm("$0") = -1; \ - __asm(".long 0x47e00c20" : "=r"(_v0) : "0"(_v0)); \ - ~_v0; \ -}) +#define ELF_HWCAP (~amask(-1)) /* This yields a string that ld.so will use to load implementation specific libraries for optimization. This is more specific in - intent than poking at uname or /proc/cpuinfo. - - This might do with checking bwx simultaneously... */ + intent than poking at uname or /proc/cpuinfo. */ #define ELF_PLATFORM \ ({ \ - /* Or "implver v0" ... */ \ - register long _v0 __asm("$0"); \ - __asm(".long 0x47e03d80" : "=r"(_v0)); \ - _v0 == 0 ? "ev4" : "ev5"; \ + enum implver_enum i_ = implver(); \ + ( i_ == IMPLVER_EV4 ? "ev4" \ + : i_ == IMPLVER_EV5 \ + ? (amask(AMASK_BWX) ? "ev5" : "ev56") \ + : amask (AMASK_CIX) ? "ev6" : "ev67"); \ }) #ifdef __KERNEL__ diff -Nru a/include/linux/input.h b/include/linux/input.h --- a/include/linux/input.h Wed Jan 21 11:54:31 2004 +++ b/include/linux/input.h Wed Jan 21 11:54:31 2004 @@ -189,18 +189,18 @@ #define KEY_KP3 81 #define KEY_KP0 82 #define KEY_KPDOT 83 -#define KEY_103RD 84 -#define KEY_F13 85 + +#define KEY_ZENKAKUHANKAKU 85 #define KEY_102ND 86 #define KEY_F11 87 #define KEY_F12 88 -#define KEY_F14 89 -#define KEY_F15 90 -#define KEY_F16 91 -#define KEY_F17 92 -#define KEY_F18 93 -#define KEY_F19 94 -#define KEY_F20 95 +#define KEY_RO 89 +#define KEY_KATAKANA 90 +#define KEY_HIRAGANA 91 +#define KEY_HENKAN 92 +#define KEY_KATAKANAHIRAGANA 93 +#define KEY_MUHENKAN 94 +#define KEY_KPJPCOMMA 95 #define KEY_KPENTER 96 #define KEY_RIGHTCTRL 97 #define KEY_KPSLASH 98 @@ -225,11 +225,11 @@ #define KEY_KPEQUAL 117 #define KEY_KPPLUSMINUS 118 #define KEY_PAUSE 119 -#define KEY_F21 120 -#define KEY_F22 121 -#define KEY_F23 122 -#define KEY_F24 123 -#define KEY_KPCOMMA 124 + +#define KEY_KPCOMMA 121 +#define KEY_HANGUEL 122 +#define KEY_HANJA 123 +#define KEY_YEN 124 #define KEY_LEFTMETA 125 #define KEY_RIGHTMETA 126 #define KEY_COMPOSE 127 @@ -288,24 +288,18 @@ #define KEY_KPLEFTPAREN 179 #define KEY_KPRIGHTPAREN 180 -#define KEY_INTL1 181 -#define KEY_INTL2 182 -#define KEY_INTL3 183 -#define KEY_INTL4 184 -#define KEY_INTL5 185 -#define KEY_INTL6 186 -#define KEY_INTL7 187 -#define KEY_INTL8 188 -#define KEY_INTL9 189 -#define KEY_LANG1 190 -#define KEY_LANG2 191 -#define KEY_LANG3 192 -#define KEY_LANG4 193 -#define KEY_LANG5 194 -#define KEY_LANG6 195 -#define KEY_LANG7 196 -#define KEY_LANG8 197 -#define KEY_LANG9 198 +#define KEY_F13 183 +#define KEY_F14 184 +#define KEY_F15 185 +#define KEY_F16 186 +#define KEY_F17 187 +#define KEY_F18 188 +#define KEY_F19 189 +#define KEY_F20 190 +#define KEY_F21 191 +#define KEY_F22 192 +#define KEY_F23 193 +#define KEY_F24 194 #define KEY_PLAYCD 200 #define KEY_PAUSECD 201 @@ -580,6 +574,7 @@ #define BUS_ISAPNP 0x02 #define BUS_USB 0x03 #define BUS_HIL 0x04 +#define BUS_BLUETOOTH 0x05 #define BUS_ISA 0x10 #define BUS_I8042 0x11 diff -Nru a/security/selinux/netif.c b/security/selinux/netif.c --- a/security/selinux/netif.c Wed Jan 21 11:54:31 2004 +++ b/security/selinux/netif.c Wed Jan 21 11:54:31 2004 @@ -12,6 +12,7 @@ * it under the terms of the GNU General Public License version 2, * as published by the Free Software Foundation. */ +#include #include #include #include