diff options
-rw-r--r-- | drivers/media/rc/img-ir/img-ir-nec.c | 27 | ||||
-rw-r--r-- | drivers/media/rc/ir-nec-decoder.c | 5 | ||||
-rw-r--r-- | drivers/media/rc/keymaps/rc-tivo.c | 86 |
3 files changed, 59 insertions, 59 deletions
diff --git a/drivers/media/rc/img-ir/img-ir-nec.c b/drivers/media/rc/img-ir/img-ir-nec.c index e7a731bc3a9b..751d9d945269 100644 --- a/drivers/media/rc/img-ir/img-ir-nec.c +++ b/drivers/media/rc/img-ir/img-ir-nec.c | |||
@@ -5,6 +5,7 @@ | |||
5 | */ | 5 | */ |
6 | 6 | ||
7 | #include "img-ir-hw.h" | 7 | #include "img-ir-hw.h" |
8 | #include <linux/bitrev.h> | ||
8 | 9 | ||
9 | /* Convert NEC data to a scancode */ | 10 | /* Convert NEC data to a scancode */ |
10 | static int img_ir_nec_scancode(int len, u64 raw, int *scancode, u64 protocols) | 11 | static int img_ir_nec_scancode(int len, u64 raw, int *scancode, u64 protocols) |
@@ -22,11 +23,11 @@ static int img_ir_nec_scancode(int len, u64 raw, int *scancode, u64 protocols) | |||
22 | data_inv = (raw >> 24) & 0xff; | 23 | data_inv = (raw >> 24) & 0xff; |
23 | if ((data_inv ^ data) != 0xff) { | 24 | if ((data_inv ^ data) != 0xff) { |
24 | /* 32-bit NEC (used by Apple and TiVo remotes) */ | 25 | /* 32-bit NEC (used by Apple and TiVo remotes) */ |
25 | /* scan encoding: aaAAddDD */ | 26 | /* scan encoding: as transmitted, MSBit = first received bit */ |
26 | *scancode = addr_inv << 24 | | 27 | *scancode = bitrev8(addr) << 24 | |
27 | addr << 16 | | 28 | bitrev8(addr_inv) << 16 | |
28 | data_inv << 8 | | 29 | bitrev8(data) << 8 | |
29 | data; | 30 | bitrev8(data_inv); |
30 | } else if ((addr_inv ^ addr) != 0xff) { | 31 | } else if ((addr_inv ^ addr) != 0xff) { |
31 | /* Extended NEC */ | 32 | /* Extended NEC */ |
32 | /* scan encoding: AAaaDD */ | 33 | /* scan encoding: AAaaDD */ |
@@ -54,13 +55,15 @@ static int img_ir_nec_filter(const struct rc_scancode_filter *in, | |||
54 | 55 | ||
55 | if ((in->data | in->mask) & 0xff000000) { | 56 | if ((in->data | in->mask) & 0xff000000) { |
56 | /* 32-bit NEC (used by Apple and TiVo remotes) */ | 57 | /* 32-bit NEC (used by Apple and TiVo remotes) */ |
57 | /* scan encoding: aaAAddDD */ | 58 | /* scan encoding: as transmitted, MSBit = first received bit */ |
58 | addr_inv = (in->data >> 24) & 0xff; | 59 | addr = bitrev8(in->data >> 24); |
59 | addr_inv_m = (in->mask >> 24) & 0xff; | 60 | addr_m = bitrev8(in->mask >> 24); |
60 | addr = (in->data >> 16) & 0xff; | 61 | addr_inv = bitrev8(in->data >> 16); |
61 | addr_m = (in->mask >> 16) & 0xff; | 62 | addr_inv_m = bitrev8(in->mask >> 16); |
62 | data_inv = (in->data >> 8) & 0xff; | 63 | data = bitrev8(in->data >> 8); |
63 | data_inv_m = (in->mask >> 8) & 0xff; | 64 | data_m = bitrev8(in->mask >> 8); |
65 | data_inv = bitrev8(in->data >> 0); | ||
66 | data_inv_m = bitrev8(in->mask >> 0); | ||
64 | } else if ((in->data | in->mask) & 0x00ff0000) { | 67 | } else if ((in->data | in->mask) & 0x00ff0000) { |
65 | /* Extended NEC */ | 68 | /* Extended NEC */ |
66 | /* scan encoding AAaaDD */ | 69 | /* scan encoding AAaaDD */ |
diff --git a/drivers/media/rc/ir-nec-decoder.c b/drivers/media/rc/ir-nec-decoder.c index 9de1791d2494..35c42e5e270b 100644 --- a/drivers/media/rc/ir-nec-decoder.c +++ b/drivers/media/rc/ir-nec-decoder.c | |||
@@ -172,10 +172,7 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev) | |||
172 | if (send_32bits) { | 172 | if (send_32bits) { |
173 | /* NEC transport, but modified protocol, used by at | 173 | /* NEC transport, but modified protocol, used by at |
174 | * least Apple and TiVo remotes */ | 174 | * least Apple and TiVo remotes */ |
175 | scancode = not_address << 24 | | 175 | scancode = data->bits; |
176 | address << 16 | | ||
177 | not_command << 8 | | ||
178 | command; | ||
179 | IR_dprintk(1, "NEC (modified) scancode 0x%08x\n", scancode); | 176 | IR_dprintk(1, "NEC (modified) scancode 0x%08x\n", scancode); |
180 | } else if ((address ^ not_address) != 0xff) { | 177 | } else if ((address ^ not_address) != 0xff) { |
181 | /* Extended NEC */ | 178 | /* Extended NEC */ |
diff --git a/drivers/media/rc/keymaps/rc-tivo.c b/drivers/media/rc/keymaps/rc-tivo.c index 5cc1b456e329..454e06295692 100644 --- a/drivers/media/rc/keymaps/rc-tivo.c +++ b/drivers/media/rc/keymaps/rc-tivo.c | |||
@@ -15,62 +15,62 @@ | |||
15 | * Initial mapping is for the TiVo remote included in the Nero LiquidTV bundle, | 15 | * Initial mapping is for the TiVo remote included in the Nero LiquidTV bundle, |
16 | * which also ships with a TiVo-branded IR transceiver, supported by the mceusb | 16 | * which also ships with a TiVo-branded IR transceiver, supported by the mceusb |
17 | * driver. Note that the remote uses an NEC-ish protocol, but instead of having | 17 | * driver. Note that the remote uses an NEC-ish protocol, but instead of having |
18 | * a command/not_command pair, it has a vendor ID of 0x3085, but some keys, the | 18 | * a command/not_command pair, it has a vendor ID of 0xa10c, but some keys, the |
19 | * NEC extended checksums do pass, so the table presently has the intended | 19 | * NEC extended checksums do pass, so the table presently has the intended |
20 | * values and the checksum-passed versions for those keys. | 20 | * values and the checksum-passed versions for those keys. |
21 | */ | 21 | */ |
22 | static struct rc_map_table tivo[] = { | 22 | static struct rc_map_table tivo[] = { |
23 | { 0x3085f009, KEY_MEDIA }, /* TiVo Button */ | 23 | { 0xa10c900f, KEY_MEDIA }, /* TiVo Button */ |
24 | { 0x3085e010, KEY_POWER2 }, /* TV Power */ | 24 | { 0xa10c0807, KEY_POWER2 }, /* TV Power */ |
25 | { 0x3085e011, KEY_TV }, /* Live TV/Swap */ | 25 | { 0xa10c8807, KEY_TV }, /* Live TV/Swap */ |
26 | { 0x3085c034, KEY_VIDEO_NEXT }, /* TV Input */ | 26 | { 0xa10c2c03, KEY_VIDEO_NEXT }, /* TV Input */ |
27 | { 0x3085e013, KEY_INFO }, | 27 | { 0xa10cc807, KEY_INFO }, |
28 | { 0x3085a05f, KEY_CYCLEWINDOWS }, /* Window */ | 28 | { 0xa10cfa05, KEY_CYCLEWINDOWS }, /* Window */ |
29 | { 0x0085305f, KEY_CYCLEWINDOWS }, | 29 | { 0x0085305f, KEY_CYCLEWINDOWS }, |
30 | { 0x3085c036, KEY_EPG }, /* Guide */ | 30 | { 0xa10c6c03, KEY_EPG }, /* Guide */ |
31 | 31 | ||
32 | { 0x3085e014, KEY_UP }, | 32 | { 0xa10c2807, KEY_UP }, |
33 | { 0x3085e016, KEY_DOWN }, | 33 | { 0xa10c6807, KEY_DOWN }, |
34 | { 0x3085e017, KEY_LEFT }, | 34 | { 0xa10ce807, KEY_LEFT }, |
35 | { 0x3085e015, KEY_RIGHT }, | 35 | { 0xa10ca807, KEY_RIGHT }, |
36 | 36 | ||
37 | { 0x3085e018, KEY_SCROLLDOWN }, /* Red Thumbs Down */ | 37 | { 0xa10c1807, KEY_SCROLLDOWN }, /* Red Thumbs Down */ |
38 | { 0x3085e019, KEY_SELECT }, | 38 | { 0xa10c9807, KEY_SELECT }, |
39 | { 0x3085e01a, KEY_SCROLLUP }, /* Green Thumbs Up */ | 39 | { 0xa10c5807, KEY_SCROLLUP }, /* Green Thumbs Up */ |
40 | 40 | ||
41 | { 0x3085e01c, KEY_VOLUMEUP }, | 41 | { 0xa10c3807, KEY_VOLUMEUP }, |
42 | { 0x3085e01d, KEY_VOLUMEDOWN }, | 42 | { 0xa10cb807, KEY_VOLUMEDOWN }, |
43 | { 0x3085e01b, KEY_MUTE }, | 43 | { 0xa10cd807, KEY_MUTE }, |
44 | { 0x3085d020, KEY_RECORD }, | 44 | { 0xa10c040b, KEY_RECORD }, |
45 | { 0x3085e01e, KEY_CHANNELUP }, | 45 | { 0xa10c7807, KEY_CHANNELUP }, |
46 | { 0x3085e01f, KEY_CHANNELDOWN }, | 46 | { 0xa10cf807, KEY_CHANNELDOWN }, |
47 | { 0x0085301f, KEY_CHANNELDOWN }, | 47 | { 0x0085301f, KEY_CHANNELDOWN }, |
48 | 48 | ||
49 | { 0x3085d021, KEY_PLAY }, | 49 | { 0xa10c840b, KEY_PLAY }, |
50 | { 0x3085d023, KEY_PAUSE }, | 50 | { 0xa10cc40b, KEY_PAUSE }, |
51 | { 0x3085d025, KEY_SLOW }, | 51 | { 0xa10ca40b, KEY_SLOW }, |
52 | { 0x3085d022, KEY_REWIND }, | 52 | { 0xa10c440b, KEY_REWIND }, |
53 | { 0x3085d024, KEY_FASTFORWARD }, | 53 | { 0xa10c240b, KEY_FASTFORWARD }, |
54 | { 0x3085d026, KEY_PREVIOUS }, | 54 | { 0xa10c640b, KEY_PREVIOUS }, |
55 | { 0x3085d027, KEY_NEXT }, /* ->| */ | 55 | { 0xa10ce40b, KEY_NEXT }, /* ->| */ |
56 | 56 | ||
57 | { 0x3085b044, KEY_ZOOM }, /* Aspect */ | 57 | { 0xa10c220d, KEY_ZOOM }, /* Aspect */ |
58 | { 0x3085b048, KEY_STOP }, | 58 | { 0xa10c120d, KEY_STOP }, |
59 | { 0x3085b04a, KEY_DVD }, /* DVD Menu */ | 59 | { 0xa10c520d, KEY_DVD }, /* DVD Menu */ |
60 | 60 | ||
61 | { 0x3085d028, KEY_NUMERIC_1 }, | 61 | { 0xa10c140b, KEY_NUMERIC_1 }, |
62 | { 0x3085d029, KEY_NUMERIC_2 }, | 62 | { 0xa10c940b, KEY_NUMERIC_2 }, |
63 | { 0x3085d02a, KEY_NUMERIC_3 }, | 63 | { 0xa10c540b, KEY_NUMERIC_3 }, |
64 | { 0x3085d02b, KEY_NUMERIC_4 }, | 64 | { 0xa10cd40b, KEY_NUMERIC_4 }, |
65 | { 0x3085d02c, KEY_NUMERIC_5 }, | 65 | { 0xa10c340b, KEY_NUMERIC_5 }, |
66 | { 0x3085d02d, KEY_NUMERIC_6 }, | 66 | { 0xa10cb40b, KEY_NUMERIC_6 }, |
67 | { 0x3085d02e, KEY_NUMERIC_7 }, | 67 | { 0xa10c740b, KEY_NUMERIC_7 }, |
68 | { 0x3085d02f, KEY_NUMERIC_8 }, | 68 | { 0xa10cf40b, KEY_NUMERIC_8 }, |
69 | { 0x0085302f, KEY_NUMERIC_8 }, | 69 | { 0x0085302f, KEY_NUMERIC_8 }, |
70 | { 0x3085c030, KEY_NUMERIC_9 }, | 70 | { 0xa10c0c03, KEY_NUMERIC_9 }, |
71 | { 0x3085c031, KEY_NUMERIC_0 }, | 71 | { 0xa10c8c03, KEY_NUMERIC_0 }, |
72 | { 0x3085c033, KEY_ENTER }, | 72 | { 0xa10ccc03, KEY_ENTER }, |
73 | { 0x3085c032, KEY_CLEAR }, | 73 | { 0xa10c4c03, KEY_CLEAR }, |
74 | }; | 74 | }; |
75 | 75 | ||
76 | static struct rc_map_list tivo_map = { | 76 | static struct rc_map_list tivo_map = { |