1326 lines
47 KiB
Diff
1326 lines
47 KiB
Diff
commit 9069f7f1ce7309cba021ac9c3527526d8524bd04
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Mon Apr 25 13:50:50 2011 -0400
|
|
|
|
[media] ite-cir: modular build on ppc requires delay.h include
|
|
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
commit 50f19c24801caaa6d846c62cef93ee54f6e6914f
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Mon Apr 25 13:48:18 2011 -0400
|
|
|
|
[media] mceusb: add Dell transceiver ID
|
|
|
|
Add device ID for a Dell-branded, Philips device ID transceiver reported
|
|
by an OpenELEC user on their forums.
|
|
|
|
http://openelec.tv/forum/27-hardware-support/5622-adding-support-for-an-ir-receiver--dell-branded--#5622
|
|
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
commit d9193f3784352638b355c9a24c16f1a2e14b0548
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Thu Apr 21 14:21:47 2011 -0400
|
|
|
|
[media] nuvoton-cir: minor tweaks to rc dev init
|
|
|
|
- Set a default timeout (matching mceusb.c) and use
|
|
ir_raw_event_store_with_filter, which leads to better behavior when
|
|
using lirc userspace decoding with this hardware
|
|
- Fill in rx_resolution with the value we're using here (50us)
|
|
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
commit 02210203eb4df7fdf1156b24fcf2b7e2a20bf29c
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Tue Apr 19 15:47:34 2011 -0400
|
|
|
|
[media] mceusb: Formosa e017 device has no tx
|
|
|
|
Per hardware provided to me, the Formosa Industrial Computing eHome
|
|
Infrared Receiver, 0x147a:0xe017, has no tx capability, it is rx only.
|
|
|
|
Thanks go to Paul Rae for the hardware.
|
|
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
commit 5919687ea8e0d3ee093b6edc4e24e30c1a8a60dc
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Tue Apr 19 14:31:40 2011 -0400
|
|
|
|
hid: flesh out support for tivo slide remote
|
|
|
|
This patch finishes off adding full support for the TiVo Slide remote,
|
|
which is a mostly pure HID device from the perspective of the kernel.
|
|
There are a few mappings that use a vendor-specific usage page, and a
|
|
few keys in the consumer usage page that I think make sense to remap
|
|
slightly, to better fit their key labels' intended use. Doing this in a
|
|
stand-alone hid-tivo.c makes the modifications only matter for this
|
|
specific device.
|
|
|
|
What's actually connected to the computer is a Broadcom-made usb dongle,
|
|
which has an embedded hub, bluetooth adapter, mouse and keyboard
|
|
devices. You pair with the dongle, then the remote sends data that its
|
|
converted into HID on the keyboard interface (the mouse interface
|
|
doesn't do anything interesting, so far as I can tell).
|
|
|
|
lsusb for this device:
|
|
Bus 004 Device 005: ID 0a5c:2190 Broadcom Corp.
|
|
Bus 004 Device 004: ID 0a5c:4503 Broadcom Corp.
|
|
Bus 004 Device 003: ID 150a:1201
|
|
Bus 004 Device 002: ID 0a5c:4500 Broadcom Corp. BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth)
|
|
|
|
Speaking of the keyboard interface, the remote actually does contain a
|
|
keyboard as well. The top slides away, revealing a reasonably functional
|
|
qwerty keyboard (not unlike many slide cell phones), thus the product
|
|
name.
|
|
|
|
Applies cleanly to hid master, tested w/a 2.6.38.3-based Fedora kernel
|
|
and a 2.6.32-based Red Hat Enterprise Linux 6 kernel.
|
|
|
|
CC: Jiri Kosina <jkosina@suse.cz>
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
commit f5d27c83d8b1d1db7d727d4d33ae3df1357c0f03
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Thu Mar 24 17:08:00 2011 -0400
|
|
|
|
rc: add an Apple remote keymap
|
|
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
commit 9942d577525ebac939c155aaeb18e97e1282c923
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Tue Apr 12 12:38:27 2011 -0400
|
|
|
|
[media] rc/nuvoton-cir: enable CIR on w83667hg chip variant
|
|
|
|
Thanks to some excellent investigative work by Douglas Clowes, it was
|
|
uncovered that the older w83667hg Nuvoton chip functions with this
|
|
driver after actually enabling the CIR function via its multi-function
|
|
chip config register. The CIR and CIR wide-band sensor enable bits are
|
|
just in a different place on this hardware, so we only poke register
|
|
0x27 on 677 hardware now, and we poke register 0x2c on the 667 now.
|
|
|
|
Reported-by: Douglas Clowes <dclowes1@optusnet.com.au>
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
commit 92e839f5added53445aa2c447d69ea1c399e3113
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Tue Apr 12 13:00:07 2011 -0400
|
|
|
|
[media] rc/nuvoton-cir: only warn about unknown chips
|
|
|
|
There are additional chip IDs that report a PNP ID of NTN0530, which we
|
|
were refusing to load on. Instead, lets just warn if we encounter an
|
|
unknown chip, as there's a chance it will work just fine.
|
|
|
|
Also, expand the list of known hardware to include both an earlier and a
|
|
later generation chip that this driver should function with. Douglas has
|
|
an older w83667hg variant, that with a touch more work, will be
|
|
supported by this driver, and Lutz has a newer w83677hg variant that
|
|
works without any further modifications to the driver.
|
|
|
|
Reported-by: Douglas Clowes <dclowes1@optusnet.com.au>
|
|
Reported-by: Lutz Sammer <johns98@gmx.net>
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
commit 8cc98ca72fe0a5c0a5299057edf24690c6940098
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Tue Apr 5 17:42:30 2011 -0400
|
|
|
|
[media] rc: further key name standardization
|
|
|
|
Use the newly introduced KEY_IMAGES where appropriate, and standardize
|
|
on KEY_MEDIA for media center/application launcher button (such as the
|
|
Windows logo key on the Windows Media Center Ed. remotes).
|
|
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
commit 29d1ac85998862cc4cb7629461358e932363c358
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Thu Mar 24 15:43:45 2011 -0400
|
|
|
|
lirc_sasem: key debug spew off debug modparam
|
|
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
commit 9965e8d8e0035e56e11e1ad6c359877e51749b34
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Thu Mar 24 11:56:16 2011 -0400
|
|
|
|
ttusb-budget: driver has a debug param, use it
|
|
|
|
Remove DEBUG define, key debug spew off of the module's debug param that
|
|
already exists.
|
|
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
commit 10fabf1f9cf8c1d1b579ab549bf4429ad13e0219
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Thu Mar 24 11:54:41 2011 -0400
|
|
|
|
drx397xD: remove unused DEBUG define
|
|
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
commit aa17ba00097df21cd0392e8aea41e93460e25007
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Thu Mar 24 11:59:10 2011 -0400
|
|
|
|
mceusb: tivo transceiver should default to tivo keymap
|
|
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
commit 02a5f7ed83b1da82f78b759a293cd15170afe611
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Thu Mar 24 11:58:48 2011 -0400
|
|
|
|
rc: add tivo/nero liquidtv keymap
|
|
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
commit db27bf543d740530ca0c1ab9fa7f3386f998e87c
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Mon Apr 11 17:33:28 2011 -0400
|
|
|
|
hid: assorted usage updates from hut 1.12
|
|
|
|
I've got a Tivo Slide bluetooth remote/dongle, which uses a fair number
|
|
of hid usages that aren't currently mapped in hid-input.c. I'd initially
|
|
written additions to hid-input.c with just this device in mind,
|
|
including some bits that were specific to the device. This go around,
|
|
I'm looking at adding/correcting as many generic HID usages from the HID
|
|
Usage Tables, version 1.12, as I can -- which also serves to enable all
|
|
but four of the buttons on the Tivo Slide remote[*].
|
|
|
|
Outside of fixing the obviously incorrect mapping of 0xc 0x45 from
|
|
KEY_RADIO to KEY_RIGHT, and making use of the new KEY_IMAGES (just added
|
|
in 2.6.39-rc4) for AL Image Browser instead of KEY_MEDIA, these are
|
|
purely additions, and thus should have no negative impact on any already
|
|
functional HID devices. Most of the added mappings seemed to be
|
|
perfectly logical to me, but there were a few that were mapped on more
|
|
of an "I think this makes the most sense" basis.
|
|
|
|
[*] I'll handle the last four tivo buttons via an hid-tivo.c follow-up.
|
|
|
|
CC: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
|
CC: Jiri Kosina <jkosina@suse.cz>
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
commit 967bc222e57b94cf12cb4ad55383dec885f1755c
|
|
Author: Jarod Wilson <jarod@redhat.com>
|
|
Date: Wed Apr 6 09:54:01 2011 -0400
|
|
|
|
input: add KEY_IMAGES specifically for AL Image Browser
|
|
|
|
Many media center remotes have buttons intended for jumping straight to
|
|
one type of media browser or another -- commonly, images/photos/pictures,
|
|
audio/music, television, and movies. At present, remotes with an images
|
|
or photos or pictures button use any number of different keycodes which
|
|
sort of maybe fit. I've seen at least KEY_MEDIA, KEY_CAMERA,
|
|
KEY_GRAPHICSEDITOR and KEY_PRESENTATION. None of those seem quite right.
|
|
In my mind, KEY_MEDIA should be something more like a media center
|
|
application launcher (and I'd like to standardize on that for things
|
|
like the windows media center button on the mce remotes). KEY_CAMERA is
|
|
used in a lot of webcams, and typically means "take a picture now".
|
|
KEY_GRAPHICSEDITOR implies an editor, not a browser. KEY_PRESENTATION
|
|
might be the closest fit here, if you think "photo slide show", but it
|
|
may well be more intended for "run application in full-screen
|
|
presentation mode" or to launch something like magicpoint, I dunno.
|
|
And thus, I'd like to have a KEY_IMAGES, which matches the HID Usage AL
|
|
Image Browser, the meaning of which I think is crystal-clear. I believe
|
|
AL Audio Browser is already covered by KEY_AUDIO, and AL Movie Browser
|
|
by KEY_VIDEO, so I'm also adding appropriate comments next to those
|
|
keys.
|
|
|
|
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
---
|
|
drivers/hid/Kconfig | 6 +
|
|
drivers/hid/Makefile | 1 +
|
|
drivers/hid/hid-ids.h | 3 +
|
|
drivers/hid/hid-input.c | 60 ++++++++++--
|
|
drivers/hid/hid-tivo.c | 89 ++++++++++++++++++
|
|
drivers/media/dvb/dvb-usb/dibusb-common.c | 2 +-
|
|
drivers/media/dvb/dvb-usb/m920x.c | 16 ++--
|
|
drivers/media/dvb/dvb-usb/nova-t-usb2.c | 2 +-
|
|
drivers/media/dvb/frontends/drx397xD.c | 1 -
|
|
drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c | 60 ++++++-------
|
|
drivers/media/rc/keymaps/Makefile | 2 +
|
|
drivers/media/rc/keymaps/rc-apple.c | 55 +++++++++++
|
|
drivers/media/rc/keymaps/rc-avermedia-cardbus.c | 2 +-
|
|
drivers/media/rc/keymaps/rc-imon-mce.c | 2 +-
|
|
drivers/media/rc/keymaps/rc-imon-pad.c | 6 +-
|
|
.../media/rc/keymaps/rc-kworld-plus-tv-analog.c | 2 +-
|
|
drivers/media/rc/keymaps/rc-rc6-mce.c | 4 +-
|
|
drivers/media/rc/keymaps/rc-tivo.c | 98 ++++++++++++++++++++
|
|
drivers/media/rc/mceusb.c | 16 +++-
|
|
drivers/media/rc/nuvoton-cir.c | 62 ++++++++++---
|
|
drivers/media/rc/nuvoton-cir.h | 17 +++-
|
|
drivers/staging/lirc/lirc_sasem.c | 13 ++-
|
|
include/linux/input.h | 5 +-
|
|
include/media/rc-map.h | 2 +
|
|
24 files changed, 439 insertions(+), 87 deletions(-)
|
|
|
|
diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
|
|
index 2560f01..30a8cfd 100644
|
|
--- a/drivers/hid/Kconfig
|
|
+++ b/drivers/hid/Kconfig
|
|
@@ -492,6 +492,12 @@ config SMARTJOYPLUS_FF
|
|
Say Y here if you have a SmartJoy PLUS PS2/USB adapter and want to
|
|
enable force feedback support for it.
|
|
|
|
+config HID_TIVO_SLIDE
|
|
+ tristate "TiVo Slide Bluetooth remote control support"
|
|
+ depends on USB_HID
|
|
+ ---help---
|
|
+ Say Y if you have a TiVo Slide Bluetooth remote control.
|
|
+
|
|
config HID_TOPSEED
|
|
tristate "TopSeed Cyberlink, BTC Emprex, Conceptronic remote control support"
|
|
depends on USB_HID
|
|
diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
|
|
index 6efc2a0..7c1efa3 100644
|
|
--- a/drivers/hid/Makefile
|
|
+++ b/drivers/hid/Makefile
|
|
@@ -66,6 +66,7 @@ obj-$(CONFIG_HID_STANTUM) += hid-stantum.o
|
|
obj-$(CONFIG_HID_SUNPLUS) += hid-sunplus.o
|
|
obj-$(CONFIG_HID_GREENASIA) += hid-gaff.o
|
|
obj-$(CONFIG_HID_THRUSTMASTER) += hid-tmff.o
|
|
+obj-$(CONFIG_HID_TIVO) += hid-tivo.o
|
|
obj-$(CONFIG_HID_TOPSEED) += hid-topseed.o
|
|
obj-$(CONFIG_HID_TWINHAN) += hid-twinhan.o
|
|
obj-$(CONFIG_HID_UCLOGIC) += hid-uclogic.o
|
|
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
|
|
index 92a0d61..8ece9eb 100644
|
|
--- a/drivers/hid/hid-ids.h
|
|
+++ b/drivers/hid/hid-ids.h
|
|
@@ -533,6 +533,9 @@
|
|
|
|
#define USB_VENDOR_ID_THRUSTMASTER 0x044f
|
|
|
|
+#define USB_VENDOR_ID_TIVO 0x150a
|
|
+#define USB_DEVICE_ID_TIVO_SLIDE 0x1201
|
|
+
|
|
#define USB_VENDOR_ID_TOPSEED 0x0766
|
|
#define USB_DEVICE_ID_TOPSEED_CYBERLINK 0x0204
|
|
|
|
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
|
|
index 7f552bf..88d4703 100644
|
|
--- a/drivers/hid/hid-input.c
|
|
+++ b/drivers/hid/hid-input.c
|
|
@@ -44,11 +44,11 @@ static const unsigned char hid_keyboard[256] = {
|
|
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,
|
|
+ 122,123, 90, 91, 85,unk,unk,unk,unk,unk,unk,unk,111,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,179,180,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,111,unk,unk,unk,unk,unk,unk,unk,
|
|
29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113,
|
|
150,158,159,128,136,177,178,176,142,152,173,140,unk,unk,unk,unk
|
|
};
|
|
@@ -365,6 +365,18 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
|
|
case 0x1: map_key_clear(KEY_POWER); break;
|
|
case 0x2: map_key_clear(KEY_SLEEP); break;
|
|
case 0x3: map_key_clear(KEY_WAKEUP); break;
|
|
+ case 0x4: map_key_clear(KEY_CONTEXT_MENU); break;
|
|
+ case 0x5: map_key_clear(KEY_MENU); break;
|
|
+ case 0x6: map_key_clear(KEY_PROG1); break;
|
|
+ case 0x7: map_key_clear(KEY_HELP); break;
|
|
+ case 0x8: map_key_clear(KEY_EXIT); break;
|
|
+ case 0x9: map_key_clear(KEY_SELECT); break;
|
|
+ case 0xa: map_key_clear(KEY_RIGHT); break;
|
|
+ case 0xb: map_key_clear(KEY_LEFT); break;
|
|
+ case 0xc: map_key_clear(KEY_UP); break;
|
|
+ case 0xd: map_key_clear(KEY_DOWN); break;
|
|
+ case 0xe: map_key_clear(KEY_POWER2); break;
|
|
+ case 0xf: map_key_clear(KEY_RESTART); break;
|
|
default: goto unknown;
|
|
}
|
|
break;
|
|
@@ -474,16 +486,39 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
|
|
}
|
|
break;
|
|
|
|
- case HID_UP_CONSUMER: /* USB HUT v1.1, pages 56-62 */
|
|
+ case HID_UP_CONSUMER: /* USB HUT v1.12, pages 75-84 */
|
|
switch (usage->hid & HID_USAGE) {
|
|
case 0x000: goto ignore;
|
|
+ case 0x030: map_key_clear(KEY_POWER); break;
|
|
+ case 0x031: map_key_clear(KEY_RESTART); break;
|
|
+ case 0x032: map_key_clear(KEY_SLEEP); break;
|
|
case 0x034: map_key_clear(KEY_SLEEP); break;
|
|
+ case 0x035: map_key_clear(KEY_KBDILLUMTOGGLE); break;
|
|
case 0x036: map_key_clear(BTN_MISC); break;
|
|
|
|
- case 0x040: map_key_clear(KEY_MENU); break;
|
|
- case 0x045: map_key_clear(KEY_RADIO); break;
|
|
-
|
|
+ case 0x040: map_key_clear(KEY_MENU); break; /* Menu */
|
|
+ case 0x041: map_key_clear(KEY_SELECT); break; /* Menu Pick */
|
|
+ case 0x042: map_key_clear(KEY_UP); break; /* Menu Up */
|
|
+ case 0x043: map_key_clear(KEY_DOWN); break; /* Menu Down */
|
|
+ case 0x044: map_key_clear(KEY_LEFT); break; /* Menu Left */
|
|
+ case 0x045: map_key_clear(KEY_RIGHT); break; /* Menu Right */
|
|
+ case 0x046: map_key_clear(KEY_ESC); break; /* Menu Escape */
|
|
+ case 0x047: map_key_clear(KEY_KPPLUS); break; /* Menu Value Increase */
|
|
+ case 0x048: map_key_clear(KEY_KPMINUS); break; /* Menu Value Decrease */
|
|
+
|
|
+ case 0x060: map_key_clear(KEY_INFO); break; /* Data On Screen */
|
|
+ case 0x061: map_key_clear(KEY_SUBTITLE); break; /* Closed Caption */
|
|
+ case 0x063: map_key_clear(KEY_VCR); break; /* VCR/TV */
|
|
+ case 0x065: map_key_clear(KEY_CAMERA); break; /* Snapshot */
|
|
+ case 0x069: map_key_clear(KEY_RED); break;
|
|
+ case 0x06a: map_key_clear(KEY_GREEN); break;
|
|
+ case 0x06b: map_key_clear(KEY_BLUE); break;
|
|
+ case 0x06c: map_key_clear(KEY_YELLOW); break;
|
|
+ case 0x06d: map_key_clear(KEY_ZOOM); break;
|
|
+
|
|
+ case 0x082: map_key_clear(KEY_VIDEO_NEXT); break;
|
|
case 0x083: map_key_clear(KEY_LAST); break;
|
|
+ case 0x084: map_key_clear(KEY_ENTER); break;
|
|
case 0x088: map_key_clear(KEY_PC); break;
|
|
case 0x089: map_key_clear(KEY_TV); break;
|
|
case 0x08a: map_key_clear(KEY_WWW); break;
|
|
@@ -517,6 +552,8 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
|
|
case 0x0b7: map_key_clear(KEY_STOPCD); break;
|
|
case 0x0b8: map_key_clear(KEY_EJECTCD); break;
|
|
case 0x0bc: map_key_clear(KEY_MEDIA_REPEAT); break;
|
|
+ case 0x0b9: map_key_clear(KEY_SHUFFLE); break;
|
|
+ case 0x0bf: map_key_clear(KEY_SLOW); break;
|
|
|
|
case 0x0cd: map_key_clear(KEY_PLAYPAUSE); break;
|
|
case 0x0e0: map_abs_clear(ABS_VOLUME); break;
|
|
@@ -524,6 +561,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
|
|
case 0x0e5: map_key_clear(KEY_BASSBOOST); break;
|
|
case 0x0e9: map_key_clear(KEY_VOLUMEUP); break;
|
|
case 0x0ea: map_key_clear(KEY_VOLUMEDOWN); break;
|
|
+ case 0x0f5: map_key_clear(KEY_SLOW); break;
|
|
|
|
case 0x182: map_key_clear(KEY_BOOKMARKS); break;
|
|
case 0x183: map_key_clear(KEY_CONFIG); break;
|
|
@@ -540,6 +578,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
|
|
case 0x18e: map_key_clear(KEY_CALENDAR); break;
|
|
case 0x191: map_key_clear(KEY_FINANCE); break;
|
|
case 0x192: map_key_clear(KEY_CALC); break;
|
|
+ case 0x193: map_key_clear(KEY_PLAYER); break;
|
|
case 0x194: map_key_clear(KEY_FILE); break;
|
|
case 0x196: map_key_clear(KEY_WWW); break;
|
|
case 0x199: map_key_clear(KEY_CHAT); break;
|
|
@@ -548,8 +587,10 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
|
|
case 0x1a6: map_key_clear(KEY_HELP); break;
|
|
case 0x1a7: map_key_clear(KEY_DOCUMENTS); break;
|
|
case 0x1ab: map_key_clear(KEY_SPELLCHECK); break;
|
|
- case 0x1b6: map_key_clear(KEY_MEDIA); break;
|
|
- case 0x1b7: map_key_clear(KEY_SOUND); break;
|
|
+ case 0x1ae: map_key_clear(KEY_KEYBOARD); break;
|
|
+ case 0x1b6: map_key_clear(KEY_IMAGES); break;
|
|
+ case 0x1b7: map_key_clear(KEY_AUDIO); break;
|
|
+ case 0x1b8: map_key_clear(KEY_VIDEO); break;
|
|
case 0x1bc: map_key_clear(KEY_MESSENGER); break;
|
|
case 0x1bd: map_key_clear(KEY_INFO); break;
|
|
case 0x201: map_key_clear(KEY_NEW); break;
|
|
@@ -578,7 +619,10 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
|
|
case 0x233: map_key_clear(KEY_SCROLLUP); break;
|
|
case 0x234: map_key_clear(KEY_SCROLLDOWN); break;
|
|
case 0x238: map_rel(REL_HWHEEL); break;
|
|
+ case 0x23d: map_key_clear(KEY_EDIT); break;
|
|
case 0x25f: map_key_clear(KEY_CANCEL); break;
|
|
+ case 0x269: map_key_clear(KEY_INSERT); break;
|
|
+ case 0x26a: map_key_clear(KEY_DELETE); break;
|
|
case 0x279: map_key_clear(KEY_REDO); break;
|
|
|
|
case 0x289: map_key_clear(KEY_REPLY); break;
|
|
diff --git a/drivers/hid/hid-tivo.c b/drivers/hid/hid-tivo.c
|
|
new file mode 100644
|
|
index 0000000..3d43c06
|
|
--- /dev/null
|
|
+++ b/drivers/hid/hid-tivo.c
|
|
@@ -0,0 +1,89 @@
|
|
+/*
|
|
+ * HID driver for TiVo Slide Bluetooth remote
|
|
+ *
|
|
+ * Copyright (c) 2011 Jarod Wilson <jarod@redhat.com>
|
|
+ * based on the hid-topseed driver, which is in turn, based on hid-cherry...
|
|
+ */
|
|
+
|
|
+/*
|
|
+ * This program is free software; you can redistribute it and/or modify it
|
|
+ * under the terms of the GNU General Public License as published by the Free
|
|
+ * Software Foundation; either version 2 of the License, or (at your option)
|
|
+ * any later version.
|
|
+ */
|
|
+
|
|
+#include <linux/device.h>
|
|
+#include <linux/hid.h>
|
|
+#include <linux/module.h>
|
|
+
|
|
+#include "hid-ids.h"
|
|
+
|
|
+#define HID_UP_TIVOVENDOR 0xffff0000
|
|
+#define tivo_map_key_clear(c) hid_map_usage_clear(hi, usage, bit, max, \
|
|
+ EV_KEY, (c))
|
|
+
|
|
+static int tivo_input_mapping(struct hid_device *hdev, struct hid_input *hi,
|
|
+ struct hid_field *field, struct hid_usage *usage,
|
|
+ unsigned long **bit, int *max)
|
|
+{
|
|
+ switch (usage->hid & HID_USAGE_PAGE) {
|
|
+ case HID_UP_TIVOVENDOR:
|
|
+ switch (usage->hid & HID_USAGE) {
|
|
+ /* TiVo button */
|
|
+ case 0x3d: tivo_map_key_clear(KEY_MEDIA); break;
|
|
+ /* Live TV */
|
|
+ case 0x3e: tivo_map_key_clear(KEY_TV); break;
|
|
+ /* Red thumbs down */
|
|
+ case 0x41: tivo_map_key_clear(KEY_KPMINUS); break;
|
|
+ /* Green thumbs up */
|
|
+ case 0x42: tivo_map_key_clear(KEY_KPPLUS); break;
|
|
+ default:
|
|
+ return 0;
|
|
+ }
|
|
+ break;
|
|
+ case HID_UP_CONSUMER:
|
|
+ switch (usage->hid & HID_USAGE) {
|
|
+ /* Enter/Last (default mapping: KEY_LAST) */
|
|
+ case 0x083: tivo_map_key_clear(KEY_ENTER); break;
|
|
+ /* Info (default mapping: KEY_PROPS) */
|
|
+ case 0x209: tivo_map_key_clear(KEY_INFO); break;
|
|
+ default:
|
|
+ return 0;
|
|
+ }
|
|
+ break;
|
|
+ default:
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ /* This means we found a matching mapping here, else, look in the
|
|
+ * standard hid mappings in hid-input.c */
|
|
+ return 1;
|
|
+}
|
|
+
|
|
+static const struct hid_device_id tivo_devices[] = {
|
|
+ /* TiVo Slide Bluetooth remote, pairs with a Broadcom dongle */
|
|
+ { HID_USB_DEVICE(USB_VENDOR_ID_TIVO, USB_DEVICE_ID_TIVO_SLIDE) },
|
|
+ { }
|
|
+};
|
|
+MODULE_DEVICE_TABLE(hid, tivo_devices);
|
|
+
|
|
+static struct hid_driver tivo_driver = {
|
|
+ .name = "tivo_slide",
|
|
+ .id_table = tivo_devices,
|
|
+ .input_mapping = tivo_input_mapping,
|
|
+};
|
|
+
|
|
+static int __init tivo_init(void)
|
|
+{
|
|
+ return hid_register_driver(&tivo_driver);
|
|
+}
|
|
+
|
|
+static void __exit tivo_exit(void)
|
|
+{
|
|
+ hid_unregister_driver(&tivo_driver);
|
|
+}
|
|
+
|
|
+module_init(tivo_init);
|
|
+module_exit(tivo_exit);
|
|
+MODULE_LICENSE("GPL");
|
|
+MODULE_AUTHOR("Jarod Wilson <jarod@redhat.com>");
|
|
diff --git a/drivers/media/dvb/dvb-usb/dibusb-common.c b/drivers/media/dvb/dvb-usb/dibusb-common.c
|
|
index 956f7ae..4c2a689 100644
|
|
--- a/drivers/media/dvb/dvb-usb/dibusb-common.c
|
|
+++ b/drivers/media/dvb/dvb-usb/dibusb-common.c
|
|
@@ -408,7 +408,7 @@ struct rc_map_table rc_map_dibusb_table[] = {
|
|
|
|
{ 0x8008, KEY_DVD },
|
|
{ 0x8009, KEY_AUDIO },
|
|
- { 0x800a, KEY_MEDIA }, /* Pictures */
|
|
+ { 0x800a, KEY_IMAGES }, /* Pictures */
|
|
{ 0x800b, KEY_VIDEO },
|
|
|
|
{ 0x800c, KEY_BACK },
|
|
diff --git a/drivers/media/dvb/dvb-usb/m920x.c b/drivers/media/dvb/dvb-usb/m920x.c
|
|
index da9dc91..51bfd42 100644
|
|
--- a/drivers/media/dvb/dvb-usb/m920x.c
|
|
+++ b/drivers/media/dvb/dvb-usb/m920x.c
|
|
@@ -632,9 +632,9 @@ static struct rc_map_table rc_map_pinnacle310e_table[] = {
|
|
{ 0x16, KEY_POWER },
|
|
{ 0x17, KEY_FAVORITES },
|
|
{ 0x0f, KEY_TEXT },
|
|
- { 0x48, KEY_MEDIA }, /* preview */
|
|
+ { 0x48, KEY_PROGRAM }, /* preview */
|
|
{ 0x1c, KEY_EPG },
|
|
- { 0x04, KEY_LIST }, /* record list */
|
|
+ { 0x04, KEY_LIST }, /* record list */
|
|
{ 0x03, KEY_1 },
|
|
{ 0x01, KEY_2 },
|
|
{ 0x06, KEY_3 },
|
|
@@ -674,14 +674,14 @@ static struct rc_map_table rc_map_pinnacle310e_table[] = {
|
|
{ 0x0e, KEY_MUTE },
|
|
/* { 0x49, KEY_LR }, */ /* L/R */
|
|
{ 0x07, KEY_SLEEP }, /* Hibernate */
|
|
- { 0x08, KEY_MEDIA }, /* A/V */
|
|
- { 0x0e, KEY_MENU }, /* Recall */
|
|
+ { 0x08, KEY_VIDEO }, /* A/V */
|
|
+ { 0x0e, KEY_MENU }, /* Recall */
|
|
{ 0x45, KEY_ZOOMIN },
|
|
{ 0x46, KEY_ZOOMOUT },
|
|
- { 0x18, KEY_TV }, /* Red */
|
|
- { 0x53, KEY_VCR }, /* Green */
|
|
- { 0x5e, KEY_SAT }, /* Yellow */
|
|
- { 0x5f, KEY_PLAYER }, /* Blue */
|
|
+ { 0x18, KEY_RED }, /* Red */
|
|
+ { 0x53, KEY_GREEN }, /* Green */
|
|
+ { 0x5e, KEY_YELLOW }, /* Yellow */
|
|
+ { 0x5f, KEY_BLUE }, /* Blue */
|
|
};
|
|
|
|
/* DVB USB Driver stuff */
|
|
diff --git a/drivers/media/dvb/dvb-usb/nova-t-usb2.c b/drivers/media/dvb/dvb-usb/nova-t-usb2.c
|
|
index 9d3cd2d..bc350e9 100644
|
|
--- a/drivers/media/dvb/dvb-usb/nova-t-usb2.c
|
|
+++ b/drivers/media/dvb/dvb-usb/nova-t-usb2.c
|
|
@@ -47,7 +47,7 @@ static struct rc_map_table rc_map_haupp_table[] = {
|
|
{ 0x1e17, KEY_RIGHT },
|
|
{ 0x1e18, KEY_VIDEO },
|
|
{ 0x1e19, KEY_AUDIO },
|
|
- { 0x1e1a, KEY_MEDIA },
|
|
+ { 0x1e1a, KEY_IMAGES },
|
|
{ 0x1e1b, KEY_EPG },
|
|
{ 0x1e1c, KEY_TV },
|
|
{ 0x1e1e, KEY_NEXT },
|
|
diff --git a/drivers/media/dvb/frontends/drx397xD.c b/drivers/media/dvb/frontends/drx397xD.c
|
|
index a05007c..235ac72 100644
|
|
--- a/drivers/media/dvb/frontends/drx397xD.c
|
|
+++ b/drivers/media/dvb/frontends/drx397xD.c
|
|
@@ -17,7 +17,6 @@
|
|
* along with this program; If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
-#define DEBUG /* uncomment if you want debugging output */
|
|
#include <linux/kernel.h>
|
|
#include <linux/module.h>
|
|
#include <linux/moduleparam.h>
|
|
diff --git a/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c b/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
|
|
index cbe2f0d..420bb42 100644
|
|
--- a/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
|
|
+++ b/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
|
|
@@ -52,7 +52,7 @@
|
|
my TTUSB, so let it undef'd unless you want to implement another
|
|
frontend. never tested.
|
|
|
|
- DEBUG:
|
|
+ debug:
|
|
define it to > 3 for really hardcore debugging. you probably don't want
|
|
this unless the device doesn't load at all. > 2 for bandwidth statistics.
|
|
*/
|
|
@@ -134,20 +134,19 @@ struct ttusb {
|
|
/* ugly workaround ... don't know why it's necessary to read */
|
|
/* all result codes. */
|
|
|
|
-#define DEBUG 0
|
|
static int ttusb_cmd(struct ttusb *ttusb,
|
|
const u8 * data, int len, int needresult)
|
|
{
|
|
int actual_len;
|
|
int err;
|
|
-#if DEBUG >= 3
|
|
int i;
|
|
|
|
- printk(">");
|
|
- for (i = 0; i < len; ++i)
|
|
- printk(" %02x", data[i]);
|
|
- printk("\n");
|
|
-#endif
|
|
+ if (debug >= 3) {
|
|
+ printk(KERN_DEBUG ">");
|
|
+ for (i = 0; i < len; ++i)
|
|
+ printk(KERN_CONT " %02x", data[i]);
|
|
+ printk(KERN_CONT "\n");
|
|
+ }
|
|
|
|
if (mutex_lock_interruptible(&ttusb->semusb) < 0)
|
|
return -EAGAIN;
|
|
@@ -176,13 +175,15 @@ static int ttusb_cmd(struct ttusb *ttusb,
|
|
mutex_unlock(&ttusb->semusb);
|
|
return err;
|
|
}
|
|
-#if DEBUG >= 3
|
|
- actual_len = ttusb->last_result[3] + 4;
|
|
- printk("<");
|
|
- for (i = 0; i < actual_len; ++i)
|
|
- printk(" %02x", ttusb->last_result[i]);
|
|
- printk("\n");
|
|
-#endif
|
|
+
|
|
+ if (debug >= 3) {
|
|
+ actual_len = ttusb->last_result[3] + 4;
|
|
+ printk(KERN_DEBUG "<");
|
|
+ for (i = 0; i < actual_len; ++i)
|
|
+ printk(KERN_CONT " %02x", ttusb->last_result[i]);
|
|
+ printk(KERN_CONT "\n");
|
|
+ }
|
|
+
|
|
if (!needresult)
|
|
mutex_unlock(&ttusb->semusb);
|
|
return 0;
|
|
@@ -636,16 +637,13 @@ static void ttusb_process_frame(struct ttusb *ttusb, u8 * data, int len)
|
|
++ttusb->mux_state;
|
|
else {
|
|
ttusb->mux_state = 0;
|
|
-#if DEBUG > 3
|
|
- if (ttusb->insync)
|
|
- printk("%02x ", data[-1]);
|
|
-#else
|
|
if (ttusb->insync) {
|
|
- printk("%s: lost sync.\n",
|
|
+ dprintk("%s: %02x\n",
|
|
+ __func__, data[-1]);
|
|
+ printk(KERN_INFO "%s: lost sync.\n",
|
|
__func__);
|
|
ttusb->insync = 0;
|
|
}
|
|
-#endif
|
|
}
|
|
break;
|
|
case 3:
|
|
@@ -744,6 +742,9 @@ static void ttusb_process_frame(struct ttusb *ttusb, u8 * data, int len)
|
|
static void ttusb_iso_irq(struct urb *urb)
|
|
{
|
|
struct ttusb *ttusb = urb->context;
|
|
+ struct usb_iso_packet_descriptor *d;
|
|
+ u8 *data;
|
|
+ int len, i;
|
|
|
|
if (!ttusb->iso_streaming)
|
|
return;
|
|
@@ -755,21 +756,14 @@ static void ttusb_iso_irq(struct urb *urb)
|
|
#endif
|
|
|
|
if (!urb->status) {
|
|
- int i;
|
|
for (i = 0; i < urb->number_of_packets; ++i) {
|
|
- struct usb_iso_packet_descriptor *d;
|
|
- u8 *data;
|
|
- int len;
|
|
numpkt++;
|
|
if (time_after_eq(jiffies, lastj + HZ)) {
|
|
-#if DEBUG > 2
|
|
- printk
|
|
- ("frames/s: %d (ts: %d, stuff %d, sec: %d, invalid: %d, all: %d)\n",
|
|
- numpkt * HZ / (jiffies - lastj),
|
|
- numts, numstuff, numsec, numinvalid,
|
|
- numts + numstuff + numsec +
|
|
- numinvalid);
|
|
-#endif
|
|
+ dprintk("frames/s: %lu (ts: %d, stuff %d, "
|
|
+ "sec: %d, invalid: %d, all: %d)\n",
|
|
+ numpkt * HZ / (jiffies - lastj),
|
|
+ numts, numstuff, numsec, numinvalid,
|
|
+ numts + numstuff + numsec + numinvalid);
|
|
numts = numstuff = numsec = numinvalid = 0;
|
|
lastj = jiffies;
|
|
numpkt = 0;
|
|
diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile
|
|
index 85cac7d..8c0cb70 100644
|
|
--- a/drivers/media/rc/keymaps/Makefile
|
|
+++ b/drivers/media/rc/keymaps/Makefile
|
|
@@ -2,6 +2,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
|
|
rc-alink-dtu-m.o \
|
|
rc-anysee.o \
|
|
rc-apac-viewcomp.o \
|
|
+ rc-apple.o \
|
|
rc-asus-pc39.o \
|
|
rc-ati-tv-wonder-hd-600.o \
|
|
rc-avermedia-a16d.o \
|
|
@@ -77,6 +78,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
|
|
rc-terratec-cinergy-xs.o \
|
|
rc-terratec-slim.o \
|
|
rc-tevii-nec.o \
|
|
+ rc-tivo.o \
|
|
rc-total-media-in-hand.o \
|
|
rc-trekstor.o \
|
|
rc-tt-1500.o \
|
|
diff --git a/drivers/media/rc/keymaps/rc-apple.c b/drivers/media/rc/keymaps/rc-apple.c
|
|
new file mode 100644
|
|
index 0000000..9fff474
|
|
--- /dev/null
|
|
+++ b/drivers/media/rc/keymaps/rc-apple.c
|
|
@@ -0,0 +1,55 @@
|
|
+/* rc-apple.c - Keytable for Apple remotes
|
|
+ *
|
|
+ * Copyright (c) 2011 by Jarod Wilson <jarod@redhat.com>
|
|
+ *
|
|
+ * This program is free software; you can redistribute it and/or modify
|
|
+ * it under the terms of the GNU General Public License as published by
|
|
+ * the Free Software Foundation; either version 2 of the License, or
|
|
+ * (at your option) any later version.
|
|
+ */
|
|
+
|
|
+#include <media/rc-map.h>
|
|
+
|
|
+/*
|
|
+ * The Apple remotes use an NEC-ish protocol, but instead of having a
|
|
+ * command/not_command pair, they use a vendor ID of 0x77e1. Another byte
|
|
+ * is used for a pairing ID (0-255), to make it possible to have a system
|
|
+ * listen for only its specific remote. The last byte is the actual command
|
|
+ * byte. This table will only Just Work(tm) with remotes that have their
|
|
+ * pairing byte set to 0xc7 at the moment (one of my Apple remotes), but
|
|
+ * it can be trivially replaced from userspace with one using a different
|
|
+ * pairing byte value.
|
|
+ */
|
|
+static struct rc_map_table apple[] = {
|
|
+ { 0x77e150c7, KEY_VOLUMEUP },
|
|
+ { 0x77e130c7, KEY_VOLUMEDOWN },
|
|
+ { 0x77e190c7, KEY_REWIND },
|
|
+ { 0x77e160c7, KEY_FASTFORWARD },
|
|
+ { 0x77e1a0c7, KEY_PLAYPAUSE },
|
|
+ { 0x77e1c0c7, KEY_MENU },
|
|
+};
|
|
+
|
|
+static struct rc_map_list apple_map = {
|
|
+ .map = {
|
|
+ .scan = apple,
|
|
+ .size = ARRAY_SIZE(apple),
|
|
+ .rc_type = RC_TYPE_NEC,
|
|
+ .name = RC_MAP_APPLE,
|
|
+ }
|
|
+};
|
|
+
|
|
+static int __init init_rc_map_apple(void)
|
|
+{
|
|
+ return rc_map_register(&apple_map);
|
|
+}
|
|
+
|
|
+static void __exit exit_rc_map_apple(void)
|
|
+{
|
|
+ rc_map_unregister(&apple_map);
|
|
+}
|
|
+
|
|
+module_init(init_rc_map_apple)
|
|
+module_exit(exit_rc_map_apple)
|
|
+
|
|
+MODULE_LICENSE("GPL");
|
|
+MODULE_AUTHOR("Jarod Wilson <jarod@redhat.com>");
|
|
diff --git a/drivers/media/rc/keymaps/rc-avermedia-cardbus.c b/drivers/media/rc/keymaps/rc-avermedia-cardbus.c
|
|
index bdf97b7..22f54d4 100644
|
|
--- a/drivers/media/rc/keymaps/rc-avermedia-cardbus.c
|
|
+++ b/drivers/media/rc/keymaps/rc-avermedia-cardbus.c
|
|
@@ -52,7 +52,7 @@ static struct rc_map_table avermedia_cardbus[] = {
|
|
{ 0x28, KEY_SELECT }, /* Select */
|
|
{ 0x29, KEY_BLUE }, /* Blue/Picture */
|
|
{ 0x2a, KEY_BACKSPACE }, /* Back */
|
|
- { 0x2b, KEY_MEDIA }, /* PIP (Picture-in-picture) */
|
|
+ { 0x2b, KEY_VIDEO }, /* PIP (Picture-in-picture) */
|
|
{ 0x2c, KEY_DOWN },
|
|
{ 0x2e, KEY_DOT },
|
|
{ 0x2f, KEY_TV }, /* Live TV */
|
|
diff --git a/drivers/media/rc/keymaps/rc-imon-mce.c b/drivers/media/rc/keymaps/rc-imon-mce.c
|
|
index 937a819..0ea2aa1 100644
|
|
--- a/drivers/media/rc/keymaps/rc-imon-mce.c
|
|
+++ b/drivers/media/rc/keymaps/rc-imon-mce.c
|
|
@@ -111,7 +111,7 @@ static struct rc_map_table imon_mce[] = {
|
|
{ 0x800ff44d, KEY_TITLE },
|
|
|
|
{ 0x800ff40c, KEY_POWER },
|
|
- { 0x800ff40d, KEY_LEFTMETA }, /* Windows MCE button */
|
|
+ { 0x800ff40d, KEY_MEDIA }, /* Windows MCE button */
|
|
|
|
};
|
|
|
|
diff --git a/drivers/media/rc/keymaps/rc-imon-pad.c b/drivers/media/rc/keymaps/rc-imon-pad.c
|
|
index 63d42bd..75d3843 100644
|
|
--- a/drivers/media/rc/keymaps/rc-imon-pad.c
|
|
+++ b/drivers/media/rc/keymaps/rc-imon-pad.c
|
|
@@ -87,7 +87,7 @@ static struct rc_map_table imon_pad[] = {
|
|
|
|
{ 0x2b8515b7, KEY_VIDEO },
|
|
{ 0x299195b7, KEY_AUDIO },
|
|
- { 0x2ba115b7, KEY_CAMERA },
|
|
+ { 0x2ba115b7, KEY_IMAGES },
|
|
{ 0x28a515b7, KEY_TV },
|
|
{ 0x29a395b7, KEY_DVD },
|
|
{ 0x29a295b7, KEY_DVD },
|
|
@@ -97,7 +97,7 @@ static struct rc_map_table imon_pad[] = {
|
|
{ 0x2ba395b7, KEY_MENU },
|
|
|
|
{ 0x288515b7, KEY_BOOKMARKS },
|
|
- { 0x2ab715b7, KEY_MEDIA }, /* Thumbnail */
|
|
+ { 0x2ab715b7, KEY_CAMERA }, /* Thumbnail */
|
|
{ 0x298595b7, KEY_SUBTITLE },
|
|
{ 0x2b8595b7, KEY_LANGUAGE },
|
|
|
|
@@ -125,7 +125,7 @@ static struct rc_map_table imon_pad[] = {
|
|
{ 0x2b8195b7, KEY_CONTEXT_MENU }, /* Left Menu*/
|
|
{ 0x02000065, KEY_COMPOSE }, /* RightMenu */
|
|
{ 0x28b715b7, KEY_COMPOSE }, /* RightMenu */
|
|
- { 0x2ab195b7, KEY_LEFTMETA }, /* Go or MultiMon */
|
|
+ { 0x2ab195b7, KEY_MEDIA }, /* Go or MultiMon */
|
|
{ 0x29b715b7, KEY_DASHBOARD }, /* AppLauncher */
|
|
};
|
|
|
|
diff --git a/drivers/media/rc/keymaps/rc-kworld-plus-tv-analog.c b/drivers/media/rc/keymaps/rc-kworld-plus-tv-analog.c
|
|
index 08d1831..7fa17a3 100644
|
|
--- a/drivers/media/rc/keymaps/rc-kworld-plus-tv-analog.c
|
|
+++ b/drivers/media/rc/keymaps/rc-kworld-plus-tv-analog.c
|
|
@@ -17,7 +17,7 @@
|
|
*/
|
|
|
|
static struct rc_map_table kworld_plus_tv_analog[] = {
|
|
- { 0x0c, KEY_LEFTMETA }, /* Kworld key */
|
|
+ { 0x0c, KEY_MEDIA }, /* Kworld key */
|
|
{ 0x16, KEY_CLOSECD }, /* -> ) */
|
|
{ 0x1d, KEY_POWER2 },
|
|
|
|
diff --git a/drivers/media/rc/keymaps/rc-rc6-mce.c b/drivers/media/rc/keymaps/rc-rc6-mce.c
|
|
index 8dd519e..01b69bc 100644
|
|
--- a/drivers/media/rc/keymaps/rc-rc6-mce.c
|
|
+++ b/drivers/media/rc/keymaps/rc-rc6-mce.c
|
|
@@ -30,7 +30,7 @@ static struct rc_map_table rc6_mce[] = {
|
|
{ 0x800f040a, KEY_DELETE },
|
|
{ 0x800f040b, KEY_ENTER },
|
|
{ 0x800f040c, KEY_POWER }, /* PC Power */
|
|
- { 0x800f040d, KEY_LEFTMETA }, /* Windows MCE button */
|
|
+ { 0x800f040d, KEY_MEDIA }, /* Windows MCE button */
|
|
{ 0x800f040e, KEY_MUTE },
|
|
{ 0x800f040f, KEY_INFO },
|
|
|
|
@@ -87,7 +87,7 @@ static struct rc_map_table rc6_mce[] = {
|
|
|
|
{ 0x800f0465, KEY_POWER2 }, /* TV Power */
|
|
{ 0x800f046e, KEY_PLAYPAUSE },
|
|
- { 0x800f046f, KEY_MEDIA }, /* Start media application (NEW) */
|
|
+ { 0x800f046f, KEY_PLAYER }, /* Start media application (NEW) */
|
|
|
|
{ 0x800f0480, KEY_BRIGHTNESSDOWN },
|
|
{ 0x800f0481, KEY_PLAYPAUSE },
|
|
diff --git a/drivers/media/rc/keymaps/rc-tivo.c b/drivers/media/rc/keymaps/rc-tivo.c
|
|
new file mode 100644
|
|
index 0000000..98ad085
|
|
--- /dev/null
|
|
+++ b/drivers/media/rc/keymaps/rc-tivo.c
|
|
@@ -0,0 +1,98 @@
|
|
+/* rc-tivo.c - Keytable for TiVo remotes
|
|
+ *
|
|
+ * Copyright (c) 2011 by Jarod Wilson <jarod@redhat.com>
|
|
+ *
|
|
+ * This program is free software; you can redistribute it and/or modify
|
|
+ * it under the terms of the GNU General Public License as published by
|
|
+ * the Free Software Foundation; either version 2 of the License, or
|
|
+ * (at your option) any later version.
|
|
+ */
|
|
+
|
|
+#include <media/rc-map.h>
|
|
+
|
|
+/*
|
|
+ * Initial mapping is for the TiVo remote included in the Nero LiquidTV bundle,
|
|
+ * which also ships with a TiVo-branded IR transceiver, supported by the mceusb
|
|
+ * driver. Note that the remote uses an NEC-ish protocol, but instead of having
|
|
+ * a command/not_command pair, it has a vendor ID of 0xa10c, but some keys, the
|
|
+ * NEC extended checksums do pass, so the table presently has the intended
|
|
+ * values and the checksum-passed versions for those keys.
|
|
+ */
|
|
+static struct rc_map_table tivo[] = {
|
|
+ { 0xa10c900f, KEY_MEDIA }, /* TiVo Button */
|
|
+ { 0xa10c0807, KEY_POWER2 }, /* TV Power */
|
|
+ { 0xa10c8807, KEY_TV }, /* Live TV/Swap */
|
|
+ { 0xa10c2c03, KEY_VIDEO_NEXT }, /* TV Input */
|
|
+ { 0xa10cc807, KEY_INFO },
|
|
+ { 0xa10cfa05, KEY_CYCLEWINDOWS }, /* Window */
|
|
+ { 0x0085305f, KEY_CYCLEWINDOWS },
|
|
+ { 0xa10c6c03, KEY_EPG }, /* Guide */
|
|
+
|
|
+ { 0xa10c2807, KEY_UP },
|
|
+ { 0xa10c6807, KEY_DOWN },
|
|
+ { 0xa10ce807, KEY_LEFT },
|
|
+ { 0xa10ca807, KEY_RIGHT },
|
|
+
|
|
+ { 0xa10c1807, KEY_SCROLLDOWN }, /* Red Thumbs Down */
|
|
+ { 0xa10c9807, KEY_SELECT },
|
|
+ { 0xa10c5807, KEY_SCROLLUP }, /* Green Thumbs Up */
|
|
+
|
|
+ { 0xa10c3807, KEY_VOLUMEUP },
|
|
+ { 0xa10cb807, KEY_VOLUMEDOWN },
|
|
+ { 0xa10cd807, KEY_MUTE },
|
|
+ { 0xa10c040b, KEY_RECORD },
|
|
+ { 0xa10c7807, KEY_CHANNELUP },
|
|
+ { 0xa10cf807, KEY_CHANNELDOWN },
|
|
+ { 0x0085301f, KEY_CHANNELDOWN },
|
|
+
|
|
+ { 0xa10c840b, KEY_PLAY },
|
|
+ { 0xa10cc40b, KEY_PAUSE },
|
|
+ { 0xa10ca40b, KEY_SLOW },
|
|
+ { 0xa10c440b, KEY_REWIND },
|
|
+ { 0xa10c240b, KEY_FASTFORWARD },
|
|
+ { 0xa10c640b, KEY_PREVIOUS },
|
|
+ { 0xa10ce40b, KEY_NEXT }, /* ->| */
|
|
+
|
|
+ { 0xa10c220d, KEY_ZOOM }, /* Aspect */
|
|
+ { 0xa10c120d, KEY_STOP },
|
|
+ { 0xa10c520d, KEY_DVD }, /* DVD Menu */
|
|
+
|
|
+ { 0xa10c140b, KEY_NUMERIC_1 },
|
|
+ { 0xa10c940b, KEY_NUMERIC_2 },
|
|
+ { 0xa10c540b, KEY_NUMERIC_3 },
|
|
+ { 0xa10cd40b, KEY_NUMERIC_4 },
|
|
+ { 0xa10c340b, KEY_NUMERIC_5 },
|
|
+ { 0xa10cb40b, KEY_NUMERIC_6 },
|
|
+ { 0xa10c740b, KEY_NUMERIC_7 },
|
|
+ { 0xa10cf40b, KEY_NUMERIC_8 },
|
|
+ { 0x0085302f, KEY_NUMERIC_8 },
|
|
+ { 0xa10c0c03, KEY_NUMERIC_9 },
|
|
+ { 0xa10c8c03, KEY_NUMERIC_0 },
|
|
+ { 0xa10ccc03, KEY_ENTER },
|
|
+ { 0xa10c4c03, KEY_CLEAR },
|
|
+};
|
|
+
|
|
+static struct rc_map_list tivo_map = {
|
|
+ .map = {
|
|
+ .scan = tivo,
|
|
+ .size = ARRAY_SIZE(tivo),
|
|
+ .rc_type = RC_TYPE_NEC,
|
|
+ .name = RC_MAP_TIVO,
|
|
+ }
|
|
+};
|
|
+
|
|
+static int __init init_rc_map_tivo(void)
|
|
+{
|
|
+ return rc_map_register(&tivo_map);
|
|
+}
|
|
+
|
|
+static void __exit exit_rc_map_tivo(void)
|
|
+{
|
|
+ rc_map_unregister(&tivo_map);
|
|
+}
|
|
+
|
|
+module_init(init_rc_map_tivo)
|
|
+module_exit(exit_rc_map_tivo)
|
|
+
|
|
+MODULE_LICENSE("GPL");
|
|
+MODULE_AUTHOR("Jarod Wilson <jarod@redhat.com>");
|
|
diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c
|
|
index 044fb7a..47a1c5d 100644
|
|
--- a/drivers/media/rc/mceusb.c
|
|
+++ b/drivers/media/rc/mceusb.c
|
|
@@ -149,6 +149,8 @@ enum mceusb_model_type {
|
|
POLARIS_EVK,
|
|
CX_HYBRID_TV,
|
|
MULTIFUNCTION,
|
|
+ TIVO_KIT,
|
|
+ MCE_GEN2_NO_TX,
|
|
};
|
|
|
|
struct mceusb_model {
|
|
@@ -172,6 +174,10 @@ static const struct mceusb_model mceusb_model[] = {
|
|
[MCE_GEN2] = {
|
|
.mce_gen2 = 1,
|
|
},
|
|
+ [MCE_GEN2_NO_TX] = {
|
|
+ .mce_gen2 = 1,
|
|
+ .no_tx = 1,
|
|
+ },
|
|
[MCE_GEN2_TX_INV] = {
|
|
.mce_gen2 = 1,
|
|
.tx_mask_normal = 1,
|
|
@@ -197,6 +203,10 @@ static const struct mceusb_model mceusb_model[] = {
|
|
.mce_gen2 = 1,
|
|
.ir_intfnum = 2,
|
|
},
|
|
+ [TIVO_KIT] = {
|
|
+ .mce_gen2 = 1,
|
|
+ .rc_map = RC_MAP_TIVO,
|
|
+ },
|
|
};
|
|
|
|
static struct usb_device_id mceusb_dev_table[] = {
|
|
@@ -230,6 +230,8 @@ static struct usb_device_id mceusb_dev_table[] = {
|
|
{ USB_DEVICE(VENDOR_PHILIPS, 0x206c) },
|
|
/* Philips/Spinel plus IR transceiver for ASUS */
|
|
{ USB_DEVICE(VENDOR_PHILIPS, 0x2088) },
|
|
+ /* Philips IR transceiver (Dell branded) */
|
|
+ { USB_DEVICE(VENDOR_PHILIPS, 0x2093) },
|
|
/* Realtek MCE IR Receiver and card reader */
|
|
{ USB_DEVICE(VENDOR_REALTEK, 0x0161),
|
|
.driver_info = MULTIFUNCTION },
|
|
@@ -279,7 +289,8 @@ static struct usb_device_id mceusb_dev_table[] = {
|
|
/* Formosa21 / eHome Infrared Receiver */
|
|
{ USB_DEVICE(VENDOR_FORMOSA, 0xe016) },
|
|
/* Formosa aim / Trust MCE Infrared Receiver */
|
|
- { USB_DEVICE(VENDOR_FORMOSA, 0xe017) },
|
|
+ { USB_DEVICE(VENDOR_FORMOSA, 0xe017),
|
|
+ .driver_info = MCE_GEN2_NO_TX },
|
|
/* Formosa Industrial Computing / Beanbag Emulation Device */
|
|
{ USB_DEVICE(VENDOR_FORMOSA, 0xe018) },
|
|
/* Formosa21 / eHome Infrared Receiver */
|
|
@@ -308,7 +319,8 @@ static struct usb_device_id mceusb_dev_table[] = {
|
|
/* Northstar Systems, Inc. eHome Infrared Transceiver */
|
|
{ USB_DEVICE(VENDOR_NORTHSTAR, 0xe004) },
|
|
/* TiVo PC IR Receiver */
|
|
- { USB_DEVICE(VENDOR_TIVO, 0x2000) },
|
|
+ { USB_DEVICE(VENDOR_TIVO, 0x2000),
|
|
+ .driver_info = TIVO_KIT },
|
|
/* Conexant Hybrid TV "Shelby" Polaris SDK */
|
|
{ USB_DEVICE(VENDOR_CONEXANT, 0x58a1),
|
|
.driver_info = POLARIS_EVK },
|
|
diff --git a/drivers/media/rc/nuvoton-cir.c b/drivers/media/rc/nuvoton-cir.c
|
|
index d4d6449..5d93384 100644
|
|
--- a/drivers/media/rc/nuvoton-cir.c
|
|
+++ b/drivers/media/rc/nuvoton-cir.c
|
|
@@ -37,8 +37,6 @@
|
|
|
|
#include "nuvoton-cir.h"
|
|
|
|
-static char *chip_id = "w836x7hg";
|
|
-
|
|
/* write val to config reg */
|
|
static inline void nvt_cr_write(struct nvt_dev *nvt, u8 val, u8 reg)
|
|
{
|
|
@@ -233,6 +231,8 @@ static int nvt_hw_detect(struct nvt_dev *nvt)
|
|
unsigned long flags;
|
|
u8 chip_major, chip_minor;
|
|
int ret = 0;
|
|
+ char chip_id[12];
|
|
+ bool chip_unknown = false;
|
|
|
|
nvt_efm_enable(nvt);
|
|
|
|
@@ -246,15 +246,39 @@ static int nvt_hw_detect(struct nvt_dev *nvt)
|
|
}
|
|
|
|
chip_minor = nvt_cr_read(nvt, CR_CHIP_ID_LO);
|
|
- nvt_dbg("%s: chip id: 0x%02x 0x%02x", chip_id, chip_major, chip_minor);
|
|
|
|
- if (chip_major != CHIP_ID_HIGH ||
|
|
- (chip_minor != CHIP_ID_LOW && chip_minor != CHIP_ID_LOW2)) {
|
|
- nvt_pr(KERN_ERR, "%s: unsupported chip, id: 0x%02x 0x%02x",
|
|
- chip_id, chip_major, chip_minor);
|
|
- ret = -ENODEV;
|
|
+ /* these are the known working chip revisions... */
|
|
+ switch (chip_major) {
|
|
+ case CHIP_ID_HIGH_667:
|
|
+ strcpy(chip_id, "w83667hg\0");
|
|
+ if (chip_minor != CHIP_ID_LOW_667)
|
|
+ chip_unknown = true;
|
|
+ break;
|
|
+ case CHIP_ID_HIGH_677B:
|
|
+ strcpy(chip_id, "w83677hg\0");
|
|
+ if (chip_minor != CHIP_ID_LOW_677B2 &&
|
|
+ chip_minor != CHIP_ID_LOW_677B3)
|
|
+ chip_unknown = true;
|
|
+ break;
|
|
+ case CHIP_ID_HIGH_677C:
|
|
+ strcpy(chip_id, "w83677hg-c\0");
|
|
+ if (chip_minor != CHIP_ID_LOW_677C)
|
|
+ chip_unknown = true;
|
|
+ break;
|
|
+ default:
|
|
+ strcpy(chip_id, "w836x7hg\0");
|
|
+ chip_unknown = true;
|
|
+ break;
|
|
}
|
|
|
|
+ /* warn, but still let the driver load, if we don't know this chip */
|
|
+ if (chip_unknown)
|
|
+ nvt_pr(KERN_WARNING, "%s: unknown chip, id: 0x%02x 0x%02x, "
|
|
+ "it may not work...", chip_id, chip_major, chip_minor);
|
|
+ else
|
|
+ nvt_dbg("%s: chip id: 0x%02x 0x%02x",
|
|
+ chip_id, chip_major, chip_minor);
|
|
+
|
|
nvt_efm_disable(nvt);
|
|
|
|
spin_lock_irqsave(&nvt->nvt_lock, flags);
|
|
@@ -267,13 +291,23 @@ static int nvt_hw_detect(struct nvt_dev *nvt)
|
|
|
|
static void nvt_cir_ldev_init(struct nvt_dev *nvt)
|
|
{
|
|
- u8 val;
|
|
+ u8 val, psreg, psmask, psval;
|
|
+
|
|
+ if (nvt->chip_major == CHIP_ID_HIGH_667) {
|
|
+ psreg = CR_MULTIFUNC_PIN_SEL;
|
|
+ psmask = MULTIFUNC_PIN_SEL_MASK;
|
|
+ psval = MULTIFUNC_ENABLE_CIR | MULTIFUNC_ENABLE_CIRWB;
|
|
+ } else {
|
|
+ psreg = CR_OUTPUT_PIN_SEL;
|
|
+ psmask = OUTPUT_PIN_SEL_MASK;
|
|
+ psval = OUTPUT_ENABLE_CIR | OUTPUT_ENABLE_CIRWB;
|
|
+ }
|
|
|
|
- /* output pin selection (Pin95=CIRRX, Pin96=CIRTX1, WB enabled */
|
|
- val = nvt_cr_read(nvt, CR_OUTPUT_PIN_SEL);
|
|
- val &= OUTPUT_PIN_SEL_MASK;
|
|
- val |= (OUTPUT_ENABLE_CIR | OUTPUT_ENABLE_CIRWB);
|
|
- nvt_cr_write(nvt, val, CR_OUTPUT_PIN_SEL);
|
|
+ /* output pin selection: enable CIR, with WB sensor enabled */
|
|
+ val = nvt_cr_read(nvt, psreg);
|
|
+ val &= psmask;
|
|
+ val |= psval;
|
|
+ nvt_cr_write(nvt, val, psreg);
|
|
|
|
/* Select CIR logical device and enable */
|
|
nvt_select_logical_dev(nvt, LOGICAL_DEV_CIR);
|
|
@@ -674,7 +674,7 @@ static void nvt_process_rx_ir_data(struct nvt_dev *nvt)
|
|
rawir.pulse ? "pulse" : "space",
|
|
rawir.duration);
|
|
|
|
- ir_raw_event_store(nvt->rdev, &rawir);
|
|
+ ir_raw_event_store_with_filter(nvt->rdev, &rawir);
|
|
}
|
|
|
|
/*
|
|
@@ -1110,12 +1110,12 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
|
|
rdev->input_id.version = nvt->chip_minor;
|
|
rdev->driver_name = NVT_DRIVER_NAME;
|
|
rdev->map_name = RC_MAP_RC6_MCE;
|
|
+ rdev->timeout = US_TO_NS(1000);
|
|
+ /* rx resolution is hardwired to 50us atm, 1, 25, 100 also possible */
|
|
+ rdev->rx_resolution = US_TO_NS(CIR_SAMPLE_PERIOD);
|
|
#if 0
|
|
rdev->min_timeout = XYZ;
|
|
rdev->max_timeout = XYZ;
|
|
- rdev->timeout = XYZ;
|
|
- /* rx resolution is hardwired to 50us atm, 1, 25, 100 also possible */
|
|
- rdev->rx_resolution = XYZ;
|
|
/* tx bits */
|
|
rdev->tx_resolution = XYZ;
|
|
#endif
|
|
diff --git a/drivers/media/rc/nuvoton-cir.h b/drivers/media/rc/nuvoton-cir.h
|
|
index 048135e..379795d 100644
|
|
--- a/drivers/media/rc/nuvoton-cir.h
|
|
+++ b/drivers/media/rc/nuvoton-cir.h
|
|
@@ -330,9 +330,13 @@ struct nvt_dev {
|
|
#define EFER_EFM_DISABLE 0xaa
|
|
|
|
/* Chip IDs found in CR_CHIP_ID_{HI,LO} */
|
|
-#define CHIP_ID_HIGH 0xb4
|
|
-#define CHIP_ID_LOW 0x72
|
|
-#define CHIP_ID_LOW2 0x73
|
|
+#define CHIP_ID_HIGH_667 0xa5
|
|
+#define CHIP_ID_HIGH_677B 0xb4
|
|
+#define CHIP_ID_HIGH_677C 0xc3
|
|
+#define CHIP_ID_LOW_667 0x13
|
|
+#define CHIP_ID_LOW_677B2 0x72
|
|
+#define CHIP_ID_LOW_677B3 0x73
|
|
+#define CHIP_ID_LOW_677C 0x33
|
|
|
|
/* Config regs we need to care about */
|
|
#define CR_SOFTWARE_RESET 0x02
|
|
@@ -341,6 +345,7 @@ struct nvt_dev {
|
|
#define CR_CHIP_ID_LO 0x21
|
|
#define CR_DEV_POWER_DOWN 0x22 /* bit 2 is CIR power, default power on */
|
|
#define CR_OUTPUT_PIN_SEL 0x27
|
|
+#define CR_MULTIFUNC_PIN_SEL 0x2c
|
|
#define CR_LOGICAL_DEV_EN 0x30 /* valid for all logical devices */
|
|
/* next three regs valid for both the CIR and CIR_WAKE logical devices */
|
|
#define CR_CIR_BASE_ADDR_HI 0x60
|
|
@@ -364,10 +369,16 @@ struct nvt_dev {
|
|
#define CIR_INTR_MOUSE_IRQ_BIT 0x80
|
|
#define PME_INTR_CIR_PASS_BIT 0x08
|
|
|
|
+/* w83677hg CIR pin config */
|
|
#define OUTPUT_PIN_SEL_MASK 0xbc
|
|
#define OUTPUT_ENABLE_CIR 0x01 /* Pin95=CIRRX, Pin96=CIRTX1 */
|
|
#define OUTPUT_ENABLE_CIRWB 0x40 /* enable wide-band sensor */
|
|
|
|
+/* w83667hg CIR pin config */
|
|
+#define MULTIFUNC_PIN_SEL_MASK 0x1f
|
|
+#define MULTIFUNC_ENABLE_CIR 0x80 /* Pin75=CIRRX, Pin76=CIRTX1 */
|
|
+#define MULTIFUNC_ENABLE_CIRWB 0x20 /* enable wide-band sensor */
|
|
+
|
|
/* MCE CIR signal length, related on sample period */
|
|
|
|
/* MCE CIR controller signal length: about 43ms
|
|
diff --git a/drivers/staging/lirc/lirc_sasem.c b/drivers/staging/lirc/lirc_sasem.c
|
|
index 63a438d..7080cde 100644
|
|
--- a/drivers/staging/lirc/lirc_sasem.c
|
|
+++ b/drivers/staging/lirc/lirc_sasem.c
|
|
@@ -570,6 +570,7 @@ static void incoming_packet(struct sasem_context *context,
|
|
unsigned char *buf = urb->transfer_buffer;
|
|
long ms;
|
|
struct timeval tv;
|
|
+ int i;
|
|
|
|
if (len != 8) {
|
|
printk(KERN_WARNING "%s: invalid incoming packet size (%d)\n",
|
|
@@ -577,12 +578,12 @@ static void incoming_packet(struct sasem_context *context,
|
|
return;
|
|
}
|
|
|
|
-#ifdef DEBUG
|
|
- int i;
|
|
- for (i = 0; i < 8; ++i)
|
|
- printk(KERN_INFO "%02x ", buf[i]);
|
|
- printk(KERN_INFO "\n");
|
|
-#endif
|
|
+ if (debug) {
|
|
+ printk(KERN_INFO "Incoming data: ");
|
|
+ for (i = 0; i < 8; ++i)
|
|
+ printk(KERN_CONT "%02x ", buf[i]);
|
|
+ printk(KERN_CONT "\n");
|
|
+ }
|
|
|
|
/*
|
|
* Lirc could deal with the repeat code, but we really need to block it
|
|
diff --git a/include/linux/input.h b/include/linux/input.h
|
|
index e428382..be082e9 100644
|
|
--- a/include/linux/input.h
|
|
+++ b/include/linux/input.h
|
|
@@ -553,8 +553,8 @@ struct input_keymap_entry {
|
|
#define KEY_DVD 0x185 /* Media Select DVD */
|
|
#define KEY_AUX 0x186
|
|
#define KEY_MP3 0x187
|
|
-#define KEY_AUDIO 0x188
|
|
-#define KEY_VIDEO 0x189
|
|
+#define KEY_AUDIO 0x188 /* AL Audio Browser */
|
|
+#define KEY_VIDEO 0x189 /* AL Movie Browser */
|
|
#define KEY_DIRECTORY 0x18a
|
|
#define KEY_LIST 0x18b
|
|
#define KEY_MEMO 0x18c /* Media Select Messages */
|
|
@@ -605,6 +605,7 @@ struct input_keymap_entry {
|
|
#define KEY_MEDIA_REPEAT 0x1b7 /* Consumer - transport control */
|
|
#define KEY_10CHANNELSUP 0x1b8 /* 10 channels up (10+) */
|
|
#define KEY_10CHANNELSDOWN 0x1b9 /* 10 channels down (10-) */
|
|
+#define KEY_IMAGES 0x1ba /* AL Image Browser */
|
|
|
|
#define KEY_DEL_EOL 0x1c0
|
|
#define KEY_DEL_EOS 0x1c1
|
|
diff --git a/include/media/rc-map.h b/include/media/rc-map.h
|
|
index 9184751..b2bd405 100644
|
|
--- a/include/media/rc-map.h
|
|
+++ b/include/media/rc-map.h
|
|
@@ -58,6 +58,7 @@ void rc_map_init(void);
|
|
#define RC_MAP_ALINK_DTU_M "rc-alink-dtu-m"
|
|
#define RC_MAP_ANYSEE "rc-anysee"
|
|
#define RC_MAP_APAC_VIEWCOMP "rc-apac-viewcomp"
|
|
+#define RC_MAP_APPLE "rc-apple"
|
|
#define RC_MAP_ASUS_PC39 "rc-asus-pc39"
|
|
#define RC_MAP_ATI_TV_WONDER_HD_600 "rc-ati-tv-wonder-hd-600"
|
|
#define RC_MAP_AVERMEDIA_A16D "rc-avermedia-a16d"
|
|
@@ -136,6 +137,7 @@ void rc_map_init(void);
|
|
#define RC_MAP_TERRATEC_CINERGY_XS "rc-terratec-cinergy-xs"
|
|
#define RC_MAP_TERRATEC_SLIM "rc-terratec-slim"
|
|
#define RC_MAP_TEVII_NEC "rc-tevii-nec"
|
|
+#define RC_MAP_TIVO "rc-tivo"
|
|
#define RC_MAP_TOTAL_MEDIA_IN_HAND "rc-total-media-in-hand"
|
|
#define RC_MAP_TREKSTOR "rc-trekstor"
|
|
#define RC_MAP_TT_1500 "rc-tt-1500"
|
|
diff --git a/drivers/media/rc/ite-cir.c b/drivers/media/rc/ite-cir.c
|
|
index accaf6c..43908a7 100644
|
|
--- a/drivers/media/rc/ite-cir.c
|
|
+++ b/drivers/media/rc/ite-cir.c
|
|
@@ -36,6 +36,7 @@
|
|
#include <linux/io.h>
|
|
#include <linux/interrupt.h>
|
|
#include <linux/sched.h>
|
|
+#include <linux/delay.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/input.h>
|
|
#include <linux/bitops.h>
|
|
|