aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2009-08-29 13:15:55 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-09-12 11:19:47 -0400
commit715a223323c8c8bcbe7739e20f6c619f7343b595 (patch)
tree0c7eddcdd3c778428fc936009af085940c0394bb
parent47f7f6fb7949b6546baf4b6f26bf0ca075d12759 (diff)
V4L/DVB (12595): common/ir: use a struct for keycode tables
Currently, V4L uses a scancode table whose index is the scancode and the value is the keycode. While this works, it has some drawbacks: 1) It requires that the scancode to be at the range 00-7f; 2) keycodes should be masked on 7 bits in order for it to work; 3) due to the 7 bits approach, sometimes it is not possible to replace the default keyboard to another one with a different encoding rule; 4) it is different than what is done with dvb-usb approach; 5) it requires a typedef for it to work. This is not a recommended Linux CodingStyle. This patch is part of a larger series of IR changes. It basically replaces the IR_KEYTAB_TYPE tables by a structured table: struct ir_scancode { u16 scancode; u32 keycode; }; This is very close to what dvb does. So, a further integration with DVB code will be easy. While we've changed the tables, for now, the IR keycode handling is still based on the old approach. The only notable effect is the redution of about 35% of the ir-common module size: text data bss dec hex filename 6721 29208 4 35933 8c5d old/ir-common.ko 5756 18040 4 23800 5cf8 new/ir-common.ko In thesis, we could be using above u8 for scancode, reducing even more the size of the module, but defining it as u16 is more convenient, since, on dvb, each scancode has up to 16 bits, and we currently have a few troubles with rc5, as their scancodes are defined with more than 8 bits. This patch itself shouldn't be doing any functional changes. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/common/ir-functions.c15
-rw-r--r--drivers/media/common/ir-keymaps.c5085
-rw-r--r--drivers/media/dvb/dm1105/dm1105.c2
-rw-r--r--drivers/media/dvb/ttpci/budget-ci.c6
-rw-r--r--drivers/media/video/bt8xx/bttv-input.c26
-rw-r--r--drivers/media/video/cx18/cx18-i2c.c2
-rw-r--r--drivers/media/video/cx231xx/cx231xx.h2
-rw-r--r--drivers/media/video/cx88/cx88-input.c52
-rw-r--r--drivers/media/video/em28xx/em28xx-cards.c26
-rw-r--r--drivers/media/video/em28xx/em28xx.h2
-rw-r--r--drivers/media/video/ir-kbd-i2c.c20
-rw-r--r--drivers/media/video/saa7134/saa7134-input.c66
-rw-r--r--include/media/ir-common.h141
-rw-r--r--include/media/ir-kbd-i2c.h5
14 files changed, 2871 insertions, 2579 deletions
diff --git a/drivers/media/common/ir-functions.c b/drivers/media/common/ir-functions.c
index 16792a68a449..655474b29e21 100644
--- a/drivers/media/common/ir-functions.c
+++ b/drivers/media/common/ir-functions.c
@@ -58,13 +58,24 @@ static void ir_input_key_event(struct input_dev *dev, struct ir_input_state *ir)
58/* -------------------------------------------------------------------------- */ 58/* -------------------------------------------------------------------------- */
59 59
60void ir_input_init(struct input_dev *dev, struct ir_input_state *ir, 60void ir_input_init(struct input_dev *dev, struct ir_input_state *ir,
61 int ir_type, IR_KEYTAB_TYPE *ir_codes) 61 int ir_type, struct ir_scancode_table *ir_codes)
62{ 62{
63 int i; 63 int i;
64 64
65 ir->ir_type = ir_type; 65 ir->ir_type = ir_type;
66
67 memset(ir->ir_codes, sizeof(ir->ir_codes), 0);
68
69 /*
70 * FIXME: This is a temporary workaround to use the new IR tables
71 * with the old approach. Later patches will replace this to a
72 * proper method
73 */
74
66 if (ir_codes) 75 if (ir_codes)
67 memcpy(ir->ir_codes, ir_codes, sizeof(ir->ir_codes)); 76 for (i = 0; i < ir_codes->size; i++)
77 if (ir_codes->scan[i].scancode < IR_KEYTAB_SIZE)
78 ir->ir_codes[ir_codes->scan[i].scancode] = ir_codes->scan[i].keycode;
68 79
69 dev->keycode = ir->ir_codes; 80 dev->keycode = ir->ir_codes;
70 dev->keycodesize = sizeof(IR_KEYTAB_TYPE); 81 dev->keycodesize = sizeof(IR_KEYTAB_TYPE);
diff --git a/drivers/media/common/ir-keymaps.c b/drivers/media/common/ir-keymaps.c
index c93a5269f223..f6790172736a 100644
--- a/drivers/media/common/ir-keymaps.c
+++ b/drivers/media/common/ir-keymaps.c
@@ -29,562 +29,627 @@
29#include <media/ir-common.h> 29#include <media/ir-common.h>
30 30
31/* empty keytable, can be used as placeholder for not-yet created keytables */ 31/* empty keytable, can be used as placeholder for not-yet created keytables */
32IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE] = { 32static struct ir_scancode ir_codes_empty[] = {
33 [0x2a] = KEY_COFFEE, 33 { 0x2a, KEY_COFFEE },
34}; 34};
35EXPORT_SYMBOL_GPL(ir_codes_empty); 35
36struct ir_scancode_table ir_codes_empty_table = {
37 .scan = ir_codes_empty,
38 .size = ARRAY_SIZE(ir_codes_empty),
39};
40EXPORT_SYMBOL_GPL(ir_codes_empty_table);
36 41
37/* Michal Majchrowicz <mmajchrowicz@gmail.com> */ 42/* Michal Majchrowicz <mmajchrowicz@gmail.com> */
38IR_KEYTAB_TYPE ir_codes_proteus_2309[IR_KEYTAB_SIZE] = { 43static struct ir_scancode ir_codes_proteus_2309[] = {
39 /* numeric */ 44 /* numeric */
40 [0x00] = KEY_0, 45 { 0x00, KEY_0 },
41 [0x01] = KEY_1, 46 { 0x01, KEY_1 },
42 [0x02] = KEY_2, 47 { 0x02, KEY_2 },
43 [0x03] = KEY_3, 48 { 0x03, KEY_3 },
44 [0x04] = KEY_4, 49 { 0x04, KEY_4 },
45 [0x05] = KEY_5, 50 { 0x05, KEY_5 },
46 [0x06] = KEY_6, 51 { 0x06, KEY_6 },
47 [0x07] = KEY_7, 52 { 0x07, KEY_7 },
48 [0x08] = KEY_8, 53 { 0x08, KEY_8 },
49 [0x09] = KEY_9, 54 { 0x09, KEY_9 },
50 55
51 [0x5c] = KEY_POWER, /* power */ 56 { 0x5c, KEY_POWER }, /* power */
52 [0x20] = KEY_ZOOM, /* full screen */ 57 { 0x20, KEY_ZOOM }, /* full screen */
53 [0x0f] = KEY_BACKSPACE, /* recall */ 58 { 0x0f, KEY_BACKSPACE }, /* recall */
54 [0x1b] = KEY_ENTER, /* mute */ 59 { 0x1b, KEY_ENTER }, /* mute */
55 [0x41] = KEY_RECORD, /* record */ 60 { 0x41, KEY_RECORD }, /* record */
56 [0x43] = KEY_STOP, /* stop */ 61 { 0x43, KEY_STOP }, /* stop */
57 [0x16] = KEY_S, 62 { 0x16, KEY_S },
58 [0x1a] = KEY_POWER2, /* off */ 63 { 0x1a, KEY_POWER2 }, /* off */
59 [0x2e] = KEY_RED, 64 { 0x2e, KEY_RED },
60 [0x1f] = KEY_CHANNELDOWN, /* channel - */ 65 { 0x1f, KEY_CHANNELDOWN }, /* channel - */
61 [0x1c] = KEY_CHANNELUP, /* channel + */ 66 { 0x1c, KEY_CHANNELUP }, /* channel + */
62 [0x10] = KEY_VOLUMEDOWN, /* volume - */ 67 { 0x10, KEY_VOLUMEDOWN }, /* volume - */
63 [0x1e] = KEY_VOLUMEUP, /* volume + */ 68 { 0x1e, KEY_VOLUMEUP }, /* volume + */
64 [0x14] = KEY_F1, 69 { 0x14, KEY_F1 },
65}; 70};
66EXPORT_SYMBOL_GPL(ir_codes_proteus_2309); 71
72struct ir_scancode_table ir_codes_proteus_2309_table = {
73 .scan = ir_codes_proteus_2309,
74 .size = ARRAY_SIZE(ir_codes_proteus_2309),
75};
76EXPORT_SYMBOL_GPL(ir_codes_proteus_2309_table);
67 77
68/* Matt Jesson <dvb@jesson.eclipse.co.uk */ 78/* Matt Jesson <dvb@jesson.eclipse.co.uk */
69IR_KEYTAB_TYPE ir_codes_avermedia_dvbt[IR_KEYTAB_SIZE] = { 79static struct ir_scancode ir_codes_avermedia_dvbt[] = {
70 [0x28] = KEY_0, /* '0' / 'enter' */ 80 { 0x28, KEY_0 }, /* '0' / 'enter' */
71 [0x22] = KEY_1, /* '1' */ 81 { 0x22, KEY_1 }, /* '1' */
72 [0x12] = KEY_2, /* '2' / 'up arrow' */ 82 { 0x12, KEY_2 }, /* '2' / 'up arrow' */
73 [0x32] = KEY_3, /* '3' */ 83 { 0x32, KEY_3 }, /* '3' */
74 [0x24] = KEY_4, /* '4' / 'left arrow' */ 84 { 0x24, KEY_4 }, /* '4' / 'left arrow' */
75 [0x14] = KEY_5, /* '5' */ 85 { 0x14, KEY_5 }, /* '5' */
76 [0x34] = KEY_6, /* '6' / 'right arrow' */ 86 { 0x34, KEY_6 }, /* '6' / 'right arrow' */
77 [0x26] = KEY_7, /* '7' */ 87 { 0x26, KEY_7 }, /* '7' */
78 [0x16] = KEY_8, /* '8' / 'down arrow' */ 88 { 0x16, KEY_8 }, /* '8' / 'down arrow' */
79 [0x36] = KEY_9, /* '9' */ 89 { 0x36, KEY_9 }, /* '9' */
80 90
81 [0x20] = KEY_LIST, /* 'source' */ 91 { 0x20, KEY_LIST }, /* 'source' */
82 [0x10] = KEY_TEXT, /* 'teletext' */ 92 { 0x10, KEY_TEXT }, /* 'teletext' */
83 [0x00] = KEY_POWER, /* 'power' */ 93 { 0x00, KEY_POWER }, /* 'power' */
84 [0x04] = KEY_AUDIO, /* 'audio' */ 94 { 0x04, KEY_AUDIO }, /* 'audio' */
85 [0x06] = KEY_ZOOM, /* 'full screen' */ 95 { 0x06, KEY_ZOOM }, /* 'full screen' */
86 [0x18] = KEY_VIDEO, /* 'display' */ 96 { 0x18, KEY_VIDEO }, /* 'display' */
87 [0x38] = KEY_SEARCH, /* 'loop' */ 97 { 0x38, KEY_SEARCH }, /* 'loop' */
88 [0x08] = KEY_INFO, /* 'preview' */ 98 { 0x08, KEY_INFO }, /* 'preview' */
89 [0x2a] = KEY_REWIND, /* 'backward <<' */ 99 { 0x2a, KEY_REWIND }, /* 'backward <<' */
90 [0x1a] = KEY_FASTFORWARD, /* 'forward >>' */ 100 { 0x1a, KEY_FASTFORWARD }, /* 'forward >>' */
91 [0x3a] = KEY_RECORD, /* 'capture' */ 101 { 0x3a, KEY_RECORD }, /* 'capture' */
92 [0x0a] = KEY_MUTE, /* 'mute' */ 102 { 0x0a, KEY_MUTE }, /* 'mute' */
93 [0x2c] = KEY_RECORD, /* 'record' */ 103 { 0x2c, KEY_RECORD }, /* 'record' */
94 [0x1c] = KEY_PAUSE, /* 'pause' */ 104 { 0x1c, KEY_PAUSE }, /* 'pause' */
95 [0x3c] = KEY_STOP, /* 'stop' */ 105 { 0x3c, KEY_STOP }, /* 'stop' */
96 [0x0c] = KEY_PLAY, /* 'play' */ 106 { 0x0c, KEY_PLAY }, /* 'play' */
97 [0x2e] = KEY_RED, /* 'red' */ 107 { 0x2e, KEY_RED }, /* 'red' */
98 [0x01] = KEY_BLUE, /* 'blue' / 'cancel' */ 108 { 0x01, KEY_BLUE }, /* 'blue' / 'cancel' */
99 [0x0e] = KEY_YELLOW, /* 'yellow' / 'ok' */ 109 { 0x0e, KEY_YELLOW }, /* 'yellow' / 'ok' */
100 [0x21] = KEY_GREEN, /* 'green' */ 110 { 0x21, KEY_GREEN }, /* 'green' */
101 [0x11] = KEY_CHANNELDOWN, /* 'channel -' */ 111 { 0x11, KEY_CHANNELDOWN }, /* 'channel -' */
102 [0x31] = KEY_CHANNELUP, /* 'channel +' */ 112 { 0x31, KEY_CHANNELUP }, /* 'channel +' */
103 [0x1e] = KEY_VOLUMEDOWN, /* 'volume -' */ 113 { 0x1e, KEY_VOLUMEDOWN }, /* 'volume -' */
104 [0x3e] = KEY_VOLUMEUP, /* 'volume +' */ 114 { 0x3e, KEY_VOLUMEUP }, /* 'volume +' */
105}; 115};
106EXPORT_SYMBOL_GPL(ir_codes_avermedia_dvbt); 116
117struct ir_scancode_table ir_codes_avermedia_dvbt_table = {
118 .scan = ir_codes_avermedia_dvbt,
119 .size = ARRAY_SIZE(ir_codes_avermedia_dvbt),
120};
121EXPORT_SYMBOL_GPL(ir_codes_avermedia_dvbt_table);
107 122
108/* Mauro Carvalho Chehab <mchehab@infradead.org> */ 123/* Mauro Carvalho Chehab <mchehab@infradead.org> */
109IR_KEYTAB_TYPE ir_codes_avermedia_m135a[IR_KEYTAB_SIZE] = { 124static struct ir_scancode ir_codes_avermedia_m135a[] = {
110 [0x00] = KEY_POWER2, 125 { 0x00, KEY_POWER2 },
111 [0x2e] = KEY_DOT, /* '.' */ 126 { 0x2e, KEY_DOT }, /* '.' */
112 [0x01] = KEY_MODE, /* TV/FM */ 127 { 0x01, KEY_MODE }, /* TV/FM */
113 128
114 [0x05] = KEY_1, 129 { 0x05, KEY_1 },
115 [0x06] = KEY_2, 130 { 0x06, KEY_2 },
116 [0x07] = KEY_3, 131 { 0x07, KEY_3 },
117 [0x09] = KEY_4, 132 { 0x09, KEY_4 },
118 [0x0a] = KEY_5, 133 { 0x0a, KEY_5 },
119 [0x0b] = KEY_6, 134 { 0x0b, KEY_6 },
120 [0x0d] = KEY_7, 135 { 0x0d, KEY_7 },
121 [0x0e] = KEY_8, 136 { 0x0e, KEY_8 },
122 [0x0f] = KEY_9, 137 { 0x0f, KEY_9 },
123 [0x11] = KEY_0, 138 { 0x11, KEY_0 },
124 139
125 [0x13] = KEY_RIGHT, /* -> */ 140 { 0x13, KEY_RIGHT }, /* -> */
126 [0x12] = KEY_LEFT, /* <- */ 141 { 0x12, KEY_LEFT }, /* <- */
127 142
128 [0x17] = KEY_SLEEP, /* Capturar Imagem */ 143 { 0x17, KEY_SLEEP }, /* Capturar Imagem */
129 [0x10] = KEY_SHUFFLE, /* Amostra */ 144 { 0x10, KEY_SHUFFLE }, /* Amostra */
130 145
131 /* FIXME: The keys bellow aren't ok */ 146 /* FIXME: The keys bellow aren't ok */
132 147
133 [0x43] = KEY_CHANNELUP, 148 { 0x43, KEY_CHANNELUP },
134 [0x42] = KEY_CHANNELDOWN, 149 { 0x42, KEY_CHANNELDOWN },
135 [0x1f] = KEY_VOLUMEUP, 150 { 0x1f, KEY_VOLUMEUP },
136 [0x1e] = KEY_VOLUMEDOWN, 151 { 0x1e, KEY_VOLUMEDOWN },
137 [0x0c] = KEY_ENTER, 152 { 0x0c, KEY_ENTER },
138 153
139 [0x14] = KEY_MUTE, 154 { 0x14, KEY_MUTE },
140 [0x08] = KEY_AUDIO, 155 { 0x08, KEY_AUDIO },
141 156
142 [0x03] = KEY_TEXT, 157 { 0x03, KEY_TEXT },
143 [0x04] = KEY_EPG, 158 { 0x04, KEY_EPG },
144 [0x2b] = KEY_TV2, /* TV2 */ 159 { 0x2b, KEY_TV2 }, /* TV2 */
145 160
146 [0x1d] = KEY_RED, 161 { 0x1d, KEY_RED },
147 [0x1c] = KEY_YELLOW, 162 { 0x1c, KEY_YELLOW },
148 [0x41] = KEY_GREEN, 163 { 0x41, KEY_GREEN },
149 [0x40] = KEY_BLUE, 164 { 0x40, KEY_BLUE },
150 165
151 [0x1a] = KEY_PLAYPAUSE, 166 { 0x1a, KEY_PLAYPAUSE },
152 [0x19] = KEY_RECORD, 167 { 0x19, KEY_RECORD },
153 [0x18] = KEY_PLAY, 168 { 0x18, KEY_PLAY },
154 [0x1b] = KEY_STOP, 169 { 0x1b, KEY_STOP },
155}; 170};
156EXPORT_SYMBOL_GPL(ir_codes_avermedia_m135a); 171
172struct ir_scancode_table ir_codes_avermedia_m135a_table = {
173 .scan = ir_codes_avermedia_m135a,
174 .size = ARRAY_SIZE(ir_codes_avermedia_m135a),
175};
176EXPORT_SYMBOL_GPL(ir_codes_avermedia_m135a_table);
157 177
158/* Oldrich Jedlicka <oldium.pro@seznam.cz> */ 178/* Oldrich Jedlicka <oldium.pro@seznam.cz> */
159IR_KEYTAB_TYPE ir_codes_avermedia_cardbus[IR_KEYTAB_SIZE] = { 179static struct ir_scancode ir_codes_avermedia_cardbus[] = {
160 [0x00] = KEY_POWER, 180 { 0x00, KEY_POWER },
161 [0x01] = KEY_TUNER, /* TV/FM */ 181 { 0x01, KEY_TUNER }, /* TV/FM */
162 [0x03] = KEY_TEXT, /* Teletext */ 182 { 0x03, KEY_TEXT }, /* Teletext */
163 [0x04] = KEY_EPG, 183 { 0x04, KEY_EPG },
164 [0x05] = KEY_1, 184 { 0x05, KEY_1 },
165 [0x06] = KEY_2, 185 { 0x06, KEY_2 },
166 [0x07] = KEY_3, 186 { 0x07, KEY_3 },
167 [0x08] = KEY_AUDIO, 187 { 0x08, KEY_AUDIO },
168 [0x09] = KEY_4, 188 { 0x09, KEY_4 },
169 [0x0a] = KEY_5, 189 { 0x0a, KEY_5 },
170 [0x0b] = KEY_6, 190 { 0x0b, KEY_6 },
171 [0x0c] = KEY_ZOOM, /* Full screen */ 191 { 0x0c, KEY_ZOOM }, /* Full screen */
172 [0x0d] = KEY_7, 192 { 0x0d, KEY_7 },
173 [0x0e] = KEY_8, 193 { 0x0e, KEY_8 },
174 [0x0f] = KEY_9, 194 { 0x0f, KEY_9 },
175 [0x10] = KEY_PAGEUP, /* 16-CH PREV */ 195 { 0x10, KEY_PAGEUP }, /* 16-CH PREV */
176 [0x11] = KEY_0, 196 { 0x11, KEY_0 },
177 [0x12] = KEY_INFO, 197 { 0x12, KEY_INFO },
178 [0x13] = KEY_AGAIN, /* CH RTN - channel return */ 198 { 0x13, KEY_AGAIN }, /* CH RTN - channel return */
179 [0x14] = KEY_MUTE, 199 { 0x14, KEY_MUTE },
180 [0x15] = KEY_EDIT, /* Autoscan */ 200 { 0x15, KEY_EDIT }, /* Autoscan */
181 [0x17] = KEY_SAVE, /* Screenshot */ 201 { 0x17, KEY_SAVE }, /* Screenshot */
182 [0x18] = KEY_PLAYPAUSE, 202 { 0x18, KEY_PLAYPAUSE },
183 [0x19] = KEY_RECORD, 203 { 0x19, KEY_RECORD },
184 [0x1a] = KEY_PLAY, 204 { 0x1a, KEY_PLAY },
185 [0x1b] = KEY_STOP, 205 { 0x1b, KEY_STOP },
186 [0x1c] = KEY_FASTFORWARD, 206 { 0x1c, KEY_FASTFORWARD },
187 [0x1d] = KEY_REWIND, 207 { 0x1d, KEY_REWIND },
188 [0x1e] = KEY_VOLUMEDOWN, 208 { 0x1e, KEY_VOLUMEDOWN },
189 [0x1f] = KEY_VOLUMEUP, 209 { 0x1f, KEY_VOLUMEUP },
190 [0x22] = KEY_SLEEP, /* Sleep */ 210 { 0x22, KEY_SLEEP }, /* Sleep */
191 [0x23] = KEY_ZOOM, /* Aspect */ 211 { 0x23, KEY_ZOOM }, /* Aspect */
192 [0x26] = KEY_SCREEN, /* Pos */ 212 { 0x26, KEY_SCREEN }, /* Pos */
193 [0x27] = KEY_ANGLE, /* Size */ 213 { 0x27, KEY_ANGLE }, /* Size */
194 [0x28] = KEY_SELECT, /* Select */ 214 { 0x28, KEY_SELECT }, /* Select */
195 [0x29] = KEY_BLUE, /* Blue/Picture */ 215 { 0x29, KEY_BLUE }, /* Blue/Picture */
196 [0x2a] = KEY_BACKSPACE, /* Back */ 216 { 0x2a, KEY_BACKSPACE }, /* Back */
197 [0x2b] = KEY_MEDIA, /* PIP (Picture-in-picture) */ 217 { 0x2b, KEY_MEDIA }, /* PIP (Picture-in-picture) */
198 [0x2c] = KEY_DOWN, 218 { 0x2c, KEY_DOWN },
199 [0x2e] = KEY_DOT, 219 { 0x2e, KEY_DOT },
200 [0x2f] = KEY_TV, /* Live TV */ 220 { 0x2f, KEY_TV }, /* Live TV */
201 [0x32] = KEY_LEFT, 221 { 0x32, KEY_LEFT },
202 [0x33] = KEY_CLEAR, /* Clear */ 222 { 0x33, KEY_CLEAR }, /* Clear */
203 [0x35] = KEY_RED, /* Red/TV */ 223 { 0x35, KEY_RED }, /* Red/TV */
204 [0x36] = KEY_UP, 224 { 0x36, KEY_UP },
205 [0x37] = KEY_HOME, /* Home */ 225 { 0x37, KEY_HOME }, /* Home */
206 [0x39] = KEY_GREEN, /* Green/Video */ 226 { 0x39, KEY_GREEN }, /* Green/Video */
207 [0x3d] = KEY_YELLOW, /* Yellow/Music */ 227 { 0x3d, KEY_YELLOW }, /* Yellow/Music */
208 [0x3e] = KEY_OK, /* Ok */ 228 { 0x3e, KEY_OK }, /* Ok */
209 [0x3f] = KEY_RIGHT, 229 { 0x3f, KEY_RIGHT },
210 [0x40] = KEY_NEXT, /* Next */ 230 { 0x40, KEY_NEXT }, /* Next */
211 [0x41] = KEY_PREVIOUS, /* Previous */ 231 { 0x41, KEY_PREVIOUS }, /* Previous */
212 [0x42] = KEY_CHANNELDOWN, /* Channel down */ 232 { 0x42, KEY_CHANNELDOWN }, /* Channel down */
213 [0x43] = KEY_CHANNELUP, /* Channel up */ 233 { 0x43, KEY_CHANNELUP }, /* Channel up */
214}; 234};
215EXPORT_SYMBOL_GPL(ir_codes_avermedia_cardbus); 235
236struct ir_scancode_table ir_codes_avermedia_cardbus_table = {
237 .scan = ir_codes_avermedia_cardbus,
238 .size = ARRAY_SIZE(ir_codes_avermedia_cardbus),
239};
240EXPORT_SYMBOL_GPL(ir_codes_avermedia_cardbus_table);
216 241
217/* Attila Kondoros <attila.kondoros@chello.hu> */ 242/* Attila Kondoros <attila.kondoros@chello.hu> */
218IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE] = { 243static struct ir_scancode ir_codes_apac_viewcomp[] = {
219 244
220 [0x01] = KEY_1, 245 { 0x01, KEY_1 },
221 [0x02] = KEY_2, 246 { 0x02, KEY_2 },
222 [0x03] = KEY_3, 247 { 0x03, KEY_3 },
223 [0x04] = KEY_4, 248 { 0x04, KEY_4 },
224 [0x05] = KEY_5, 249 { 0x05, KEY_5 },
225 [0x06] = KEY_6, 250 { 0x06, KEY_6 },
226 [0x07] = KEY_7, 251 { 0x07, KEY_7 },
227 [0x08] = KEY_8, 252 { 0x08, KEY_8 },
228 [0x09] = KEY_9, 253 { 0x09, KEY_9 },
229 [0x00] = KEY_0, 254 { 0x00, KEY_0 },
230 [0x17] = KEY_LAST, /* +100 */ 255 { 0x17, KEY_LAST }, /* +100 */
231 [0x0a] = KEY_LIST, /* recall */ 256 { 0x0a, KEY_LIST }, /* recall */
232 257
233 258
234 [0x1c] = KEY_TUNER, /* TV/FM */ 259 { 0x1c, KEY_TUNER }, /* TV/FM */
235 [0x15] = KEY_SEARCH, /* scan */ 260 { 0x15, KEY_SEARCH }, /* scan */
236 [0x12] = KEY_POWER, /* power */ 261 { 0x12, KEY_POWER }, /* power */
237 [0x1f] = KEY_VOLUMEDOWN, /* vol up */ 262 { 0x1f, KEY_VOLUMEDOWN }, /* vol up */
238 [0x1b] = KEY_VOLUMEUP, /* vol down */ 263 { 0x1b, KEY_VOLUMEUP }, /* vol down */
239 [0x1e] = KEY_CHANNELDOWN, /* chn up */ 264 { 0x1e, KEY_CHANNELDOWN }, /* chn up */
240 [0x1a] = KEY_CHANNELUP, /* chn down */ 265 { 0x1a, KEY_CHANNELUP }, /* chn down */
241 266
242 [0x11] = KEY_VIDEO, /* video */ 267 { 0x11, KEY_VIDEO }, /* video */
243 [0x0f] = KEY_ZOOM, /* full screen */ 268 { 0x0f, KEY_ZOOM }, /* full screen */
244 [0x13] = KEY_MUTE, /* mute/unmute */ 269 { 0x13, KEY_MUTE }, /* mute/unmute */
245 [0x10] = KEY_TEXT, /* min */ 270 { 0x10, KEY_TEXT }, /* min */
246 271
247 [0x0d] = KEY_STOP, /* freeze */ 272 { 0x0d, KEY_STOP }, /* freeze */
248 [0x0e] = KEY_RECORD, /* record */ 273 { 0x0e, KEY_RECORD }, /* record */
249 [0x1d] = KEY_PLAYPAUSE, /* stop */ 274 { 0x1d, KEY_PLAYPAUSE }, /* stop */
250 [0x19] = KEY_PLAY, /* play */ 275 { 0x19, KEY_PLAY }, /* play */
251 276
252 [0x16] = KEY_GOTO, /* osd */ 277 { 0x16, KEY_GOTO }, /* osd */
253 [0x14] = KEY_REFRESH, /* default */ 278 { 0x14, KEY_REFRESH }, /* default */
254 [0x0c] = KEY_KPPLUS, /* fine tune >>>> */ 279 { 0x0c, KEY_KPPLUS }, /* fine tune >>>> */
255 [0x18] = KEY_KPMINUS, /* fine tune <<<< */ 280 { 0x18, KEY_KPMINUS }, /* fine tune <<<< */
256}; 281};
257EXPORT_SYMBOL_GPL(ir_codes_apac_viewcomp); 282
283struct ir_scancode_table ir_codes_apac_viewcomp_table = {
284 .scan = ir_codes_apac_viewcomp,
285 .size = ARRAY_SIZE(ir_codes_apac_viewcomp),
286};
287EXPORT_SYMBOL_GPL(ir_codes_apac_viewcomp_table);
258 288
259/* ---------------------------------------------------------------------- */ 289/* ---------------------------------------------------------------------- */
260 290
261IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE] = { 291static struct ir_scancode ir_codes_pixelview[] = {
262 292
263 [0x1e] = KEY_POWER, /* power */ 293 { 0x1e, KEY_POWER }, /* power */
264 [0x07] = KEY_MEDIA, /* source */ 294 { 0x07, KEY_MEDIA }, /* source */
265 [0x1c] = KEY_SEARCH, /* scan */ 295 { 0x1c, KEY_SEARCH }, /* scan */
266 296
267 297
268 [0x03] = KEY_TUNER, /* TV/FM */ 298 { 0x03, KEY_TUNER }, /* TV/FM */
269 299
270 [0x00] = KEY_RECORD, 300 { 0x00, KEY_RECORD },
271 [0x08] = KEY_STOP, 301 { 0x08, KEY_STOP },
272 [0x11] = KEY_PLAY, 302 { 0x11, KEY_PLAY },
273 303
274 [0x1a] = KEY_PLAYPAUSE, /* freeze */ 304 { 0x1a, KEY_PLAYPAUSE }, /* freeze */
275 [0x19] = KEY_ZOOM, /* zoom */ 305 { 0x19, KEY_ZOOM }, /* zoom */
276 [0x0f] = KEY_TEXT, /* min */ 306 { 0x0f, KEY_TEXT }, /* min */
277 307
278 [0x01] = KEY_1, 308 { 0x01, KEY_1 },
279 [0x0b] = KEY_2, 309 { 0x0b, KEY_2 },
280 [0x1b] = KEY_3, 310 { 0x1b, KEY_3 },
281 [0x05] = KEY_4, 311 { 0x05, KEY_4 },
282 [0x09] = KEY_5, 312 { 0x09, KEY_5 },
283 [0x15] = KEY_6, 313 { 0x15, KEY_6 },
284 [0x06] = KEY_7, 314 { 0x06, KEY_7 },
285 [0x0a] = KEY_8, 315 { 0x0a, KEY_8 },
286 [0x12] = KEY_9, 316 { 0x12, KEY_9 },
287 [0x02] = KEY_0, 317 { 0x02, KEY_0 },
288 [0x10] = KEY_LAST, /* +100 */ 318 { 0x10, KEY_LAST }, /* +100 */
289 [0x13] = KEY_LIST, /* recall */ 319 { 0x13, KEY_LIST }, /* recall */
290 320
291 [0x1f] = KEY_CHANNELUP, /* chn down */ 321 { 0x1f, KEY_CHANNELUP }, /* chn down */
292 [0x17] = KEY_CHANNELDOWN, /* chn up */ 322 { 0x17, KEY_CHANNELDOWN }, /* chn up */
293 [0x16] = KEY_VOLUMEUP, /* vol down */ 323 { 0x16, KEY_VOLUMEUP }, /* vol down */
294 [0x14] = KEY_VOLUMEDOWN, /* vol up */ 324 { 0x14, KEY_VOLUMEDOWN }, /* vol up */
295 325
296 [0x04] = KEY_KPMINUS, /* <<< */ 326 { 0x04, KEY_KPMINUS }, /* <<< */
297 [0x0e] = KEY_SETUP, /* function */ 327 { 0x0e, KEY_SETUP }, /* function */
298 [0x0c] = KEY_KPPLUS, /* >>> */ 328 { 0x0c, KEY_KPPLUS }, /* >>> */
299 329
300 [0x0d] = KEY_GOTO, /* mts */ 330 { 0x0d, KEY_GOTO }, /* mts */
301 [0x1d] = KEY_REFRESH, /* reset */ 331 { 0x1d, KEY_REFRESH }, /* reset */
302 [0x18] = KEY_MUTE, /* mute/unmute */ 332 { 0x18, KEY_MUTE }, /* mute/unmute */
303}; 333};
304EXPORT_SYMBOL_GPL(ir_codes_pixelview); 334
335struct ir_scancode_table ir_codes_pixelview_table = {
336 .scan = ir_codes_pixelview,
337 .size = ARRAY_SIZE(ir_codes_pixelview),
338};
339EXPORT_SYMBOL_GPL(ir_codes_pixelview_table);
305 340
306/* 341/*
307 Mauro Carvalho Chehab <mchehab@infradead.org> 342 Mauro Carvalho Chehab <mchehab@infradead.org>
308 present on PV MPEG 8000GT 343 present on PV MPEG 8000GT
309 */ 344 */
310IR_KEYTAB_TYPE ir_codes_pixelview_new[IR_KEYTAB_SIZE] = { 345static struct ir_scancode ir_codes_pixelview_new[] = {
311 [0x3c] = KEY_TIME, /* Timeshift */ 346 { 0x3c, KEY_TIME }, /* Timeshift */
312 [0x12] = KEY_POWER, 347 { 0x12, KEY_POWER },
313 348
314 [0x3d] = KEY_1, 349 { 0x3d, KEY_1 },
315 [0x38] = KEY_2, 350 { 0x38, KEY_2 },
316 [0x18] = KEY_3, 351 { 0x18, KEY_3 },
317 [0x35] = KEY_4, 352 { 0x35, KEY_4 },
318 [0x39] = KEY_5, 353 { 0x39, KEY_5 },
319 [0x15] = KEY_6, 354 { 0x15, KEY_6 },
320 [0x36] = KEY_7, 355 { 0x36, KEY_7 },
321 [0x3a] = KEY_8, 356 { 0x3a, KEY_8 },
322 [0x1e] = KEY_9, 357 { 0x1e, KEY_9 },
323 [0x3e] = KEY_0, 358 { 0x3e, KEY_0 },
324 359
325 [0x1c] = KEY_AGAIN, /* LOOP */ 360 { 0x1c, KEY_AGAIN }, /* LOOP */
326 [0x3f] = KEY_MEDIA, /* Source */ 361 { 0x3f, KEY_MEDIA }, /* Source */
327 [0x1f] = KEY_LAST, /* +100 */ 362 { 0x1f, KEY_LAST }, /* +100 */
328 [0x1b] = KEY_MUTE, 363 { 0x1b, KEY_MUTE },
329 364
330 [0x17] = KEY_CHANNELDOWN, 365 { 0x17, KEY_CHANNELDOWN },
331 [0x16] = KEY_CHANNELUP, 366 { 0x16, KEY_CHANNELUP },
332 [0x10] = KEY_VOLUMEUP, 367 { 0x10, KEY_VOLUMEUP },
333 [0x14] = KEY_VOLUMEDOWN, 368 { 0x14, KEY_VOLUMEDOWN },
334 [0x13] = KEY_ZOOM, 369 { 0x13, KEY_ZOOM },
335 370
336 [0x19] = KEY_CAMERA, /* SNAPSHOT */ 371 { 0x19, KEY_CAMERA }, /* SNAPSHOT */
337 [0x1a] = KEY_SEARCH, /* scan */ 372 { 0x1a, KEY_SEARCH }, /* scan */
338 373
339 [0x37] = KEY_REWIND, /* << */ 374 { 0x37, KEY_REWIND }, /* << */
340 [0x32] = KEY_RECORD, /* o (red) */ 375 { 0x32, KEY_RECORD }, /* o (red) */
341 [0x33] = KEY_FORWARD, /* >> */ 376 { 0x33, KEY_FORWARD }, /* >> */
342 [0x11] = KEY_STOP, /* square */ 377 { 0x11, KEY_STOP }, /* square */
343 [0x3b] = KEY_PLAY, /* > */ 378 { 0x3b, KEY_PLAY }, /* > */
344 [0x30] = KEY_PLAYPAUSE, /* || */ 379 { 0x30, KEY_PLAYPAUSE }, /* || */
345 380
346 [0x31] = KEY_TV, 381 { 0x31, KEY_TV },
347 [0x34] = KEY_RADIO, 382 { 0x34, KEY_RADIO },
348}; 383};
349EXPORT_SYMBOL_GPL(ir_codes_pixelview_new); 384
350 385struct ir_scancode_table ir_codes_pixelview_new_table = {
351IR_KEYTAB_TYPE ir_codes_nebula[IR_KEYTAB_SIZE] = { 386 .scan = ir_codes_pixelview_new,
352 [0x00] = KEY_0, 387 .size = ARRAY_SIZE(ir_codes_pixelview_new),
353 [0x01] = KEY_1, 388};
354 [0x02] = KEY_2, 389EXPORT_SYMBOL_GPL(ir_codes_pixelview_new_table);
355 [0x03] = KEY_3, 390
356 [0x04] = KEY_4, 391static struct ir_scancode ir_codes_nebula[] = {
357 [0x05] = KEY_5, 392 { 0x00, KEY_0 },
358 [0x06] = KEY_6, 393 { 0x01, KEY_1 },
359 [0x07] = KEY_7, 394 { 0x02, KEY_2 },
360 [0x08] = KEY_8, 395 { 0x03, KEY_3 },
361 [0x09] = KEY_9, 396 { 0x04, KEY_4 },
362 [0x0a] = KEY_TV, 397 { 0x05, KEY_5 },
363 [0x0b] = KEY_AUX, 398 { 0x06, KEY_6 },
364 [0x0c] = KEY_DVD, 399 { 0x07, KEY_7 },
365 [0x0d] = KEY_POWER, 400 { 0x08, KEY_8 },
366 [0x0e] = KEY_MHP, /* labelled 'Picture' */ 401 { 0x09, KEY_9 },
367 [0x0f] = KEY_AUDIO, 402 { 0x0a, KEY_TV },
368 [0x10] = KEY_INFO, 403 { 0x0b, KEY_AUX },
369 [0x11] = KEY_F13, /* 16:9 */ 404 { 0x0c, KEY_DVD },
370 [0x12] = KEY_F14, /* 14:9 */ 405 { 0x0d, KEY_POWER },
371 [0x13] = KEY_EPG, 406 { 0x0e, KEY_MHP }, /* labelled 'Picture' */
372 [0x14] = KEY_EXIT, 407 { 0x0f, KEY_AUDIO },
373 [0x15] = KEY_MENU, 408 { 0x10, KEY_INFO },
374 [0x16] = KEY_UP, 409 { 0x11, KEY_F13 }, /* 16:9 */
375 [0x17] = KEY_DOWN, 410 { 0x12, KEY_F14 }, /* 14:9 */
376 [0x18] = KEY_LEFT, 411 { 0x13, KEY_EPG },
377 [0x19] = KEY_RIGHT, 412 { 0x14, KEY_EXIT },
378 [0x1a] = KEY_ENTER, 413 { 0x15, KEY_MENU },
379 [0x1b] = KEY_CHANNELUP, 414 { 0x16, KEY_UP },
380 [0x1c] = KEY_CHANNELDOWN, 415 { 0x17, KEY_DOWN },
381 [0x1d] = KEY_VOLUMEUP, 416 { 0x18, KEY_LEFT },
382 [0x1e] = KEY_VOLUMEDOWN, 417 { 0x19, KEY_RIGHT },
383 [0x1f] = KEY_RED, 418 { 0x1a, KEY_ENTER },
384 [0x20] = KEY_GREEN, 419 { 0x1b, KEY_CHANNELUP },
385 [0x21] = KEY_YELLOW, 420 { 0x1c, KEY_CHANNELDOWN },
386 [0x22] = KEY_BLUE, 421 { 0x1d, KEY_VOLUMEUP },
387 [0x23] = KEY_SUBTITLE, 422 { 0x1e, KEY_VOLUMEDOWN },
388 [0x24] = KEY_F15, /* AD */ 423 { 0x1f, KEY_RED },
389 [0x25] = KEY_TEXT, 424 { 0x20, KEY_GREEN },
390 [0x26] = KEY_MUTE, 425 { 0x21, KEY_YELLOW },
391 [0x27] = KEY_REWIND, 426 { 0x22, KEY_BLUE },
392 [0x28] = KEY_STOP, 427 { 0x23, KEY_SUBTITLE },
393 [0x29] = KEY_PLAY, 428 { 0x24, KEY_F15 }, /* AD */
394 [0x2a] = KEY_FASTFORWARD, 429 { 0x25, KEY_TEXT },
395 [0x2b] = KEY_F16, /* chapter */ 430 { 0x26, KEY_MUTE },
396 [0x2c] = KEY_PAUSE, 431 { 0x27, KEY_REWIND },
397 [0x2d] = KEY_PLAY, 432 { 0x28, KEY_STOP },
398 [0x2e] = KEY_RECORD, 433 { 0x29, KEY_PLAY },
399 [0x2f] = KEY_F17, /* picture in picture */ 434 { 0x2a, KEY_FASTFORWARD },
400 [0x30] = KEY_KPPLUS, /* zoom in */ 435 { 0x2b, KEY_F16 }, /* chapter */
401 [0x31] = KEY_KPMINUS, /* zoom out */ 436 { 0x2c, KEY_PAUSE },
402 [0x32] = KEY_F18, /* capture */ 437 { 0x2d, KEY_PLAY },
403 [0x33] = KEY_F19, /* web */ 438 { 0x2e, KEY_RECORD },
404 [0x34] = KEY_EMAIL, 439 { 0x2f, KEY_F17 }, /* picture in picture */
405 [0x35] = KEY_PHONE, 440 { 0x30, KEY_KPPLUS }, /* zoom in */
406 [0x36] = KEY_PC, 441 { 0x31, KEY_KPMINUS }, /* zoom out */
407}; 442 { 0x32, KEY_F18 }, /* capture */
408EXPORT_SYMBOL_GPL(ir_codes_nebula); 443 { 0x33, KEY_F19 }, /* web */
444 { 0x34, KEY_EMAIL },
445 { 0x35, KEY_PHONE },
446 { 0x36, KEY_PC },
447};
448
449struct ir_scancode_table ir_codes_nebula_table = {
450 .scan = ir_codes_nebula,
451 .size = ARRAY_SIZE(ir_codes_nebula),
452};
453EXPORT_SYMBOL_GPL(ir_codes_nebula_table);
409 454
410/* DigitalNow DNTV Live DVB-T Remote */ 455/* DigitalNow DNTV Live DVB-T Remote */
411IR_KEYTAB_TYPE ir_codes_dntv_live_dvb_t[IR_KEYTAB_SIZE] = { 456static struct ir_scancode ir_codes_dntv_live_dvb_t[] = {
412 [0x00] = KEY_ESC, /* 'go up a level?' */ 457 { 0x00, KEY_ESC }, /* 'go up a level?' */
413 /* Keys 0 to 9 */ 458 /* Keys 0 to 9 */
414 [0x0a] = KEY_0, 459 { 0x0a, KEY_0 },
415 [0x01] = KEY_1, 460 { 0x01, KEY_1 },
416 [0x02] = KEY_2, 461 { 0x02, KEY_2 },
417 [0x03] = KEY_3, 462 { 0x03, KEY_3 },
418 [0x04] = KEY_4, 463 { 0x04, KEY_4 },
419 [0x05] = KEY_5, 464 { 0x05, KEY_5 },
420 [0x06] = KEY_6, 465 { 0x06, KEY_6 },
421 [0x07] = KEY_7, 466 { 0x07, KEY_7 },
422 [0x08] = KEY_8, 467 { 0x08, KEY_8 },
423 [0x09] = KEY_9, 468 { 0x09, KEY_9 },
424 469
425 [0x0b] = KEY_TUNER, /* tv/fm */ 470 { 0x0b, KEY_TUNER }, /* tv/fm */
426 [0x0c] = KEY_SEARCH, /* scan */ 471 { 0x0c, KEY_SEARCH }, /* scan */
427 [0x0d] = KEY_STOP, 472 { 0x0d, KEY_STOP },
428 [0x0e] = KEY_PAUSE, 473 { 0x0e, KEY_PAUSE },
429 [0x0f] = KEY_LIST, /* source */ 474 { 0x0f, KEY_LIST }, /* source */
430 475
431 [0x10] = KEY_MUTE, 476 { 0x10, KEY_MUTE },
432 [0x11] = KEY_REWIND, /* backward << */ 477 { 0x11, KEY_REWIND }, /* backward << */
433 [0x12] = KEY_POWER, 478 { 0x12, KEY_POWER },
434 [0x13] = KEY_CAMERA, /* snap */ 479 { 0x13, KEY_CAMERA }, /* snap */
435 [0x14] = KEY_AUDIO, /* stereo */ 480 { 0x14, KEY_AUDIO }, /* stereo */
436 [0x15] = KEY_CLEAR, /* reset */ 481 { 0x15, KEY_CLEAR }, /* reset */
437 [0x16] = KEY_PLAY, 482 { 0x16, KEY_PLAY },
438 [0x17] = KEY_ENTER, 483 { 0x17, KEY_ENTER },
439 [0x18] = KEY_ZOOM, /* full screen */ 484 { 0x18, KEY_ZOOM }, /* full screen */
440 [0x19] = KEY_FASTFORWARD, /* forward >> */ 485 { 0x19, KEY_FASTFORWARD }, /* forward >> */
441 [0x1a] = KEY_CHANNELUP, 486 { 0x1a, KEY_CHANNELUP },
442 [0x1b] = KEY_VOLUMEUP, 487 { 0x1b, KEY_VOLUMEUP },
443 [0x1c] = KEY_INFO, /* preview */ 488 { 0x1c, KEY_INFO }, /* preview */
444 [0x1d] = KEY_RECORD, /* record */ 489 { 0x1d, KEY_RECORD }, /* record */
445 [0x1e] = KEY_CHANNELDOWN, 490 { 0x1e, KEY_CHANNELDOWN },
446 [0x1f] = KEY_VOLUMEDOWN, 491 { 0x1f, KEY_VOLUMEDOWN },
447}; 492};
448EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvb_t); 493
494struct ir_scancode_table ir_codes_dntv_live_dvb_t_table = {
495 .scan = ir_codes_dntv_live_dvb_t,
496 .size = ARRAY_SIZE(ir_codes_dntv_live_dvb_t),
497};
498EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvb_t_table);
449 499
450/* ---------------------------------------------------------------------- */ 500/* ---------------------------------------------------------------------- */
451 501
452/* IO-DATA BCTV7E Remote */ 502/* IO-DATA BCTV7E Remote */
453IR_KEYTAB_TYPE ir_codes_iodata_bctv7e[IR_KEYTAB_SIZE] = { 503static struct ir_scancode ir_codes_iodata_bctv7e[] = {
454 [0x40] = KEY_TV, 504 { 0x40, KEY_TV },
455 [0x20] = KEY_RADIO, /* FM */ 505 { 0x20, KEY_RADIO }, /* FM */
456 [0x60] = KEY_EPG, 506 { 0x60, KEY_EPG },
457 [0x00] = KEY_POWER, 507 { 0x00, KEY_POWER },
458 508
459 /* Keys 0 to 9 */ 509 /* Keys 0 to 9 */
460 [0x44] = KEY_0, /* 10 */ 510 { 0x44, KEY_0 }, /* 10 */
461 [0x50] = KEY_1, 511 { 0x50, KEY_1 },
462 [0x30] = KEY_2, 512 { 0x30, KEY_2 },
463 [0x70] = KEY_3, 513 { 0x70, KEY_3 },
464 [0x48] = KEY_4, 514 { 0x48, KEY_4 },
465 [0x28] = KEY_5, 515 { 0x28, KEY_5 },
466 [0x68] = KEY_6, 516 { 0x68, KEY_6 },
467 [0x58] = KEY_7, 517 { 0x58, KEY_7 },
468 [0x38] = KEY_8, 518 { 0x38, KEY_8 },
469 [0x78] = KEY_9, 519 { 0x78, KEY_9 },
470 520
471 [0x10] = KEY_L, /* Live */ 521 { 0x10, KEY_L }, /* Live */
472 [0x08] = KEY_TIME, /* Time Shift */ 522 { 0x08, KEY_TIME }, /* Time Shift */
473 523
474 [0x18] = KEY_PLAYPAUSE, /* Play */ 524 { 0x18, KEY_PLAYPAUSE }, /* Play */
475 525
476 [0x24] = KEY_ENTER, /* 11 */ 526 { 0x24, KEY_ENTER }, /* 11 */
477 [0x64] = KEY_ESC, /* 12 */ 527 { 0x64, KEY_ESC }, /* 12 */
478 [0x04] = KEY_M, /* Multi */ 528 { 0x04, KEY_M }, /* Multi */
479 529
480 [0x54] = KEY_VIDEO, 530 { 0x54, KEY_VIDEO },
481 [0x34] = KEY_CHANNELUP, 531 { 0x34, KEY_CHANNELUP },
482 [0x74] = KEY_VOLUMEUP, 532 { 0x74, KEY_VOLUMEUP },
483 [0x14] = KEY_MUTE, 533 { 0x14, KEY_MUTE },
484 534
485 [0x4c] = KEY_VCR, /* SVIDEO */ 535 { 0x4c, KEY_VCR }, /* SVIDEO */
486 [0x2c] = KEY_CHANNELDOWN, 536 { 0x2c, KEY_CHANNELDOWN },
487 [0x6c] = KEY_VOLUMEDOWN, 537 { 0x6c, KEY_VOLUMEDOWN },
488 [0x0c] = KEY_ZOOM, 538 { 0x0c, KEY_ZOOM },
489 539
490 [0x5c] = KEY_PAUSE, 540 { 0x5c, KEY_PAUSE },
491 [0x3c] = KEY_RED, /* || (red) */ 541 { 0x3c, KEY_RED }, /* || (red) */
492 [0x7c] = KEY_RECORD, /* recording */ 542 { 0x7c, KEY_RECORD }, /* recording */
493 [0x1c] = KEY_STOP, 543 { 0x1c, KEY_STOP },
494 544
495 [0x41] = KEY_REWIND, /* backward << */ 545 { 0x41, KEY_REWIND }, /* backward << */
496 [0x21] = KEY_PLAY, 546 { 0x21, KEY_PLAY },
497 [0x61] = KEY_FASTFORWARD, /* forward >> */ 547 { 0x61, KEY_FASTFORWARD }, /* forward >> */
498 [0x01] = KEY_NEXT, /* skip >| */ 548 { 0x01, KEY_NEXT }, /* skip >| */
499}; 549};
500EXPORT_SYMBOL_GPL(ir_codes_iodata_bctv7e); 550
551struct ir_scancode_table ir_codes_iodata_bctv7e_table = {
552 .scan = ir_codes_iodata_bctv7e,
553 .size = ARRAY_SIZE(ir_codes_iodata_bctv7e),
554};
555EXPORT_SYMBOL_GPL(ir_codes_iodata_bctv7e_table);
501 556
502/* ---------------------------------------------------------------------- */ 557/* ---------------------------------------------------------------------- */
503 558
504/* ADS Tech Instant TV DVB-T PCI Remote */ 559/* ADS Tech Instant TV DVB-T PCI Remote */
505IR_KEYTAB_TYPE ir_codes_adstech_dvb_t_pci[IR_KEYTAB_SIZE] = { 560static struct ir_scancode ir_codes_adstech_dvb_t_pci[] = {
506 /* Keys 0 to 9 */ 561 /* Keys 0 to 9 */
507 [0x4d] = KEY_0, 562 { 0x4d, KEY_0 },
508 [0x57] = KEY_1, 563 { 0x57, KEY_1 },
509 [0x4f] = KEY_2, 564 { 0x4f, KEY_2 },
510 [0x53] = KEY_3, 565 { 0x53, KEY_3 },
511 [0x56] = KEY_4, 566 { 0x56, KEY_4 },
512 [0x4e] = KEY_5, 567 { 0x4e, KEY_5 },
513 [0x5e] = KEY_6, 568 { 0x5e, KEY_6 },
514 [0x54] = KEY_7, 569 { 0x54, KEY_7 },
515 [0x4c] = KEY_8, 570 { 0x4c, KEY_8 },
516 [0x5c] = KEY_9, 571 { 0x5c, KEY_9 },
517 572
518 [0x5b] = KEY_POWER, 573 { 0x5b, KEY_POWER },
519 [0x5f] = KEY_MUTE, 574 { 0x5f, KEY_MUTE },
520 [0x55] = KEY_GOTO, 575 { 0x55, KEY_GOTO },
521 [0x5d] = KEY_SEARCH, 576 { 0x5d, KEY_SEARCH },
522 [0x17] = KEY_EPG, /* Guide */ 577 { 0x17, KEY_EPG }, /* Guide */
523 [0x1f] = KEY_MENU, 578 { 0x1f, KEY_MENU },
524 [0x0f] = KEY_UP, 579 { 0x0f, KEY_UP },
525 [0x46] = KEY_DOWN, 580 { 0x46, KEY_DOWN },
526 [0x16] = KEY_LEFT, 581 { 0x16, KEY_LEFT },
527 [0x1e] = KEY_RIGHT, 582 { 0x1e, KEY_RIGHT },
528 [0x0e] = KEY_SELECT, /* Enter */ 583 { 0x0e, KEY_SELECT }, /* Enter */
529 [0x5a] = KEY_INFO, 584 { 0x5a, KEY_INFO },
530 [0x52] = KEY_EXIT, 585 { 0x52, KEY_EXIT },
531 [0x59] = KEY_PREVIOUS, 586 { 0x59, KEY_PREVIOUS },
532 [0x51] = KEY_NEXT, 587 { 0x51, KEY_NEXT },
533 [0x58] = KEY_REWIND, 588 { 0x58, KEY_REWIND },
534 [0x50] = KEY_FORWARD, 589 { 0x50, KEY_FORWARD },
535 [0x44] = KEY_PLAYPAUSE, 590 { 0x44, KEY_PLAYPAUSE },
536 [0x07] = KEY_STOP, 591 { 0x07, KEY_STOP },
537 [0x1b] = KEY_RECORD, 592 { 0x1b, KEY_RECORD },
538 [0x13] = KEY_TUNER, /* Live */ 593 { 0x13, KEY_TUNER }, /* Live */
539 [0x0a] = KEY_A, 594 { 0x0a, KEY_A },
540 [0x12] = KEY_B, 595 { 0x12, KEY_B },
541 [0x03] = KEY_PROG1, /* 1 */ 596 { 0x03, KEY_PROG1 }, /* 1 */
542 [0x01] = KEY_PROG2, /* 2 */ 597 { 0x01, KEY_PROG2 }, /* 2 */
543 [0x00] = KEY_PROG3, /* 3 */ 598 { 0x00, KEY_PROG3 }, /* 3 */
544 [0x06] = KEY_DVD, 599 { 0x06, KEY_DVD },
545 [0x48] = KEY_AUX, /* Photo */ 600 { 0x48, KEY_AUX }, /* Photo */
546 [0x40] = KEY_VIDEO, 601 { 0x40, KEY_VIDEO },
547 [0x19] = KEY_AUDIO, /* Music */ 602 { 0x19, KEY_AUDIO }, /* Music */
548 [0x0b] = KEY_CHANNELUP, 603 { 0x0b, KEY_CHANNELUP },
549 [0x08] = KEY_CHANNELDOWN, 604 { 0x08, KEY_CHANNELDOWN },
550 [0x15] = KEY_VOLUMEUP, 605 { 0x15, KEY_VOLUMEUP },
551 [0x1c] = KEY_VOLUMEDOWN, 606 { 0x1c, KEY_VOLUMEDOWN },
552}; 607};
553EXPORT_SYMBOL_GPL(ir_codes_adstech_dvb_t_pci); 608
609struct ir_scancode_table ir_codes_adstech_dvb_t_pci_table = {
610 .scan = ir_codes_adstech_dvb_t_pci,
611 .size = ARRAY_SIZE(ir_codes_adstech_dvb_t_pci),
612};
613EXPORT_SYMBOL_GPL(ir_codes_adstech_dvb_t_pci_table);
554 614
555/* ---------------------------------------------------------------------- */ 615/* ---------------------------------------------------------------------- */
556 616
557/* MSI TV@nywhere MASTER remote */ 617/* MSI TV@nywhere MASTER remote */
558 618
559IR_KEYTAB_TYPE ir_codes_msi_tvanywhere[IR_KEYTAB_SIZE] = { 619static struct ir_scancode ir_codes_msi_tvanywhere[] = {
560 /* Keys 0 to 9 */ 620 /* Keys 0 to 9 */
561 [0x00] = KEY_0, 621 { 0x00, KEY_0 },
562 [0x01] = KEY_1, 622 { 0x01, KEY_1 },
563 [0x02] = KEY_2, 623 { 0x02, KEY_2 },
564 [0x03] = KEY_3, 624 { 0x03, KEY_3 },
565 [0x04] = KEY_4, 625 { 0x04, KEY_4 },
566 [0x05] = KEY_5, 626 { 0x05, KEY_5 },
567 [0x06] = KEY_6, 627 { 0x06, KEY_6 },
568 [0x07] = KEY_7, 628 { 0x07, KEY_7 },
569 [0x08] = KEY_8, 629 { 0x08, KEY_8 },
570 [0x09] = KEY_9, 630 { 0x09, KEY_9 },
571 631
572 [0x0c] = KEY_MUTE, 632 { 0x0c, KEY_MUTE },
573 [0x0f] = KEY_SCREEN, /* Full Screen */ 633 { 0x0f, KEY_SCREEN }, /* Full Screen */
574 [0x10] = KEY_FN, /* Funtion */ 634 { 0x10, KEY_FN }, /* Funtion */
575 [0x11] = KEY_TIME, /* Time shift */ 635 { 0x11, KEY_TIME }, /* Time shift */
576 [0x12] = KEY_POWER, 636 { 0x12, KEY_POWER },
577 [0x13] = KEY_MEDIA, /* MTS */ 637 { 0x13, KEY_MEDIA }, /* MTS */
578 [0x14] = KEY_SLOW, 638 { 0x14, KEY_SLOW },
579 [0x16] = KEY_REWIND, /* backward << */ 639 { 0x16, KEY_REWIND }, /* backward << */
580 [0x17] = KEY_ENTER, /* Return */ 640 { 0x17, KEY_ENTER }, /* Return */
581 [0x18] = KEY_FASTFORWARD, /* forward >> */ 641 { 0x18, KEY_FASTFORWARD }, /* forward >> */
582 [0x1a] = KEY_CHANNELUP, 642 { 0x1a, KEY_CHANNELUP },
583 [0x1b] = KEY_VOLUMEUP, 643 { 0x1b, KEY_VOLUMEUP },
584 [0x1e] = KEY_CHANNELDOWN, 644 { 0x1e, KEY_CHANNELDOWN },
585 [0x1f] = KEY_VOLUMEDOWN, 645 { 0x1f, KEY_VOLUMEDOWN },
586}; 646};
587EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere); 647
648struct ir_scancode_table ir_codes_msi_tvanywhere_table = {
649 .scan = ir_codes_msi_tvanywhere,
650 .size = ARRAY_SIZE(ir_codes_msi_tvanywhere),
651};
652EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere_table);
588 653
589/* ---------------------------------------------------------------------- */ 654/* ---------------------------------------------------------------------- */
590 655
@@ -603,7 +668,7 @@ EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere);
603 668
604*/ 669*/
605 670
606IR_KEYTAB_TYPE ir_codes_msi_tvanywhere_plus[IR_KEYTAB_SIZE] = { 671static struct ir_scancode ir_codes_msi_tvanywhere_plus[] = {
607 672
608/* ---- Remote Button Layout ---- 673/* ---- Remote Button Layout ----
609 674
@@ -625,567 +690,627 @@ IR_KEYTAB_TYPE ir_codes_msi_tvanywhere_plus[IR_KEYTAB_SIZE] = {
625 << FUNC >> RESET 690 << FUNC >> RESET
626*/ 691*/
627 692
628 [0x01] = KEY_1, /* 1 */ 693 { 0x01, KEY_1 }, /* 1 */
629 [0x0b] = KEY_2, /* 2 */ 694 { 0x0b, KEY_2 }, /* 2 */
630 [0x1b] = KEY_3, /* 3 */ 695 { 0x1b, KEY_3 }, /* 3 */
631 [0x05] = KEY_4, /* 4 */ 696 { 0x05, KEY_4 }, /* 4 */
632 [0x09] = KEY_5, /* 5 */ 697 { 0x09, KEY_5 }, /* 5 */
633 [0x15] = KEY_6, /* 6 */ 698 { 0x15, KEY_6 }, /* 6 */
634 [0x06] = KEY_7, /* 7 */ 699 { 0x06, KEY_7 }, /* 7 */
635 [0x0a] = KEY_8, /* 8 */ 700 { 0x0a, KEY_8 }, /* 8 */
636 [0x12] = KEY_9, /* 9 */ 701 { 0x12, KEY_9 }, /* 9 */
637 [0x02] = KEY_0, /* 0 */ 702 { 0x02, KEY_0 }, /* 0 */
638 [0x10] = KEY_KPPLUS, /* + */ 703 { 0x10, KEY_KPPLUS }, /* + */
639 [0x13] = KEY_AGAIN, /* Recall */ 704 { 0x13, KEY_AGAIN }, /* Recall */
640 705
641 [0x1e] = KEY_POWER, /* Power */ 706 { 0x1e, KEY_POWER }, /* Power */
642 [0x07] = KEY_TUNER, /* Source */ 707 { 0x07, KEY_TUNER }, /* Source */
643 [0x1c] = KEY_SEARCH, /* Scan */ 708 { 0x1c, KEY_SEARCH }, /* Scan */
644 [0x18] = KEY_MUTE, /* Mute */ 709 { 0x18, KEY_MUTE }, /* Mute */
645 710
646 [0x03] = KEY_RADIO, /* TV/FM */ 711 { 0x03, KEY_RADIO }, /* TV/FM */
647 /* The next four keys are duplicates that appear to send the 712 /* The next four keys are duplicates that appear to send the
648 same IR code as Ch+, Ch-, >>, and << . The raw code assigned 713 same IR code as Ch+, Ch-, >>, and << . The raw code assigned
649 to them is the actual code + 0x20 - they will never be 714 to them is the actual code + 0x20 - they will never be
650 detected as such unless some way is discovered to distinguish 715 detected as such unless some way is discovered to distinguish
651 these buttons from those that have the same code. */ 716 these buttons from those that have the same code. */
652 [0x3f] = KEY_RIGHT, /* |> and Ch+ */ 717 { 0x3f, KEY_RIGHT }, /* |> and Ch+ */
653 [0x37] = KEY_LEFT, /* <| and Ch- */ 718 { 0x37, KEY_LEFT }, /* <| and Ch- */
654 [0x2c] = KEY_UP, /* ^^Up and >> */ 719 { 0x2c, KEY_UP }, /* ^^Up and >> */
655 [0x24] = KEY_DOWN, /* vvDn and << */ 720 { 0x24, KEY_DOWN }, /* vvDn and << */
656 721
657 [0x00] = KEY_RECORD, /* Record */ 722 { 0x00, KEY_RECORD }, /* Record */
658 [0x08] = KEY_STOP, /* Stop */ 723 { 0x08, KEY_STOP }, /* Stop */
659 [0x11] = KEY_PLAY, /* Play */ 724 { 0x11, KEY_PLAY }, /* Play */
660 725
661 [0x0f] = KEY_CLOSE, /* Minimize */ 726 { 0x0f, KEY_CLOSE }, /* Minimize */
662 [0x19] = KEY_ZOOM, /* Zoom */ 727 { 0x19, KEY_ZOOM }, /* Zoom */
663 [0x1a] = KEY_CAMERA, /* Snapshot */ 728 { 0x1a, KEY_CAMERA }, /* Snapshot */
664 [0x0d] = KEY_LANGUAGE, /* MTS */ 729 { 0x0d, KEY_LANGUAGE }, /* MTS */
665 730
666 [0x14] = KEY_VOLUMEDOWN,/* Vol- */ 731 { 0x14, KEY_VOLUMEDOWN }, /* Vol- */
667 [0x16] = KEY_VOLUMEUP, /* Vol+ */ 732 { 0x16, KEY_VOLUMEUP }, /* Vol+ */
668 [0x17] = KEY_CHANNELDOWN,/* Ch- */ 733 { 0x17, KEY_CHANNELDOWN }, /* Ch- */
669 [0x1f] = KEY_CHANNELUP, /* Ch+ */ 734 { 0x1f, KEY_CHANNELUP }, /* Ch+ */
735
736 { 0x04, KEY_REWIND }, /* << */
737 { 0x0e, KEY_MENU }, /* Function */
738 { 0x0c, KEY_FASTFORWARD }, /* >> */
739 { 0x1d, KEY_RESTART }, /* Reset */
740};
670 741
671 [0x04] = KEY_REWIND, /* << */ 742struct ir_scancode_table ir_codes_msi_tvanywhere_plus_table = {
672 [0x0e] = KEY_MENU, /* Function */ 743 .scan = ir_codes_msi_tvanywhere_plus,
673 [0x0c] = KEY_FASTFORWARD,/* >> */ 744 .size = ARRAY_SIZE(ir_codes_msi_tvanywhere_plus),
674 [0x1d] = KEY_RESTART, /* Reset */
675}; 745};
676EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere_plus); 746EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere_plus_table);
677 747
678/* ---------------------------------------------------------------------- */ 748/* ---------------------------------------------------------------------- */
679 749
680/* Cinergy 1400 DVB-T */ 750/* Cinergy 1400 DVB-T */
681IR_KEYTAB_TYPE ir_codes_cinergy_1400[IR_KEYTAB_SIZE] = { 751static struct ir_scancode ir_codes_cinergy_1400[] = {
682 [0x01] = KEY_POWER, 752 { 0x01, KEY_POWER },
683 [0x02] = KEY_1, 753 { 0x02, KEY_1 },
684 [0x03] = KEY_2, 754 { 0x03, KEY_2 },
685 [0x04] = KEY_3, 755 { 0x04, KEY_3 },
686 [0x05] = KEY_4, 756 { 0x05, KEY_4 },
687 [0x06] = KEY_5, 757 { 0x06, KEY_5 },
688 [0x07] = KEY_6, 758 { 0x07, KEY_6 },
689 [0x08] = KEY_7, 759 { 0x08, KEY_7 },
690 [0x09] = KEY_8, 760 { 0x09, KEY_8 },
691 [0x0a] = KEY_9, 761 { 0x0a, KEY_9 },
692 [0x0c] = KEY_0, 762 { 0x0c, KEY_0 },
693 763
694 [0x0b] = KEY_VIDEO, 764 { 0x0b, KEY_VIDEO },
695 [0x0d] = KEY_REFRESH, 765 { 0x0d, KEY_REFRESH },
696 [0x0e] = KEY_SELECT, 766 { 0x0e, KEY_SELECT },
697 [0x0f] = KEY_EPG, 767 { 0x0f, KEY_EPG },
698 [0x10] = KEY_UP, 768 { 0x10, KEY_UP },
699 [0x11] = KEY_LEFT, 769 { 0x11, KEY_LEFT },
700 [0x12] = KEY_OK, 770 { 0x12, KEY_OK },
701 [0x13] = KEY_RIGHT, 771 { 0x13, KEY_RIGHT },
702 [0x14] = KEY_DOWN, 772 { 0x14, KEY_DOWN },
703 [0x15] = KEY_TEXT, 773 { 0x15, KEY_TEXT },
704 [0x16] = KEY_INFO, 774 { 0x16, KEY_INFO },
705 775
706 [0x17] = KEY_RED, 776 { 0x17, KEY_RED },
707 [0x18] = KEY_GREEN, 777 { 0x18, KEY_GREEN },
708 [0x19] = KEY_YELLOW, 778 { 0x19, KEY_YELLOW },
709 [0x1a] = KEY_BLUE, 779 { 0x1a, KEY_BLUE },
710 780
711 [0x1b] = KEY_CHANNELUP, 781 { 0x1b, KEY_CHANNELUP },
712 [0x1c] = KEY_VOLUMEUP, 782 { 0x1c, KEY_VOLUMEUP },
713 [0x1d] = KEY_MUTE, 783 { 0x1d, KEY_MUTE },
714 [0x1e] = KEY_VOLUMEDOWN, 784 { 0x1e, KEY_VOLUMEDOWN },
715 [0x1f] = KEY_CHANNELDOWN, 785 { 0x1f, KEY_CHANNELDOWN },
716 786
717 [0x40] = KEY_PAUSE, 787 { 0x40, KEY_PAUSE },
718 [0x4c] = KEY_PLAY, 788 { 0x4c, KEY_PLAY },
719 [0x58] = KEY_RECORD, 789 { 0x58, KEY_RECORD },
720 [0x54] = KEY_PREVIOUS, 790 { 0x54, KEY_PREVIOUS },
721 [0x48] = KEY_STOP, 791 { 0x48, KEY_STOP },
722 [0x5c] = KEY_NEXT, 792 { 0x5c, KEY_NEXT },
723}; 793};
724EXPORT_SYMBOL_GPL(ir_codes_cinergy_1400); 794
795struct ir_scancode_table ir_codes_cinergy_1400_table = {
796 .scan = ir_codes_cinergy_1400,
797 .size = ARRAY_SIZE(ir_codes_cinergy_1400),
798};
799EXPORT_SYMBOL_GPL(ir_codes_cinergy_1400_table);
725 800
726/* ---------------------------------------------------------------------- */ 801/* ---------------------------------------------------------------------- */
727 802
728/* AVERTV STUDIO 303 Remote */ 803/* AVERTV STUDIO 303 Remote */
729IR_KEYTAB_TYPE ir_codes_avertv_303[IR_KEYTAB_SIZE] = { 804static struct ir_scancode ir_codes_avertv_303[] = {
730 [0x2a] = KEY_1, 805 { 0x2a, KEY_1 },
731 [0x32] = KEY_2, 806 { 0x32, KEY_2 },
732 [0x3a] = KEY_3, 807 { 0x3a, KEY_3 },
733 [0x4a] = KEY_4, 808 { 0x4a, KEY_4 },
734 [0x52] = KEY_5, 809 { 0x52, KEY_5 },
735 [0x5a] = KEY_6, 810 { 0x5a, KEY_6 },
736 [0x6a] = KEY_7, 811 { 0x6a, KEY_7 },
737 [0x72] = KEY_8, 812 { 0x72, KEY_8 },
738 [0x7a] = KEY_9, 813 { 0x7a, KEY_9 },
739 [0x0e] = KEY_0, 814 { 0x0e, KEY_0 },
740 815
741 [0x02] = KEY_POWER, 816 { 0x02, KEY_POWER },
742 [0x22] = KEY_VIDEO, 817 { 0x22, KEY_VIDEO },
743 [0x42] = KEY_AUDIO, 818 { 0x42, KEY_AUDIO },
744 [0x62] = KEY_ZOOM, 819 { 0x62, KEY_ZOOM },
745 [0x0a] = KEY_TV, 820 { 0x0a, KEY_TV },
746 [0x12] = KEY_CD, 821 { 0x12, KEY_CD },
747 [0x1a] = KEY_TEXT, 822 { 0x1a, KEY_TEXT },
748 823
749 [0x16] = KEY_SUBTITLE, 824 { 0x16, KEY_SUBTITLE },
750 [0x1e] = KEY_REWIND, 825 { 0x1e, KEY_REWIND },
751 [0x06] = KEY_PRINT, 826 { 0x06, KEY_PRINT },
752 827
753 [0x2e] = KEY_SEARCH, 828 { 0x2e, KEY_SEARCH },
754 [0x36] = KEY_SLEEP, 829 { 0x36, KEY_SLEEP },
755 [0x3e] = KEY_SHUFFLE, 830 { 0x3e, KEY_SHUFFLE },
756 [0x26] = KEY_MUTE, 831 { 0x26, KEY_MUTE },
757 832
758 [0x4e] = KEY_RECORD, 833 { 0x4e, KEY_RECORD },
759 [0x56] = KEY_PAUSE, 834 { 0x56, KEY_PAUSE },
760 [0x5e] = KEY_STOP, 835 { 0x5e, KEY_STOP },
761 [0x46] = KEY_PLAY, 836 { 0x46, KEY_PLAY },
762 837
763 [0x6e] = KEY_RED, 838 { 0x6e, KEY_RED },
764 [0x0b] = KEY_GREEN, 839 { 0x0b, KEY_GREEN },
765 [0x66] = KEY_YELLOW, 840 { 0x66, KEY_YELLOW },
766 [0x03] = KEY_BLUE, 841 { 0x03, KEY_BLUE },
767 842
768 [0x76] = KEY_LEFT, 843 { 0x76, KEY_LEFT },
769 [0x7e] = KEY_RIGHT, 844 { 0x7e, KEY_RIGHT },
770 [0x13] = KEY_DOWN, 845 { 0x13, KEY_DOWN },
771 [0x1b] = KEY_UP, 846 { 0x1b, KEY_UP },
772}; 847};
773EXPORT_SYMBOL_GPL(ir_codes_avertv_303); 848
849struct ir_scancode_table ir_codes_avertv_303_table = {
850 .scan = ir_codes_avertv_303,
851 .size = ARRAY_SIZE(ir_codes_avertv_303),
852};
853EXPORT_SYMBOL_GPL(ir_codes_avertv_303_table);
774 854
775/* ---------------------------------------------------------------------- */ 855/* ---------------------------------------------------------------------- */
776 856
777/* DigitalNow DNTV Live! DVB-T Pro Remote */ 857/* DigitalNow DNTV Live! DVB-T Pro Remote */
778IR_KEYTAB_TYPE ir_codes_dntv_live_dvbt_pro[IR_KEYTAB_SIZE] = { 858static struct ir_scancode ir_codes_dntv_live_dvbt_pro[] = {
779 [0x16] = KEY_POWER, 859 { 0x16, KEY_POWER },
780 [0x5b] = KEY_HOME, 860 { 0x5b, KEY_HOME },
781 861
782 [0x55] = KEY_TV, /* live tv */ 862 { 0x55, KEY_TV }, /* live tv */
783 [0x58] = KEY_TUNER, /* digital Radio */ 863 { 0x58, KEY_TUNER }, /* digital Radio */
784 [0x5a] = KEY_RADIO, /* FM radio */ 864 { 0x5a, KEY_RADIO }, /* FM radio */
785 [0x59] = KEY_DVD, /* dvd menu */ 865 { 0x59, KEY_DVD }, /* dvd menu */
786 [0x03] = KEY_1, 866 { 0x03, KEY_1 },
787 [0x01] = KEY_2, 867 { 0x01, KEY_2 },
788 [0x06] = KEY_3, 868 { 0x06, KEY_3 },
789 [0x09] = KEY_4, 869 { 0x09, KEY_4 },
790 [0x1d] = KEY_5, 870 { 0x1d, KEY_5 },
791 [0x1f] = KEY_6, 871 { 0x1f, KEY_6 },
792 [0x0d] = KEY_7, 872 { 0x0d, KEY_7 },
793 [0x19] = KEY_8, 873 { 0x19, KEY_8 },
794 [0x1b] = KEY_9, 874 { 0x1b, KEY_9 },
795 [0x0c] = KEY_CANCEL, 875 { 0x0c, KEY_CANCEL },
796 [0x15] = KEY_0, 876 { 0x15, KEY_0 },
797 [0x4a] = KEY_CLEAR, 877 { 0x4a, KEY_CLEAR },
798 [0x13] = KEY_BACK, 878 { 0x13, KEY_BACK },
799 [0x00] = KEY_TAB, 879 { 0x00, KEY_TAB },
800 [0x4b] = KEY_UP, 880 { 0x4b, KEY_UP },
801 [0x4e] = KEY_LEFT, 881 { 0x4e, KEY_LEFT },
802 [0x4f] = KEY_OK, 882 { 0x4f, KEY_OK },
803 [0x52] = KEY_RIGHT, 883 { 0x52, KEY_RIGHT },
804 [0x51] = KEY_DOWN, 884 { 0x51, KEY_DOWN },
805 [0x1e] = KEY_VOLUMEUP, 885 { 0x1e, KEY_VOLUMEUP },
806 [0x0a] = KEY_VOLUMEDOWN, 886 { 0x0a, KEY_VOLUMEDOWN },
807 [0x02] = KEY_CHANNELDOWN, 887 { 0x02, KEY_CHANNELDOWN },
808 [0x05] = KEY_CHANNELUP, 888 { 0x05, KEY_CHANNELUP },
809 [0x11] = KEY_RECORD, 889 { 0x11, KEY_RECORD },
810 [0x14] = KEY_PLAY, 890 { 0x14, KEY_PLAY },
811 [0x4c] = KEY_PAUSE, 891 { 0x4c, KEY_PAUSE },
812 [0x1a] = KEY_STOP, 892 { 0x1a, KEY_STOP },
813 [0x40] = KEY_REWIND, 893 { 0x40, KEY_REWIND },
814 [0x12] = KEY_FASTFORWARD, 894 { 0x12, KEY_FASTFORWARD },
815 [0x41] = KEY_PREVIOUSSONG, /* replay |< */ 895 { 0x41, KEY_PREVIOUSSONG }, /* replay |< */
816 [0x42] = KEY_NEXTSONG, /* skip >| */ 896 { 0x42, KEY_NEXTSONG }, /* skip >| */
817 [0x54] = KEY_CAMERA, /* capture */ 897 { 0x54, KEY_CAMERA }, /* capture */
818 [0x50] = KEY_LANGUAGE, /* sap */ 898 { 0x50, KEY_LANGUAGE }, /* sap */
819 [0x47] = KEY_TV2, /* pip */ 899 { 0x47, KEY_TV2 }, /* pip */
820 [0x4d] = KEY_SCREEN, 900 { 0x4d, KEY_SCREEN },
821 [0x43] = KEY_SUBTITLE, 901 { 0x43, KEY_SUBTITLE },
822 [0x10] = KEY_MUTE, 902 { 0x10, KEY_MUTE },
823 [0x49] = KEY_AUDIO, /* l/r */ 903 { 0x49, KEY_AUDIO }, /* l/r */
824 [0x07] = KEY_SLEEP, 904 { 0x07, KEY_SLEEP },
825 [0x08] = KEY_VIDEO, /* a/v */ 905 { 0x08, KEY_VIDEO }, /* a/v */
826 [0x0e] = KEY_PREVIOUS, /* recall */ 906 { 0x0e, KEY_PREVIOUS }, /* recall */
827 [0x45] = KEY_ZOOM, /* zoom + */ 907 { 0x45, KEY_ZOOM }, /* zoom + */
828 [0x46] = KEY_ANGLE, /* zoom - */ 908 { 0x46, KEY_ANGLE }, /* zoom - */
829 [0x56] = KEY_RED, 909 { 0x56, KEY_RED },
830 [0x57] = KEY_GREEN, 910 { 0x57, KEY_GREEN },
831 [0x5c] = KEY_YELLOW, 911 { 0x5c, KEY_YELLOW },
832 [0x5d] = KEY_BLUE, 912 { 0x5d, KEY_BLUE },
833}; 913};
834EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvbt_pro); 914
835 915struct ir_scancode_table ir_codes_dntv_live_dvbt_pro_table = {
836IR_KEYTAB_TYPE ir_codes_em_terratec[IR_KEYTAB_SIZE] = { 916 .scan = ir_codes_dntv_live_dvbt_pro,
837 [0x01] = KEY_CHANNEL, 917 .size = ARRAY_SIZE(ir_codes_dntv_live_dvbt_pro),
838 [0x02] = KEY_SELECT, 918};
839 [0x03] = KEY_MUTE, 919EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvbt_pro_table);
840 [0x04] = KEY_POWER, 920
841 [0x05] = KEY_1, 921static struct ir_scancode ir_codes_em_terratec[] = {
842 [0x06] = KEY_2, 922 { 0x01, KEY_CHANNEL },
843 [0x07] = KEY_3, 923 { 0x02, KEY_SELECT },
844 [0x08] = KEY_CHANNELUP, 924 { 0x03, KEY_MUTE },
845 [0x09] = KEY_4, 925 { 0x04, KEY_POWER },
846 [0x0a] = KEY_5, 926 { 0x05, KEY_1 },
847 [0x0b] = KEY_6, 927 { 0x06, KEY_2 },
848 [0x0c] = KEY_CHANNELDOWN, 928 { 0x07, KEY_3 },
849 [0x0d] = KEY_7, 929 { 0x08, KEY_CHANNELUP },
850 [0x0e] = KEY_8, 930 { 0x09, KEY_4 },
851 [0x0f] = KEY_9, 931 { 0x0a, KEY_5 },
852 [0x10] = KEY_VOLUMEUP, 932 { 0x0b, KEY_6 },
853 [0x11] = KEY_0, 933 { 0x0c, KEY_CHANNELDOWN },
854 [0x12] = KEY_MENU, 934 { 0x0d, KEY_7 },
855 [0x13] = KEY_PRINT, 935 { 0x0e, KEY_8 },
856 [0x14] = KEY_VOLUMEDOWN, 936 { 0x0f, KEY_9 },
857 [0x16] = KEY_PAUSE, 937 { 0x10, KEY_VOLUMEUP },
858 [0x18] = KEY_RECORD, 938 { 0x11, KEY_0 },
859 [0x19] = KEY_REWIND, 939 { 0x12, KEY_MENU },
860 [0x1a] = KEY_PLAY, 940 { 0x13, KEY_PRINT },
861 [0x1b] = KEY_FORWARD, 941 { 0x14, KEY_VOLUMEDOWN },
862 [0x1c] = KEY_BACKSPACE, 942 { 0x16, KEY_PAUSE },
863 [0x1e] = KEY_STOP, 943 { 0x18, KEY_RECORD },
864 [0x40] = KEY_ZOOM, 944 { 0x19, KEY_REWIND },
865}; 945 { 0x1a, KEY_PLAY },
866EXPORT_SYMBOL_GPL(ir_codes_em_terratec); 946 { 0x1b, KEY_FORWARD },
867 947 { 0x1c, KEY_BACKSPACE },
868IR_KEYTAB_TYPE ir_codes_pinnacle_grey[IR_KEYTAB_SIZE] = { 948 { 0x1e, KEY_STOP },
869 [0x3a] = KEY_0, 949 { 0x40, KEY_ZOOM },
870 [0x31] = KEY_1, 950};
871 [0x32] = KEY_2, 951
872 [0x33] = KEY_3, 952struct ir_scancode_table ir_codes_em_terratec_table = {
873 [0x34] = KEY_4, 953 .scan = ir_codes_em_terratec,
874 [0x35] = KEY_5, 954 .size = ARRAY_SIZE(ir_codes_em_terratec),
875 [0x36] = KEY_6, 955};
876 [0x37] = KEY_7, 956EXPORT_SYMBOL_GPL(ir_codes_em_terratec_table);
877 [0x38] = KEY_8, 957
878 [0x39] = KEY_9, 958static struct ir_scancode ir_codes_pinnacle_grey[] = {
879 959 { 0x3a, KEY_0 },
880 [0x2f] = KEY_POWER, 960 { 0x31, KEY_1 },
881 961 { 0x32, KEY_2 },
882 [0x2e] = KEY_P, 962 { 0x33, KEY_3 },
883 [0x1f] = KEY_L, 963 { 0x34, KEY_4 },
884 [0x2b] = KEY_I, 964 { 0x35, KEY_5 },
885 965 { 0x36, KEY_6 },
886 [0x2d] = KEY_SCREEN, 966 { 0x37, KEY_7 },
887 [0x1e] = KEY_ZOOM, 967 { 0x38, KEY_8 },
888 [0x1b] = KEY_VOLUMEUP, 968 { 0x39, KEY_9 },
889 [0x0f] = KEY_VOLUMEDOWN, 969
890 [0x17] = KEY_CHANNELUP, 970 { 0x2f, KEY_POWER },
891 [0x1c] = KEY_CHANNELDOWN, 971
892 [0x25] = KEY_INFO, 972 { 0x2e, KEY_P },
893 973 { 0x1f, KEY_L },
894 [0x3c] = KEY_MUTE, 974 { 0x2b, KEY_I },
895 975
896 [0x3d] = KEY_LEFT, 976 { 0x2d, KEY_SCREEN },
897 [0x3b] = KEY_RIGHT, 977 { 0x1e, KEY_ZOOM },
898 978 { 0x1b, KEY_VOLUMEUP },
899 [0x3f] = KEY_UP, 979 { 0x0f, KEY_VOLUMEDOWN },
900 [0x3e] = KEY_DOWN, 980 { 0x17, KEY_CHANNELUP },
901 [0x1a] = KEY_ENTER, 981 { 0x1c, KEY_CHANNELDOWN },
902 982 { 0x25, KEY_INFO },
903 [0x1d] = KEY_MENU, 983
904 [0x19] = KEY_AGAIN, 984 { 0x3c, KEY_MUTE },
905 [0x16] = KEY_PREVIOUSSONG, 985
906 [0x13] = KEY_NEXTSONG, 986 { 0x3d, KEY_LEFT },
907 [0x15] = KEY_PAUSE, 987 { 0x3b, KEY_RIGHT },
908 [0x0e] = KEY_REWIND, 988
909 [0x0d] = KEY_PLAY, 989 { 0x3f, KEY_UP },
910 [0x0b] = KEY_STOP, 990 { 0x3e, KEY_DOWN },
911 [0x07] = KEY_FORWARD, 991 { 0x1a, KEY_ENTER },
912 [0x27] = KEY_RECORD, 992
913 [0x26] = KEY_TUNER, 993 { 0x1d, KEY_MENU },
914 [0x29] = KEY_TEXT, 994 { 0x19, KEY_AGAIN },
915 [0x2a] = KEY_MEDIA, 995 { 0x16, KEY_PREVIOUSSONG },
916 [0x18] = KEY_EPG, 996 { 0x13, KEY_NEXTSONG },
917}; 997 { 0x15, KEY_PAUSE },
918EXPORT_SYMBOL_GPL(ir_codes_pinnacle_grey); 998 { 0x0e, KEY_REWIND },
919 999 { 0x0d, KEY_PLAY },
920IR_KEYTAB_TYPE ir_codes_flyvideo[IR_KEYTAB_SIZE] = { 1000 { 0x0b, KEY_STOP },
921 [0x0f] = KEY_0, 1001 { 0x07, KEY_FORWARD },
922 [0x03] = KEY_1, 1002 { 0x27, KEY_RECORD },
923 [0x04] = KEY_2, 1003 { 0x26, KEY_TUNER },
924 [0x05] = KEY_3, 1004 { 0x29, KEY_TEXT },
925 [0x07] = KEY_4, 1005 { 0x2a, KEY_MEDIA },
926 [0x08] = KEY_5, 1006 { 0x18, KEY_EPG },
927 [0x09] = KEY_6, 1007};
928 [0x0b] = KEY_7, 1008
929 [0x0c] = KEY_8, 1009struct ir_scancode_table ir_codes_pinnacle_grey_table = {
930 [0x0d] = KEY_9, 1010 .scan = ir_codes_pinnacle_grey,
931 1011 .size = ARRAY_SIZE(ir_codes_pinnacle_grey),
932 [0x0e] = KEY_MODE, /* Air/Cable */ 1012};
933 [0x11] = KEY_VIDEO, /* Video */ 1013EXPORT_SYMBOL_GPL(ir_codes_pinnacle_grey_table);
934 [0x15] = KEY_AUDIO, /* Audio */ 1014
935 [0x00] = KEY_POWER, /* Power */ 1015static struct ir_scancode ir_codes_flyvideo[] = {
936 [0x18] = KEY_TUNER, /* AV Source */ 1016 { 0x0f, KEY_0 },
937 [0x02] = KEY_ZOOM, /* Fullscreen */ 1017 { 0x03, KEY_1 },
938 [0x1a] = KEY_LANGUAGE, /* Stereo */ 1018 { 0x04, KEY_2 },
939 [0x1b] = KEY_MUTE, /* Mute */ 1019 { 0x05, KEY_3 },
940 [0x14] = KEY_VOLUMEUP, /* Volume + */ 1020 { 0x07, KEY_4 },
941 [0x17] = KEY_VOLUMEDOWN,/* Volume - */ 1021 { 0x08, KEY_5 },
942 [0x12] = KEY_CHANNELUP, /* Channel + */ 1022 { 0x09, KEY_6 },
943 [0x13] = KEY_CHANNELDOWN,/* Channel - */ 1023 { 0x0b, KEY_7 },
944 [0x06] = KEY_AGAIN, /* Recall */ 1024 { 0x0c, KEY_8 },
945 [0x10] = KEY_ENTER, /* Enter */ 1025 { 0x0d, KEY_9 },
946 1026
947 [0x19] = KEY_BACK, /* Rewind ( <<< ) */ 1027 { 0x0e, KEY_MODE }, /* Air/Cable */
948 [0x1f] = KEY_FORWARD, /* Forward ( >>> ) */ 1028 { 0x11, KEY_VIDEO }, /* Video */
949 [0x0a] = KEY_ANGLE, /* no label, may be used as the PAUSE button */ 1029 { 0x15, KEY_AUDIO }, /* Audio */
950}; 1030 { 0x00, KEY_POWER }, /* Power */
951EXPORT_SYMBOL_GPL(ir_codes_flyvideo); 1031 { 0x18, KEY_TUNER }, /* AV Source */
952 1032 { 0x02, KEY_ZOOM }, /* Fullscreen */
953IR_KEYTAB_TYPE ir_codes_flydvb[IR_KEYTAB_SIZE] = { 1033 { 0x1a, KEY_LANGUAGE }, /* Stereo */
954 [0x01] = KEY_ZOOM, /* Full Screen */ 1034 { 0x1b, KEY_MUTE }, /* Mute */
955 [0x00] = KEY_POWER, /* Power */ 1035 { 0x14, KEY_VOLUMEUP }, /* Volume + */
956 1036 { 0x17, KEY_VOLUMEDOWN },/* Volume - */
957 [0x03] = KEY_1, 1037 { 0x12, KEY_CHANNELUP },/* Channel + */
958 [0x04] = KEY_2, 1038 { 0x13, KEY_CHANNELDOWN },/* Channel - */
959 [0x05] = KEY_3, 1039 { 0x06, KEY_AGAIN }, /* Recall */
960 [0x07] = KEY_4, 1040 { 0x10, KEY_ENTER }, /* Enter */
961 [0x08] = KEY_5, 1041
962 [0x09] = KEY_6, 1042 { 0x19, KEY_BACK }, /* Rewind ( <<< ) */
963 [0x0b] = KEY_7, 1043 { 0x1f, KEY_FORWARD }, /* Forward ( >>> ) */
964 [0x0c] = KEY_8, 1044 { 0x0a, KEY_ANGLE }, /* no label, may be used as the PAUSE button */
965 [0x0d] = KEY_9, 1045};
966 [0x06] = KEY_AGAIN, /* Recall */ 1046
967 [0x0f] = KEY_0, 1047struct ir_scancode_table ir_codes_flyvideo_table = {
968 [0x10] = KEY_MUTE, /* Mute */ 1048 .scan = ir_codes_flyvideo,
969 [0x02] = KEY_RADIO, /* TV/Radio */ 1049 .size = ARRAY_SIZE(ir_codes_flyvideo),
970 [0x1b] = KEY_LANGUAGE, /* SAP (Second Audio Program) */ 1050};
971 1051EXPORT_SYMBOL_GPL(ir_codes_flyvideo_table);
972 [0x14] = KEY_VOLUMEUP, /* VOL+ */ 1052
973 [0x17] = KEY_VOLUMEDOWN, /* VOL- */ 1053static struct ir_scancode ir_codes_flydvb[] = {
974 [0x12] = KEY_CHANNELUP, /* CH+ */ 1054 { 0x01, KEY_ZOOM }, /* Full Screen */
975 [0x13] = KEY_CHANNELDOWN, /* CH- */ 1055 { 0x00, KEY_POWER }, /* Power */
976 [0x1d] = KEY_ENTER, /* Enter */ 1056
977 1057 { 0x03, KEY_1 },
978 [0x1a] = KEY_MODE, /* PIP */ 1058 { 0x04, KEY_2 },
979 [0x18] = KEY_TUNER, /* Source */ 1059 { 0x05, KEY_3 },
980 1060 { 0x07, KEY_4 },
981 [0x1e] = KEY_RECORD, /* Record/Pause */ 1061 { 0x08, KEY_5 },
982 [0x15] = KEY_ANGLE, /* Swap (no label on key) */ 1062 { 0x09, KEY_6 },
983 [0x1c] = KEY_PAUSE, /* Timeshift/Pause */ 1063 { 0x0b, KEY_7 },
984 [0x19] = KEY_BACK, /* Rewind << */ 1064 { 0x0c, KEY_8 },
985 [0x0a] = KEY_PLAYPAUSE, /* Play/Pause */ 1065 { 0x0d, KEY_9 },
986 [0x1f] = KEY_FORWARD, /* Forward >> */ 1066 { 0x06, KEY_AGAIN }, /* Recall */
987 [0x16] = KEY_PREVIOUS, /* Back |<< */ 1067 { 0x0f, KEY_0 },
988 [0x11] = KEY_STOP, /* Stop */ 1068 { 0x10, KEY_MUTE }, /* Mute */
989 [0x0e] = KEY_NEXT, /* End >>| */ 1069 { 0x02, KEY_RADIO }, /* TV/Radio */
990}; 1070 { 0x1b, KEY_LANGUAGE }, /* SAP (Second Audio Program) */
991EXPORT_SYMBOL_GPL(ir_codes_flydvb); 1071
992 1072 { 0x14, KEY_VOLUMEUP }, /* VOL+ */
993IR_KEYTAB_TYPE ir_codes_cinergy[IR_KEYTAB_SIZE] = { 1073 { 0x17, KEY_VOLUMEDOWN }, /* VOL- */
994 [0x00] = KEY_0, 1074 { 0x12, KEY_CHANNELUP }, /* CH+ */
995 [0x01] = KEY_1, 1075 { 0x13, KEY_CHANNELDOWN }, /* CH- */
996 [0x02] = KEY_2, 1076 { 0x1d, KEY_ENTER }, /* Enter */
997 [0x03] = KEY_3, 1077
998 [0x04] = KEY_4, 1078 { 0x1a, KEY_MODE }, /* PIP */
999 [0x05] = KEY_5, 1079 { 0x18, KEY_TUNER }, /* Source */
1000 [0x06] = KEY_6, 1080
1001 [0x07] = KEY_7, 1081 { 0x1e, KEY_RECORD }, /* Record/Pause */
1002 [0x08] = KEY_8, 1082 { 0x15, KEY_ANGLE }, /* Swap (no label on key) */
1003 [0x09] = KEY_9, 1083 { 0x1c, KEY_PAUSE }, /* Timeshift/Pause */
1004 1084 { 0x19, KEY_BACK }, /* Rewind << */
1005 [0x0a] = KEY_POWER, 1085 { 0x0a, KEY_PLAYPAUSE }, /* Play/Pause */
1006 [0x0b] = KEY_PROG1, /* app */ 1086 { 0x1f, KEY_FORWARD }, /* Forward >> */
1007 [0x0c] = KEY_ZOOM, /* zoom/fullscreen */ 1087 { 0x16, KEY_PREVIOUS }, /* Back |<< */
1008 [0x0d] = KEY_CHANNELUP, /* channel */ 1088 { 0x11, KEY_STOP }, /* Stop */
1009 [0x0e] = KEY_CHANNELDOWN,/* channel- */ 1089 { 0x0e, KEY_NEXT }, /* End >>| */
1010 [0x0f] = KEY_VOLUMEUP, 1090};
1011 [0x10] = KEY_VOLUMEDOWN, 1091
1012 [0x11] = KEY_TUNER, /* AV */ 1092struct ir_scancode_table ir_codes_flydvb_table = {
1013 [0x12] = KEY_NUMLOCK, /* -/-- */ 1093 .scan = ir_codes_flydvb,
1014 [0x13] = KEY_AUDIO, /* audio */ 1094 .size = ARRAY_SIZE(ir_codes_flydvb),
1015 [0x14] = KEY_MUTE, 1095};
1016 [0x15] = KEY_UP, 1096EXPORT_SYMBOL_GPL(ir_codes_flydvb_table);
1017 [0x16] = KEY_DOWN, 1097
1018 [0x17] = KEY_LEFT, 1098static struct ir_scancode ir_codes_cinergy[] = {
1019 [0x18] = KEY_RIGHT, 1099 { 0x00, KEY_0 },
1020 [0x19] = BTN_LEFT, 1100 { 0x01, KEY_1 },
1021 [0x1a] = BTN_RIGHT, 1101 { 0x02, KEY_2 },
1022 [0x1b] = KEY_WWW, /* text */ 1102 { 0x03, KEY_3 },
1023 [0x1c] = KEY_REWIND, 1103 { 0x04, KEY_4 },
1024 [0x1d] = KEY_FORWARD, 1104 { 0x05, KEY_5 },
1025 [0x1e] = KEY_RECORD, 1105 { 0x06, KEY_6 },
1026 [0x1f] = KEY_PLAY, 1106 { 0x07, KEY_7 },
1027 [0x20] = KEY_PREVIOUSSONG, 1107 { 0x08, KEY_8 },
1028 [0x21] = KEY_NEXTSONG, 1108 { 0x09, KEY_9 },
1029 [0x22] = KEY_PAUSE, 1109
1030 [0x23] = KEY_STOP, 1110 { 0x0a, KEY_POWER },
1031}; 1111 { 0x0b, KEY_PROG1 }, /* app */
1032EXPORT_SYMBOL_GPL(ir_codes_cinergy); 1112 { 0x0c, KEY_ZOOM }, /* zoom/fullscreen */
1113 { 0x0d, KEY_CHANNELUP }, /* channel */
1114 { 0x0e, KEY_CHANNELDOWN }, /* channel- */
1115 { 0x0f, KEY_VOLUMEUP },
1116 { 0x10, KEY_VOLUMEDOWN },
1117 { 0x11, KEY_TUNER }, /* AV */
1118 { 0x12, KEY_NUMLOCK }, /* -/-- */
1119 { 0x13, KEY_AUDIO }, /* audio */
1120 { 0x14, KEY_MUTE },
1121 { 0x15, KEY_UP },
1122 { 0x16, KEY_DOWN },
1123 { 0x17, KEY_LEFT },
1124 { 0x18, KEY_RIGHT },
1125 { 0x19, BTN_LEFT, },
1126 { 0x1a, BTN_RIGHT, },
1127 { 0x1b, KEY_WWW }, /* text */
1128 { 0x1c, KEY_REWIND },
1129 { 0x1d, KEY_FORWARD },
1130 { 0x1e, KEY_RECORD },
1131 { 0x1f, KEY_PLAY },
1132 { 0x20, KEY_PREVIOUSSONG },
1133 { 0x21, KEY_NEXTSONG },
1134 { 0x22, KEY_PAUSE },
1135 { 0x23, KEY_STOP },
1136};
1137
1138struct ir_scancode_table ir_codes_cinergy_table = {
1139 .scan = ir_codes_cinergy,
1140 .size = ARRAY_SIZE(ir_codes_cinergy),
1141};
1142EXPORT_SYMBOL_GPL(ir_codes_cinergy_table);
1033 1143
1034/* Alfons Geser <a.geser@cox.net> 1144/* Alfons Geser <a.geser@cox.net>
1035 * updates from Job D. R. Borges <jobdrb@ig.com.br> */ 1145 * updates from Job D. R. Borges <jobdrb@ig.com.br> */
1036IR_KEYTAB_TYPE ir_codes_eztv[IR_KEYTAB_SIZE] = { 1146static struct ir_scancode ir_codes_eztv[] = {
1037 [0x12] = KEY_POWER, 1147 { 0x12, KEY_POWER },
1038 [0x01] = KEY_TV, /* DVR */ 1148 { 0x01, KEY_TV }, /* DVR */
1039 [0x15] = KEY_DVD, /* DVD */ 1149 { 0x15, KEY_DVD }, /* DVD */
1040 [0x17] = KEY_AUDIO, /* music */ 1150 { 0x17, KEY_AUDIO }, /* music */
1041 /* DVR mode / DVD mode / music mode */ 1151 /* DVR mode / DVD mode / music mode */
1042 1152
1043 [0x1b] = KEY_MUTE, /* mute */ 1153 { 0x1b, KEY_MUTE }, /* mute */
1044 [0x02] = KEY_LANGUAGE, /* MTS/SAP / audio / autoseek */ 1154 { 0x02, KEY_LANGUAGE }, /* MTS/SAP / audio / autoseek */
1045 [0x1e] = KEY_SUBTITLE, /* closed captioning / subtitle / seek */ 1155 { 0x1e, KEY_SUBTITLE }, /* closed captioning / subtitle / seek */
1046 [0x16] = KEY_ZOOM, /* full screen */ 1156 { 0x16, KEY_ZOOM }, /* full screen */
1047 [0x1c] = KEY_VIDEO, /* video source / eject / delall */ 1157 { 0x1c, KEY_VIDEO }, /* video source / eject / delall */
1048 [0x1d] = KEY_RESTART, /* playback / angle / del */ 1158 { 0x1d, KEY_RESTART }, /* playback / angle / del */
1049 [0x2f] = KEY_SEARCH, /* scan / menu / playlist */ 1159 { 0x2f, KEY_SEARCH }, /* scan / menu / playlist */
1050 [0x30] = KEY_CHANNEL, /* CH surfing / bookmark / memo */ 1160 { 0x30, KEY_CHANNEL }, /* CH surfing / bookmark / memo */
1051 1161
1052 [0x31] = KEY_HELP, /* help */ 1162 { 0x31, KEY_HELP }, /* help */
1053 [0x32] = KEY_MODE, /* num/memo */ 1163 { 0x32, KEY_MODE }, /* num/memo */
1054 [0x33] = KEY_ESC, /* cancel */ 1164 { 0x33, KEY_ESC }, /* cancel */
1055 1165
1056 [0x0c] = KEY_UP, /* up */ 1166 { 0x0c, KEY_UP }, /* up */
1057 [0x10] = KEY_DOWN, /* down */ 1167 { 0x10, KEY_DOWN }, /* down */
1058 [0x08] = KEY_LEFT, /* left */ 1168 { 0x08, KEY_LEFT }, /* left */
1059 [0x04] = KEY_RIGHT, /* right */ 1169 { 0x04, KEY_RIGHT }, /* right */
1060 [0x03] = KEY_SELECT, /* select */ 1170 { 0x03, KEY_SELECT }, /* select */
1061 1171
1062 [0x1f] = KEY_REWIND, /* rewind */ 1172 { 0x1f, KEY_REWIND }, /* rewind */
1063 [0x20] = KEY_PLAYPAUSE, /* play/pause */ 1173 { 0x20, KEY_PLAYPAUSE },/* play/pause */
1064 [0x29] = KEY_FORWARD, /* forward */ 1174 { 0x29, KEY_FORWARD }, /* forward */
1065 [0x14] = KEY_AGAIN, /* repeat */ 1175 { 0x14, KEY_AGAIN }, /* repeat */
1066 [0x2b] = KEY_RECORD, /* recording */ 1176 { 0x2b, KEY_RECORD }, /* recording */
1067 [0x2c] = KEY_STOP, /* stop */ 1177 { 0x2c, KEY_STOP }, /* stop */
1068 [0x2d] = KEY_PLAY, /* play */ 1178 { 0x2d, KEY_PLAY }, /* play */
1069 [0x2e] = KEY_CAMERA, /* snapshot / shuffle */ 1179 { 0x2e, KEY_CAMERA }, /* snapshot / shuffle */
1070 1180
1071 [0x00] = KEY_0, 1181 { 0x00, KEY_0 },
1072 [0x05] = KEY_1, 1182 { 0x05, KEY_1 },
1073 [0x06] = KEY_2, 1183 { 0x06, KEY_2 },
1074 [0x07] = KEY_3, 1184 { 0x07, KEY_3 },
1075 [0x09] = KEY_4, 1185 { 0x09, KEY_4 },
1076 [0x0a] = KEY_5, 1186 { 0x0a, KEY_5 },
1077 [0x0b] = KEY_6, 1187 { 0x0b, KEY_6 },
1078 [0x0d] = KEY_7, 1188 { 0x0d, KEY_7 },
1079 [0x0e] = KEY_8, 1189 { 0x0e, KEY_8 },
1080 [0x0f] = KEY_9, 1190 { 0x0f, KEY_9 },
1081 1191
1082 [0x2a] = KEY_VOLUMEUP, 1192 { 0x2a, KEY_VOLUMEUP },
1083 [0x11] = KEY_VOLUMEDOWN, 1193 { 0x11, KEY_VOLUMEDOWN },
1084 [0x18] = KEY_CHANNELUP, /* CH.tracking up */ 1194 { 0x18, KEY_CHANNELUP },/* CH.tracking up */
1085 [0x19] = KEY_CHANNELDOWN,/* CH.tracking down */ 1195 { 0x19, KEY_CHANNELDOWN },/* CH.tracking down */
1086 1196
1087 [0x13] = KEY_ENTER, /* enter */ 1197 { 0x13, KEY_ENTER }, /* enter */
1088 [0x21] = KEY_DOT, /* . (decimal dot) */ 1198 { 0x21, KEY_DOT }, /* . (decimal dot) */
1089}; 1199};
1090EXPORT_SYMBOL_GPL(ir_codes_eztv); 1200
1201struct ir_scancode_table ir_codes_eztv_table = {
1202 .scan = ir_codes_eztv,
1203 .size = ARRAY_SIZE(ir_codes_eztv),
1204};
1205EXPORT_SYMBOL_GPL(ir_codes_eztv_table);
1091 1206
1092/* Alex Hermann <gaaf@gmx.net> */ 1207/* Alex Hermann <gaaf@gmx.net> */
1093IR_KEYTAB_TYPE ir_codes_avermedia[IR_KEYTAB_SIZE] = { 1208static struct ir_scancode ir_codes_avermedia[] = {
1094 [0x28] = KEY_1, 1209 { 0x28, KEY_1 },
1095 [0x18] = KEY_2, 1210 { 0x18, KEY_2 },
1096 [0x38] = KEY_3, 1211 { 0x38, KEY_3 },
1097 [0x24] = KEY_4, 1212 { 0x24, KEY_4 },
1098 [0x14] = KEY_5, 1213 { 0x14, KEY_5 },
1099 [0x34] = KEY_6, 1214 { 0x34, KEY_6 },
1100 [0x2c] = KEY_7, 1215 { 0x2c, KEY_7 },
1101 [0x1c] = KEY_8, 1216 { 0x1c, KEY_8 },
1102 [0x3c] = KEY_9, 1217 { 0x3c, KEY_9 },
1103 [0x22] = KEY_0, 1218 { 0x22, KEY_0 },
1104 1219
1105 [0x20] = KEY_TV, /* TV/FM */ 1220 { 0x20, KEY_TV }, /* TV/FM */
1106 [0x10] = KEY_CD, /* CD */ 1221 { 0x10, KEY_CD }, /* CD */
1107 [0x30] = KEY_TEXT, /* TELETEXT */ 1222 { 0x30, KEY_TEXT }, /* TELETEXT */
1108 [0x00] = KEY_POWER, /* POWER */ 1223 { 0x00, KEY_POWER }, /* POWER */
1109 1224
1110 [0x08] = KEY_VIDEO, /* VIDEO */ 1225 { 0x08, KEY_VIDEO }, /* VIDEO */
1111 [0x04] = KEY_AUDIO, /* AUDIO */ 1226 { 0x04, KEY_AUDIO }, /* AUDIO */
1112 [0x0c] = KEY_ZOOM, /* FULL SCREEN */ 1227 { 0x0c, KEY_ZOOM }, /* FULL SCREEN */
1113 1228
1114 [0x12] = KEY_SUBTITLE, /* DISPLAY */ 1229 { 0x12, KEY_SUBTITLE }, /* DISPLAY */
1115 [0x32] = KEY_REWIND, /* LOOP */ 1230 { 0x32, KEY_REWIND }, /* LOOP */
1116 [0x02] = KEY_PRINT, /* PREVIEW */ 1231 { 0x02, KEY_PRINT }, /* PREVIEW */
1117 1232
1118 [0x2a] = KEY_SEARCH, /* AUTOSCAN */ 1233 { 0x2a, KEY_SEARCH }, /* AUTOSCAN */
1119 [0x1a] = KEY_SLEEP, /* FREEZE */ 1234 { 0x1a, KEY_SLEEP }, /* FREEZE */
1120 [0x3a] = KEY_CAMERA, /* SNAPSHOT */ 1235 { 0x3a, KEY_CAMERA }, /* SNAPSHOT */
1121 [0x0a] = KEY_MUTE, /* MUTE */ 1236 { 0x0a, KEY_MUTE }, /* MUTE */
1122 1237
1123 [0x26] = KEY_RECORD, /* RECORD */ 1238 { 0x26, KEY_RECORD }, /* RECORD */
1124 [0x16] = KEY_PAUSE, /* PAUSE */ 1239 { 0x16, KEY_PAUSE }, /* PAUSE */
1125 [0x36] = KEY_STOP, /* STOP */ 1240 { 0x36, KEY_STOP }, /* STOP */
1126 [0x06] = KEY_PLAY, /* PLAY */ 1241 { 0x06, KEY_PLAY }, /* PLAY */
1127 1242
1128 [0x2e] = KEY_RED, /* RED */ 1243 { 0x2e, KEY_RED }, /* RED */
1129 [0x21] = KEY_GREEN, /* GREEN */ 1244 { 0x21, KEY_GREEN }, /* GREEN */
1130 [0x0e] = KEY_YELLOW, /* YELLOW */ 1245 { 0x0e, KEY_YELLOW }, /* YELLOW */
1131 [0x01] = KEY_BLUE, /* BLUE */ 1246 { 0x01, KEY_BLUE }, /* BLUE */
1132 1247
1133 [0x1e] = KEY_VOLUMEDOWN, /* VOLUME- */ 1248 { 0x1e, KEY_VOLUMEDOWN }, /* VOLUME- */
1134 [0x3e] = KEY_VOLUMEUP, /* VOLUME+ */ 1249 { 0x3e, KEY_VOLUMEUP }, /* VOLUME+ */
1135 [0x11] = KEY_CHANNELDOWN, /* CHANNEL/PAGE- */ 1250 { 0x11, KEY_CHANNELDOWN }, /* CHANNEL/PAGE- */
1136 [0x31] = KEY_CHANNELUP /* CHANNEL/PAGE+ */ 1251 { 0x31, KEY_CHANNELUP } /* CHANNEL/PAGE+ */
1137}; 1252};
1138EXPORT_SYMBOL_GPL(ir_codes_avermedia); 1253
1139 1254struct ir_scancode_table ir_codes_avermedia_table = {
1140IR_KEYTAB_TYPE ir_codes_videomate_tv_pvr[IR_KEYTAB_SIZE] = { 1255 .scan = ir_codes_avermedia,
1141 [0x14] = KEY_MUTE, 1256 .size = ARRAY_SIZE(ir_codes_avermedia),
1142 [0x24] = KEY_ZOOM, 1257};
1143 1258EXPORT_SYMBOL_GPL(ir_codes_avermedia_table);
1144 [0x01] = KEY_DVD, 1259
1145 [0x23] = KEY_RADIO, 1260static struct ir_scancode ir_codes_videomate_tv_pvr[] = {
1146 [0x00] = KEY_TV, 1261 { 0x14, KEY_MUTE },
1147 1262 { 0x24, KEY_ZOOM },
1148 [0x0a] = KEY_REWIND, 1263
1149 [0x08] = KEY_PLAYPAUSE, 1264 { 0x01, KEY_DVD },
1150 [0x0f] = KEY_FORWARD, 1265 { 0x23, KEY_RADIO },
1151 1266 { 0x00, KEY_TV },
1152 [0x02] = KEY_PREVIOUS, 1267
1153 [0x07] = KEY_STOP, 1268 { 0x0a, KEY_REWIND },
1154 [0x06] = KEY_NEXT, 1269 { 0x08, KEY_PLAYPAUSE },
1155 1270 { 0x0f, KEY_FORWARD },
1156 [0x0c] = KEY_UP, 1271
1157 [0x0e] = KEY_DOWN, 1272 { 0x02, KEY_PREVIOUS },
1158 [0x0b] = KEY_LEFT, 1273 { 0x07, KEY_STOP },
1159 [0x0d] = KEY_RIGHT, 1274 { 0x06, KEY_NEXT },
1160 [0x11] = KEY_OK, 1275
1161 1276 { 0x0c, KEY_UP },
1162 [0x03] = KEY_MENU, 1277 { 0x0e, KEY_DOWN },
1163 [0x09] = KEY_SETUP, 1278 { 0x0b, KEY_LEFT },
1164 [0x05] = KEY_VIDEO, 1279 { 0x0d, KEY_RIGHT },
1165 [0x22] = KEY_CHANNEL, 1280 { 0x11, KEY_OK },
1166 1281
1167 [0x12] = KEY_VOLUMEUP, 1282 { 0x03, KEY_MENU },
1168 [0x15] = KEY_VOLUMEDOWN, 1283 { 0x09, KEY_SETUP },
1169 [0x10] = KEY_CHANNELUP, 1284 { 0x05, KEY_VIDEO },
1170 [0x13] = KEY_CHANNELDOWN, 1285 { 0x22, KEY_CHANNEL },
1171 1286
1172 [0x04] = KEY_RECORD, 1287 { 0x12, KEY_VOLUMEUP },
1173 1288 { 0x15, KEY_VOLUMEDOWN },
1174 [0x16] = KEY_1, 1289 { 0x10, KEY_CHANNELUP },
1175 [0x17] = KEY_2, 1290 { 0x13, KEY_CHANNELDOWN },
1176 [0x18] = KEY_3, 1291
1177 [0x19] = KEY_4, 1292 { 0x04, KEY_RECORD },
1178 [0x1a] = KEY_5, 1293
1179 [0x1b] = KEY_6, 1294 { 0x16, KEY_1 },
1180 [0x1c] = KEY_7, 1295 { 0x17, KEY_2 },
1181 [0x1d] = KEY_8, 1296 { 0x18, KEY_3 },
1182 [0x1e] = KEY_9, 1297 { 0x19, KEY_4 },
1183 [0x1f] = KEY_0, 1298 { 0x1a, KEY_5 },
1184 1299 { 0x1b, KEY_6 },
1185 [0x20] = KEY_LANGUAGE, 1300 { 0x1c, KEY_7 },
1186 [0x21] = KEY_SLEEP, 1301 { 0x1d, KEY_8 },
1187}; 1302 { 0x1e, KEY_9 },
1188EXPORT_SYMBOL_GPL(ir_codes_videomate_tv_pvr); 1303 { 0x1f, KEY_0 },
1304
1305 { 0x20, KEY_LANGUAGE },
1306 { 0x21, KEY_SLEEP },
1307};
1308
1309struct ir_scancode_table ir_codes_videomate_tv_pvr_table = {
1310 .scan = ir_codes_videomate_tv_pvr,
1311 .size = ARRAY_SIZE(ir_codes_videomate_tv_pvr),
1312};
1313EXPORT_SYMBOL_GPL(ir_codes_videomate_tv_pvr_table);
1189 1314
1190/* Michael Tokarev <mjt@tls.msk.ru> 1315/* Michael Tokarev <mjt@tls.msk.ru>
1191 http://www.corpit.ru/mjt/beholdTV/remote_control.jpg 1316 http://www.corpit.ru/mjt/beholdTV/remote_control.jpg
@@ -1196,14 +1321,14 @@ EXPORT_SYMBOL_GPL(ir_codes_videomate_tv_pvr);
1196 the button labels (several variants when appropriate) 1321 the button labels (several variants when appropriate)
1197 helps to descide which keycodes to assign to the buttons. 1322 helps to descide which keycodes to assign to the buttons.
1198 */ 1323 */
1199IR_KEYTAB_TYPE ir_codes_manli[IR_KEYTAB_SIZE] = { 1324static struct ir_scancode ir_codes_manli[] = {
1200 1325
1201 /* 0x1c 0x12 * 1326 /* 0x1c 0x12 *
1202 * FUNCTION POWER * 1327 * FUNCTION POWER *
1203 * FM (|) * 1328 * FM (|) *
1204 * */ 1329 * */
1205 [0x1c] = KEY_RADIO, /*XXX*/ 1330 { 0x1c, KEY_RADIO }, /*XXX*/
1206 [0x12] = KEY_POWER, 1331 { 0x12, KEY_POWER },
1207 1332
1208 /* 0x01 0x02 0x03 * 1333 /* 0x01 0x02 0x03 *
1209 * 1 2 3 * 1334 * 1 2 3 *
@@ -1214,29 +1339,29 @@ IR_KEYTAB_TYPE ir_codes_manli[IR_KEYTAB_SIZE] = {
1214 * 0x07 0x08 0x09 * 1339 * 0x07 0x08 0x09 *
1215 * 7 8 9 * 1340 * 7 8 9 *
1216 * */ 1341 * */
1217 [0x01] = KEY_1, 1342 { 0x01, KEY_1 },
1218 [0x02] = KEY_2, 1343 { 0x02, KEY_2 },
1219 [0x03] = KEY_3, 1344 { 0x03, KEY_3 },
1220 [0x04] = KEY_4, 1345 { 0x04, KEY_4 },
1221 [0x05] = KEY_5, 1346 { 0x05, KEY_5 },
1222 [0x06] = KEY_6, 1347 { 0x06, KEY_6 },
1223 [0x07] = KEY_7, 1348 { 0x07, KEY_7 },
1224 [0x08] = KEY_8, 1349 { 0x08, KEY_8 },
1225 [0x09] = KEY_9, 1350 { 0x09, KEY_9 },
1226 1351
1227 /* 0x0a 0x00 0x17 * 1352 /* 0x0a 0x00 0x17 *
1228 * RECALL 0 +100 * 1353 * RECALL 0 +100 *
1229 * PLUS * 1354 * PLUS *
1230 * */ 1355 * */
1231 [0x0a] = KEY_AGAIN, /*XXX KEY_REWIND? */ 1356 { 0x0a, KEY_AGAIN }, /*XXX KEY_REWIND? */
1232 [0x00] = KEY_0, 1357 { 0x00, KEY_0 },
1233 [0x17] = KEY_DIGITS, /*XXX*/ 1358 { 0x17, KEY_DIGITS }, /*XXX*/
1234 1359
1235 /* 0x14 0x10 * 1360 /* 0x14 0x10 *
1236 * MENU INFO * 1361 * MENU INFO *
1237 * OSD */ 1362 * OSD */
1238 [0x14] = KEY_MENU, 1363 { 0x14, KEY_MENU },
1239 [0x10] = KEY_INFO, 1364 { 0x10, KEY_INFO },
1240 1365
1241 /* 0x0b * 1366 /* 0x0b *
1242 * Up * 1367 * Up *
@@ -1247,18 +1372,18 @@ IR_KEYTAB_TYPE ir_codes_manli[IR_KEYTAB_SIZE] = {
1247 * 0x015 * 1372 * 0x015 *
1248 * Down * 1373 * Down *
1249 * */ 1374 * */
1250 [0x0b] = KEY_UP, 1375 { 0x0b, KEY_UP },
1251 [0x18] = KEY_LEFT, 1376 { 0x18, KEY_LEFT },
1252 [0x16] = KEY_OK, /*XXX KEY_SELECT? KEY_ENTER? */ 1377 { 0x16, KEY_OK }, /*XXX KEY_SELECT? KEY_ENTER? */
1253 [0x0c] = KEY_RIGHT, 1378 { 0x0c, KEY_RIGHT },
1254 [0x15] = KEY_DOWN, 1379 { 0x15, KEY_DOWN },
1255 1380
1256 /* 0x11 0x0d * 1381 /* 0x11 0x0d *
1257 * TV/AV MODE * 1382 * TV/AV MODE *
1258 * SOURCE STEREO * 1383 * SOURCE STEREO *
1259 * */ 1384 * */
1260 [0x11] = KEY_TV, /*XXX*/ 1385 { 0x11, KEY_TV }, /*XXX*/
1261 [0x0d] = KEY_MODE, /*XXX there's no KEY_STEREO */ 1386 { 0x0d, KEY_MODE }, /*XXX there's no KEY_STEREO */
1262 1387
1263 /* 0x0f 0x1b 0x1a * 1388 /* 0x0f 0x1b 0x1a *
1264 * AUDIO Vol+ Chan+ * 1389 * AUDIO Vol+ Chan+ *
@@ -1267,877 +1392,967 @@ IR_KEYTAB_TYPE ir_codes_manli[IR_KEYTAB_SIZE] = {
1267 * 0x0e 0x1f 0x1e * 1392 * 0x0e 0x1f 0x1e *
1268 * SLEEP Vol- Chan- * 1393 * SLEEP Vol- Chan- *
1269 * */ 1394 * */
1270 [0x0f] = KEY_AUDIO, 1395 { 0x0f, KEY_AUDIO },
1271 [0x1b] = KEY_VOLUMEUP, 1396 { 0x1b, KEY_VOLUMEUP },
1272 [0x1a] = KEY_CHANNELUP, 1397 { 0x1a, KEY_CHANNELUP },
1273 [0x0e] = KEY_TIME, 1398 { 0x0e, KEY_TIME },
1274 [0x1f] = KEY_VOLUMEDOWN, 1399 { 0x1f, KEY_VOLUMEDOWN },
1275 [0x1e] = KEY_CHANNELDOWN, 1400 { 0x1e, KEY_CHANNELDOWN },
1276 1401
1277 /* 0x13 0x19 * 1402 /* 0x13 0x19 *
1278 * MUTE SNAPSHOT* 1403 * MUTE SNAPSHOT*
1279 * */ 1404 * */
1280 [0x13] = KEY_MUTE, 1405 { 0x13, KEY_MUTE },
1281 [0x19] = KEY_CAMERA, 1406 { 0x19, KEY_CAMERA },
1282 1407
1283 /* 0x1d unused ? */ 1408 /* 0x1d unused ? */
1284}; 1409};
1285EXPORT_SYMBOL_GPL(ir_codes_manli); 1410
1411struct ir_scancode_table ir_codes_manli_table = {
1412 .scan = ir_codes_manli,
1413 .size = ARRAY_SIZE(ir_codes_manli),
1414};
1415EXPORT_SYMBOL_GPL(ir_codes_manli_table);
1286 1416
1287/* Mike Baikov <mike@baikov.com> */ 1417/* Mike Baikov <mike@baikov.com> */
1288IR_KEYTAB_TYPE ir_codes_gotview7135[IR_KEYTAB_SIZE] = { 1418static struct ir_scancode ir_codes_gotview7135[] = {
1289 1419
1290 [0x11] = KEY_POWER, 1420 { 0x11, KEY_POWER },
1291 [0x35] = KEY_TV, 1421 { 0x35, KEY_TV },
1292 [0x1b] = KEY_0, 1422 { 0x1b, KEY_0 },
1293 [0x29] = KEY_1, 1423 { 0x29, KEY_1 },
1294 [0x19] = KEY_2, 1424 { 0x19, KEY_2 },
1295 [0x39] = KEY_3, 1425 { 0x39, KEY_3 },
1296 [0x1f] = KEY_4, 1426 { 0x1f, KEY_4 },
1297 [0x2c] = KEY_5, 1427 { 0x2c, KEY_5 },
1298 [0x21] = KEY_6, 1428 { 0x21, KEY_6 },
1299 [0x24] = KEY_7, 1429 { 0x24, KEY_7 },
1300 [0x18] = KEY_8, 1430 { 0x18, KEY_8 },
1301 [0x2b] = KEY_9, 1431 { 0x2b, KEY_9 },
1302 [0x3b] = KEY_AGAIN, /* LOOP */ 1432 { 0x3b, KEY_AGAIN }, /* LOOP */
1303 [0x06] = KEY_AUDIO, 1433 { 0x06, KEY_AUDIO },
1304 [0x31] = KEY_PRINT, /* PREVIEW */ 1434 { 0x31, KEY_PRINT }, /* PREVIEW */
1305 [0x3e] = KEY_VIDEO, 1435 { 0x3e, KEY_VIDEO },
1306 [0x10] = KEY_CHANNELUP, 1436 { 0x10, KEY_CHANNELUP },
1307 [0x20] = KEY_CHANNELDOWN, 1437 { 0x20, KEY_CHANNELDOWN },
1308 [0x0c] = KEY_VOLUMEDOWN, 1438 { 0x0c, KEY_VOLUMEDOWN },
1309 [0x28] = KEY_VOLUMEUP, 1439 { 0x28, KEY_VOLUMEUP },
1310 [0x08] = KEY_MUTE, 1440 { 0x08, KEY_MUTE },
1311 [0x26] = KEY_SEARCH, /* SCAN */ 1441 { 0x26, KEY_SEARCH }, /* SCAN */
1312 [0x3f] = KEY_CAMERA, /* SNAPSHOT */ 1442 { 0x3f, KEY_CAMERA }, /* SNAPSHOT */
1313 [0x12] = KEY_RECORD, 1443 { 0x12, KEY_RECORD },
1314 [0x32] = KEY_STOP, 1444 { 0x32, KEY_STOP },
1315 [0x3c] = KEY_PLAY, 1445 { 0x3c, KEY_PLAY },
1316 [0x1d] = KEY_REWIND, 1446 { 0x1d, KEY_REWIND },
1317 [0x2d] = KEY_PAUSE, 1447 { 0x2d, KEY_PAUSE },
1318 [0x0d] = KEY_FORWARD, 1448 { 0x0d, KEY_FORWARD },
1319 [0x05] = KEY_ZOOM, /*FULL*/ 1449 { 0x05, KEY_ZOOM }, /*FULL*/
1320 1450
1321 [0x2a] = KEY_F21, /* LIVE TIMESHIFT */ 1451 { 0x2a, KEY_F21 }, /* LIVE TIMESHIFT */
1322 [0x0e] = KEY_F22, /* MIN TIMESHIFT */ 1452 { 0x0e, KEY_F22 }, /* MIN TIMESHIFT */
1323 [0x1e] = KEY_TIME, /* TIMESHIFT */ 1453 { 0x1e, KEY_TIME }, /* TIMESHIFT */
1324 [0x38] = KEY_F24, /* NORMAL TIMESHIFT */ 1454 { 0x38, KEY_F24 }, /* NORMAL TIMESHIFT */
1325}; 1455};
1326EXPORT_SYMBOL_GPL(ir_codes_gotview7135); 1456
1327 1457struct ir_scancode_table ir_codes_gotview7135_table = {
1328IR_KEYTAB_TYPE ir_codes_purpletv[IR_KEYTAB_SIZE] = { 1458 .scan = ir_codes_gotview7135,
1329 [0x03] = KEY_POWER, 1459 .size = ARRAY_SIZE(ir_codes_gotview7135),
1330 [0x6f] = KEY_MUTE, 1460};
1331 [0x10] = KEY_BACKSPACE, /* Recall */ 1461EXPORT_SYMBOL_GPL(ir_codes_gotview7135_table);
1332 1462
1333 [0x11] = KEY_0, 1463static struct ir_scancode ir_codes_purpletv[] = {
1334 [0x04] = KEY_1, 1464 { 0x03, KEY_POWER },
1335 [0x05] = KEY_2, 1465 { 0x6f, KEY_MUTE },
1336 [0x06] = KEY_3, 1466 { 0x10, KEY_BACKSPACE }, /* Recall */
1337 [0x08] = KEY_4, 1467
1338 [0x09] = KEY_5, 1468 { 0x11, KEY_0 },
1339 [0x0a] = KEY_6, 1469 { 0x04, KEY_1 },
1340 [0x0c] = KEY_7, 1470 { 0x05, KEY_2 },
1341 [0x0d] = KEY_8, 1471 { 0x06, KEY_3 },
1342 [0x0e] = KEY_9, 1472 { 0x08, KEY_4 },
1343 [0x12] = KEY_DOT, /* 100+ */ 1473 { 0x09, KEY_5 },
1344 1474 { 0x0a, KEY_6 },
1345 [0x07] = KEY_VOLUMEUP, 1475 { 0x0c, KEY_7 },
1346 [0x0b] = KEY_VOLUMEDOWN, 1476 { 0x0d, KEY_8 },
1347 [0x1a] = KEY_KPPLUS, 1477 { 0x0e, KEY_9 },
1348 [0x18] = KEY_KPMINUS, 1478 { 0x12, KEY_DOT }, /* 100+ */
1349 [0x15] = KEY_UP, 1479
1350 [0x1d] = KEY_DOWN, 1480 { 0x07, KEY_VOLUMEUP },
1351 [0x0f] = KEY_CHANNELUP, 1481 { 0x0b, KEY_VOLUMEDOWN },
1352 [0x13] = KEY_CHANNELDOWN, 1482 { 0x1a, KEY_KPPLUS },
1353 [0x48] = KEY_ZOOM, 1483 { 0x18, KEY_KPMINUS },
1354 1484 { 0x15, KEY_UP },
1355 [0x1b] = KEY_VIDEO, /* Video source */ 1485 { 0x1d, KEY_DOWN },
1356 [0x1f] = KEY_CAMERA, /* Snapshot */ 1486 { 0x0f, KEY_CHANNELUP },
1357 [0x49] = KEY_LANGUAGE, /* MTS Select */ 1487 { 0x13, KEY_CHANNELDOWN },
1358 [0x19] = KEY_SEARCH, /* Auto Scan */ 1488 { 0x48, KEY_ZOOM },
1359 1489
1360 [0x4b] = KEY_RECORD, 1490 { 0x1b, KEY_VIDEO }, /* Video source */
1361 [0x46] = KEY_PLAY, 1491 { 0x1f, KEY_CAMERA }, /* Snapshot */
1362 [0x45] = KEY_PAUSE, /* Pause */ 1492 { 0x49, KEY_LANGUAGE }, /* MTS Select */
1363 [0x44] = KEY_STOP, 1493 { 0x19, KEY_SEARCH }, /* Auto Scan */
1364 [0x43] = KEY_TIME, /* Time Shift */ 1494
1365 [0x17] = KEY_CHANNEL, /* SURF CH */ 1495 { 0x4b, KEY_RECORD },
1366 [0x40] = KEY_FORWARD, /* Forward ? */ 1496 { 0x46, KEY_PLAY },
1367 [0x42] = KEY_REWIND, /* Backward ? */ 1497 { 0x45, KEY_PAUSE }, /* Pause */
1368 1498 { 0x44, KEY_STOP },
1369}; 1499 { 0x43, KEY_TIME }, /* Time Shift */
1370EXPORT_SYMBOL_GPL(ir_codes_purpletv); 1500 { 0x17, KEY_CHANNEL }, /* SURF CH */
1501 { 0x40, KEY_FORWARD }, /* Forward ? */
1502 { 0x42, KEY_REWIND }, /* Backward ? */
1503
1504};
1505
1506struct ir_scancode_table ir_codes_purpletv_table = {
1507 .scan = ir_codes_purpletv,
1508 .size = ARRAY_SIZE(ir_codes_purpletv),
1509};
1510EXPORT_SYMBOL_GPL(ir_codes_purpletv_table);
1371 1511
1372/* Mapping for the 28 key remote control as seen at 1512/* Mapping for the 28 key remote control as seen at
1373 http://www.sednacomputer.com/photo/cardbus-tv.jpg 1513 http://www.sednacomputer.com/photo/cardbus-tv.jpg
1374 Pavel Mihaylov <bin@bash.info> 1514 Pavel Mihaylov <bin@bash.info>
1375 Also for the remote bundled with Kozumi KTV-01C card */ 1515 Also for the remote bundled with Kozumi KTV-01C card */
1376IR_KEYTAB_TYPE ir_codes_pctv_sedna[IR_KEYTAB_SIZE] = { 1516static struct ir_scancode ir_codes_pctv_sedna[] = {
1377 [0x00] = KEY_0, 1517 { 0x00, KEY_0 },
1378 [0x01] = KEY_1, 1518 { 0x01, KEY_1 },
1379 [0x02] = KEY_2, 1519 { 0x02, KEY_2 },
1380 [0x03] = KEY_3, 1520 { 0x03, KEY_3 },
1381 [0x04] = KEY_4, 1521 { 0x04, KEY_4 },
1382 [0x05] = KEY_5, 1522 { 0x05, KEY_5 },
1383 [0x06] = KEY_6, 1523 { 0x06, KEY_6 },
1384 [0x07] = KEY_7, 1524 { 0x07, KEY_7 },
1385 [0x08] = KEY_8, 1525 { 0x08, KEY_8 },
1386 [0x09] = KEY_9, 1526 { 0x09, KEY_9 },
1387 1527
1388 [0x0a] = KEY_AGAIN, /* Recall */ 1528 { 0x0a, KEY_AGAIN }, /* Recall */
1389 [0x0b] = KEY_CHANNELUP, 1529 { 0x0b, KEY_CHANNELUP },
1390 [0x0c] = KEY_VOLUMEUP, 1530 { 0x0c, KEY_VOLUMEUP },
1391 [0x0d] = KEY_MODE, /* Stereo */ 1531 { 0x0d, KEY_MODE }, /* Stereo */
1392 [0x0e] = KEY_STOP, 1532 { 0x0e, KEY_STOP },
1393 [0x0f] = KEY_PREVIOUSSONG, 1533 { 0x0f, KEY_PREVIOUSSONG },
1394 [0x10] = KEY_ZOOM, 1534 { 0x10, KEY_ZOOM },
1395 [0x11] = KEY_TUNER, /* Source */ 1535 { 0x11, KEY_TUNER }, /* Source */
1396 [0x12] = KEY_POWER, 1536 { 0x12, KEY_POWER },
1397 [0x13] = KEY_MUTE, 1537 { 0x13, KEY_MUTE },
1398 [0x15] = KEY_CHANNELDOWN, 1538 { 0x15, KEY_CHANNELDOWN },
1399 [0x18] = KEY_VOLUMEDOWN, 1539 { 0x18, KEY_VOLUMEDOWN },
1400 [0x19] = KEY_CAMERA, /* Snapshot */ 1540 { 0x19, KEY_CAMERA }, /* Snapshot */
1401 [0x1a] = KEY_NEXTSONG, 1541 { 0x1a, KEY_NEXTSONG },
1402 [0x1b] = KEY_TIME, /* Time Shift */ 1542 { 0x1b, KEY_TIME }, /* Time Shift */
1403 [0x1c] = KEY_RADIO, /* FM Radio */ 1543 { 0x1c, KEY_RADIO }, /* FM Radio */
1404 [0x1d] = KEY_RECORD, 1544 { 0x1d, KEY_RECORD },
1405 [0x1e] = KEY_PAUSE, 1545 { 0x1e, KEY_PAUSE },
1406 /* additional codes for Kozumi's remote */ 1546 /* additional codes for Kozumi's remote */
1407 [0x14] = KEY_INFO, /* OSD */ 1547 { 0x14, KEY_INFO }, /* OSD */
1408 [0x16] = KEY_OK, /* OK */ 1548 { 0x16, KEY_OK }, /* OK */
1409 [0x17] = KEY_DIGITS, /* Plus */ 1549 { 0x17, KEY_DIGITS }, /* Plus */
1410 [0x1f] = KEY_PLAY, /* Play */ 1550 { 0x1f, KEY_PLAY }, /* Play */
1411}; 1551};
1412EXPORT_SYMBOL_GPL(ir_codes_pctv_sedna); 1552
1553struct ir_scancode_table ir_codes_pctv_sedna_table = {
1554 .scan = ir_codes_pctv_sedna,
1555 .size = ARRAY_SIZE(ir_codes_pctv_sedna),
1556};
1557EXPORT_SYMBOL_GPL(ir_codes_pctv_sedna_table);
1413 1558
1414/* Mark Phalan <phalanm@o2.ie> */ 1559/* Mark Phalan <phalanm@o2.ie> */
1415IR_KEYTAB_TYPE ir_codes_pv951[IR_KEYTAB_SIZE] = { 1560static struct ir_scancode ir_codes_pv951[] = {
1416 [0x00] = KEY_0, 1561 { 0x00, KEY_0 },
1417 [0x01] = KEY_1, 1562 { 0x01, KEY_1 },
1418 [0x02] = KEY_2, 1563 { 0x02, KEY_2 },
1419 [0x03] = KEY_3, 1564 { 0x03, KEY_3 },
1420 [0x04] = KEY_4, 1565 { 0x04, KEY_4 },
1421 [0x05] = KEY_5, 1566 { 0x05, KEY_5 },
1422 [0x06] = KEY_6, 1567 { 0x06, KEY_6 },
1423 [0x07] = KEY_7, 1568 { 0x07, KEY_7 },
1424 [0x08] = KEY_8, 1569 { 0x08, KEY_8 },
1425 [0x09] = KEY_9, 1570 { 0x09, KEY_9 },
1426 1571
1427 [0x12] = KEY_POWER, 1572 { 0x12, KEY_POWER },
1428 [0x10] = KEY_MUTE, 1573 { 0x10, KEY_MUTE },
1429 [0x1f] = KEY_VOLUMEDOWN, 1574 { 0x1f, KEY_VOLUMEDOWN },
1430 [0x1b] = KEY_VOLUMEUP, 1575 { 0x1b, KEY_VOLUMEUP },
1431 [0x1a] = KEY_CHANNELUP, 1576 { 0x1a, KEY_CHANNELUP },
1432 [0x1e] = KEY_CHANNELDOWN, 1577 { 0x1e, KEY_CHANNELDOWN },
1433 [0x0e] = KEY_PAGEUP, 1578 { 0x0e, KEY_PAGEUP },
1434 [0x1d] = KEY_PAGEDOWN, 1579 { 0x1d, KEY_PAGEDOWN },
1435 [0x13] = KEY_SOUND, 1580 { 0x13, KEY_SOUND },
1436 1581
1437 [0x18] = KEY_KPPLUSMINUS, /* CH +/- */ 1582 { 0x18, KEY_KPPLUSMINUS }, /* CH +/- */
1438 [0x16] = KEY_SUBTITLE, /* CC */ 1583 { 0x16, KEY_SUBTITLE }, /* CC */
1439 [0x0d] = KEY_TEXT, /* TTX */ 1584 { 0x0d, KEY_TEXT }, /* TTX */
1440 [0x0b] = KEY_TV, /* AIR/CBL */ 1585 { 0x0b, KEY_TV }, /* AIR/CBL */
1441 [0x11] = KEY_PC, /* PC/TV */ 1586 { 0x11, KEY_PC }, /* PC/TV */
1442 [0x17] = KEY_OK, /* CH RTN */ 1587 { 0x17, KEY_OK }, /* CH RTN */
1443 [0x19] = KEY_MODE, /* FUNC */ 1588 { 0x19, KEY_MODE }, /* FUNC */
1444 [0x0c] = KEY_SEARCH, /* AUTOSCAN */ 1589 { 0x0c, KEY_SEARCH }, /* AUTOSCAN */
1445 1590
1446 /* Not sure what to do with these ones! */ 1591 /* Not sure what to do with these ones! */
1447 [0x0f] = KEY_SELECT, /* SOURCE */ 1592 { 0x0f, KEY_SELECT }, /* SOURCE */
1448 [0x0a] = KEY_KPPLUS, /* +100 */ 1593 { 0x0a, KEY_KPPLUS }, /* +100 */
1449 [0x14] = KEY_EQUAL, /* SYNC */ 1594 { 0x14, KEY_EQUAL }, /* SYNC */
1450 [0x1c] = KEY_MEDIA, /* PC/TV */ 1595 { 0x1c, KEY_MEDIA }, /* PC/TV */
1596};
1597
1598struct ir_scancode_table ir_codes_pv951_table = {
1599 .scan = ir_codes_pv951,
1600 .size = ARRAY_SIZE(ir_codes_pv951),
1451}; 1601};
1452EXPORT_SYMBOL_GPL(ir_codes_pv951); 1602EXPORT_SYMBOL_GPL(ir_codes_pv951_table);
1453 1603
1454/* generic RC5 keytable */ 1604/* generic RC5 keytable */
1455/* see http://users.pandora.be/nenya/electronics/rc5/codes00.htm */ 1605/* see http://users.pandora.be/nenya/electronics/rc5/codes00.htm */
1456/* used by old (black) Hauppauge remotes */ 1606/* used by old (black) Hauppauge remotes */
1457IR_KEYTAB_TYPE ir_codes_rc5_tv[IR_KEYTAB_SIZE] = { 1607static struct ir_scancode ir_codes_rc5_tv[] = {
1458 /* Keys 0 to 9 */ 1608 /* Keys 0 to 9 */
1459 [0x00] = KEY_0, 1609 { 0x00, KEY_0 },
1460 [0x01] = KEY_1, 1610 { 0x01, KEY_1 },
1461 [0x02] = KEY_2, 1611 { 0x02, KEY_2 },
1462 [0x03] = KEY_3, 1612 { 0x03, KEY_3 },
1463 [0x04] = KEY_4, 1613 { 0x04, KEY_4 },
1464 [0x05] = KEY_5, 1614 { 0x05, KEY_5 },
1465 [0x06] = KEY_6, 1615 { 0x06, KEY_6 },
1466 [0x07] = KEY_7, 1616 { 0x07, KEY_7 },
1467 [0x08] = KEY_8, 1617 { 0x08, KEY_8 },
1468 [0x09] = KEY_9, 1618 { 0x09, KEY_9 },
1469 1619
1470 [0x0b] = KEY_CHANNEL, /* channel / program (japan: 11) */ 1620 { 0x0b, KEY_CHANNEL }, /* channel / program (japan: 11) */
1471 [0x0c] = KEY_POWER, /* standby */ 1621 { 0x0c, KEY_POWER }, /* standby */
1472 [0x0d] = KEY_MUTE, /* mute / demute */ 1622 { 0x0d, KEY_MUTE }, /* mute / demute */
1473 [0x0f] = KEY_TV, /* display */ 1623 { 0x0f, KEY_TV }, /* display */
1474 [0x10] = KEY_VOLUMEUP, 1624 { 0x10, KEY_VOLUMEUP },
1475 [0x11] = KEY_VOLUMEDOWN, 1625 { 0x11, KEY_VOLUMEDOWN },
1476 [0x12] = KEY_BRIGHTNESSUP, 1626 { 0x12, KEY_BRIGHTNESSUP },
1477 [0x13] = KEY_BRIGHTNESSDOWN, 1627 { 0x13, KEY_BRIGHTNESSDOWN },
1478 [0x1e] = KEY_SEARCH, /* search + */ 1628 { 0x1e, KEY_SEARCH }, /* search + */
1479 [0x20] = KEY_CHANNELUP, /* channel / program + */ 1629 { 0x20, KEY_CHANNELUP }, /* channel / program + */
1480 [0x21] = KEY_CHANNELDOWN, /* channel / program - */ 1630 { 0x21, KEY_CHANNELDOWN }, /* channel / program - */
1481 [0x22] = KEY_CHANNEL, /* alt / channel */ 1631 { 0x22, KEY_CHANNEL }, /* alt / channel */
1482 [0x23] = KEY_LANGUAGE, /* 1st / 2nd language */ 1632 { 0x23, KEY_LANGUAGE }, /* 1st / 2nd language */
1483 [0x26] = KEY_SLEEP, /* sleeptimer */ 1633 { 0x26, KEY_SLEEP }, /* sleeptimer */
1484 [0x2e] = KEY_MENU, /* 2nd controls (USA: menu) */ 1634 { 0x2e, KEY_MENU }, /* 2nd controls (USA: menu) */
1485 [0x30] = KEY_PAUSE, 1635 { 0x30, KEY_PAUSE },
1486 [0x32] = KEY_REWIND, 1636 { 0x32, KEY_REWIND },
1487 [0x33] = KEY_GOTO, 1637 { 0x33, KEY_GOTO },
1488 [0x35] = KEY_PLAY, 1638 { 0x35, KEY_PLAY },
1489 [0x36] = KEY_STOP, 1639 { 0x36, KEY_STOP },
1490 [0x37] = KEY_RECORD, /* recording */ 1640 { 0x37, KEY_RECORD }, /* recording */
1491 [0x3c] = KEY_TEXT, /* teletext submode (Japan: 12) */ 1641 { 0x3c, KEY_TEXT }, /* teletext submode (Japan: 12) */
1492 [0x3d] = KEY_SUSPEND, /* system standby */ 1642 { 0x3d, KEY_SUSPEND }, /* system standby */
1493 1643
1494}; 1644};
1495EXPORT_SYMBOL_GPL(ir_codes_rc5_tv); 1645
1646struct ir_scancode_table ir_codes_rc5_tv_table = {
1647 .scan = ir_codes_rc5_tv,
1648 .size = ARRAY_SIZE(ir_codes_rc5_tv),
1649};
1650EXPORT_SYMBOL_GPL(ir_codes_rc5_tv_table);
1496 1651
1497/* Table for Leadtek Winfast Remote Controls - used by both bttv and cx88 */ 1652/* Table for Leadtek Winfast Remote Controls - used by both bttv and cx88 */
1498IR_KEYTAB_TYPE ir_codes_winfast[IR_KEYTAB_SIZE] = { 1653static struct ir_scancode ir_codes_winfast[] = {
1499 /* Keys 0 to 9 */ 1654 /* Keys 0 to 9 */
1500 [0x12] = KEY_0, 1655 { 0x12, KEY_0 },
1501 [0x05] = KEY_1, 1656 { 0x05, KEY_1 },
1502 [0x06] = KEY_2, 1657 { 0x06, KEY_2 },
1503 [0x07] = KEY_3, 1658 { 0x07, KEY_3 },
1504 [0x09] = KEY_4, 1659 { 0x09, KEY_4 },
1505 [0x0a] = KEY_5, 1660 { 0x0a, KEY_5 },
1506 [0x0b] = KEY_6, 1661 { 0x0b, KEY_6 },
1507 [0x0d] = KEY_7, 1662 { 0x0d, KEY_7 },
1508 [0x0e] = KEY_8, 1663 { 0x0e, KEY_8 },
1509 [0x0f] = KEY_9, 1664 { 0x0f, KEY_9 },
1510 1665
1511 [0x00] = KEY_POWER, 1666 { 0x00, KEY_POWER },
1512 [0x1b] = KEY_AUDIO, /* Audio Source */ 1667 { 0x1b, KEY_AUDIO }, /* Audio Source */
1513 [0x02] = KEY_TUNER, /* TV/FM, not on Y0400052 */ 1668 { 0x02, KEY_TUNER }, /* TV/FM, not on Y0400052 */
1514 [0x1e] = KEY_VIDEO, /* Video Source */ 1669 { 0x1e, KEY_VIDEO }, /* Video Source */
1515 [0x16] = KEY_INFO, /* Display information */ 1670 { 0x16, KEY_INFO }, /* Display information */
1516 [0x04] = KEY_VOLUMEUP, 1671 { 0x04, KEY_VOLUMEUP },
1517 [0x08] = KEY_VOLUMEDOWN, 1672 { 0x08, KEY_VOLUMEDOWN },
1518 [0x0c] = KEY_CHANNELUP, 1673 { 0x0c, KEY_CHANNELUP },
1519 [0x10] = KEY_CHANNELDOWN, 1674 { 0x10, KEY_CHANNELDOWN },
1520 [0x03] = KEY_ZOOM, /* fullscreen */ 1675 { 0x03, KEY_ZOOM }, /* fullscreen */
1521 [0x1f] = KEY_TEXT, /* closed caption/teletext */ 1676 { 0x1f, KEY_TEXT }, /* closed caption/teletext */
1522 [0x20] = KEY_SLEEP, 1677 { 0x20, KEY_SLEEP },
1523 [0x29] = KEY_CLEAR, /* boss key */ 1678 { 0x29, KEY_CLEAR }, /* boss key */
1524 [0x14] = KEY_MUTE, 1679 { 0x14, KEY_MUTE },
1525 [0x2b] = KEY_RED, 1680 { 0x2b, KEY_RED },
1526 [0x2c] = KEY_GREEN, 1681 { 0x2c, KEY_GREEN },
1527 [0x2d] = KEY_YELLOW, 1682 { 0x2d, KEY_YELLOW },
1528 [0x2e] = KEY_BLUE, 1683 { 0x2e, KEY_BLUE },
1529 [0x18] = KEY_KPPLUS, /* fine tune + , not on Y040052 */ 1684 { 0x18, KEY_KPPLUS }, /* fine tune + , not on Y040052 */
1530 [0x19] = KEY_KPMINUS, /* fine tune - , not on Y040052 */ 1685 { 0x19, KEY_KPMINUS }, /* fine tune - , not on Y040052 */
1531 [0x2a] = KEY_MEDIA, /* PIP (Picture in picture */ 1686 { 0x2a, KEY_MEDIA }, /* PIP (Picture in picture */
1532 [0x21] = KEY_DOT, 1687 { 0x21, KEY_DOT },
1533 [0x13] = KEY_ENTER, 1688 { 0x13, KEY_ENTER },
1534 [0x11] = KEY_LAST, /* Recall (last channel */ 1689 { 0x11, KEY_LAST }, /* Recall (last channel */
1535 [0x22] = KEY_PREVIOUS, 1690 { 0x22, KEY_PREVIOUS },
1536 [0x23] = KEY_PLAYPAUSE, 1691 { 0x23, KEY_PLAYPAUSE },
1537 [0x24] = KEY_NEXT, 1692 { 0x24, KEY_NEXT },
1538 [0x25] = KEY_TIME, /* Time Shifting */ 1693 { 0x25, KEY_TIME }, /* Time Shifting */
1539 [0x26] = KEY_STOP, 1694 { 0x26, KEY_STOP },
1540 [0x27] = KEY_RECORD, 1695 { 0x27, KEY_RECORD },
1541 [0x28] = KEY_SAVE, /* Screenshot */ 1696 { 0x28, KEY_SAVE }, /* Screenshot */
1542 [0x2f] = KEY_MENU, 1697 { 0x2f, KEY_MENU },
1543 [0x30] = KEY_CANCEL, 1698 { 0x30, KEY_CANCEL },
1544 [0x31] = KEY_CHANNEL, /* Channel Surf */ 1699 { 0x31, KEY_CHANNEL }, /* Channel Surf */
1545 [0x32] = KEY_SUBTITLE, 1700 { 0x32, KEY_SUBTITLE },
1546 [0x33] = KEY_LANGUAGE, 1701 { 0x33, KEY_LANGUAGE },
1547 [0x34] = KEY_REWIND, 1702 { 0x34, KEY_REWIND },
1548 [0x35] = KEY_FASTFORWARD, 1703 { 0x35, KEY_FASTFORWARD },
1549 [0x36] = KEY_TV, 1704 { 0x36, KEY_TV },
1550 [0x37] = KEY_RADIO, /* FM */ 1705 { 0x37, KEY_RADIO }, /* FM */
1551 [0x38] = KEY_DVD, 1706 { 0x38, KEY_DVD },
1552 1707
1553 [0x3e] = KEY_F21, /* MCE +VOL, on Y04G0033 */ 1708 { 0x3e, KEY_F21 }, /* MCE +VOL, on Y04G0033 */
1554 [0x3a] = KEY_F22, /* MCE -VOL, on Y04G0033 */ 1709 { 0x3a, KEY_F22 }, /* MCE -VOL, on Y04G0033 */
1555 [0x3b] = KEY_F23, /* MCE +CH, on Y04G0033 */ 1710 { 0x3b, KEY_F23 }, /* MCE +CH, on Y04G0033 */
1556 [0x3f] = KEY_F24 /* MCE -CH, on Y04G0033 */ 1711 { 0x3f, KEY_F24 } /* MCE -CH, on Y04G0033 */
1557}; 1712};
1558EXPORT_SYMBOL_GPL(ir_codes_winfast); 1713
1559 1714struct ir_scancode_table ir_codes_winfast_table = {
1560IR_KEYTAB_TYPE ir_codes_pinnacle_color[IR_KEYTAB_SIZE] = { 1715 .scan = ir_codes_winfast,
1561 [0x59] = KEY_MUTE, 1716 .size = ARRAY_SIZE(ir_codes_winfast),
1562 [0x4a] = KEY_POWER, 1717};
1563 1718EXPORT_SYMBOL_GPL(ir_codes_winfast_table);
1564 [0x18] = KEY_TEXT, 1719
1565 [0x26] = KEY_TV, 1720static struct ir_scancode ir_codes_pinnacle_color[] = {
1566 [0x3d] = KEY_PRINT, 1721 { 0x59, KEY_MUTE },
1567 1722 { 0x4a, KEY_POWER },
1568 [0x48] = KEY_RED, 1723
1569 [0x04] = KEY_GREEN, 1724 { 0x18, KEY_TEXT },
1570 [0x11] = KEY_YELLOW, 1725 { 0x26, KEY_TV },
1571 [0x00] = KEY_BLUE, 1726 { 0x3d, KEY_PRINT },
1572 1727
1573 [0x2d] = KEY_VOLUMEUP, 1728 { 0x48, KEY_RED },
1574 [0x1e] = KEY_VOLUMEDOWN, 1729 { 0x04, KEY_GREEN },
1575 1730 { 0x11, KEY_YELLOW },
1576 [0x49] = KEY_MENU, 1731 { 0x00, KEY_BLUE },
1577 1732
1578 [0x16] = KEY_CHANNELUP, 1733 { 0x2d, KEY_VOLUMEUP },
1579 [0x17] = KEY_CHANNELDOWN, 1734 { 0x1e, KEY_VOLUMEDOWN },
1580 1735
1581 [0x20] = KEY_UP, 1736 { 0x49, KEY_MENU },
1582 [0x21] = KEY_DOWN, 1737
1583 [0x22] = KEY_LEFT, 1738 { 0x16, KEY_CHANNELUP },
1584 [0x23] = KEY_RIGHT, 1739 { 0x17, KEY_CHANNELDOWN },
1585 [0x0d] = KEY_SELECT, 1740
1586 1741 { 0x20, KEY_UP },
1587 [0x08] = KEY_BACK, 1742 { 0x21, KEY_DOWN },
1588 [0x07] = KEY_REFRESH, 1743 { 0x22, KEY_LEFT },
1589 1744 { 0x23, KEY_RIGHT },
1590 [0x2f] = KEY_ZOOM, 1745 { 0x0d, KEY_SELECT },
1591 [0x29] = KEY_RECORD, 1746
1592 1747 { 0x08, KEY_BACK },
1593 [0x4b] = KEY_PAUSE, 1748 { 0x07, KEY_REFRESH },
1594 [0x4d] = KEY_REWIND, 1749
1595 [0x2e] = KEY_PLAY, 1750 { 0x2f, KEY_ZOOM },
1596 [0x4e] = KEY_FORWARD, 1751 { 0x29, KEY_RECORD },
1597 [0x53] = KEY_PREVIOUS, 1752
1598 [0x4c] = KEY_STOP, 1753 { 0x4b, KEY_PAUSE },
1599 [0x54] = KEY_NEXT, 1754 { 0x4d, KEY_REWIND },
1600 1755 { 0x2e, KEY_PLAY },
1601 [0x69] = KEY_0, 1756 { 0x4e, KEY_FORWARD },
1602 [0x6a] = KEY_1, 1757 { 0x53, KEY_PREVIOUS },
1603 [0x6b] = KEY_2, 1758 { 0x4c, KEY_STOP },
1604 [0x6c] = KEY_3, 1759 { 0x54, KEY_NEXT },
1605 [0x6d] = KEY_4, 1760
1606 [0x6e] = KEY_5, 1761 { 0x69, KEY_0 },
1607 [0x6f] = KEY_6, 1762 { 0x6a, KEY_1 },
1608 [0x70] = KEY_7, 1763 { 0x6b, KEY_2 },
1609 [0x71] = KEY_8, 1764 { 0x6c, KEY_3 },
1610 [0x72] = KEY_9, 1765 { 0x6d, KEY_4 },
1611 1766 { 0x6e, KEY_5 },
1612 [0x74] = KEY_CHANNEL, 1767 { 0x6f, KEY_6 },
1613 [0x0a] = KEY_BACKSPACE, 1768 { 0x70, KEY_7 },
1614}; 1769 { 0x71, KEY_8 },
1615EXPORT_SYMBOL_GPL(ir_codes_pinnacle_color); 1770 { 0x72, KEY_9 },
1771
1772 { 0x74, KEY_CHANNEL },
1773 { 0x0a, KEY_BACKSPACE },
1774};
1775
1776struct ir_scancode_table ir_codes_pinnacle_color_table = {
1777 .scan = ir_codes_pinnacle_color,
1778 .size = ARRAY_SIZE(ir_codes_pinnacle_color),
1779};
1780EXPORT_SYMBOL_GPL(ir_codes_pinnacle_color_table);
1616 1781
1617/* Hauppauge: the newer, gray remotes (seems there are multiple 1782/* Hauppauge: the newer, gray remotes (seems there are multiple
1618 * slightly different versions), shipped with cx88+ivtv cards. 1783 * slightly different versions), shipped with cx88+ivtv cards.
1619 * almost rc5 coding, but some non-standard keys */ 1784 * almost rc5 coding, but some non-standard keys */
1620IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR_KEYTAB_SIZE] = { 1785static struct ir_scancode ir_codes_hauppauge_new[] = {
1621 /* Keys 0 to 9 */ 1786 /* Keys 0 to 9 */
1622 [0x00] = KEY_0, 1787 { 0x00, KEY_0 },
1623 [0x01] = KEY_1, 1788 { 0x01, KEY_1 },
1624 [0x02] = KEY_2, 1789 { 0x02, KEY_2 },
1625 [0x03] = KEY_3, 1790 { 0x03, KEY_3 },
1626 [0x04] = KEY_4, 1791 { 0x04, KEY_4 },
1627 [0x05] = KEY_5, 1792 { 0x05, KEY_5 },
1628 [0x06] = KEY_6, 1793 { 0x06, KEY_6 },
1629 [0x07] = KEY_7, 1794 { 0x07, KEY_7 },
1630 [0x08] = KEY_8, 1795 { 0x08, KEY_8 },
1631 [0x09] = KEY_9, 1796 { 0x09, KEY_9 },
1632 1797
1633 [0x0a] = KEY_TEXT, /* keypad asterisk as well */ 1798 { 0x0a, KEY_TEXT }, /* keypad asterisk as well */
1634 [0x0b] = KEY_RED, /* red button */ 1799 { 0x0b, KEY_RED }, /* red button */
1635 [0x0c] = KEY_RADIO, 1800 { 0x0c, KEY_RADIO },
1636 [0x0d] = KEY_MENU, 1801 { 0x0d, KEY_MENU },
1637 [0x0e] = KEY_SUBTITLE, /* also the # key */ 1802 { 0x0e, KEY_SUBTITLE }, /* also the # key */
1638 [0x0f] = KEY_MUTE, 1803 { 0x0f, KEY_MUTE },
1639 [0x10] = KEY_VOLUMEUP, 1804 { 0x10, KEY_VOLUMEUP },
1640 [0x11] = KEY_VOLUMEDOWN, 1805 { 0x11, KEY_VOLUMEDOWN },
1641 [0x12] = KEY_PREVIOUS, /* previous channel */ 1806 { 0x12, KEY_PREVIOUS }, /* previous channel */
1642 [0x14] = KEY_UP, 1807 { 0x14, KEY_UP },
1643 [0x15] = KEY_DOWN, 1808 { 0x15, KEY_DOWN },
1644 [0x16] = KEY_LEFT, 1809 { 0x16, KEY_LEFT },
1645 [0x17] = KEY_RIGHT, 1810 { 0x17, KEY_RIGHT },
1646 [0x18] = KEY_VIDEO, /* Videos */ 1811 { 0x18, KEY_VIDEO }, /* Videos */
1647 [0x19] = KEY_AUDIO, /* Music */ 1812 { 0x19, KEY_AUDIO }, /* Music */
1648 /* 0x1a: Pictures - presume this means 1813 /* 0x1a: Pictures - presume this means
1649 "Multimedia Home Platform" - 1814 "Multimedia Home Platform" -
1650 no "PICTURES" key in input.h 1815 no "PICTURES" key in input.h
1651 */ 1816 */
1652 [0x1a] = KEY_MHP, 1817 { 0x1a, KEY_MHP },
1653 1818
1654 [0x1b] = KEY_EPG, /* Guide */ 1819 { 0x1b, KEY_EPG }, /* Guide */
1655 [0x1c] = KEY_TV, 1820 { 0x1c, KEY_TV },
1656 [0x1e] = KEY_NEXTSONG, /* skip >| */ 1821 { 0x1e, KEY_NEXTSONG }, /* skip >| */
1657 [0x1f] = KEY_EXIT, /* back/exit */ 1822 { 0x1f, KEY_EXIT }, /* back/exit */
1658 [0x20] = KEY_CHANNELUP, /* channel / program + */ 1823 { 0x20, KEY_CHANNELUP }, /* channel / program + */
1659 [0x21] = KEY_CHANNELDOWN, /* channel / program - */ 1824 { 0x21, KEY_CHANNELDOWN }, /* channel / program - */
1660 [0x22] = KEY_CHANNEL, /* source (old black remote) */ 1825 { 0x22, KEY_CHANNEL }, /* source (old black remote) */
1661 [0x24] = KEY_PREVIOUSSONG, /* replay |< */ 1826 { 0x24, KEY_PREVIOUSSONG }, /* replay |< */
1662 [0x25] = KEY_ENTER, /* OK */ 1827 { 0x25, KEY_ENTER }, /* OK */
1663 [0x26] = KEY_SLEEP, /* minimize (old black remote) */ 1828 { 0x26, KEY_SLEEP }, /* minimize (old black remote) */
1664 [0x29] = KEY_BLUE, /* blue key */ 1829 { 0x29, KEY_BLUE }, /* blue key */
1665 [0x2e] = KEY_GREEN, /* green button */ 1830 { 0x2e, KEY_GREEN }, /* green button */
1666 [0x30] = KEY_PAUSE, /* pause */ 1831 { 0x30, KEY_PAUSE }, /* pause */
1667 [0x32] = KEY_REWIND, /* backward << */ 1832 { 0x32, KEY_REWIND }, /* backward << */
1668 [0x34] = KEY_FASTFORWARD, /* forward >> */ 1833 { 0x34, KEY_FASTFORWARD }, /* forward >> */
1669 [0x35] = KEY_PLAY, 1834 { 0x35, KEY_PLAY },
1670 [0x36] = KEY_STOP, 1835 { 0x36, KEY_STOP },
1671 [0x37] = KEY_RECORD, /* recording */ 1836 { 0x37, KEY_RECORD }, /* recording */
1672 [0x38] = KEY_YELLOW, /* yellow key */ 1837 { 0x38, KEY_YELLOW }, /* yellow key */
1673 [0x3b] = KEY_SELECT, /* top right button */ 1838 { 0x3b, KEY_SELECT }, /* top right button */
1674 [0x3c] = KEY_ZOOM, /* full */ 1839 { 0x3c, KEY_ZOOM }, /* full */
1675 [0x3d] = KEY_POWER, /* system power (green button) */ 1840 { 0x3d, KEY_POWER }, /* system power (green button) */
1676}; 1841};
1677EXPORT_SYMBOL_GPL(ir_codes_hauppauge_new); 1842
1678 1843struct ir_scancode_table ir_codes_hauppauge_new_table = {
1679IR_KEYTAB_TYPE ir_codes_npgtech[IR_KEYTAB_SIZE] = { 1844 .scan = ir_codes_hauppauge_new,
1680 [0x1d] = KEY_SWITCHVIDEOMODE, /* switch inputs */ 1845 .size = ARRAY_SIZE(ir_codes_hauppauge_new),
1681 [0x2a] = KEY_FRONT, 1846};
1682 1847EXPORT_SYMBOL_GPL(ir_codes_hauppauge_new_table);
1683 [0x3e] = KEY_1, 1848
1684 [0x02] = KEY_2, 1849static struct ir_scancode ir_codes_npgtech[] = {
1685 [0x06] = KEY_3, 1850 { 0x1d, KEY_SWITCHVIDEOMODE }, /* switch inputs */
1686 [0x0a] = KEY_4, 1851 { 0x2a, KEY_FRONT },
1687 [0x0e] = KEY_5, 1852
1688 [0x12] = KEY_6, 1853 { 0x3e, KEY_1 },
1689 [0x16] = KEY_7, 1854 { 0x02, KEY_2 },
1690 [0x1a] = KEY_8, 1855 { 0x06, KEY_3 },
1691 [0x1e] = KEY_9, 1856 { 0x0a, KEY_4 },
1692 [0x3a] = KEY_0, 1857 { 0x0e, KEY_5 },
1693 [0x22] = KEY_NUMLOCK, /* -/-- */ 1858 { 0x12, KEY_6 },
1694 [0x20] = KEY_REFRESH, 1859 { 0x16, KEY_7 },
1695 1860 { 0x1a, KEY_8 },
1696 [0x03] = KEY_BRIGHTNESSDOWN, 1861 { 0x1e, KEY_9 },
1697 [0x28] = KEY_AUDIO, 1862 { 0x3a, KEY_0 },
1698 [0x3c] = KEY_CHANNELUP, 1863 { 0x22, KEY_NUMLOCK }, /* -/-- */
1699 [0x3f] = KEY_VOLUMEDOWN, 1864 { 0x20, KEY_REFRESH },
1700 [0x2e] = KEY_MUTE, 1865
1701 [0x3b] = KEY_VOLUMEUP, 1866 { 0x03, KEY_BRIGHTNESSDOWN },
1702 [0x00] = KEY_CHANNELDOWN, 1867 { 0x28, KEY_AUDIO },
1703 [0x07] = KEY_BRIGHTNESSUP, 1868 { 0x3c, KEY_CHANNELUP },
1704 [0x2c] = KEY_TEXT, 1869 { 0x3f, KEY_VOLUMEDOWN },
1705 1870 { 0x2e, KEY_MUTE },
1706 [0x37] = KEY_RECORD, 1871 { 0x3b, KEY_VOLUMEUP },
1707 [0x17] = KEY_PLAY, 1872 { 0x00, KEY_CHANNELDOWN },
1708 [0x13] = KEY_PAUSE, 1873 { 0x07, KEY_BRIGHTNESSUP },
1709 [0x26] = KEY_STOP, 1874 { 0x2c, KEY_TEXT },
1710 [0x18] = KEY_FASTFORWARD, 1875
1711 [0x14] = KEY_REWIND, 1876 { 0x37, KEY_RECORD },
1712 [0x33] = KEY_ZOOM, 1877 { 0x17, KEY_PLAY },
1713 [0x32] = KEY_KEYBOARD, 1878 { 0x13, KEY_PAUSE },
1714 [0x30] = KEY_GOTO, /* Pointing arrow */ 1879 { 0x26, KEY_STOP },
1715 [0x36] = KEY_MACRO, /* Maximize/Minimize (yellow) */ 1880 { 0x18, KEY_FASTFORWARD },
1716 [0x0b] = KEY_RADIO, 1881 { 0x14, KEY_REWIND },
1717 [0x10] = KEY_POWER, 1882 { 0x33, KEY_ZOOM },
1718 1883 { 0x32, KEY_KEYBOARD },
1719}; 1884 { 0x30, KEY_GOTO }, /* Pointing arrow */
1720EXPORT_SYMBOL_GPL(ir_codes_npgtech); 1885 { 0x36, KEY_MACRO }, /* Maximize/Minimize (yellow) */
1886 { 0x0b, KEY_RADIO },
1887 { 0x10, KEY_POWER },
1888
1889};
1890
1891struct ir_scancode_table ir_codes_npgtech_table = {
1892 .scan = ir_codes_npgtech,
1893 .size = ARRAY_SIZE(ir_codes_npgtech),
1894};
1895EXPORT_SYMBOL_GPL(ir_codes_npgtech_table);
1721 1896
1722/* Norwood Micro (non-Pro) TV Tuner 1897/* Norwood Micro (non-Pro) TV Tuner
1723 By Peter Naulls <peter@chocky.org> 1898 By Peter Naulls <peter@chocky.org>
1724 Key comments are the functions given in the manual */ 1899 Key comments are the functions given in the manual */
1725IR_KEYTAB_TYPE ir_codes_norwood[IR_KEYTAB_SIZE] = { 1900static struct ir_scancode ir_codes_norwood[] = {
1726 /* Keys 0 to 9 */ 1901 /* Keys 0 to 9 */
1727 [0x20] = KEY_0, 1902 { 0x20, KEY_0 },
1728 [0x21] = KEY_1, 1903 { 0x21, KEY_1 },
1729 [0x22] = KEY_2, 1904 { 0x22, KEY_2 },
1730 [0x23] = KEY_3, 1905 { 0x23, KEY_3 },
1731 [0x24] = KEY_4, 1906 { 0x24, KEY_4 },
1732 [0x25] = KEY_5, 1907 { 0x25, KEY_5 },
1733 [0x26] = KEY_6, 1908 { 0x26, KEY_6 },
1734 [0x27] = KEY_7, 1909 { 0x27, KEY_7 },
1735 [0x28] = KEY_8, 1910 { 0x28, KEY_8 },
1736 [0x29] = KEY_9, 1911 { 0x29, KEY_9 },
1737 1912
1738 [0x78] = KEY_TUNER, /* Video Source */ 1913 { 0x78, KEY_TUNER }, /* Video Source */
1739 [0x2c] = KEY_EXIT, /* Open/Close software */ 1914 { 0x2c, KEY_EXIT }, /* Open/Close software */
1740 [0x2a] = KEY_SELECT, /* 2 Digit Select */ 1915 { 0x2a, KEY_SELECT }, /* 2 Digit Select */
1741 [0x69] = KEY_AGAIN, /* Recall */ 1916 { 0x69, KEY_AGAIN }, /* Recall */
1742 1917
1743 [0x32] = KEY_BRIGHTNESSUP, /* Brightness increase */ 1918 { 0x32, KEY_BRIGHTNESSUP }, /* Brightness increase */
1744 [0x33] = KEY_BRIGHTNESSDOWN, /* Brightness decrease */ 1919 { 0x33, KEY_BRIGHTNESSDOWN }, /* Brightness decrease */
1745 [0x6b] = KEY_KPPLUS, /* (not named >>>>>) */ 1920 { 0x6b, KEY_KPPLUS }, /* (not named >>>>>) */
1746 [0x6c] = KEY_KPMINUS, /* (not named <<<<<) */ 1921 { 0x6c, KEY_KPMINUS }, /* (not named <<<<<) */
1747 1922
1748 [0x2d] = KEY_MUTE, /* Mute */ 1923 { 0x2d, KEY_MUTE }, /* Mute */
1749 [0x30] = KEY_VOLUMEUP, /* Volume up */ 1924 { 0x30, KEY_VOLUMEUP }, /* Volume up */
1750 [0x31] = KEY_VOLUMEDOWN,/* Volume down */ 1925 { 0x31, KEY_VOLUMEDOWN }, /* Volume down */
1751 [0x60] = KEY_CHANNELUP, /* Channel up */ 1926 { 0x60, KEY_CHANNELUP }, /* Channel up */
1752 [0x61] = KEY_CHANNELDOWN,/* Channel down */ 1927 { 0x61, KEY_CHANNELDOWN }, /* Channel down */
1753 1928
1754 [0x3f] = KEY_RECORD, /* Record */ 1929 { 0x3f, KEY_RECORD }, /* Record */
1755 [0x37] = KEY_PLAY, /* Play */ 1930 { 0x37, KEY_PLAY }, /* Play */
1756 [0x36] = KEY_PAUSE, /* Pause */ 1931 { 0x36, KEY_PAUSE }, /* Pause */
1757 [0x2b] = KEY_STOP, /* Stop */ 1932 { 0x2b, KEY_STOP }, /* Stop */
1758 [0x67] = KEY_FASTFORWARD,/* Foward */ 1933 { 0x67, KEY_FASTFORWARD }, /* Foward */
1759 [0x66] = KEY_REWIND, /* Rewind */ 1934 { 0x66, KEY_REWIND }, /* Rewind */
1760 [0x3e] = KEY_SEARCH, /* Auto Scan */ 1935 { 0x3e, KEY_SEARCH }, /* Auto Scan */
1761 [0x2e] = KEY_CAMERA, /* Capture Video */ 1936 { 0x2e, KEY_CAMERA }, /* Capture Video */
1762 [0x6d] = KEY_MENU, /* Show/Hide Control */ 1937 { 0x6d, KEY_MENU }, /* Show/Hide Control */
1763 [0x2f] = KEY_ZOOM, /* Full Screen */ 1938 { 0x2f, KEY_ZOOM }, /* Full Screen */
1764 [0x34] = KEY_RADIO, /* FM */ 1939 { 0x34, KEY_RADIO }, /* FM */
1765 [0x65] = KEY_POWER, /* Computer power */ 1940 { 0x65, KEY_POWER }, /* Computer power */
1766}; 1941};
1767EXPORT_SYMBOL_GPL(ir_codes_norwood); 1942
1943struct ir_scancode_table ir_codes_norwood_table = {
1944 .scan = ir_codes_norwood,
1945 .size = ARRAY_SIZE(ir_codes_norwood),
1946};
1947EXPORT_SYMBOL_GPL(ir_codes_norwood_table);
1768 1948
1769/* From reading the following remotes: 1949/* From reading the following remotes:
1770 * Zenith Universal 7 / TV Mode 807 / VCR Mode 837 1950 * Zenith Universal 7 / TV Mode 807 / VCR Mode 837
1771 * Hauppauge (from NOVA-CI-s box product) 1951 * Hauppauge (from NOVA-CI-s box product)
1772 * This is a "middle of the road" approach, differences are noted 1952 * This is a "middle of the road" approach, differences are noted
1773 */ 1953 */
1774IR_KEYTAB_TYPE ir_codes_budget_ci_old[IR_KEYTAB_SIZE] = { 1954static struct ir_scancode ir_codes_budget_ci_old[] = {
1775 [0x00] = KEY_0, 1955 { 0x00, KEY_0 },
1776 [0x01] = KEY_1, 1956 { 0x01, KEY_1 },
1777 [0x02] = KEY_2, 1957 { 0x02, KEY_2 },
1778 [0x03] = KEY_3, 1958 { 0x03, KEY_3 },
1779 [0x04] = KEY_4, 1959 { 0x04, KEY_4 },
1780 [0x05] = KEY_5, 1960 { 0x05, KEY_5 },
1781 [0x06] = KEY_6, 1961 { 0x06, KEY_6 },
1782 [0x07] = KEY_7, 1962 { 0x07, KEY_7 },
1783 [0x08] = KEY_8, 1963 { 0x08, KEY_8 },
1784 [0x09] = KEY_9, 1964 { 0x09, KEY_9 },
1785 [0x0a] = KEY_ENTER, 1965 { 0x0a, KEY_ENTER },
1786 [0x0b] = KEY_RED, 1966 { 0x0b, KEY_RED },
1787 [0x0c] = KEY_POWER, /* RADIO on Hauppauge */ 1967 { 0x0c, KEY_POWER }, /* RADIO on Hauppauge */
1788 [0x0d] = KEY_MUTE, 1968 { 0x0d, KEY_MUTE },
1789 [0x0f] = KEY_A, /* TV on Hauppauge */ 1969 { 0x0f, KEY_A }, /* TV on Hauppauge */
1790 [0x10] = KEY_VOLUMEUP, 1970 { 0x10, KEY_VOLUMEUP },
1791 [0x11] = KEY_VOLUMEDOWN, 1971 { 0x11, KEY_VOLUMEDOWN },
1792 [0x14] = KEY_B, 1972 { 0x14, KEY_B },
1793 [0x1c] = KEY_UP, 1973 { 0x1c, KEY_UP },
1794 [0x1d] = KEY_DOWN, 1974 { 0x1d, KEY_DOWN },
1795 [0x1e] = KEY_OPTION, /* RESERVED on Hauppauge */ 1975 { 0x1e, KEY_OPTION }, /* RESERVED on Hauppauge */
1796 [0x1f] = KEY_BREAK, 1976 { 0x1f, KEY_BREAK },
1797 [0x20] = KEY_CHANNELUP, 1977 { 0x20, KEY_CHANNELUP },
1798 [0x21] = KEY_CHANNELDOWN, 1978 { 0x21, KEY_CHANNELDOWN },
1799 [0x22] = KEY_PREVIOUS, /* Prev Ch on Zenith, SOURCE on Hauppauge */ 1979 { 0x22, KEY_PREVIOUS }, /* Prev Ch on Zenith, SOURCE on Hauppauge */
1800 [0x24] = KEY_RESTART, 1980 { 0x24, KEY_RESTART },
1801 [0x25] = KEY_OK, 1981 { 0x25, KEY_OK },
1802 [0x26] = KEY_CYCLEWINDOWS, /* MINIMIZE on Hauppauge */ 1982 { 0x26, KEY_CYCLEWINDOWS }, /* MINIMIZE on Hauppauge */
1803 [0x28] = KEY_ENTER, /* VCR mode on Zenith */ 1983 { 0x28, KEY_ENTER }, /* VCR mode on Zenith */
1804 [0x29] = KEY_PAUSE, 1984 { 0x29, KEY_PAUSE },
1805 [0x2b] = KEY_RIGHT, 1985 { 0x2b, KEY_RIGHT },
1806 [0x2c] = KEY_LEFT, 1986 { 0x2c, KEY_LEFT },
1807 [0x2e] = KEY_MENU, /* FULL SCREEN on Hauppauge */ 1987 { 0x2e, KEY_MENU }, /* FULL SCREEN on Hauppauge */
1808 [0x30] = KEY_SLOW, 1988 { 0x30, KEY_SLOW },
1809 [0x31] = KEY_PREVIOUS, /* VCR mode on Zenith */ 1989 { 0x31, KEY_PREVIOUS }, /* VCR mode on Zenith */
1810 [0x32] = KEY_REWIND, 1990 { 0x32, KEY_REWIND },
1811 [0x34] = KEY_FASTFORWARD, 1991 { 0x34, KEY_FASTFORWARD },
1812 [0x35] = KEY_PLAY, 1992 { 0x35, KEY_PLAY },
1813 [0x36] = KEY_STOP, 1993 { 0x36, KEY_STOP },
1814 [0x37] = KEY_RECORD, 1994 { 0x37, KEY_RECORD },
1815 [0x38] = KEY_TUNER, /* TV/VCR on Zenith */ 1995 { 0x38, KEY_TUNER }, /* TV/VCR on Zenith */
1816 [0x3a] = KEY_C, 1996 { 0x3a, KEY_C },
1817 [0x3c] = KEY_EXIT, 1997 { 0x3c, KEY_EXIT },
1818 [0x3d] = KEY_POWER2, 1998 { 0x3d, KEY_POWER2 },
1819 [0x3e] = KEY_TUNER, 1999 { 0x3e, KEY_TUNER },
1820}; 2000};
1821EXPORT_SYMBOL_GPL(ir_codes_budget_ci_old); 2001
2002struct ir_scancode_table ir_codes_budget_ci_old_table = {
2003 .scan = ir_codes_budget_ci_old,
2004 .size = ARRAY_SIZE(ir_codes_budget_ci_old),
2005};
2006EXPORT_SYMBOL_GPL(ir_codes_budget_ci_old_table);
1822 2007
1823/* 2008/*
1824 * Marc Fargas <telenieko@telenieko.com> 2009 * Marc Fargas <telenieko@telenieko.com>
1825 * this is the remote control that comes with the asus p7131 2010 * this is the remote control that comes with the asus p7131
1826 * which has a label saying is "Model PC-39" 2011 * which has a label saying is "Model PC-39"
1827 */ 2012 */
1828IR_KEYTAB_TYPE ir_codes_asus_pc39[IR_KEYTAB_SIZE] = { 2013static struct ir_scancode ir_codes_asus_pc39[] = {
1829 /* Keys 0 to 9 */ 2014 /* Keys 0 to 9 */
1830 [0x15] = KEY_0, 2015 { 0x15, KEY_0 },
1831 [0x29] = KEY_1, 2016 { 0x29, KEY_1 },
1832 [0x2d] = KEY_2, 2017 { 0x2d, KEY_2 },
1833 [0x2b] = KEY_3, 2018 { 0x2b, KEY_3 },
1834 [0x09] = KEY_4, 2019 { 0x09, KEY_4 },
1835 [0x0d] = KEY_5, 2020 { 0x0d, KEY_5 },
1836 [0x0b] = KEY_6, 2021 { 0x0b, KEY_6 },
1837 [0x31] = KEY_7, 2022 { 0x31, KEY_7 },
1838 [0x35] = KEY_8, 2023 { 0x35, KEY_8 },
1839 [0x33] = KEY_9, 2024 { 0x33, KEY_9 },
1840 2025
1841 [0x3e] = KEY_RADIO, /* radio */ 2026 { 0x3e, KEY_RADIO }, /* radio */
1842 [0x03] = KEY_MENU, /* dvd/menu */ 2027 { 0x03, KEY_MENU }, /* dvd/menu */
1843 [0x2a] = KEY_VOLUMEUP, 2028 { 0x2a, KEY_VOLUMEUP },
1844 [0x19] = KEY_VOLUMEDOWN, 2029 { 0x19, KEY_VOLUMEDOWN },
1845 [0x37] = KEY_UP, 2030 { 0x37, KEY_UP },
1846 [0x3b] = KEY_DOWN, 2031 { 0x3b, KEY_DOWN },
1847 [0x27] = KEY_LEFT, 2032 { 0x27, KEY_LEFT },
1848 [0x2f] = KEY_RIGHT, 2033 { 0x2f, KEY_RIGHT },
1849 [0x25] = KEY_VIDEO, /* video */ 2034 { 0x25, KEY_VIDEO }, /* video */
1850 [0x39] = KEY_AUDIO, /* music */ 2035 { 0x39, KEY_AUDIO }, /* music */
1851 2036
1852 [0x21] = KEY_TV, /* tv */ 2037 { 0x21, KEY_TV }, /* tv */
1853 [0x1d] = KEY_EXIT, /* back */ 2038 { 0x1d, KEY_EXIT }, /* back */
1854 [0x0a] = KEY_CHANNELUP, /* channel / program + */ 2039 { 0x0a, KEY_CHANNELUP }, /* channel / program + */
1855 [0x1b] = KEY_CHANNELDOWN, /* channel / program - */ 2040 { 0x1b, KEY_CHANNELDOWN }, /* channel / program - */
1856 [0x1a] = KEY_ENTER, /* enter */ 2041 { 0x1a, KEY_ENTER }, /* enter */
1857 2042
1858 [0x06] = KEY_PAUSE, /* play/pause */ 2043 { 0x06, KEY_PAUSE }, /* play/pause */
1859 [0x1e] = KEY_PREVIOUS, /* rew */ 2044 { 0x1e, KEY_PREVIOUS }, /* rew */
1860 [0x26] = KEY_NEXT, /* forward */ 2045 { 0x26, KEY_NEXT }, /* forward */
1861 [0x0e] = KEY_REWIND, /* backward << */ 2046 { 0x0e, KEY_REWIND }, /* backward << */
1862 [0x3a] = KEY_FASTFORWARD, /* forward >> */ 2047 { 0x3a, KEY_FASTFORWARD }, /* forward >> */
1863 [0x36] = KEY_STOP, 2048 { 0x36, KEY_STOP },
1864 [0x2e] = KEY_RECORD, /* recording */ 2049 { 0x2e, KEY_RECORD }, /* recording */
1865 [0x16] = KEY_POWER, /* the button that reads "close" */ 2050 { 0x16, KEY_POWER }, /* the button that reads "close" */
1866 2051
1867 [0x11] = KEY_ZOOM, /* full screen */ 2052 { 0x11, KEY_ZOOM }, /* full screen */
1868 [0x13] = KEY_MACRO, /* recall */ 2053 { 0x13, KEY_MACRO }, /* recall */
1869 [0x23] = KEY_HOME, /* home */ 2054 { 0x23, KEY_HOME }, /* home */
1870 [0x05] = KEY_PVR, /* picture */ 2055 { 0x05, KEY_PVR }, /* picture */
1871 [0x3d] = KEY_MUTE, /* mute */ 2056 { 0x3d, KEY_MUTE }, /* mute */
1872 [0x01] = KEY_DVD, /* dvd */ 2057 { 0x01, KEY_DVD }, /* dvd */
1873}; 2058};
1874EXPORT_SYMBOL_GPL(ir_codes_asus_pc39); 2059
2060struct ir_scancode_table ir_codes_asus_pc39_table = {
2061 .scan = ir_codes_asus_pc39,
2062 .size = ARRAY_SIZE(ir_codes_asus_pc39),
2063};
2064EXPORT_SYMBOL_GPL(ir_codes_asus_pc39_table);
1875 2065
1876 2066
1877/* Encore ENLTV-FM - black plastic, white front cover with white glowing buttons 2067/* Encore ENLTV-FM - black plastic, white front cover with white glowing buttons
1878 Juan Pablo Sormani <sorman@gmail.com> */ 2068 Juan Pablo Sormani <sorman@gmail.com> */
1879IR_KEYTAB_TYPE ir_codes_encore_enltv[IR_KEYTAB_SIZE] = { 2069static struct ir_scancode ir_codes_encore_enltv[] = {
1880 2070
1881 /* Power button does nothing, neither in Windows app, 2071 /* Power button does nothing, neither in Windows app,
1882 although it sends data (used for BIOS wakeup?) */ 2072 although it sends data (used for BIOS wakeup?) */
1883 [0x0d] = KEY_MUTE, 2073 { 0x0d, KEY_MUTE },
1884 2074
1885 [0x1e] = KEY_TV, 2075 { 0x1e, KEY_TV },
1886 [0x00] = KEY_VIDEO, 2076 { 0x00, KEY_VIDEO },
1887 [0x01] = KEY_AUDIO, /* music */ 2077 { 0x01, KEY_AUDIO }, /* music */
1888 [0x02] = KEY_MHP, /* picture */ 2078 { 0x02, KEY_MHP }, /* picture */
1889 2079
1890 [0x1f] = KEY_1, 2080 { 0x1f, KEY_1 },
1891 [0x03] = KEY_2, 2081 { 0x03, KEY_2 },
1892 [0x04] = KEY_3, 2082 { 0x04, KEY_3 },
1893 [0x05] = KEY_4, 2083 { 0x05, KEY_4 },
1894 [0x1c] = KEY_5, 2084 { 0x1c, KEY_5 },
1895 [0x06] = KEY_6, 2085 { 0x06, KEY_6 },
1896 [0x07] = KEY_7, 2086 { 0x07, KEY_7 },
1897 [0x08] = KEY_8, 2087 { 0x08, KEY_8 },
1898 [0x1d] = KEY_9, 2088 { 0x1d, KEY_9 },
1899 [0x0a] = KEY_0, 2089 { 0x0a, KEY_0 },
1900 2090
1901 [0x09] = KEY_LIST, /* -/-- */ 2091 { 0x09, KEY_LIST }, /* -/-- */
1902 [0x0b] = KEY_LAST, /* recall */ 2092 { 0x0b, KEY_LAST }, /* recall */
1903 2093
1904 [0x14] = KEY_HOME, /* win start menu */ 2094 { 0x14, KEY_HOME }, /* win start menu */
1905 [0x15] = KEY_EXIT, /* exit */ 2095 { 0x15, KEY_EXIT }, /* exit */
1906 [0x16] = KEY_CHANNELUP, /* UP */ 2096 { 0x16, KEY_CHANNELUP }, /* UP */
1907 [0x12] = KEY_CHANNELDOWN, /* DOWN */ 2097 { 0x12, KEY_CHANNELDOWN }, /* DOWN */
1908 [0x0c] = KEY_VOLUMEUP, /* RIGHT */ 2098 { 0x0c, KEY_VOLUMEUP }, /* RIGHT */
1909 [0x17] = KEY_VOLUMEDOWN, /* LEFT */ 2099 { 0x17, KEY_VOLUMEDOWN }, /* LEFT */
1910 2100
1911 [0x18] = KEY_ENTER, /* OK */ 2101 { 0x18, KEY_ENTER }, /* OK */
1912 2102
1913 [0x0e] = KEY_ESC, 2103 { 0x0e, KEY_ESC },
1914 [0x13] = KEY_CYCLEWINDOWS, /* desktop */ 2104 { 0x13, KEY_CYCLEWINDOWS }, /* desktop */
1915 [0x11] = KEY_TAB, 2105 { 0x11, KEY_TAB },
1916 [0x19] = KEY_SWITCHVIDEOMODE, /* switch */ 2106 { 0x19, KEY_SWITCHVIDEOMODE }, /* switch */
1917 2107
1918 [0x1a] = KEY_MENU, 2108 { 0x1a, KEY_MENU },
1919 [0x1b] = KEY_ZOOM, /* fullscreen */ 2109 { 0x1b, KEY_ZOOM }, /* fullscreen */
1920 [0x44] = KEY_TIME, /* time shift */ 2110 { 0x44, KEY_TIME }, /* time shift */
1921 [0x40] = KEY_MODE, /* source */ 2111 { 0x40, KEY_MODE }, /* source */
1922 2112
1923 [0x5a] = KEY_RECORD, 2113 { 0x5a, KEY_RECORD },
1924 [0x42] = KEY_PLAY, /* play/pause */ 2114 { 0x42, KEY_PLAY }, /* play/pause */
1925 [0x45] = KEY_STOP, 2115 { 0x45, KEY_STOP },
1926 [0x43] = KEY_CAMERA, /* camera icon */ 2116 { 0x43, KEY_CAMERA }, /* camera icon */
1927 2117
1928 [0x48] = KEY_REWIND, 2118 { 0x48, KEY_REWIND },
1929 [0x4a] = KEY_FASTFORWARD, 2119 { 0x4a, KEY_FASTFORWARD },
1930 [0x49] = KEY_PREVIOUS, 2120 { 0x49, KEY_PREVIOUS },
1931 [0x4b] = KEY_NEXT, 2121 { 0x4b, KEY_NEXT },
1932 2122
1933 [0x4c] = KEY_FAVORITES, /* tv wall */ 2123 { 0x4c, KEY_FAVORITES }, /* tv wall */
1934 [0x4d] = KEY_SOUND, /* DVD sound */ 2124 { 0x4d, KEY_SOUND }, /* DVD sound */
1935 [0x4e] = KEY_LANGUAGE, /* DVD lang */ 2125 { 0x4e, KEY_LANGUAGE }, /* DVD lang */
1936 [0x4f] = KEY_TEXT, /* DVD text */ 2126 { 0x4f, KEY_TEXT }, /* DVD text */
1937 2127
1938 [0x50] = KEY_SLEEP, /* shutdown */ 2128 { 0x50, KEY_SLEEP }, /* shutdown */
1939 [0x51] = KEY_MODE, /* stereo > main */ 2129 { 0x51, KEY_MODE }, /* stereo > main */
1940 [0x52] = KEY_SELECT, /* stereo > sap */ 2130 { 0x52, KEY_SELECT }, /* stereo > sap */
1941 [0x53] = KEY_PROG1, /* teletext */ 2131 { 0x53, KEY_PROG1 }, /* teletext */
1942 2132
1943 2133
1944 [0x59] = KEY_RED, /* AP1 */ 2134 { 0x59, KEY_RED }, /* AP1 */
1945 [0x41] = KEY_GREEN, /* AP2 */ 2135 { 0x41, KEY_GREEN }, /* AP2 */
1946 [0x47] = KEY_YELLOW, /* AP3 */ 2136 { 0x47, KEY_YELLOW }, /* AP3 */
1947 [0x57] = KEY_BLUE, /* AP4 */ 2137 { 0x57, KEY_BLUE }, /* AP4 */
1948}; 2138};
1949EXPORT_SYMBOL_GPL(ir_codes_encore_enltv); 2139
2140struct ir_scancode_table ir_codes_encore_enltv_table = {
2141 .scan = ir_codes_encore_enltv,
2142 .size = ARRAY_SIZE(ir_codes_encore_enltv),
2143};
2144EXPORT_SYMBOL_GPL(ir_codes_encore_enltv_table);
1950 2145
1951/* Encore ENLTV2-FM - silver plastic - "Wand Media" written at the botton 2146/* Encore ENLTV2-FM - silver plastic - "Wand Media" written at the botton
1952 Mauro Carvalho Chehab <mchehab@infradead.org> */ 2147 Mauro Carvalho Chehab <mchehab@infradead.org> */
1953IR_KEYTAB_TYPE ir_codes_encore_enltv2[IR_KEYTAB_SIZE] = { 2148static struct ir_scancode ir_codes_encore_enltv2[] = {
1954 [0x4c] = KEY_POWER2, 2149 { 0x4c, KEY_POWER2 },
1955 [0x4a] = KEY_TUNER, 2150 { 0x4a, KEY_TUNER },
1956 [0x40] = KEY_1, 2151 { 0x40, KEY_1 },
1957 [0x60] = KEY_2, 2152 { 0x60, KEY_2 },
1958 [0x50] = KEY_3, 2153 { 0x50, KEY_3 },
1959 [0x70] = KEY_4, 2154 { 0x70, KEY_4 },
1960 [0x48] = KEY_5, 2155 { 0x48, KEY_5 },
1961 [0x68] = KEY_6, 2156 { 0x68, KEY_6 },
1962 [0x58] = KEY_7, 2157 { 0x58, KEY_7 },
1963 [0x78] = KEY_8, 2158 { 0x78, KEY_8 },
1964 [0x44] = KEY_9, 2159 { 0x44, KEY_9 },
1965 [0x54] = KEY_0, 2160 { 0x54, KEY_0 },
1966 2161
1967 [0x64] = KEY_LAST, /* +100 */ 2162 { 0x64, KEY_LAST }, /* +100 */
1968 [0x4e] = KEY_AGAIN, /* Recall */ 2163 { 0x4e, KEY_AGAIN }, /* Recall */
1969 2164
1970 [0x6c] = KEY_SWITCHVIDEOMODE, /* Video Source */ 2165 { 0x6c, KEY_SWITCHVIDEOMODE }, /* Video Source */
1971 [0x5e] = KEY_MENU, 2166 { 0x5e, KEY_MENU },
1972 [0x56] = KEY_SCREEN, 2167 { 0x56, KEY_SCREEN },
1973 [0x7a] = KEY_SETUP, 2168 { 0x7a, KEY_SETUP },
1974 2169
1975 [0x46] = KEY_MUTE, 2170 { 0x46, KEY_MUTE },
1976 [0x5c] = KEY_MODE, /* Stereo */ 2171 { 0x5c, KEY_MODE }, /* Stereo */
1977 [0x74] = KEY_INFO, 2172 { 0x74, KEY_INFO },
1978 [0x7c] = KEY_CLEAR, 2173 { 0x7c, KEY_CLEAR },
1979 2174
1980 [0x55] = KEY_UP, 2175 { 0x55, KEY_UP },
1981 [0x49] = KEY_DOWN, 2176 { 0x49, KEY_DOWN },
1982 [0x7e] = KEY_LEFT, 2177 { 0x7e, KEY_LEFT },
1983 [0x59] = KEY_RIGHT, 2178 { 0x59, KEY_RIGHT },
1984 [0x6a] = KEY_ENTER, 2179 { 0x6a, KEY_ENTER },
1985 2180
1986 [0x42] = KEY_VOLUMEUP, 2181 { 0x42, KEY_VOLUMEUP },
1987 [0x62] = KEY_VOLUMEDOWN, 2182 { 0x62, KEY_VOLUMEDOWN },
1988 [0x52] = KEY_CHANNELUP, 2183 { 0x52, KEY_CHANNELUP },
1989 [0x72] = KEY_CHANNELDOWN, 2184 { 0x72, KEY_CHANNELDOWN },
1990 2185
1991 [0x41] = KEY_RECORD, 2186 { 0x41, KEY_RECORD },
1992 [0x51] = KEY_CAMERA, /* Snapshot */ 2187 { 0x51, KEY_CAMERA }, /* Snapshot */
1993 [0x75] = KEY_TIME, /* Timeshift */ 2188 { 0x75, KEY_TIME }, /* Timeshift */
1994 [0x71] = KEY_TV2, /* PIP */ 2189 { 0x71, KEY_TV2 }, /* PIP */
1995 2190
1996 [0x45] = KEY_REWIND, 2191 { 0x45, KEY_REWIND },
1997 [0x6f] = KEY_PAUSE, 2192 { 0x6f, KEY_PAUSE },
1998 [0x7d] = KEY_FORWARD, 2193 { 0x7d, KEY_FORWARD },
1999 [0x79] = KEY_STOP, 2194 { 0x79, KEY_STOP },
2000}; 2195};
2001EXPORT_SYMBOL_GPL(ir_codes_encore_enltv2); 2196
2197struct ir_scancode_table ir_codes_encore_enltv2_table = {
2198 .scan = ir_codes_encore_enltv2,
2199 .size = ARRAY_SIZE(ir_codes_encore_enltv2),
2200};
2201EXPORT_SYMBOL_GPL(ir_codes_encore_enltv2_table);
2002 2202
2003/* for the Technotrend 1500 bundled remotes (grey and black): */ 2203/* for the Technotrend 1500 bundled remotes (grey and black): */
2004IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE] = { 2204static struct ir_scancode ir_codes_tt_1500[] = {
2005 [0x01] = KEY_POWER, 2205 { 0x01, KEY_POWER },
2006 [0x02] = KEY_SHUFFLE, /* ? double-arrow key */ 2206 { 0x02, KEY_SHUFFLE }, /* ? double-arrow key */
2007 [0x03] = KEY_1, 2207 { 0x03, KEY_1 },
2008 [0x04] = KEY_2, 2208 { 0x04, KEY_2 },
2009 [0x05] = KEY_3, 2209 { 0x05, KEY_3 },
2010 [0x06] = KEY_4, 2210 { 0x06, KEY_4 },
2011 [0x07] = KEY_5, 2211 { 0x07, KEY_5 },
2012 [0x08] = KEY_6, 2212 { 0x08, KEY_6 },
2013 [0x09] = KEY_7, 2213 { 0x09, KEY_7 },
2014 [0x0a] = KEY_8, 2214 { 0x0a, KEY_8 },
2015 [0x0b] = KEY_9, 2215 { 0x0b, KEY_9 },
2016 [0x0c] = KEY_0, 2216 { 0x0c, KEY_0 },
2017 [0x0d] = KEY_UP, 2217 { 0x0d, KEY_UP },
2018 [0x0e] = KEY_LEFT, 2218 { 0x0e, KEY_LEFT },
2019 [0x0f] = KEY_OK, 2219 { 0x0f, KEY_OK },
2020 [0x10] = KEY_RIGHT, 2220 { 0x10, KEY_RIGHT },
2021 [0x11] = KEY_DOWN, 2221 { 0x11, KEY_DOWN },
2022 [0x12] = KEY_INFO, 2222 { 0x12, KEY_INFO },
2023 [0x13] = KEY_EXIT, 2223 { 0x13, KEY_EXIT },
2024 [0x14] = KEY_RED, 2224 { 0x14, KEY_RED },
2025 [0x15] = KEY_GREEN, 2225 { 0x15, KEY_GREEN },
2026 [0x16] = KEY_YELLOW, 2226 { 0x16, KEY_YELLOW },
2027 [0x17] = KEY_BLUE, 2227 { 0x17, KEY_BLUE },
2028 [0x18] = KEY_MUTE, 2228 { 0x18, KEY_MUTE },
2029 [0x19] = KEY_TEXT, 2229 { 0x19, KEY_TEXT },
2030 [0x1a] = KEY_MODE, /* ? TV/Radio */ 2230 { 0x1a, KEY_MODE }, /* ? TV/Radio */
2031 [0x21] = KEY_OPTION, 2231 { 0x21, KEY_OPTION },
2032 [0x22] = KEY_EPG, 2232 { 0x22, KEY_EPG },
2033 [0x23] = KEY_CHANNELUP, 2233 { 0x23, KEY_CHANNELUP },
2034 [0x24] = KEY_CHANNELDOWN, 2234 { 0x24, KEY_CHANNELDOWN },
2035 [0x25] = KEY_VOLUMEUP, 2235 { 0x25, KEY_VOLUMEUP },
2036 [0x26] = KEY_VOLUMEDOWN, 2236 { 0x26, KEY_VOLUMEDOWN },
2037 [0x27] = KEY_SETUP, 2237 { 0x27, KEY_SETUP },
2038 [0x3a] = KEY_RECORD, /* these keys are only in the black remote */ 2238 { 0x3a, KEY_RECORD }, /* these keys are only in the black remote */
2039 [0x3b] = KEY_PLAY, 2239 { 0x3b, KEY_PLAY },
2040 [0x3c] = KEY_STOP, 2240 { 0x3c, KEY_STOP },
2041 [0x3d] = KEY_REWIND, 2241 { 0x3d, KEY_REWIND },
2042 [0x3e] = KEY_PAUSE, 2242 { 0x3e, KEY_PAUSE },
2043 [0x3f] = KEY_FORWARD, 2243 { 0x3f, KEY_FORWARD },
2044}; 2244};
2045EXPORT_SYMBOL_GPL(ir_codes_tt_1500); 2245
2246struct ir_scancode_table ir_codes_tt_1500_table = {
2247 .scan = ir_codes_tt_1500,
2248 .size = ARRAY_SIZE(ir_codes_tt_1500),
2249};
2250EXPORT_SYMBOL_GPL(ir_codes_tt_1500_table);
2046 2251
2047/* DViCO FUSION HDTV MCE remote */ 2252/* DViCO FUSION HDTV MCE remote */
2048IR_KEYTAB_TYPE ir_codes_fusionhdtv_mce[IR_KEYTAB_SIZE] = { 2253static struct ir_scancode ir_codes_fusionhdtv_mce[] = {
2049 2254
2050 [0x0b] = KEY_1, 2255 { 0x0b, KEY_1 },
2051 [0x17] = KEY_2, 2256 { 0x17, KEY_2 },
2052 [0x1b] = KEY_3, 2257 { 0x1b, KEY_3 },
2053 [0x07] = KEY_4, 2258 { 0x07, KEY_4 },
2054 [0x50] = KEY_5, 2259 { 0x50, KEY_5 },
2055 [0x54] = KEY_6, 2260 { 0x54, KEY_6 },
2056 [0x48] = KEY_7, 2261 { 0x48, KEY_7 },
2057 [0x4c] = KEY_8, 2262 { 0x4c, KEY_8 },
2058 [0x58] = KEY_9, 2263 { 0x58, KEY_9 },
2059 [0x03] = KEY_0, 2264 { 0x03, KEY_0 },
2060 2265
2061 [0x5e] = KEY_OK, 2266 { 0x5e, KEY_OK },
2062 [0x51] = KEY_UP, 2267 { 0x51, KEY_UP },
2063 [0x53] = KEY_DOWN, 2268 { 0x53, KEY_DOWN },
2064 [0x5b] = KEY_LEFT, 2269 { 0x5b, KEY_LEFT },
2065 [0x5f] = KEY_RIGHT, 2270 { 0x5f, KEY_RIGHT },
2066 2271
2067 [0x02] = KEY_TV, /* Labeled DTV on remote */ 2272 { 0x02, KEY_TV }, /* Labeled DTV on remote */
2068 [0x0e] = KEY_MP3, 2273 { 0x0e, KEY_MP3 },
2069 [0x1a] = KEY_DVD, 2274 { 0x1a, KEY_DVD },
2070 [0x1e] = KEY_FAVORITES, /* Labeled CPF on remote */ 2275 { 0x1e, KEY_FAVORITES }, /* Labeled CPF on remote */
2071 [0x16] = KEY_SETUP, 2276 { 0x16, KEY_SETUP },
2072 [0x46] = KEY_POWER2, /* TV On/Off button on remote */ 2277 { 0x46, KEY_POWER2 }, /* TV On/Off button on remote */
2073 [0x0a] = KEY_EPG, /* Labeled Guide on remote */ 2278 { 0x0a, KEY_EPG }, /* Labeled Guide on remote */
2074 2279
2075 [0x49] = KEY_BACK, 2280 { 0x49, KEY_BACK },
2076 [0x59] = KEY_INFO, /* Labeled MORE on remote */ 2281 { 0x59, KEY_INFO }, /* Labeled MORE on remote */
2077 [0x4d] = KEY_MENU, /* Labeled DVDMENU on remote */ 2282 { 0x4d, KEY_MENU }, /* Labeled DVDMENU on remote */
2078 [0x55] = KEY_CYCLEWINDOWS, /* Labeled ALT-TAB on remote */ 2283 { 0x55, KEY_CYCLEWINDOWS }, /* Labeled ALT-TAB on remote */
2079 2284
2080 [0x0f] = KEY_PREVIOUSSONG, /* Labeled |<< REPLAY on remote */ 2285 { 0x0f, KEY_PREVIOUSSONG }, /* Labeled |<< REPLAY on remote */
2081 [0x12] = KEY_NEXTSONG, /* Labeled >>| SKIP on remote */ 2286 { 0x12, KEY_NEXTSONG }, /* Labeled >>| SKIP on remote */
2082 [0x42] = KEY_ENTER, /* Labeled START with a green 2287 { 0x42, KEY_ENTER }, /* Labeled START with a green
2083 MS windows logo on remote */ 2288 MS windows logo on remote */
2084 2289
2085 [0x15] = KEY_VOLUMEUP, 2290 { 0x15, KEY_VOLUMEUP },
2086 [0x05] = KEY_VOLUMEDOWN, 2291 { 0x05, KEY_VOLUMEDOWN },
2087 [0x11] = KEY_CHANNELUP, 2292 { 0x11, KEY_CHANNELUP },
2088 [0x09] = KEY_CHANNELDOWN, 2293 { 0x09, KEY_CHANNELDOWN },
2089 2294
2090 [0x52] = KEY_CAMERA, 2295 { 0x52, KEY_CAMERA },
2091 [0x5a] = KEY_TUNER, 2296 { 0x5a, KEY_TUNER },
2092 [0x19] = KEY_OPEN, 2297 { 0x19, KEY_OPEN },
2093 2298
2094 [0x13] = KEY_MODE, /* 4:3 16:9 select */ 2299 { 0x13, KEY_MODE }, /* 4:3 16:9 select */
2095 [0x1f] = KEY_ZOOM, 2300 { 0x1f, KEY_ZOOM },
2301
2302 { 0x43, KEY_REWIND },
2303 { 0x47, KEY_PLAYPAUSE },
2304 { 0x4f, KEY_FASTFORWARD },
2305 { 0x57, KEY_MUTE },
2306 { 0x0d, KEY_STOP },
2307 { 0x01, KEY_RECORD },
2308 { 0x4e, KEY_POWER },
2309};
2096 2310
2097 [0x43] = KEY_REWIND, 2311struct ir_scancode_table ir_codes_fusionhdtv_mce_table = {
2098 [0x47] = KEY_PLAYPAUSE, 2312 .scan = ir_codes_fusionhdtv_mce,
2099 [0x4f] = KEY_FASTFORWARD, 2313 .size = ARRAY_SIZE(ir_codes_fusionhdtv_mce),
2100 [0x57] = KEY_MUTE,
2101 [0x0d] = KEY_STOP,
2102 [0x01] = KEY_RECORD,
2103 [0x4e] = KEY_POWER,
2104}; 2314};
2105EXPORT_SYMBOL_GPL(ir_codes_fusionhdtv_mce); 2315EXPORT_SYMBOL_GPL(ir_codes_fusionhdtv_mce_table);
2106 2316
2107/* Pinnacle PCTV HD 800i mini remote */ 2317/* Pinnacle PCTV HD 800i mini remote */
2108IR_KEYTAB_TYPE ir_codes_pinnacle_pctv_hd[IR_KEYTAB_SIZE] = { 2318static struct ir_scancode ir_codes_pinnacle_pctv_hd[] = {
2109 2319
2110 [0x0f] = KEY_1, 2320 { 0x0f, KEY_1 },
2111 [0x15] = KEY_2, 2321 { 0x15, KEY_2 },
2112 [0x10] = KEY_3, 2322 { 0x10, KEY_3 },
2113 [0x18] = KEY_4, 2323 { 0x18, KEY_4 },
2114 [0x1b] = KEY_5, 2324 { 0x1b, KEY_5 },
2115 [0x1e] = KEY_6, 2325 { 0x1e, KEY_6 },
2116 [0x11] = KEY_7, 2326 { 0x11, KEY_7 },
2117 [0x21] = KEY_8, 2327 { 0x21, KEY_8 },
2118 [0x12] = KEY_9, 2328 { 0x12, KEY_9 },
2119 [0x27] = KEY_0, 2329 { 0x27, KEY_0 },
2120 2330
2121 [0x24] = KEY_ZOOM, 2331 { 0x24, KEY_ZOOM },
2122 [0x2a] = KEY_SUBTITLE, 2332 { 0x2a, KEY_SUBTITLE },
2123 2333
2124 [0x00] = KEY_MUTE, 2334 { 0x00, KEY_MUTE },
2125 [0x01] = KEY_ENTER, /* Pinnacle Logo */ 2335 { 0x01, KEY_ENTER }, /* Pinnacle Logo */
2126 [0x39] = KEY_POWER, 2336 { 0x39, KEY_POWER },
2127 2337
2128 [0x03] = KEY_VOLUMEUP, 2338 { 0x03, KEY_VOLUMEUP },
2129 [0x09] = KEY_VOLUMEDOWN, 2339 { 0x09, KEY_VOLUMEDOWN },
2130 [0x06] = KEY_CHANNELUP, 2340 { 0x06, KEY_CHANNELUP },
2131 [0x0c] = KEY_CHANNELDOWN, 2341 { 0x0c, KEY_CHANNELDOWN },
2132 2342
2133 [0x2d] = KEY_REWIND, 2343 { 0x2d, KEY_REWIND },
2134 [0x30] = KEY_PLAYPAUSE, 2344 { 0x30, KEY_PLAYPAUSE },
2135 [0x33] = KEY_FASTFORWARD, 2345 { 0x33, KEY_FASTFORWARD },
2136 [0x3c] = KEY_STOP, 2346 { 0x3c, KEY_STOP },
2137 [0x36] = KEY_RECORD, 2347 { 0x36, KEY_RECORD },
2138 [0x3f] = KEY_EPG, /* Labeled "?" */ 2348 { 0x3f, KEY_EPG }, /* Labeled "?" */
2139}; 2349};
2140EXPORT_SYMBOL_GPL(ir_codes_pinnacle_pctv_hd); 2350
2351struct ir_scancode_table ir_codes_pinnacle_pctv_hd_table = {
2352 .scan = ir_codes_pinnacle_pctv_hd,
2353 .size = ARRAY_SIZE(ir_codes_pinnacle_pctv_hd),
2354};
2355EXPORT_SYMBOL_GPL(ir_codes_pinnacle_pctv_hd_table);
2141 2356
2142/* 2357/*
2143 * Igor Kuznetsov <igk72@ya.ru> 2358 * Igor Kuznetsov <igk72@ya.ru>
@@ -2150,13 +2365,13 @@ EXPORT_SYMBOL_GPL(ir_codes_pinnacle_pctv_hd);
2150 * the button labels (several variants when appropriate) 2365 * the button labels (several variants when appropriate)
2151 * helps to descide which keycodes to assign to the buttons. 2366 * helps to descide which keycodes to assign to the buttons.
2152 */ 2367 */
2153IR_KEYTAB_TYPE ir_codes_behold[IR_KEYTAB_SIZE] = { 2368static struct ir_scancode ir_codes_behold[] = {
2154 2369
2155 /* 0x1c 0x12 * 2370 /* 0x1c 0x12 *
2156 * TV/FM POWER * 2371 * TV/FM POWER *
2157 * */ 2372 * */
2158 [0x1c] = KEY_TUNER, /* XXX KEY_TV / KEY_RADIO */ 2373 { 0x1c, KEY_TUNER }, /* XXX KEY_TV / KEY_RADIO */
2159 [0x12] = KEY_POWER, 2374 { 0x12, KEY_POWER },
2160 2375
2161 /* 0x01 0x02 0x03 * 2376 /* 0x01 0x02 0x03 *
2162 * 1 2 3 * 2377 * 1 2 3 *
@@ -2167,28 +2382,28 @@ IR_KEYTAB_TYPE ir_codes_behold[IR_KEYTAB_SIZE] = {
2167 * 0x07 0x08 0x09 * 2382 * 0x07 0x08 0x09 *
2168 * 7 8 9 * 2383 * 7 8 9 *
2169 * */ 2384 * */
2170 [0x01] = KEY_1, 2385 { 0x01, KEY_1 },
2171 [0x02] = KEY_2, 2386 { 0x02, KEY_2 },
2172 [0x03] = KEY_3, 2387 { 0x03, KEY_3 },
2173 [0x04] = KEY_4, 2388 { 0x04, KEY_4 },
2174 [0x05] = KEY_5, 2389 { 0x05, KEY_5 },
2175 [0x06] = KEY_6, 2390 { 0x06, KEY_6 },
2176 [0x07] = KEY_7, 2391 { 0x07, KEY_7 },
2177 [0x08] = KEY_8, 2392 { 0x08, KEY_8 },
2178 [0x09] = KEY_9, 2393 { 0x09, KEY_9 },
2179 2394
2180 /* 0x0a 0x00 0x17 * 2395 /* 0x0a 0x00 0x17 *
2181 * RECALL 0 MODE * 2396 * RECALL 0 MODE *
2182 * */ 2397 * */
2183 [0x0a] = KEY_AGAIN, 2398 { 0x0a, KEY_AGAIN },
2184 [0x00] = KEY_0, 2399 { 0x00, KEY_0 },
2185 [0x17] = KEY_MODE, 2400 { 0x17, KEY_MODE },
2186 2401
2187 /* 0x14 0x10 * 2402 /* 0x14 0x10 *
2188 * ASPECT FULLSCREEN * 2403 * ASPECT FULLSCREEN *
2189 * */ 2404 * */
2190 [0x14] = KEY_SCREEN, 2405 { 0x14, KEY_SCREEN },
2191 [0x10] = KEY_ZOOM, 2406 { 0x10, KEY_ZOOM },
2192 2407
2193 /* 0x0b * 2408 /* 0x0b *
2194 * Up * 2409 * Up *
@@ -2199,17 +2414,17 @@ IR_KEYTAB_TYPE ir_codes_behold[IR_KEYTAB_SIZE] = {
2199 * 0x015 * 2414 * 0x015 *
2200 * Down * 2415 * Down *
2201 * */ 2416 * */
2202 [0x0b] = KEY_CHANNELUP, 2417 { 0x0b, KEY_CHANNELUP },
2203 [0x18] = KEY_VOLUMEDOWN, 2418 { 0x18, KEY_VOLUMEDOWN },
2204 [0x16] = KEY_OK, /* XXX KEY_ENTER */ 2419 { 0x16, KEY_OK }, /* XXX KEY_ENTER */
2205 [0x0c] = KEY_VOLUMEUP, 2420 { 0x0c, KEY_VOLUMEUP },
2206 [0x15] = KEY_CHANNELDOWN, 2421 { 0x15, KEY_CHANNELDOWN },
2207 2422
2208 /* 0x11 0x0d * 2423 /* 0x11 0x0d *
2209 * MUTE INFO * 2424 * MUTE INFO *
2210 * */ 2425 * */
2211 [0x11] = KEY_MUTE, 2426 { 0x11, KEY_MUTE },
2212 [0x0d] = KEY_INFO, 2427 { 0x0d, KEY_INFO },
2213 2428
2214 /* 0x0f 0x1b 0x1a * 2429 /* 0x0f 0x1b 0x1a *
2215 * RECORD PLAY/PAUSE STOP * 2430 * RECORD PLAY/PAUSE STOP *
@@ -2218,29 +2433,34 @@ IR_KEYTAB_TYPE ir_codes_behold[IR_KEYTAB_SIZE] = {
2218 *TELETEXT AUDIO SOURCE * 2433 *TELETEXT AUDIO SOURCE *
2219 * RED YELLOW * 2434 * RED YELLOW *
2220 * */ 2435 * */
2221 [0x0f] = KEY_RECORD, 2436 { 0x0f, KEY_RECORD },
2222 [0x1b] = KEY_PLAYPAUSE, 2437 { 0x1b, KEY_PLAYPAUSE },
2223 [0x1a] = KEY_STOP, 2438 { 0x1a, KEY_STOP },
2224 [0x0e] = KEY_TEXT, 2439 { 0x0e, KEY_TEXT },
2225 [0x1f] = KEY_RED, /*XXX KEY_AUDIO */ 2440 { 0x1f, KEY_RED }, /*XXX KEY_AUDIO */
2226 [0x1e] = KEY_YELLOW, /*XXX KEY_SOURCE */ 2441 { 0x1e, KEY_YELLOW }, /*XXX KEY_SOURCE */
2227 2442
2228 /* 0x1d 0x13 0x19 * 2443 /* 0x1d 0x13 0x19 *
2229 * SLEEP PREVIEW DVB * 2444 * SLEEP PREVIEW DVB *
2230 * GREEN BLUE * 2445 * GREEN BLUE *
2231 * */ 2446 * */
2232 [0x1d] = KEY_SLEEP, 2447 { 0x1d, KEY_SLEEP },
2233 [0x13] = KEY_GREEN, 2448 { 0x13, KEY_GREEN },
2234 [0x19] = KEY_BLUE, /* XXX KEY_SAT */ 2449 { 0x19, KEY_BLUE }, /* XXX KEY_SAT */
2235 2450
2236 /* 0x58 0x5c * 2451 /* 0x58 0x5c *
2237 * FREEZE SNAPSHOT * 2452 * FREEZE SNAPSHOT *
2238 * */ 2453 * */
2239 [0x58] = KEY_SLOW, 2454 { 0x58, KEY_SLOW },
2240 [0x5c] = KEY_CAMERA, 2455 { 0x5c, KEY_CAMERA },
2241 2456
2242}; 2457};
2243EXPORT_SYMBOL_GPL(ir_codes_behold); 2458
2459struct ir_scancode_table ir_codes_behold_table = {
2460 .scan = ir_codes_behold,
2461 .size = ARRAY_SIZE(ir_codes_behold),
2462};
2463EXPORT_SYMBOL_GPL(ir_codes_behold_table);
2244 2464
2245/* Beholder Intl. Ltd. 2008 2465/* Beholder Intl. Ltd. 2008
2246 * Dmitry Belimov d.belimov@google.com 2466 * Dmitry Belimov d.belimov@google.com
@@ -2250,16 +2470,16 @@ EXPORT_SYMBOL_GPL(ir_codes_behold);
2250 * the button labels (several variants when appropriate) 2470 * the button labels (several variants when appropriate)
2251 * helps to descide which keycodes to assign to the buttons. 2471 * helps to descide which keycodes to assign to the buttons.
2252 */ 2472 */
2253IR_KEYTAB_TYPE ir_codes_behold_columbus[IR_KEYTAB_SIZE] = { 2473static struct ir_scancode ir_codes_behold_columbus[] = {
2254 2474
2255 /* 0x13 0x11 0x1C 0x12 * 2475 /* 0x13 0x11 0x1C 0x12 *
2256 * Mute Source TV/FM Power * 2476 * Mute Source TV/FM Power *
2257 * */ 2477 * */
2258 2478
2259 [0x13] = KEY_MUTE, 2479 { 0x13, KEY_MUTE },
2260 [0x11] = KEY_PROPS, 2480 { 0x11, KEY_PROPS },
2261 [0x1C] = KEY_TUNER, /* KEY_TV/KEY_RADIO */ 2481 { 0x1C, KEY_TUNER }, /* KEY_TV/KEY_RADIO */
2262 [0x12] = KEY_POWER, 2482 { 0x12, KEY_POWER },
2263 2483
2264 /* 0x01 0x02 0x03 0x0D * 2484 /* 0x01 0x02 0x03 0x0D *
2265 * 1 2 3 Stereo * 2485 * 1 2 3 Stereo *
@@ -2270,173 +2490,188 @@ IR_KEYTAB_TYPE ir_codes_behold_columbus[IR_KEYTAB_SIZE] = {
2270 * 0x07 0x08 0x09 0x10 * 2490 * 0x07 0x08 0x09 0x10 *
2271 * 7 8 9 Zoom * 2491 * 7 8 9 Zoom *
2272 * */ 2492 * */
2273 [0x01] = KEY_1, 2493 { 0x01, KEY_1 },
2274 [0x02] = KEY_2, 2494 { 0x02, KEY_2 },
2275 [0x03] = KEY_3, 2495 { 0x03, KEY_3 },
2276 [0x0D] = KEY_SETUP, /* Setup key */ 2496 { 0x0D, KEY_SETUP }, /* Setup key */
2277 [0x04] = KEY_4, 2497 { 0x04, KEY_4 },
2278 [0x05] = KEY_5, 2498 { 0x05, KEY_5 },
2279 [0x06] = KEY_6, 2499 { 0x06, KEY_6 },
2280 [0x19] = KEY_CAMERA, /* Snapshot key */ 2500 { 0x19, KEY_CAMERA }, /* Snapshot key */
2281 [0x07] = KEY_7, 2501 { 0x07, KEY_7 },
2282 [0x08] = KEY_8, 2502 { 0x08, KEY_8 },
2283 [0x09] = KEY_9, 2503 { 0x09, KEY_9 },
2284 [0x10] = KEY_ZOOM, 2504 { 0x10, KEY_ZOOM },
2285 2505
2286 /* 0x0A 0x00 0x0B 0x0C * 2506 /* 0x0A 0x00 0x0B 0x0C *
2287 * RECALL 0 ChannelUp VolumeUp * 2507 * RECALL 0 ChannelUp VolumeUp *
2288 * */ 2508 * */
2289 [0x0A] = KEY_AGAIN, 2509 { 0x0A, KEY_AGAIN },
2290 [0x00] = KEY_0, 2510 { 0x00, KEY_0 },
2291 [0x0B] = KEY_CHANNELUP, 2511 { 0x0B, KEY_CHANNELUP },
2292 [0x0C] = KEY_VOLUMEUP, 2512 { 0x0C, KEY_VOLUMEUP },
2293 2513
2294 /* 0x1B 0x1D 0x15 0x18 * 2514 /* 0x1B 0x1D 0x15 0x18 *
2295 * Timeshift Record ChannelDown VolumeDown * 2515 * Timeshift Record ChannelDown VolumeDown *
2296 * */ 2516 * */
2297 2517
2298 [0x1B] = KEY_TIME, 2518 { 0x1B, KEY_TIME },
2299 [0x1D] = KEY_RECORD, 2519 { 0x1D, KEY_RECORD },
2300 [0x15] = KEY_CHANNELDOWN, 2520 { 0x15, KEY_CHANNELDOWN },
2301 [0x18] = KEY_VOLUMEDOWN, 2521 { 0x18, KEY_VOLUMEDOWN },
2302 2522
2303 /* 0x0E 0x1E 0x0F 0x1A * 2523 /* 0x0E 0x1E 0x0F 0x1A *
2304 * Stop Pause Previouse Next * 2524 * Stop Pause Previouse Next *
2305 * */ 2525 * */
2306 2526
2307 [0x0E] = KEY_STOP, 2527 { 0x0E, KEY_STOP },
2308 [0x1E] = KEY_PAUSE, 2528 { 0x1E, KEY_PAUSE },
2309 [0x0F] = KEY_PREVIOUS, 2529 { 0x0F, KEY_PREVIOUS },
2310 [0x1A] = KEY_NEXT, 2530 { 0x1A, KEY_NEXT },
2531
2532};
2311 2533
2534struct ir_scancode_table ir_codes_behold_columbus_table = {
2535 .scan = ir_codes_behold_columbus,
2536 .size = ARRAY_SIZE(ir_codes_behold_columbus),
2312}; 2537};
2313EXPORT_SYMBOL_GPL(ir_codes_behold_columbus); 2538EXPORT_SYMBOL_GPL(ir_codes_behold_columbus_table);
2314 2539
2315/* 2540/*
2316 * Remote control for the Genius TVGO A11MCE 2541 * Remote control for the Genius TVGO A11MCE
2317 * Adrian Pardini <pardo.bsso@gmail.com> 2542 * Adrian Pardini <pardo.bsso@gmail.com>
2318 */ 2543 */
2319IR_KEYTAB_TYPE ir_codes_genius_tvgo_a11mce[IR_KEYTAB_SIZE] = { 2544static struct ir_scancode ir_codes_genius_tvgo_a11mce[] = {
2320 /* Keys 0 to 9 */ 2545 /* Keys 0 to 9 */
2321 [0x48] = KEY_0, 2546 { 0x48, KEY_0 },
2322 [0x09] = KEY_1, 2547 { 0x09, KEY_1 },
2323 [0x1d] = KEY_2, 2548 { 0x1d, KEY_2 },
2324 [0x1f] = KEY_3, 2549 { 0x1f, KEY_3 },
2325 [0x19] = KEY_4, 2550 { 0x19, KEY_4 },
2326 [0x1b] = KEY_5, 2551 { 0x1b, KEY_5 },
2327 [0x11] = KEY_6, 2552 { 0x11, KEY_6 },
2328 [0x17] = KEY_7, 2553 { 0x17, KEY_7 },
2329 [0x12] = KEY_8, 2554 { 0x12, KEY_8 },
2330 [0x16] = KEY_9, 2555 { 0x16, KEY_9 },
2331 2556
2332 [0x54] = KEY_RECORD, /* recording */ 2557 { 0x54, KEY_RECORD }, /* recording */
2333 [0x06] = KEY_MUTE, /* mute */ 2558 { 0x06, KEY_MUTE }, /* mute */
2334 [0x10] = KEY_POWER, 2559 { 0x10, KEY_POWER },
2335 [0x40] = KEY_LAST, /* recall */ 2560 { 0x40, KEY_LAST }, /* recall */
2336 [0x4c] = KEY_CHANNELUP, /* channel / program + */ 2561 { 0x4c, KEY_CHANNELUP }, /* channel / program + */
2337 [0x00] = KEY_CHANNELDOWN, /* channel / program - */ 2562 { 0x00, KEY_CHANNELDOWN }, /* channel / program - */
2338 [0x0d] = KEY_VOLUMEUP, 2563 { 0x0d, KEY_VOLUMEUP },
2339 [0x15] = KEY_VOLUMEDOWN, 2564 { 0x15, KEY_VOLUMEDOWN },
2340 [0x4d] = KEY_OK, /* also labeled as Pause */ 2565 { 0x4d, KEY_OK }, /* also labeled as Pause */
2341 [0x1c] = KEY_ZOOM, /* full screen and Stop*/ 2566 { 0x1c, KEY_ZOOM }, /* full screen and Stop*/
2342 [0x02] = KEY_MODE, /* AV Source or Rewind*/ 2567 { 0x02, KEY_MODE }, /* AV Source or Rewind*/
2343 [0x04] = KEY_LIST, /* -/-- */ 2568 { 0x04, KEY_LIST }, /* -/-- */
2344 /* small arrows above numbers */ 2569 /* small arrows above numbers */
2345 [0x1a] = KEY_NEXT, /* also Fast Forward */ 2570 { 0x1a, KEY_NEXT }, /* also Fast Forward */
2346 [0x0e] = KEY_PREVIOUS, /* also Rewind */ 2571 { 0x0e, KEY_PREVIOUS }, /* also Rewind */
2347 /* these are in a rather non standard layout and have 2572 /* these are in a rather non standard layout and have
2348 an alternate name written */ 2573 an alternate name written */
2349 [0x1e] = KEY_UP, /* Video Setting */ 2574 { 0x1e, KEY_UP }, /* Video Setting */
2350 [0x0a] = KEY_DOWN, /* Video Default */ 2575 { 0x0a, KEY_DOWN }, /* Video Default */
2351 [0x05] = KEY_CAMERA, /* Snapshot */ 2576 { 0x05, KEY_CAMERA }, /* Snapshot */
2352 [0x0c] = KEY_RIGHT, /* Hide Panel */ 2577 { 0x0c, KEY_RIGHT }, /* Hide Panel */
2353 /* Four buttons without label */ 2578 /* Four buttons without label */
2354 [0x49] = KEY_RED, 2579 { 0x49, KEY_RED },
2355 [0x0b] = KEY_GREEN, 2580 { 0x0b, KEY_GREEN },
2356 [0x13] = KEY_YELLOW, 2581 { 0x13, KEY_YELLOW },
2357 [0x50] = KEY_BLUE, 2582 { 0x50, KEY_BLUE },
2358}; 2583};
2359EXPORT_SYMBOL_GPL(ir_codes_genius_tvgo_a11mce); 2584
2585struct ir_scancode_table ir_codes_genius_tvgo_a11mce_table = {
2586 .scan = ir_codes_genius_tvgo_a11mce,
2587 .size = ARRAY_SIZE(ir_codes_genius_tvgo_a11mce),
2588};
2589EXPORT_SYMBOL_GPL(ir_codes_genius_tvgo_a11mce_table);
2360 2590
2361/* 2591/*
2362 * Remote control for Powercolor Real Angel 330 2592 * Remote control for Powercolor Real Angel 330
2363 * Daniel Fraga <fragabr@gmail.com> 2593 * Daniel Fraga <fragabr@gmail.com>
2364 */ 2594 */
2365IR_KEYTAB_TYPE ir_codes_powercolor_real_angel[IR_KEYTAB_SIZE] = { 2595static struct ir_scancode ir_codes_powercolor_real_angel[] = {
2366 [0x38] = KEY_SWITCHVIDEOMODE, /* switch inputs */ 2596 { 0x38, KEY_SWITCHVIDEOMODE }, /* switch inputs */
2367 [0x0c] = KEY_MEDIA, /* Turn ON/OFF App */ 2597 { 0x0c, KEY_MEDIA }, /* Turn ON/OFF App */
2368 [0x00] = KEY_0, 2598 { 0x00, KEY_0 },
2369 [0x01] = KEY_1, 2599 { 0x01, KEY_1 },
2370 [0x02] = KEY_2, 2600 { 0x02, KEY_2 },
2371 [0x03] = KEY_3, 2601 { 0x03, KEY_3 },
2372 [0x04] = KEY_4, 2602 { 0x04, KEY_4 },
2373 [0x05] = KEY_5, 2603 { 0x05, KEY_5 },
2374 [0x06] = KEY_6, 2604 { 0x06, KEY_6 },
2375 [0x07] = KEY_7, 2605 { 0x07, KEY_7 },
2376 [0x08] = KEY_8, 2606 { 0x08, KEY_8 },
2377 [0x09] = KEY_9, 2607 { 0x09, KEY_9 },
2378 [0x0a] = KEY_DIGITS, /* single, double, tripple digit */ 2608 { 0x0a, KEY_DIGITS }, /* single, double, tripple digit */
2379 [0x29] = KEY_PREVIOUS, /* previous channel */ 2609 { 0x29, KEY_PREVIOUS }, /* previous channel */
2380 [0x12] = KEY_BRIGHTNESSUP, 2610 { 0x12, KEY_BRIGHTNESSUP },
2381 [0x13] = KEY_BRIGHTNESSDOWN, 2611 { 0x13, KEY_BRIGHTNESSDOWN },
2382 [0x2b] = KEY_MODE, /* stereo/mono */ 2612 { 0x2b, KEY_MODE }, /* stereo/mono */
2383 [0x2c] = KEY_TEXT, /* teletext */ 2613 { 0x2c, KEY_TEXT }, /* teletext */
2384 [0x20] = KEY_CHANNELUP, /* channel up */ 2614 { 0x20, KEY_CHANNELUP }, /* channel up */
2385 [0x21] = KEY_CHANNELDOWN, /* channel down */ 2615 { 0x21, KEY_CHANNELDOWN }, /* channel down */
2386 [0x10] = KEY_VOLUMEUP, /* volume up */ 2616 { 0x10, KEY_VOLUMEUP }, /* volume up */
2387 [0x11] = KEY_VOLUMEDOWN, /* volume down */ 2617 { 0x11, KEY_VOLUMEDOWN }, /* volume down */
2388 [0x0d] = KEY_MUTE, 2618 { 0x0d, KEY_MUTE },
2389 [0x1f] = KEY_RECORD, 2619 { 0x1f, KEY_RECORD },
2390 [0x17] = KEY_PLAY, 2620 { 0x17, KEY_PLAY },
2391 [0x16] = KEY_PAUSE, 2621 { 0x16, KEY_PAUSE },
2392 [0x0b] = KEY_STOP, 2622 { 0x0b, KEY_STOP },
2393 [0x27] = KEY_FASTFORWARD, 2623 { 0x27, KEY_FASTFORWARD },
2394 [0x26] = KEY_REWIND, 2624 { 0x26, KEY_REWIND },
2395 [0x1e] = KEY_SEARCH, /* autoscan */ 2625 { 0x1e, KEY_SEARCH }, /* autoscan */
2396 [0x0e] = KEY_CAMERA, /* snapshot */ 2626 { 0x0e, KEY_CAMERA }, /* snapshot */
2397 [0x2d] = KEY_SETUP, 2627 { 0x2d, KEY_SETUP },
2398 [0x0f] = KEY_SCREEN, /* full screen */ 2628 { 0x0f, KEY_SCREEN }, /* full screen */
2399 [0x14] = KEY_RADIO, /* FM radio */ 2629 { 0x14, KEY_RADIO }, /* FM radio */
2400 [0x25] = KEY_POWER, /* power */ 2630 { 0x25, KEY_POWER }, /* power */
2401}; 2631};
2402EXPORT_SYMBOL_GPL(ir_codes_powercolor_real_angel); 2632
2633struct ir_scancode_table ir_codes_powercolor_real_angel_table = {
2634 .scan = ir_codes_powercolor_real_angel,
2635 .size = ARRAY_SIZE(ir_codes_powercolor_real_angel),
2636};
2637EXPORT_SYMBOL_GPL(ir_codes_powercolor_real_angel_table);
2403 2638
2404/* Kworld Plus TV Analog Lite PCI IR 2639/* Kworld Plus TV Analog Lite PCI IR
2405 Mauro Carvalho Chehab <mchehab@infradead.org> 2640 Mauro Carvalho Chehab <mchehab@infradead.org>
2406 */ 2641 */
2407IR_KEYTAB_TYPE ir_codes_kworld_plus_tv_analog[IR_KEYTAB_SIZE] = { 2642static struct ir_scancode ir_codes_kworld_plus_tv_analog[] = {
2408 [0x0c] = KEY_PROG1, /* Kworld key */ 2643 { 0x0c, KEY_PROG1 }, /* Kworld key */
2409 [0x16] = KEY_CLOSECD, /* -> ) */ 2644 { 0x16, KEY_CLOSECD }, /* -> ) */
2410 [0x1d] = KEY_POWER2, 2645 { 0x1d, KEY_POWER2 },
2411 2646
2412 [0x00] = KEY_1, 2647 { 0x00, KEY_1 },
2413 [0x01] = KEY_2, 2648 { 0x01, KEY_2 },
2414 [0x02] = KEY_3, /* Two keys have the same code: 3 and left */ 2649 { 0x02, KEY_3 }, /* Two keys have the same code: 3 and left */
2415 [0x03] = KEY_4, /* Two keys have the same code: 3 and right */ 2650 { 0x03, KEY_4 }, /* Two keys have the same code: 3 and right */
2416 [0x04] = KEY_5, 2651 { 0x04, KEY_5 },
2417 [0x05] = KEY_6, 2652 { 0x05, KEY_6 },
2418 [0x06] = KEY_7, 2653 { 0x06, KEY_7 },
2419 [0x07] = KEY_8, 2654 { 0x07, KEY_8 },
2420 [0x08] = KEY_9, 2655 { 0x08, KEY_9 },
2421 [0x0a] = KEY_0, 2656 { 0x0a, KEY_0 },
2422 2657
2423 [0x09] = KEY_AGAIN, 2658 { 0x09, KEY_AGAIN },
2424 [0x14] = KEY_MUTE, 2659 { 0x14, KEY_MUTE },
2425 2660
2426 [0x20] = KEY_UP, 2661 { 0x20, KEY_UP },
2427 [0x21] = KEY_DOWN, 2662 { 0x21, KEY_DOWN },
2428 [0x0b] = KEY_ENTER, 2663 { 0x0b, KEY_ENTER },
2429 2664
2430 [0x10] = KEY_CHANNELUP, 2665 { 0x10, KEY_CHANNELUP },
2431 [0x11] = KEY_CHANNELDOWN, 2666 { 0x11, KEY_CHANNELDOWN },
2432 2667
2433 /* Couldn't map key left/key right since those 2668 /* Couldn't map key left/key right since those
2434 conflict with '3' and '4' scancodes 2669 conflict with '3' and '4' scancodes
2435 I dunno what the original driver does 2670 I dunno what the original driver does
2436 */ 2671 */
2437 2672
2438 [0x13] = KEY_VOLUMEUP, 2673 { 0x13, KEY_VOLUMEUP },
2439 [0x12] = KEY_VOLUMEDOWN, 2674 { 0x12, KEY_VOLUMEDOWN },
2440 2675
2441 /* The lower part of the IR 2676 /* The lower part of the IR
2442 There are several duplicated keycodes there. 2677 There are several duplicated keycodes there.
@@ -2447,426 +2682,468 @@ IR_KEYTAB_TYPE ir_codes_kworld_plus_tv_analog[IR_KEYTAB_SIZE] = {
2447 Also, it is not related to the time between keyup 2682 Also, it is not related to the time between keyup
2448 and keydown. 2683 and keydown.
2449 */ 2684 */
2450 [0x19] = KEY_TIME, /* Timeshift */ 2685 { 0x19, KEY_TIME}, /* Timeshift */
2451 [0x1a] = KEY_STOP, 2686 { 0x1a, KEY_STOP},
2452 [0x1b] = KEY_RECORD, 2687 { 0x1b, KEY_RECORD},
2453 2688
2454 [0x22] = KEY_TEXT, 2689 { 0x22, KEY_TEXT},
2455 2690
2456 [0x15] = KEY_AUDIO, /* ((*)) */ 2691 { 0x15, KEY_AUDIO}, /* ((*)) */
2457 [0x0f] = KEY_ZOOM, 2692 { 0x0f, KEY_ZOOM},
2458 [0x1c] = KEY_CAMERA, /* snapshot */ 2693 { 0x1c, KEY_CAMERA}, /* snapshot */
2459 2694
2460 [0x18] = KEY_RED, /* B */ 2695 { 0x18, KEY_RED}, /* B */
2461 [0x23] = KEY_GREEN, /* C */ 2696 { 0x23, KEY_GREEN}, /* C */
2697};
2698struct ir_scancode_table ir_codes_kworld_plus_tv_analog_table = {
2699 .scan = ir_codes_kworld_plus_tv_analog,
2700 .size = ARRAY_SIZE(ir_codes_kworld_plus_tv_analog),
2462}; 2701};
2463EXPORT_SYMBOL_GPL(ir_codes_kworld_plus_tv_analog); 2702EXPORT_SYMBOL_GPL(ir_codes_kworld_plus_tv_analog_table);
2464 2703
2465/* Kaiomy TVnPC U2 2704/* Kaiomy TVnPC U2
2466 Mauro Carvalho Chehab <mchehab@infradead.org> 2705 Mauro Carvalho Chehab <mchehab@infradead.org>
2467 */ 2706 */
2468IR_KEYTAB_TYPE ir_codes_kaiomy[IR_KEYTAB_SIZE] = { 2707static struct ir_scancode ir_codes_kaiomy[] = {
2469 [0x43] = KEY_POWER2, 2708 { 0x43, KEY_POWER2},
2470 [0x01] = KEY_LIST, 2709 { 0x01, KEY_LIST},
2471 [0x0b] = KEY_ZOOM, 2710 { 0x0b, KEY_ZOOM},
2472 [0x03] = KEY_POWER, 2711 { 0x03, KEY_POWER},
2473
2474 [0x04] = KEY_1,
2475 [0x08] = KEY_2,
2476 [0x02] = KEY_3,
2477
2478 [0x0f] = KEY_4,
2479 [0x05] = KEY_5,
2480 [0x06] = KEY_6,
2481
2482 [0x0c] = KEY_7,
2483 [0x0d] = KEY_8,
2484 [0x0a] = KEY_9,
2485
2486 [0x11] = KEY_0,
2487
2488 [0x09] = KEY_CHANNELUP,
2489 [0x07] = KEY_CHANNELDOWN,
2490
2491 [0x0e] = KEY_VOLUMEUP,
2492 [0x13] = KEY_VOLUMEDOWN,
2493
2494 [0x10] = KEY_HOME,
2495 [0x12] = KEY_ENTER,
2496
2497 [0x14] = KEY_RECORD,
2498 [0x15] = KEY_STOP,
2499 [0x16] = KEY_PLAY,
2500 [0x17] = KEY_MUTE,
2501
2502 [0x18] = KEY_UP,
2503 [0x19] = KEY_DOWN,
2504 [0x1a] = KEY_LEFT,
2505 [0x1b] = KEY_RIGHT,
2506
2507 [0x1c] = KEY_RED,
2508 [0x1d] = KEY_GREEN,
2509 [0x1e] = KEY_YELLOW,
2510 [0x1f] = KEY_BLUE,
2511};
2512EXPORT_SYMBOL_GPL(ir_codes_kaiomy);
2513
2514IR_KEYTAB_TYPE ir_codes_avermedia_a16d[IR_KEYTAB_SIZE] = {
2515 [0x20] = KEY_LIST,
2516 [0x00] = KEY_POWER,
2517 [0x28] = KEY_1,
2518 [0x18] = KEY_2,
2519 [0x38] = KEY_3,
2520 [0x24] = KEY_4,
2521 [0x14] = KEY_5,
2522 [0x34] = KEY_6,
2523 [0x2c] = KEY_7,
2524 [0x1c] = KEY_8,
2525 [0x3c] = KEY_9,
2526 [0x12] = KEY_SUBTITLE,
2527 [0x22] = KEY_0,
2528 [0x32] = KEY_REWIND,
2529 [0x3a] = KEY_SHUFFLE,
2530 [0x02] = KEY_PRINT,
2531 [0x11] = KEY_CHANNELDOWN,
2532 [0x31] = KEY_CHANNELUP,
2533 [0x0c] = KEY_ZOOM,
2534 [0x1e] = KEY_VOLUMEDOWN,
2535 [0x3e] = KEY_VOLUMEUP,
2536 [0x0a] = KEY_MUTE,
2537 [0x04] = KEY_AUDIO,
2538 [0x26] = KEY_RECORD,
2539 [0x06] = KEY_PLAY,
2540 [0x36] = KEY_STOP,
2541 [0x16] = KEY_PAUSE,
2542 [0x2e] = KEY_REWIND,
2543 [0x0e] = KEY_FASTFORWARD,
2544 [0x30] = KEY_TEXT,
2545 [0x21] = KEY_GREEN,
2546 [0x01] = KEY_BLUE,
2547 [0x08] = KEY_EPG,
2548 [0x2a] = KEY_MENU,
2549};
2550EXPORT_SYMBOL_GPL(ir_codes_avermedia_a16d);
2551 2712
2552/* Encore ENLTV-FM v5.3 2713 { 0x04, KEY_1},
2553 Mauro Carvalho Chehab <mchehab@infradead.org> 2714 { 0x08, KEY_2},
2554 */ 2715 { 0x02, KEY_3},
2555IR_KEYTAB_TYPE ir_codes_encore_enltv_fm53[IR_KEYTAB_SIZE] = {
2556 [0x10] = KEY_POWER2,
2557 [0x06] = KEY_MUTE,
2558
2559 [0x09] = KEY_1,
2560 [0x1d] = KEY_2,
2561 [0x1f] = KEY_3,
2562 [0x19] = KEY_4,
2563 [0x1b] = KEY_5,
2564 [0x11] = KEY_6,
2565 [0x17] = KEY_7,
2566 [0x12] = KEY_8,
2567 [0x16] = KEY_9,
2568 [0x48] = KEY_0,
2569
2570 [0x04] = KEY_LIST, /* -/-- */
2571 [0x40] = KEY_LAST, /* recall */
2572
2573 [0x02] = KEY_MODE, /* TV/AV */
2574 [0x05] = KEY_CAMERA, /* SNAPSHOT */
2575
2576 [0x4c] = KEY_CHANNELUP, /* UP */
2577 [0x00] = KEY_CHANNELDOWN, /* DOWN */
2578 [0x0d] = KEY_VOLUMEUP, /* RIGHT */
2579 [0x15] = KEY_VOLUMEDOWN, /* LEFT */
2580 [0x49] = KEY_ENTER, /* OK */
2581
2582 [0x54] = KEY_RECORD,
2583 [0x4d] = KEY_PLAY, /* pause */
2584
2585 [0x1e] = KEY_MENU, /* video setting */
2586 [0x0e] = KEY_RIGHT, /* <- */
2587 [0x1a] = KEY_LEFT, /* -> */
2588
2589 [0x0a] = KEY_CLEAR, /* video default */
2590 [0x0c] = KEY_ZOOM, /* hide pannel */
2591 [0x47] = KEY_SLEEP, /* shutdown */
2592};
2593EXPORT_SYMBOL_GPL(ir_codes_encore_enltv_fm53);
2594 2716
2595/* Zogis Real Audio 220 - 32 keys IR */ 2717 { 0x0f, KEY_4},
2596IR_KEYTAB_TYPE ir_codes_real_audio_220_32_keys[IR_KEYTAB_SIZE] = { 2718 { 0x05, KEY_5},
2597 [0x1c] = KEY_RADIO, 2719 { 0x06, KEY_6},
2598 [0x12] = KEY_POWER2, 2720
2721 { 0x0c, KEY_7},
2722 { 0x0d, KEY_8},
2723 { 0x0a, KEY_9},
2724
2725 { 0x11, KEY_0},
2726
2727 { 0x09, KEY_CHANNELUP},
2728 { 0x07, KEY_CHANNELDOWN},
2599 2729
2600 [0x01] = KEY_1, 2730 { 0x0e, KEY_VOLUMEUP},
2601 [0x02] = KEY_2, 2731 { 0x13, KEY_VOLUMEDOWN},
2602 [0x03] = KEY_3,
2603 [0x04] = KEY_4,
2604 [0x05] = KEY_5,
2605 [0x06] = KEY_6,
2606 [0x07] = KEY_7,
2607 [0x08] = KEY_8,
2608 [0x09] = KEY_9,
2609 [0x00] = KEY_0,
2610 2732
2611 [0x0c] = KEY_VOLUMEUP, 2733 { 0x10, KEY_HOME},
2612 [0x18] = KEY_VOLUMEDOWN, 2734 { 0x12, KEY_ENTER},
2613 [0x0b] = KEY_CHANNELUP,
2614 [0x15] = KEY_CHANNELDOWN,
2615 [0x16] = KEY_ENTER,
2616 2735
2617 [0x11] = KEY_LIST, /* Source */ 2736 { 0x14, KEY_RECORD},
2618 [0x0d] = KEY_AUDIO, /* stereo */ 2737 { 0x15, KEY_STOP},
2738 { 0x16, KEY_PLAY},
2739 { 0x17, KEY_MUTE},
2619 2740
2620 [0x0f] = KEY_PREVIOUS, /* Prev */ 2741 { 0x18, KEY_UP},
2621 [0x1b] = KEY_TIME, /* Timeshift */ 2742 { 0x19, KEY_DOWN},
2622 [0x1a] = KEY_NEXT, /* Next */ 2743 { 0x1a, KEY_LEFT},
2744 { 0x1b, KEY_RIGHT},
2745
2746 { 0x1c, KEY_RED},
2747 { 0x1d, KEY_GREEN},
2748 { 0x1e, KEY_YELLOW},
2749 { 0x1f, KEY_BLUE},
2750};
2751struct ir_scancode_table ir_codes_kaiomy_table = {
2752 .scan = ir_codes_kaiomy,
2753 .size = ARRAY_SIZE(ir_codes_kaiomy),
2754};
2755EXPORT_SYMBOL_GPL(ir_codes_kaiomy_table);
2756
2757static struct ir_scancode ir_codes_avermedia_a16d[] = {
2758 { 0x20, KEY_LIST},
2759 { 0x00, KEY_POWER},
2760 { 0x28, KEY_1},
2761 { 0x18, KEY_2},
2762 { 0x38, KEY_3},
2763 { 0x24, KEY_4},
2764 { 0x14, KEY_5},
2765 { 0x34, KEY_6},
2766 { 0x2c, KEY_7},
2767 { 0x1c, KEY_8},
2768 { 0x3c, KEY_9},
2769 { 0x12, KEY_SUBTITLE},
2770 { 0x22, KEY_0},
2771 { 0x32, KEY_REWIND},
2772 { 0x3a, KEY_SHUFFLE},
2773 { 0x02, KEY_PRINT},
2774 { 0x11, KEY_CHANNELDOWN},
2775 { 0x31, KEY_CHANNELUP},
2776 { 0x0c, KEY_ZOOM},
2777 { 0x1e, KEY_VOLUMEDOWN},
2778 { 0x3e, KEY_VOLUMEUP},
2779 { 0x0a, KEY_MUTE},
2780 { 0x04, KEY_AUDIO},
2781 { 0x26, KEY_RECORD},
2782 { 0x06, KEY_PLAY},
2783 { 0x36, KEY_STOP},
2784 { 0x16, KEY_PAUSE},
2785 { 0x2e, KEY_REWIND},
2786 { 0x0e, KEY_FASTFORWARD},
2787 { 0x30, KEY_TEXT},
2788 { 0x21, KEY_GREEN},
2789 { 0x01, KEY_BLUE},
2790 { 0x08, KEY_EPG},
2791 { 0x2a, KEY_MENU},
2792};
2793struct ir_scancode_table ir_codes_avermedia_a16d_table = {
2794 .scan = ir_codes_avermedia_a16d,
2795 .size = ARRAY_SIZE(ir_codes_avermedia_a16d),
2796};
2797EXPORT_SYMBOL_GPL(ir_codes_avermedia_a16d_table);
2623 2798
2624 [0x0e] = KEY_STOP, 2799/* Encore ENLTV-FM v5.3
2625 [0x1f] = KEY_PLAY, 2800 Mauro Carvalho Chehab <mchehab@infradead.org>
2626 [0x1e] = KEY_PLAYPAUSE, /* Pause */ 2801 */
2802static struct ir_scancode ir_codes_encore_enltv_fm53[] = {
2803 { 0x10, KEY_POWER2},
2804 { 0x06, KEY_MUTE},
2805
2806 { 0x09, KEY_1},
2807 { 0x1d, KEY_2},
2808 { 0x1f, KEY_3},
2809 { 0x19, KEY_4},
2810 { 0x1b, KEY_5},
2811 { 0x11, KEY_6},
2812 { 0x17, KEY_7},
2813 { 0x12, KEY_8},
2814 { 0x16, KEY_9},
2815 { 0x48, KEY_0},
2816
2817 { 0x04, KEY_LIST}, /* -/-- */
2818 { 0x40, KEY_LAST}, /* recall */
2819
2820 { 0x02, KEY_MODE}, /* TV/AV */
2821 { 0x05, KEY_CAMERA}, /* SNAPSHOT */
2822
2823 { 0x4c, KEY_CHANNELUP}, /* UP */
2824 { 0x00, KEY_CHANNELDOWN}, /* DOWN */
2825 { 0x0d, KEY_VOLUMEUP}, /* RIGHT */
2826 { 0x15, KEY_VOLUMEDOWN}, /* LEFT */
2827 { 0x49, KEY_ENTER}, /* OK */
2828
2829 { 0x54, KEY_RECORD},
2830 { 0x4d, KEY_PLAY}, /* pause */
2831
2832 { 0x1e, KEY_MENU}, /* video setting */
2833 { 0x0e, KEY_RIGHT}, /* <- */
2834 { 0x1a, KEY_LEFT}, /* -> */
2835
2836 { 0x0a, KEY_CLEAR}, /* video default */
2837 { 0x0c, KEY_ZOOM}, /* hide pannel */
2838 { 0x47, KEY_SLEEP}, /* shutdown */
2839};
2840struct ir_scancode_table ir_codes_encore_enltv_fm53_table = {
2841 .scan = ir_codes_encore_enltv_fm53,
2842 .size = ARRAY_SIZE(ir_codes_encore_enltv_fm53),
2843};
2844EXPORT_SYMBOL_GPL(ir_codes_encore_enltv_fm53_table);
2627 2845
2628 [0x1d] = KEY_RECORD, 2846/* Zogis Real Audio 220 - 32 keys IR */
2629 [0x13] = KEY_MUTE, 2847static struct ir_scancode ir_codes_real_audio_220_32_keys[] = {
2630 [0x19] = KEY_CAMERA, /* Snapshot */ 2848 { 0x1c, KEY_RADIO},
2849 { 0x12, KEY_POWER2},
2850
2851 { 0x01, KEY_1},
2852 { 0x02, KEY_2},
2853 { 0x03, KEY_3},
2854 { 0x04, KEY_4},
2855 { 0x05, KEY_5},
2856 { 0x06, KEY_6},
2857 { 0x07, KEY_7},
2858 { 0x08, KEY_8},
2859 { 0x09, KEY_9},
2860 { 0x00, KEY_0},
2861
2862 { 0x0c, KEY_VOLUMEUP},
2863 { 0x18, KEY_VOLUMEDOWN},
2864 { 0x0b, KEY_CHANNELUP},
2865 { 0x15, KEY_CHANNELDOWN},
2866 { 0x16, KEY_ENTER},
2867
2868 { 0x11, KEY_LIST}, /* Source */
2869 { 0x0d, KEY_AUDIO}, /* stereo */
2870
2871 { 0x0f, KEY_PREVIOUS}, /* Prev */
2872 { 0x1b, KEY_TIME}, /* Timeshift */
2873 { 0x1a, KEY_NEXT}, /* Next */
2874
2875 { 0x0e, KEY_STOP},
2876 { 0x1f, KEY_PLAY},
2877 { 0x1e, KEY_PLAYPAUSE}, /* Pause */
2878
2879 { 0x1d, KEY_RECORD},
2880 { 0x13, KEY_MUTE},
2881 { 0x19, KEY_CAMERA}, /* Snapshot */
2631 2882
2632}; 2883};
2633EXPORT_SYMBOL_GPL(ir_codes_real_audio_220_32_keys); 2884struct ir_scancode_table ir_codes_real_audio_220_32_keys_table = {
2885 .scan = ir_codes_real_audio_220_32_keys,
2886 .size = ARRAY_SIZE(ir_codes_real_audio_220_32_keys),
2887};
2888EXPORT_SYMBOL_GPL(ir_codes_real_audio_220_32_keys_table);
2634 2889
2635/* ATI TV Wonder HD 600 USB 2890/* ATI TV Wonder HD 600 USB
2636 Devin Heitmueller <devin.heitmueller@gmail.com> 2891 Devin Heitmueller <devin.heitmueller@gmail.com>
2637 */ 2892 */
2638IR_KEYTAB_TYPE ir_codes_ati_tv_wonder_hd_600[IR_KEYTAB_SIZE] = { 2893static struct ir_scancode ir_codes_ati_tv_wonder_hd_600[] = {
2639 [0x00] = KEY_RECORD, /* Row 1 */ 2894 { 0x00, KEY_RECORD}, /* Row 1 */
2640 [0x01] = KEY_PLAYPAUSE, 2895 { 0x01, KEY_PLAYPAUSE},
2641 [0x02] = KEY_STOP, 2896 { 0x02, KEY_STOP},
2642 [0x03] = KEY_POWER, 2897 { 0x03, KEY_POWER},
2643 [0x04] = KEY_PREVIOUS, /* Row 2 */ 2898 { 0x04, KEY_PREVIOUS}, /* Row 2 */
2644 [0x05] = KEY_REWIND, 2899 { 0x05, KEY_REWIND},
2645 [0x06] = KEY_FORWARD, 2900 { 0x06, KEY_FORWARD},
2646 [0x07] = KEY_NEXT, 2901 { 0x07, KEY_NEXT},
2647 [0x08] = KEY_EPG, /* Row 3 */ 2902 { 0x08, KEY_EPG}, /* Row 3 */
2648 [0x09] = KEY_HOME, 2903 { 0x09, KEY_HOME},
2649 [0x0a] = KEY_MENU, 2904 { 0x0a, KEY_MENU},
2650 [0x0b] = KEY_CHANNELUP, 2905 { 0x0b, KEY_CHANNELUP},
2651 [0x0c] = KEY_BACK, /* Row 4 */ 2906 { 0x0c, KEY_BACK}, /* Row 4 */
2652 [0x0d] = KEY_UP, 2907 { 0x0d, KEY_UP},
2653 [0x0e] = KEY_INFO, 2908 { 0x0e, KEY_INFO},
2654 [0x0f] = KEY_CHANNELDOWN, 2909 { 0x0f, KEY_CHANNELDOWN},
2655 [0x10] = KEY_LEFT, /* Row 5 */ 2910 { 0x10, KEY_LEFT}, /* Row 5 */
2656 [0x11] = KEY_SELECT, 2911 { 0x11, KEY_SELECT},
2657 [0x12] = KEY_RIGHT, 2912 { 0x12, KEY_RIGHT},
2658 [0x13] = KEY_VOLUMEUP, 2913 { 0x13, KEY_VOLUMEUP},
2659 [0x14] = KEY_LAST, /* Row 6 */ 2914 { 0x14, KEY_LAST}, /* Row 6 */
2660 [0x15] = KEY_DOWN, 2915 { 0x15, KEY_DOWN},
2661 [0x16] = KEY_MUTE, 2916 { 0x16, KEY_MUTE},
2662 [0x17] = KEY_VOLUMEDOWN, 2917 { 0x17, KEY_VOLUMEDOWN},
2663}; 2918};
2664EXPORT_SYMBOL_GPL(ir_codes_ati_tv_wonder_hd_600); 2919struct ir_scancode_table ir_codes_ati_tv_wonder_hd_600_table = {
2920 .scan = ir_codes_ati_tv_wonder_hd_600,
2921 .size = ARRAY_SIZE(ir_codes_ati_tv_wonder_hd_600),
2922};
2923EXPORT_SYMBOL_GPL(ir_codes_ati_tv_wonder_hd_600_table);
2665 2924
2666/* DVBWorld remotes 2925/* DVBWorld remotes
2667 Igor M. Liplianin <liplianin@me.by> 2926 Igor M. Liplianin <liplianin@me.by>
2668 */ 2927 */
2669IR_KEYTAB_TYPE ir_codes_dm1105_nec[IR_KEYTAB_SIZE] = { 2928static struct ir_scancode ir_codes_dm1105_nec[] = {
2670 [0x0a] = KEY_POWER2, /* power */ 2929 { 0x0a, KEY_POWER2}, /* power */
2671 [0x0c] = KEY_MUTE, /* mute */ 2930 { 0x0c, KEY_MUTE}, /* mute */
2672 [0x11] = KEY_1, 2931 { 0x11, KEY_1},
2673 [0x12] = KEY_2, 2932 { 0x12, KEY_2},
2674 [0x13] = KEY_3, 2933 { 0x13, KEY_3},
2675 [0x14] = KEY_4, 2934 { 0x14, KEY_4},
2676 [0x15] = KEY_5, 2935 { 0x15, KEY_5},
2677 [0x16] = KEY_6, 2936 { 0x16, KEY_6},
2678 [0x17] = KEY_7, 2937 { 0x17, KEY_7},
2679 [0x18] = KEY_8, 2938 { 0x18, KEY_8},
2680 [0x19] = KEY_9, 2939 { 0x19, KEY_9},
2681 [0x10] = KEY_0, 2940 { 0x10, KEY_0},
2682 [0x1c] = KEY_CHANNELUP, /* ch+ */ 2941 { 0x1c, KEY_CHANNELUP}, /* ch+ */
2683 [0x0f] = KEY_CHANNELDOWN, /* ch- */ 2942 { 0x0f, KEY_CHANNELDOWN}, /* ch- */
2684 [0x1a] = KEY_VOLUMEUP, /* vol+ */ 2943 { 0x1a, KEY_VOLUMEUP}, /* vol+ */
2685 [0x0e] = KEY_VOLUMEDOWN, /* vol- */ 2944 { 0x0e, KEY_VOLUMEDOWN}, /* vol- */
2686 [0x04] = KEY_RECORD, /* rec */ 2945 { 0x04, KEY_RECORD}, /* rec */
2687 [0x09] = KEY_CHANNEL, /* fav */ 2946 { 0x09, KEY_CHANNEL}, /* fav */
2688 [0x08] = KEY_BACKSPACE, /* rewind */ 2947 { 0x08, KEY_BACKSPACE}, /* rewind */
2689 [0x07] = KEY_FASTFORWARD, /* fast */ 2948 { 0x07, KEY_FASTFORWARD}, /* fast */
2690 [0x0b] = KEY_PAUSE, /* pause */ 2949 { 0x0b, KEY_PAUSE}, /* pause */
2691 [0x02] = KEY_ESC, /* cancel */ 2950 { 0x02, KEY_ESC}, /* cancel */
2692 [0x03] = KEY_TAB, /* tab */ 2951 { 0x03, KEY_TAB}, /* tab */
2693 [0x00] = KEY_UP, /* up */ 2952 { 0x00, KEY_UP}, /* up */
2694 [0x1f] = KEY_ENTER, /* ok */ 2953 { 0x1f, KEY_ENTER}, /* ok */
2695 [0x01] = KEY_DOWN, /* down */ 2954 { 0x01, KEY_DOWN}, /* down */
2696 [0x05] = KEY_RECORD, /* cap */ 2955 { 0x05, KEY_RECORD}, /* cap */
2697 [0x06] = KEY_STOP, /* stop */ 2956 { 0x06, KEY_STOP}, /* stop */
2698 [0x40] = KEY_ZOOM, /* full */ 2957 { 0x40, KEY_ZOOM}, /* full */
2699 [0x1e] = KEY_TV, /* tvmode */ 2958 { 0x1e, KEY_TV}, /* tvmode */
2700 [0x1b] = KEY_B, /* recall */ 2959 { 0x1b, KEY_B}, /* recall */
2701}; 2960};
2702EXPORT_SYMBOL_GPL(ir_codes_dm1105_nec); 2961struct ir_scancode_table ir_codes_dm1105_nec_table = {
2703 2962 .scan = ir_codes_dm1105_nec,
2963 .size = ARRAY_SIZE(ir_codes_dm1105_nec),
2964};
2965EXPORT_SYMBOL_GPL(ir_codes_dm1105_nec_table);
2704 2966
2705/* Terratec Cinergy Hybrid T USB XS 2967/* Terratec Cinergy Hybrid T USB XS
2706 Devin Heitmueller <dheitmueller@linuxtv.org> 2968 Devin Heitmueller <dheitmueller@linuxtv.org>
2707 */ 2969 */
2708IR_KEYTAB_TYPE ir_codes_terratec_cinergy_xs[IR_KEYTAB_SIZE] = { 2970static struct ir_scancode ir_codes_terratec_cinergy_xs[] = {
2709 [0x41] = KEY_HOME, 2971 { 0x41, KEY_HOME},
2710 [0x01] = KEY_POWER, 2972 { 0x01, KEY_POWER},
2711 [0x42] = KEY_MENU, 2973 { 0x42, KEY_MENU},
2712 [0x02] = KEY_1, 2974 { 0x02, KEY_1},
2713 [0x03] = KEY_2, 2975 { 0x03, KEY_2},
2714 [0x04] = KEY_3, 2976 { 0x04, KEY_3},
2715 [0x43] = KEY_SUBTITLE, 2977 { 0x43, KEY_SUBTITLE},
2716 [0x05] = KEY_4, 2978 { 0x05, KEY_4},
2717 [0x06] = KEY_5, 2979 { 0x06, KEY_5},
2718 [0x07] = KEY_6, 2980 { 0x07, KEY_6},
2719 [0x44] = KEY_TEXT, 2981 { 0x44, KEY_TEXT},
2720 [0x08] = KEY_7, 2982 { 0x08, KEY_7},
2721 [0x09] = KEY_8, 2983 { 0x09, KEY_8},
2722 [0x0a] = KEY_9, 2984 { 0x0a, KEY_9},
2723 [0x45] = KEY_DELETE, 2985 { 0x45, KEY_DELETE},
2724 [0x0b] = KEY_TUNER, 2986 { 0x0b, KEY_TUNER},
2725 [0x0c] = KEY_0, 2987 { 0x0c, KEY_0},
2726 [0x0d] = KEY_MODE, 2988 { 0x0d, KEY_MODE},
2727 [0x46] = KEY_TV, 2989 { 0x46, KEY_TV},
2728 [0x47] = KEY_DVD, 2990 { 0x47, KEY_DVD},
2729 [0x49] = KEY_VIDEO, 2991 { 0x49, KEY_VIDEO},
2730 [0x4b] = KEY_AUX, 2992 { 0x4b, KEY_AUX},
2731 [0x10] = KEY_UP, 2993 { 0x10, KEY_UP},
2732 [0x11] = KEY_LEFT, 2994 { 0x11, KEY_LEFT},
2733 [0x12] = KEY_OK, 2995 { 0x12, KEY_OK},
2734 [0x13] = KEY_RIGHT, 2996 { 0x13, KEY_RIGHT},
2735 [0x14] = KEY_DOWN, 2997 { 0x14, KEY_DOWN},
2736 [0x0f] = KEY_EPG, 2998 { 0x0f, KEY_EPG},
2737 [0x16] = KEY_INFO, 2999 { 0x16, KEY_INFO},
2738 [0x4d] = KEY_BACKSPACE, 3000 { 0x4d, KEY_BACKSPACE},
2739 [0x1c] = KEY_VOLUMEUP, 3001 { 0x1c, KEY_VOLUMEUP},
2740 [0x4c] = KEY_PLAY, 3002 { 0x4c, KEY_PLAY},
2741 [0x1b] = KEY_CHANNELUP, 3003 { 0x1b, KEY_CHANNELUP},
2742 [0x1e] = KEY_VOLUMEDOWN, 3004 { 0x1e, KEY_VOLUMEDOWN},
2743 [0x1d] = KEY_MUTE, 3005 { 0x1d, KEY_MUTE},
2744 [0x1f] = KEY_CHANNELDOWN, 3006 { 0x1f, KEY_CHANNELDOWN},
2745 [0x17] = KEY_RED, 3007 { 0x17, KEY_RED},
2746 [0x18] = KEY_GREEN, 3008 { 0x18, KEY_GREEN},
2747 [0x19] = KEY_YELLOW, 3009 { 0x19, KEY_YELLOW},
2748 [0x1a] = KEY_BLUE, 3010 { 0x1a, KEY_BLUE},
2749 [0x58] = KEY_RECORD, 3011 { 0x58, KEY_RECORD},
2750 [0x48] = KEY_STOP, 3012 { 0x48, KEY_STOP},
2751 [0x40] = KEY_PAUSE, 3013 { 0x40, KEY_PAUSE},
2752 [0x54] = KEY_LAST, 3014 { 0x54, KEY_LAST},
2753 [0x4e] = KEY_REWIND, 3015 { 0x4e, KEY_REWIND},
2754 [0x4f] = KEY_FASTFORWARD, 3016 { 0x4f, KEY_FASTFORWARD},
2755 [0x5c] = KEY_NEXT, 3017 { 0x5c, KEY_NEXT},
2756}; 3018};
2757EXPORT_SYMBOL_GPL(ir_codes_terratec_cinergy_xs); 3019struct ir_scancode_table ir_codes_terratec_cinergy_xs_table = {
3020 .scan = ir_codes_terratec_cinergy_xs,
3021 .size = ARRAY_SIZE(ir_codes_terratec_cinergy_xs),
3022};
3023EXPORT_SYMBOL_GPL(ir_codes_terratec_cinergy_xs_table);
2758 3024
2759/* EVGA inDtube 3025/* EVGA inDtube
2760 Devin Heitmueller <devin.heitmueller@gmail.com> 3026 Devin Heitmueller <devin.heitmueller@gmail.com>
2761 */ 3027 */
2762IR_KEYTAB_TYPE ir_codes_evga_indtube[IR_KEYTAB_SIZE] = { 3028static struct ir_scancode ir_codes_evga_indtube[] = {
2763 [0x12] = KEY_POWER, 3029 { 0x12, KEY_POWER},
2764 [0x02] = KEY_MODE, /* TV */ 3030 { 0x02, KEY_MODE}, /* TV */
2765 [0x14] = KEY_MUTE, 3031 { 0x14, KEY_MUTE},
2766 [0x1a] = KEY_CHANNELUP, 3032 { 0x1a, KEY_CHANNELUP},
2767 [0x16] = KEY_TV2, /* PIP */ 3033 { 0x16, KEY_TV2}, /* PIP */
2768 [0x1d] = KEY_VOLUMEUP, 3034 { 0x1d, KEY_VOLUMEUP},
2769 [0x05] = KEY_CHANNELDOWN, 3035 { 0x05, KEY_CHANNELDOWN},
2770 [0x0f] = KEY_PLAYPAUSE, 3036 { 0x0f, KEY_PLAYPAUSE},
2771 [0x19] = KEY_VOLUMEDOWN, 3037 { 0x19, KEY_VOLUMEDOWN},
2772 [0x1c] = KEY_REWIND, 3038 { 0x1c, KEY_REWIND},
2773 [0x0d] = KEY_RECORD, 3039 { 0x0d, KEY_RECORD},
2774 [0x18] = KEY_FORWARD, 3040 { 0x18, KEY_FORWARD},
2775 [0x1e] = KEY_PREVIOUS, 3041 { 0x1e, KEY_PREVIOUS},
2776 [0x1b] = KEY_STOP, 3042 { 0x1b, KEY_STOP},
2777 [0x1f] = KEY_NEXT, 3043 { 0x1f, KEY_NEXT},
2778 [0x13] = KEY_CAMERA, 3044 { 0x13, KEY_CAMERA},
2779}; 3045};
2780EXPORT_SYMBOL_GPL(ir_codes_evga_indtube); 3046struct ir_scancode_table ir_codes_evga_indtube_table = {
2781 3047 .scan = ir_codes_evga_indtube,
2782IR_KEYTAB_TYPE ir_codes_videomate_s350[IR_KEYTAB_SIZE] = { 3048 .size = ARRAY_SIZE(ir_codes_evga_indtube),
2783 [0x00] = KEY_TV, 3049};
2784 [0x01] = KEY_DVD, 3050EXPORT_SYMBOL_GPL(ir_codes_evga_indtube_table);
2785 [0x04] = KEY_RECORD, 3051
2786 [0x05] = KEY_VIDEO, /* TV/Video */ 3052static struct ir_scancode ir_codes_videomate_s350[] = {
2787 [0x07] = KEY_STOP, 3053 { 0x00, KEY_TV},
2788 [0x08] = KEY_PLAYPAUSE, 3054 { 0x01, KEY_DVD},
2789 [0x0a] = KEY_REWIND, 3055 { 0x04, KEY_RECORD},
2790 [0x0f] = KEY_FASTFORWARD, 3056 { 0x05, KEY_VIDEO}, /* TV/Video */
2791 [0x10] = KEY_CHANNELUP, 3057 { 0x07, KEY_STOP},
2792 [0x12] = KEY_VOLUMEUP, 3058 { 0x08, KEY_PLAYPAUSE},
2793 [0x13] = KEY_CHANNELDOWN, 3059 { 0x0a, KEY_REWIND},
2794 [0x14] = KEY_MUTE, 3060 { 0x0f, KEY_FASTFORWARD},
2795 [0x15] = KEY_VOLUMEDOWN, 3061 { 0x10, KEY_CHANNELUP},
2796 [0x16] = KEY_1, 3062 { 0x12, KEY_VOLUMEUP},
2797 [0x17] = KEY_2, 3063 { 0x13, KEY_CHANNELDOWN},
2798 [0x18] = KEY_3, 3064 { 0x14, KEY_MUTE},
2799 [0x19] = KEY_4, 3065 { 0x15, KEY_VOLUMEDOWN},
2800 [0x1a] = KEY_5, 3066 { 0x16, KEY_1},
2801 [0x1b] = KEY_6, 3067 { 0x17, KEY_2},
2802 [0x1c] = KEY_7, 3068 { 0x18, KEY_3},
2803 [0x1d] = KEY_8, 3069 { 0x19, KEY_4},
2804 [0x1e] = KEY_9, 3070 { 0x1a, KEY_5},
2805 [0x1f] = KEY_0, 3071 { 0x1b, KEY_6},
2806 [0x21] = KEY_SLEEP, 3072 { 0x1c, KEY_7},
2807 [0x24] = KEY_ZOOM, 3073 { 0x1d, KEY_8},
2808 [0x25] = KEY_LAST, /* Recall */ 3074 { 0x1e, KEY_9},
2809 [0x26] = KEY_SUBTITLE, /* CC */ 3075 { 0x1f, KEY_0},
2810 [0x27] = KEY_LANGUAGE, /* MTS */ 3076 { 0x21, KEY_SLEEP},
2811 [0x29] = KEY_CHANNEL, /* SURF */ 3077 { 0x24, KEY_ZOOM},
2812 [0x2b] = KEY_A, 3078 { 0x25, KEY_LAST}, /* Recall */
2813 [0x2c] = KEY_B, 3079 { 0x26, KEY_SUBTITLE}, /* CC */
2814 [0x2f] = KEY_CAMERA, /* Snapshot */ 3080 { 0x27, KEY_LANGUAGE}, /* MTS */
2815 [0x23] = KEY_RADIO, 3081 { 0x29, KEY_CHANNEL}, /* SURF */
2816 [0x02] = KEY_PREVIOUSSONG, 3082 { 0x2b, KEY_A},
2817 [0x06] = KEY_NEXTSONG, 3083 { 0x2c, KEY_B},
2818 [0x03] = KEY_EPG, 3084 { 0x2f, KEY_CAMERA}, /* Snapshot */
2819 [0x09] = KEY_SETUP, 3085 { 0x23, KEY_RADIO},
2820 [0x22] = KEY_BACKSPACE, 3086 { 0x02, KEY_PREVIOUSSONG},
2821 [0x0c] = KEY_UP, 3087 { 0x06, KEY_NEXTSONG},
2822 [0x0e] = KEY_DOWN, 3088 { 0x03, KEY_EPG},
2823 [0x0b] = KEY_LEFT, 3089 { 0x09, KEY_SETUP},
2824 [0x0d] = KEY_RIGHT, 3090 { 0x22, KEY_BACKSPACE},
2825 [0x11] = KEY_ENTER, 3091 { 0x0c, KEY_UP},
2826 [0x20] = KEY_TEXT, 3092 { 0x0e, KEY_DOWN},
2827}; 3093 { 0x0b, KEY_LEFT},
2828EXPORT_SYMBOL_GPL(ir_codes_videomate_s350); 3094 { 0x0d, KEY_RIGHT},
2829 3095 { 0x11, KEY_ENTER},
3096 { 0x20, KEY_TEXT},
3097};
3098struct ir_scancode_table ir_codes_videomate_s350_table = {
3099 .scan = ir_codes_videomate_s350,
3100 .size = ARRAY_SIZE(ir_codes_videomate_s350),
3101};
3102EXPORT_SYMBOL_GPL(ir_codes_videomate_s350_table);
2830 3103
2831/* GADMEI UTV330+ RM008Z remote 3104/* GADMEI UTV330+ RM008Z remote
2832 Shine Liu <shinel@foxmail.com> 3105 Shine Liu <shinel@foxmail.com>
2833 */ 3106 */
2834IR_KEYTAB_TYPE ir_codes_gadmei_rm008z[IR_KEYTAB_SIZE] = { 3107static struct ir_scancode ir_codes_gadmei_rm008z[] = {
2835 [0x14] = KEY_POWER2, /* POWER OFF */ 3108 { 0x14, KEY_POWER2}, /* POWER OFF */
2836 [0x0c] = KEY_MUTE, /* MUTE */ 3109 { 0x0c, KEY_MUTE}, /* MUTE */
2837 3110
2838 [0x18] = KEY_TV, /* TV */ 3111 { 0x18, KEY_TV}, /* TV */
2839 [0x0e] = KEY_VIDEO, /* AV */ 3112 { 0x0e, KEY_VIDEO}, /* AV */
2840 [0x0b] = KEY_AUDIO, /* SV */ 3113 { 0x0b, KEY_AUDIO}, /* SV */
2841 [0x0f] = KEY_RADIO, /* FM */ 3114 { 0x0f, KEY_RADIO}, /* FM */
2842 3115
2843 [0x00] = KEY_1, 3116 { 0x00, KEY_1},
2844 [0x01] = KEY_2, 3117 { 0x01, KEY_2},
2845 [0x02] = KEY_3, 3118 { 0x02, KEY_3},
2846 [0x03] = KEY_4, 3119 { 0x03, KEY_4},
2847 [0x04] = KEY_5, 3120 { 0x04, KEY_5},
2848 [0x05] = KEY_6, 3121 { 0x05, KEY_6},
2849 [0x06] = KEY_7, 3122 { 0x06, KEY_7},
2850 [0x07] = KEY_8, 3123 { 0x07, KEY_8},
2851 [0x08] = KEY_9, 3124 { 0x08, KEY_9},
2852 [0x09] = KEY_0, 3125 { 0x09, KEY_0},
2853 [0x0a] = KEY_INFO, /* OSD */ 3126 { 0x0a, KEY_INFO}, /* OSD */
2854 [0x1c] = KEY_BACKSPACE, /* LAST */ 3127 { 0x1c, KEY_BACKSPACE}, /* LAST */
2855 3128
2856 [0x0d] = KEY_PLAY, /* PLAY */ 3129 { 0x0d, KEY_PLAY}, /* PLAY */
2857 [0x1e] = KEY_CAMERA, /* SNAPSHOT */ 3130 { 0x1e, KEY_CAMERA}, /* SNAPSHOT */
2858 [0x1a] = KEY_RECORD, /* RECORD */ 3131 { 0x1a, KEY_RECORD}, /* RECORD */
2859 [0x17] = KEY_STOP, /* STOP */ 3132 { 0x17, KEY_STOP}, /* STOP */
2860 3133
2861 [0x1f] = KEY_UP, /* UP */ 3134 { 0x1f, KEY_UP}, /* UP */
2862 [0x44] = KEY_DOWN, /* DOWN */ 3135 { 0x44, KEY_DOWN}, /* DOWN */
2863 [0x46] = KEY_TAB, /* BACK */ 3136 { 0x46, KEY_TAB}, /* BACK */
2864 [0x4a] = KEY_ZOOM, /* FULLSECREEN */ 3137 { 0x4a, KEY_ZOOM}, /* FULLSECREEN */
2865 3138
2866 [0x10] = KEY_VOLUMEUP, /* VOLUMEUP */ 3139 { 0x10, KEY_VOLUMEUP}, /* VOLUMEUP */
2867 [0x11] = KEY_VOLUMEDOWN, /* VOLUMEDOWN */ 3140 { 0x11, KEY_VOLUMEDOWN}, /* VOLUMEDOWN */
2868 [0x12] = KEY_CHANNELUP, /* CHANNELUP */ 3141 { 0x12, KEY_CHANNELUP}, /* CHANNELUP */
2869 [0x13] = KEY_CHANNELDOWN, /* CHANNELDOWN */ 3142 { 0x13, KEY_CHANNELDOWN}, /* CHANNELDOWN */
2870 [0x15] = KEY_ENTER, /* OK */ 3143 { 0x15, KEY_ENTER}, /* OK */
2871}; 3144};
2872EXPORT_SYMBOL_GPL(ir_codes_gadmei_rm008z); 3145struct ir_scancode_table ir_codes_gadmei_rm008z_table = {
3146 .scan = ir_codes_gadmei_rm008z,
3147 .size = ARRAY_SIZE(ir_codes_gadmei_rm008z),
3148};
3149EXPORT_SYMBOL_GPL(ir_codes_gadmei_rm008z_table);
diff --git a/drivers/media/dvb/dm1105/dm1105.c b/drivers/media/dvb/dm1105/dm1105.c
index c662fa65a339..2d099e271751 100644
--- a/drivers/media/dvb/dm1105/dm1105.c
+++ b/drivers/media/dvb/dm1105/dm1105.c
@@ -577,7 +577,7 @@ static irqreturn_t dm1105dvb_irq(int irq, void *dev_id)
577int __devinit dm1105_ir_init(struct dm1105dvb *dm1105) 577int __devinit dm1105_ir_init(struct dm1105dvb *dm1105)
578{ 578{
579 struct input_dev *input_dev; 579 struct input_dev *input_dev;
580 IR_KEYTAB_TYPE *ir_codes = ir_codes_dm1105_nec; 580 struct ir_scancode_table *ir_codes = &ir_codes_dm1105_nec_table;
581 int ir_type = IR_TYPE_OTHER; 581 int ir_type = IR_TYPE_OTHER;
582 int err = -ENOMEM; 582 int err = -ENOMEM;
583 583
diff --git a/drivers/media/dvb/ttpci/budget-ci.c b/drivers/media/dvb/ttpci/budget-ci.c
index 371a71616810..b5c681372b6c 100644
--- a/drivers/media/dvb/ttpci/budget-ci.c
+++ b/drivers/media/dvb/ttpci/budget-ci.c
@@ -225,7 +225,7 @@ static int msp430_ir_init(struct budget_ci *budget_ci)
225 case 0x1012: 225 case 0x1012:
226 /* The hauppauge keymap is a superset of these remotes */ 226 /* The hauppauge keymap is a superset of these remotes */
227 ir_input_init(input_dev, &budget_ci->ir.state, 227 ir_input_init(input_dev, &budget_ci->ir.state,
228 IR_TYPE_RC5, ir_codes_hauppauge_new); 228 IR_TYPE_RC5, &ir_codes_hauppauge_new_table);
229 229
230 if (rc5_device < 0) 230 if (rc5_device < 0)
231 budget_ci->ir.rc5_device = 0x1f; 231 budget_ci->ir.rc5_device = 0x1f;
@@ -237,7 +237,7 @@ static int msp430_ir_init(struct budget_ci *budget_ci)
237 case 0x101a: 237 case 0x101a:
238 /* for the Technotrend 1500 bundled remote */ 238 /* for the Technotrend 1500 bundled remote */
239 ir_input_init(input_dev, &budget_ci->ir.state, 239 ir_input_init(input_dev, &budget_ci->ir.state,
240 IR_TYPE_RC5, ir_codes_tt_1500); 240 IR_TYPE_RC5, &ir_codes_tt_1500_table);
241 241
242 if (rc5_device < 0) 242 if (rc5_device < 0)
243 budget_ci->ir.rc5_device = IR_DEVICE_ANY; 243 budget_ci->ir.rc5_device = IR_DEVICE_ANY;
@@ -247,7 +247,7 @@ static int msp430_ir_init(struct budget_ci *budget_ci)
247 default: 247 default:
248 /* unknown remote */ 248 /* unknown remote */
249 ir_input_init(input_dev, &budget_ci->ir.state, 249 ir_input_init(input_dev, &budget_ci->ir.state,
250 IR_TYPE_RC5, ir_codes_budget_ci_old); 250 IR_TYPE_RC5, &ir_codes_budget_ci_old_table);
251 251
252 if (rc5_device < 0) 252 if (rc5_device < 0)
253 budget_ci->ir.rc5_device = IR_DEVICE_ANY; 253 budget_ci->ir.rc5_device = IR_DEVICE_ANY;
diff --git a/drivers/media/video/bt8xx/bttv-input.c b/drivers/media/video/bt8xx/bttv-input.c
index 3e7b48e73b01..ebd51afe8761 100644
--- a/drivers/media/video/bt8xx/bttv-input.c
+++ b/drivers/media/video/bt8xx/bttv-input.c
@@ -245,7 +245,7 @@ static void bttv_ir_stop(struct bttv *btv)
245int bttv_input_init(struct bttv *btv) 245int bttv_input_init(struct bttv *btv)
246{ 246{
247 struct card_ir *ir; 247 struct card_ir *ir;
248 IR_KEYTAB_TYPE *ir_codes = NULL; 248 struct ir_scancode_table *ir_codes = NULL;
249 struct input_dev *input_dev; 249 struct input_dev *input_dev;
250 int ir_type = IR_TYPE_OTHER; 250 int ir_type = IR_TYPE_OTHER;
251 int err = -ENOMEM; 251 int err = -ENOMEM;
@@ -263,7 +263,7 @@ int bttv_input_init(struct bttv *btv)
263 case BTTV_BOARD_AVERMEDIA: 263 case BTTV_BOARD_AVERMEDIA:
264 case BTTV_BOARD_AVPHONE98: 264 case BTTV_BOARD_AVPHONE98:
265 case BTTV_BOARD_AVERMEDIA98: 265 case BTTV_BOARD_AVERMEDIA98:
266 ir_codes = ir_codes_avermedia; 266 ir_codes = &ir_codes_avermedia_table;
267 ir->mask_keycode = 0xf88000; 267 ir->mask_keycode = 0xf88000;
268 ir->mask_keydown = 0x010000; 268 ir->mask_keydown = 0x010000;
269 ir->polling = 50; // ms 269 ir->polling = 50; // ms
@@ -271,14 +271,14 @@ int bttv_input_init(struct bttv *btv)
271 271
272 case BTTV_BOARD_AVDVBT_761: 272 case BTTV_BOARD_AVDVBT_761:
273 case BTTV_BOARD_AVDVBT_771: 273 case BTTV_BOARD_AVDVBT_771:
274 ir_codes = ir_codes_avermedia_dvbt; 274 ir_codes = &ir_codes_avermedia_dvbt_table;
275 ir->mask_keycode = 0x0f00c0; 275 ir->mask_keycode = 0x0f00c0;
276 ir->mask_keydown = 0x000020; 276 ir->mask_keydown = 0x000020;
277 ir->polling = 50; // ms 277 ir->polling = 50; // ms
278 break; 278 break;
279 279
280 case BTTV_BOARD_PXELVWPLTVPAK: 280 case BTTV_BOARD_PXELVWPLTVPAK:
281 ir_codes = ir_codes_pixelview; 281 ir_codes = &ir_codes_pixelview_table;
282 ir->mask_keycode = 0x003e00; 282 ir->mask_keycode = 0x003e00;
283 ir->mask_keyup = 0x010000; 283 ir->mask_keyup = 0x010000;
284 ir->polling = 50; // ms 284 ir->polling = 50; // ms
@@ -286,24 +286,24 @@ int bttv_input_init(struct bttv *btv)
286 case BTTV_BOARD_PV_M4900: 286 case BTTV_BOARD_PV_M4900:
287 case BTTV_BOARD_PV_BT878P_9B: 287 case BTTV_BOARD_PV_BT878P_9B:
288 case BTTV_BOARD_PV_BT878P_PLUS: 288 case BTTV_BOARD_PV_BT878P_PLUS:
289 ir_codes = ir_codes_pixelview; 289 ir_codes = &ir_codes_pixelview_table;
290 ir->mask_keycode = 0x001f00; 290 ir->mask_keycode = 0x001f00;
291 ir->mask_keyup = 0x008000; 291 ir->mask_keyup = 0x008000;
292 ir->polling = 50; // ms 292 ir->polling = 50; // ms
293 break; 293 break;
294 294
295 case BTTV_BOARD_WINFAST2000: 295 case BTTV_BOARD_WINFAST2000:
296 ir_codes = ir_codes_winfast; 296 ir_codes = &ir_codes_winfast_table;
297 ir->mask_keycode = 0x1f8; 297 ir->mask_keycode = 0x1f8;
298 break; 298 break;
299 case BTTV_BOARD_MAGICTVIEW061: 299 case BTTV_BOARD_MAGICTVIEW061:
300 case BTTV_BOARD_MAGICTVIEW063: 300 case BTTV_BOARD_MAGICTVIEW063:
301 ir_codes = ir_codes_winfast; 301 ir_codes = &ir_codes_winfast_table;
302 ir->mask_keycode = 0x0008e000; 302 ir->mask_keycode = 0x0008e000;
303 ir->mask_keydown = 0x00200000; 303 ir->mask_keydown = 0x00200000;
304 break; 304 break;
305 case BTTV_BOARD_APAC_VIEWCOMP: 305 case BTTV_BOARD_APAC_VIEWCOMP:
306 ir_codes = ir_codes_apac_viewcomp; 306 ir_codes = &ir_codes_apac_viewcomp_table;
307 ir->mask_keycode = 0x001f00; 307 ir->mask_keycode = 0x001f00;
308 ir->mask_keyup = 0x008000; 308 ir->mask_keyup = 0x008000;
309 ir->polling = 50; // ms 309 ir->polling = 50; // ms
@@ -311,30 +311,30 @@ int bttv_input_init(struct bttv *btv)
311 case BTTV_BOARD_ASKEY_CPH03X: 311 case BTTV_BOARD_ASKEY_CPH03X:
312 case BTTV_BOARD_CONCEPTRONIC_CTVFMI2: 312 case BTTV_BOARD_CONCEPTRONIC_CTVFMI2:
313 case BTTV_BOARD_CONTVFMI: 313 case BTTV_BOARD_CONTVFMI:
314 ir_codes = ir_codes_pixelview; 314 ir_codes = &ir_codes_pixelview_table;
315 ir->mask_keycode = 0x001F00; 315 ir->mask_keycode = 0x001F00;
316 ir->mask_keyup = 0x006000; 316 ir->mask_keyup = 0x006000;
317 ir->polling = 50; // ms 317 ir->polling = 50; // ms
318 break; 318 break;
319 case BTTV_BOARD_NEBULA_DIGITV: 319 case BTTV_BOARD_NEBULA_DIGITV:
320 ir_codes = ir_codes_nebula; 320 ir_codes = &ir_codes_nebula_table;
321 btv->custom_irq = bttv_rc5_irq; 321 btv->custom_irq = bttv_rc5_irq;
322 ir->rc5_gpio = 1; 322 ir->rc5_gpio = 1;
323 break; 323 break;
324 case BTTV_BOARD_MACHTV_MAGICTV: 324 case BTTV_BOARD_MACHTV_MAGICTV:
325 ir_codes = ir_codes_apac_viewcomp; 325 ir_codes = &ir_codes_apac_viewcomp_table;
326 ir->mask_keycode = 0x001F00; 326 ir->mask_keycode = 0x001F00;
327 ir->mask_keyup = 0x004000; 327 ir->mask_keyup = 0x004000;
328 ir->polling = 50; /* ms */ 328 ir->polling = 50; /* ms */
329 break; 329 break;
330 case BTTV_BOARD_KOZUMI_KTV_01C: 330 case BTTV_BOARD_KOZUMI_KTV_01C:
331 ir_codes = ir_codes_pctv_sedna; 331 ir_codes = &ir_codes_pctv_sedna_table;
332 ir->mask_keycode = 0x001f00; 332 ir->mask_keycode = 0x001f00;
333 ir->mask_keyup = 0x006000; 333 ir->mask_keyup = 0x006000;
334 ir->polling = 50; /* ms */ 334 ir->polling = 50; /* ms */
335 break; 335 break;
336 case BTTV_BOARD_ENLTV_FM_2: 336 case BTTV_BOARD_ENLTV_FM_2:
337 ir_codes = ir_codes_encore_enltv2; 337 ir_codes = &ir_codes_encore_enltv2_table;
338 ir->mask_keycode = 0x00fd00; 338 ir->mask_keycode = 0x00fd00;
339 ir->mask_keyup = 0x000080; 339 ir->mask_keyup = 0x000080;
340 ir->polling = 1; /* ms */ 340 ir->polling = 1; /* ms */
diff --git a/drivers/media/video/cx18/cx18-i2c.c b/drivers/media/video/cx18/cx18-i2c.c
index ba754e8056fb..766ddce5780f 100644
--- a/drivers/media/video/cx18/cx18-i2c.c
+++ b/drivers/media/video/cx18/cx18-i2c.c
@@ -111,7 +111,7 @@ static int cx18_i2c_new_ir(struct i2c_adapter *adap, u32 hw, const char *type,
111 switch (hw) { 111 switch (hw) {
112 case CX18_HW_Z8F0811_IR_RX_HAUP: 112 case CX18_HW_Z8F0811_IR_RX_HAUP:
113 memset(&ir_init_data, 0, sizeof(struct IR_i2c_init_data)); 113 memset(&ir_init_data, 0, sizeof(struct IR_i2c_init_data));
114 ir_init_data.ir_codes = ir_codes_hauppauge_new; 114 ir_init_data.ir_codes = &ir_codes_hauppauge_new_table;
115 ir_init_data.internal_get_key_func = IR_KBD_GET_KEY_HAUP_XVR; 115 ir_init_data.internal_get_key_func = IR_KBD_GET_KEY_HAUP_XVR;
116 ir_init_data.type = IR_TYPE_RC5; 116 ir_init_data.type = IR_TYPE_RC5;
117 ir_init_data.name = "CX23418 Z8F0811 Hauppauge"; 117 ir_init_data.name = "CX23418 Z8F0811 Hauppauge";
diff --git a/drivers/media/video/cx231xx/cx231xx.h b/drivers/media/video/cx231xx/cx231xx.h
index a0f823ac6b8d..64e2ddd3c401 100644
--- a/drivers/media/video/cx231xx/cx231xx.h
+++ b/drivers/media/video/cx231xx/cx231xx.h
@@ -282,7 +282,7 @@ struct cx231xx_board {
282 282
283 struct cx231xx_input input[MAX_CX231XX_INPUT]; 283 struct cx231xx_input input[MAX_CX231XX_INPUT];
284 struct cx231xx_input radio; 284 struct cx231xx_input radio;
285 IR_KEYTAB_TYPE *ir_codes; 285 struct ir_scancode_table *ir_codes;
286}; 286};
287 287
288/* device states */ 288/* device states */
diff --git a/drivers/media/video/cx88/cx88-input.c b/drivers/media/video/cx88/cx88-input.c
index 79c4408a6171..78b3635178af 100644
--- a/drivers/media/video/cx88/cx88-input.c
+++ b/drivers/media/video/cx88/cx88-input.c
@@ -191,7 +191,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
191{ 191{
192 struct cx88_IR *ir; 192 struct cx88_IR *ir;
193 struct input_dev *input_dev; 193 struct input_dev *input_dev;
194 IR_KEYTAB_TYPE *ir_codes = NULL; 194 struct ir_scancode_table *ir_codes = NULL;
195 int ir_type = IR_TYPE_OTHER; 195 int ir_type = IR_TYPE_OTHER;
196 int err = -ENOMEM; 196 int err = -ENOMEM;
197 197
@@ -207,14 +207,14 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
207 case CX88_BOARD_DNTV_LIVE_DVB_T: 207 case CX88_BOARD_DNTV_LIVE_DVB_T:
208 case CX88_BOARD_KWORLD_DVB_T: 208 case CX88_BOARD_KWORLD_DVB_T:
209 case CX88_BOARD_KWORLD_DVB_T_CX22702: 209 case CX88_BOARD_KWORLD_DVB_T_CX22702:
210 ir_codes = ir_codes_dntv_live_dvb_t; 210 ir_codes = &ir_codes_dntv_live_dvb_t_table;
211 ir->gpio_addr = MO_GP1_IO; 211 ir->gpio_addr = MO_GP1_IO;
212 ir->mask_keycode = 0x1f; 212 ir->mask_keycode = 0x1f;
213 ir->mask_keyup = 0x60; 213 ir->mask_keyup = 0x60;
214 ir->polling = 50; /* ms */ 214 ir->polling = 50; /* ms */
215 break; 215 break;
216 case CX88_BOARD_TERRATEC_CINERGY_1400_DVB_T1: 216 case CX88_BOARD_TERRATEC_CINERGY_1400_DVB_T1:
217 ir_codes = ir_codes_cinergy_1400; 217 ir_codes = &ir_codes_cinergy_1400_table;
218 ir_type = IR_TYPE_PD; 218 ir_type = IR_TYPE_PD;
219 ir->sampling = 0xeb04; /* address */ 219 ir->sampling = 0xeb04; /* address */
220 break; 220 break;
@@ -229,14 +229,14 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
229 case CX88_BOARD_PCHDTV_HD3000: 229 case CX88_BOARD_PCHDTV_HD3000:
230 case CX88_BOARD_PCHDTV_HD5500: 230 case CX88_BOARD_PCHDTV_HD5500:
231 case CX88_BOARD_HAUPPAUGE_IRONLY: 231 case CX88_BOARD_HAUPPAUGE_IRONLY:
232 ir_codes = ir_codes_hauppauge_new; 232 ir_codes = &ir_codes_hauppauge_new_table;
233 ir_type = IR_TYPE_RC5; 233 ir_type = IR_TYPE_RC5;
234 ir->sampling = 1; 234 ir->sampling = 1;
235 break; 235 break;
236 case CX88_BOARD_WINFAST_DTV2000H: 236 case CX88_BOARD_WINFAST_DTV2000H:
237 case CX88_BOARD_WINFAST_DTV2000H_J: 237 case CX88_BOARD_WINFAST_DTV2000H_J:
238 case CX88_BOARD_WINFAST_DTV1800H: 238 case CX88_BOARD_WINFAST_DTV1800H:
239 ir_codes = ir_codes_winfast; 239 ir_codes = &ir_codes_winfast_table;
240 ir->gpio_addr = MO_GP0_IO; 240 ir->gpio_addr = MO_GP0_IO;
241 ir->mask_keycode = 0x8f8; 241 ir->mask_keycode = 0x8f8;
242 ir->mask_keyup = 0x100; 242 ir->mask_keyup = 0x100;
@@ -245,14 +245,14 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
245 case CX88_BOARD_WINFAST2000XP_EXPERT: 245 case CX88_BOARD_WINFAST2000XP_EXPERT:
246 case CX88_BOARD_WINFAST_DTV1000: 246 case CX88_BOARD_WINFAST_DTV1000:
247 case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL: 247 case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL:
248 ir_codes = ir_codes_winfast; 248 ir_codes = &ir_codes_winfast_table;
249 ir->gpio_addr = MO_GP0_IO; 249 ir->gpio_addr = MO_GP0_IO;
250 ir->mask_keycode = 0x8f8; 250 ir->mask_keycode = 0x8f8;
251 ir->mask_keyup = 0x100; 251 ir->mask_keyup = 0x100;
252 ir->polling = 1; /* ms */ 252 ir->polling = 1; /* ms */
253 break; 253 break;
254 case CX88_BOARD_IODATA_GVBCTV7E: 254 case CX88_BOARD_IODATA_GVBCTV7E:
255 ir_codes = ir_codes_iodata_bctv7e; 255 ir_codes = &ir_codes_iodata_bctv7e_table;
256 ir->gpio_addr = MO_GP0_IO; 256 ir->gpio_addr = MO_GP0_IO;
257 ir->mask_keycode = 0xfd; 257 ir->mask_keycode = 0xfd;
258 ir->mask_keydown = 0x02; 258 ir->mask_keydown = 0x02;
@@ -260,7 +260,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
260 break; 260 break;
261 case CX88_BOARD_PROLINK_PLAYTVPVR: 261 case CX88_BOARD_PROLINK_PLAYTVPVR:
262 case CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO: 262 case CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO:
263 ir_codes = ir_codes_pixelview; 263 ir_codes = &ir_codes_pixelview_table;
264 ir->gpio_addr = MO_GP1_IO; 264 ir->gpio_addr = MO_GP1_IO;
265 ir->mask_keycode = 0x1f; 265 ir->mask_keycode = 0x1f;
266 ir->mask_keyup = 0x80; 266 ir->mask_keyup = 0x80;
@@ -268,28 +268,28 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
268 break; 268 break;
269 case CX88_BOARD_PROLINK_PV_8000GT: 269 case CX88_BOARD_PROLINK_PV_8000GT:
270 case CX88_BOARD_PROLINK_PV_GLOBAL_XTREME: 270 case CX88_BOARD_PROLINK_PV_GLOBAL_XTREME:
271 ir_codes = ir_codes_pixelview_new; 271 ir_codes = &ir_codes_pixelview_new_table;
272 ir->gpio_addr = MO_GP1_IO; 272 ir->gpio_addr = MO_GP1_IO;
273 ir->mask_keycode = 0x3f; 273 ir->mask_keycode = 0x3f;
274 ir->mask_keyup = 0x80; 274 ir->mask_keyup = 0x80;
275 ir->polling = 1; /* ms */ 275 ir->polling = 1; /* ms */
276 break; 276 break;
277 case CX88_BOARD_KWORLD_LTV883: 277 case CX88_BOARD_KWORLD_LTV883:
278 ir_codes = ir_codes_pixelview; 278 ir_codes = &ir_codes_pixelview_table;
279 ir->gpio_addr = MO_GP1_IO; 279 ir->gpio_addr = MO_GP1_IO;
280 ir->mask_keycode = 0x1f; 280 ir->mask_keycode = 0x1f;
281 ir->mask_keyup = 0x60; 281 ir->mask_keyup = 0x60;
282 ir->polling = 1; /* ms */ 282 ir->polling = 1; /* ms */
283 break; 283 break;
284 case CX88_BOARD_ADSTECH_DVB_T_PCI: 284 case CX88_BOARD_ADSTECH_DVB_T_PCI:
285 ir_codes = ir_codes_adstech_dvb_t_pci; 285 ir_codes = &ir_codes_adstech_dvb_t_pci_table;
286 ir->gpio_addr = MO_GP1_IO; 286 ir->gpio_addr = MO_GP1_IO;
287 ir->mask_keycode = 0xbf; 287 ir->mask_keycode = 0xbf;
288 ir->mask_keyup = 0x40; 288 ir->mask_keyup = 0x40;
289 ir->polling = 50; /* ms */ 289 ir->polling = 50; /* ms */
290 break; 290 break;
291 case CX88_BOARD_MSI_TVANYWHERE_MASTER: 291 case CX88_BOARD_MSI_TVANYWHERE_MASTER:
292 ir_codes = ir_codes_msi_tvanywhere; 292 ir_codes = &ir_codes_msi_tvanywhere_table;
293 ir->gpio_addr = MO_GP1_IO; 293 ir->gpio_addr = MO_GP1_IO;
294 ir->mask_keycode = 0x1f; 294 ir->mask_keycode = 0x1f;
295 ir->mask_keyup = 0x40; 295 ir->mask_keyup = 0x40;
@@ -297,40 +297,40 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
297 break; 297 break;
298 case CX88_BOARD_AVERTV_303: 298 case CX88_BOARD_AVERTV_303:
299 case CX88_BOARD_AVERTV_STUDIO_303: 299 case CX88_BOARD_AVERTV_STUDIO_303:
300 ir_codes = ir_codes_avertv_303; 300 ir_codes = &ir_codes_avertv_303_table;
301 ir->gpio_addr = MO_GP2_IO; 301 ir->gpio_addr = MO_GP2_IO;
302 ir->mask_keycode = 0xfb; 302 ir->mask_keycode = 0xfb;
303 ir->mask_keydown = 0x02; 303 ir->mask_keydown = 0x02;
304 ir->polling = 50; /* ms */ 304 ir->polling = 50; /* ms */
305 break; 305 break;
306 case CX88_BOARD_DNTV_LIVE_DVB_T_PRO: 306 case CX88_BOARD_DNTV_LIVE_DVB_T_PRO:
307 ir_codes = ir_codes_dntv_live_dvbt_pro; 307 ir_codes = &ir_codes_dntv_live_dvbt_pro_table;
308 ir_type = IR_TYPE_PD; 308 ir_type = IR_TYPE_PD;
309 ir->sampling = 0xff00; /* address */ 309 ir->sampling = 0xff00; /* address */
310 break; 310 break;
311 case CX88_BOARD_NORWOOD_MICRO: 311 case CX88_BOARD_NORWOOD_MICRO:
312 ir_codes = ir_codes_norwood; 312 ir_codes = &ir_codes_norwood_table;
313 ir->gpio_addr = MO_GP1_IO; 313 ir->gpio_addr = MO_GP1_IO;
314 ir->mask_keycode = 0x0e; 314 ir->mask_keycode = 0x0e;
315 ir->mask_keyup = 0x80; 315 ir->mask_keyup = 0x80;
316 ir->polling = 50; /* ms */ 316 ir->polling = 50; /* ms */
317 break; 317 break;
318 case CX88_BOARD_NPGTECH_REALTV_TOP10FM: 318 case CX88_BOARD_NPGTECH_REALTV_TOP10FM:
319 ir_codes = ir_codes_npgtech; 319 ir_codes = &ir_codes_npgtech_table;
320 ir->gpio_addr = MO_GP0_IO; 320 ir->gpio_addr = MO_GP0_IO;
321 ir->mask_keycode = 0xfa; 321 ir->mask_keycode = 0xfa;
322 ir->polling = 50; /* ms */ 322 ir->polling = 50; /* ms */
323 break; 323 break;
324 case CX88_BOARD_PINNACLE_PCTV_HD_800i: 324 case CX88_BOARD_PINNACLE_PCTV_HD_800i:
325 ir_codes = ir_codes_pinnacle_pctv_hd; 325 ir_codes = &ir_codes_pinnacle_pctv_hd_table;
326 ir_type = IR_TYPE_RC5; 326 ir_type = IR_TYPE_RC5;
327 ir->sampling = 1; 327 ir->sampling = 1;
328 break; 328 break;
329 case CX88_BOARD_POWERCOLOR_REAL_ANGEL: 329 case CX88_BOARD_POWERCOLOR_REAL_ANGEL:
330 ir_codes = ir_codes_powercolor_real_angel; 330 ir_codes = &ir_codes_powercolor_real_angel_table;
331 ir->gpio_addr = MO_GP2_IO; 331 ir->gpio_addr = MO_GP2_IO;
332 ir->mask_keycode = 0x7e; 332 ir->mask_keycode = 0x7e;
333 ir->polling = 100; /* ms */ 333 ir->polling = 100; /* ms */
334 break; 334 break;
335 } 335 }
336 336
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c
index b184d482c497..f46b8a5c3a61 100644
--- a/drivers/media/video/em28xx/em28xx-cards.c
+++ b/drivers/media/video/em28xx/em28xx-cards.c
@@ -562,7 +562,7 @@ struct em28xx_board em28xx_boards[] = {
562 .name = "Gadmei UTV330+", 562 .name = "Gadmei UTV330+",
563 .tuner_type = TUNER_TNF_5335MF, 563 .tuner_type = TUNER_TNF_5335MF,
564 .tda9887_conf = TDA9887_PRESENT, 564 .tda9887_conf = TDA9887_PRESENT,
565 .ir_codes = ir_codes_gadmei_rm008z, 565 .ir_codes = &ir_codes_gadmei_rm008z_table,
566 .decoder = EM28XX_SAA711X, 566 .decoder = EM28XX_SAA711X,
567 .xclk = EM28XX_XCLK_FREQUENCY_12MHZ, 567 .xclk = EM28XX_XCLK_FREQUENCY_12MHZ,
568 .input = { { 568 .input = { {
@@ -736,7 +736,7 @@ struct em28xx_board em28xx_boards[] = {
736 .mts_firmware = 1, 736 .mts_firmware = 1,
737 .has_dvb = 1, 737 .has_dvb = 1,
738 .dvb_gpio = hauppauge_wintv_hvr_900_digital, 738 .dvb_gpio = hauppauge_wintv_hvr_900_digital,
739 .ir_codes = ir_codes_hauppauge_new, 739 .ir_codes = &ir_codes_hauppauge_new_table,
740 .decoder = EM28XX_TVP5150, 740 .decoder = EM28XX_TVP5150,
741 .input = { { 741 .input = { {
742 .type = EM28XX_VMUX_TELEVISION, 742 .type = EM28XX_VMUX_TELEVISION,
@@ -761,7 +761,7 @@ struct em28xx_board em28xx_boards[] = {
761 .tuner_type = TUNER_XC2028, 761 .tuner_type = TUNER_XC2028,
762 .tuner_gpio = default_tuner_gpio, 762 .tuner_gpio = default_tuner_gpio,
763 .mts_firmware = 1, 763 .mts_firmware = 1,
764 .ir_codes = ir_codes_hauppauge_new, 764 .ir_codes = &ir_codes_hauppauge_new_table,
765 .decoder = EM28XX_TVP5150, 765 .decoder = EM28XX_TVP5150,
766 .input = { { 766 .input = { {
767 .type = EM28XX_VMUX_TELEVISION, 767 .type = EM28XX_VMUX_TELEVISION,
@@ -787,7 +787,7 @@ struct em28xx_board em28xx_boards[] = {
787 .mts_firmware = 1, 787 .mts_firmware = 1,
788 .has_dvb = 1, 788 .has_dvb = 1,
789 .dvb_gpio = hauppauge_wintv_hvr_900_digital, 789 .dvb_gpio = hauppauge_wintv_hvr_900_digital,
790 .ir_codes = ir_codes_hauppauge_new, 790 .ir_codes = &ir_codes_hauppauge_new_table,
791 .decoder = EM28XX_TVP5150, 791 .decoder = EM28XX_TVP5150,
792 .input = { { 792 .input = { {
793 .type = EM28XX_VMUX_TELEVISION, 793 .type = EM28XX_VMUX_TELEVISION,
@@ -813,7 +813,7 @@ struct em28xx_board em28xx_boards[] = {
813 .mts_firmware = 1, 813 .mts_firmware = 1,
814 .has_dvb = 1, 814 .has_dvb = 1,
815 .dvb_gpio = hauppauge_wintv_hvr_900_digital, 815 .dvb_gpio = hauppauge_wintv_hvr_900_digital,
816 .ir_codes = ir_codes_hauppauge_new, 816 .ir_codes = &ir_codes_hauppauge_new_table,
817 .decoder = EM28XX_TVP5150, 817 .decoder = EM28XX_TVP5150,
818 .input = { { 818 .input = { {
819 .type = EM28XX_VMUX_TELEVISION, 819 .type = EM28XX_VMUX_TELEVISION,
@@ -839,7 +839,7 @@ struct em28xx_board em28xx_boards[] = {
839 .mts_firmware = 1, 839 .mts_firmware = 1,
840 .has_dvb = 1, 840 .has_dvb = 1,
841 .dvb_gpio = hauppauge_wintv_hvr_900_digital, 841 .dvb_gpio = hauppauge_wintv_hvr_900_digital,
842 .ir_codes = ir_codes_pinnacle_pctv_hd, 842 .ir_codes = &ir_codes_pinnacle_pctv_hd_table,
843 .decoder = EM28XX_TVP5150, 843 .decoder = EM28XX_TVP5150,
844 .input = { { 844 .input = { {
845 .type = EM28XX_VMUX_TELEVISION, 845 .type = EM28XX_VMUX_TELEVISION,
@@ -865,7 +865,7 @@ struct em28xx_board em28xx_boards[] = {
865 .mts_firmware = 1, 865 .mts_firmware = 1,
866 .has_dvb = 1, 866 .has_dvb = 1,
867 .dvb_gpio = hauppauge_wintv_hvr_900_digital, 867 .dvb_gpio = hauppauge_wintv_hvr_900_digital,
868 .ir_codes = ir_codes_ati_tv_wonder_hd_600, 868 .ir_codes = &ir_codes_ati_tv_wonder_hd_600_table,
869 .decoder = EM28XX_TVP5150, 869 .decoder = EM28XX_TVP5150,
870 .input = { { 870 .input = { {
871 .type = EM28XX_VMUX_TELEVISION, 871 .type = EM28XX_VMUX_TELEVISION,
@@ -891,7 +891,7 @@ struct em28xx_board em28xx_boards[] = {
891 .decoder = EM28XX_TVP5150, 891 .decoder = EM28XX_TVP5150,
892 .has_dvb = 1, 892 .has_dvb = 1,
893 .dvb_gpio = default_digital, 893 .dvb_gpio = default_digital,
894 .ir_codes = ir_codes_terratec_cinergy_xs, 894 .ir_codes = &ir_codes_terratec_cinergy_xs_table,
895 .xclk = EM28XX_XCLK_FREQUENCY_12MHZ, /* NEC IR */ 895 .xclk = EM28XX_XCLK_FREQUENCY_12MHZ, /* NEC IR */
896 .input = { { 896 .input = { {
897 .type = EM28XX_VMUX_TELEVISION, 897 .type = EM28XX_VMUX_TELEVISION,
@@ -1443,7 +1443,7 @@ struct em28xx_board em28xx_boards[] = {
1443 .mts_firmware = 1, 1443 .mts_firmware = 1,
1444 .decoder = EM28XX_TVP5150, 1444 .decoder = EM28XX_TVP5150,
1445 .tuner_gpio = default_tuner_gpio, 1445 .tuner_gpio = default_tuner_gpio,
1446 .ir_codes = ir_codes_kaiomy, 1446 .ir_codes = &ir_codes_kaiomy_table,
1447 .input = { { 1447 .input = { {
1448 .type = EM28XX_VMUX_TELEVISION, 1448 .type = EM28XX_VMUX_TELEVISION,
1449 .vmux = TVP5150_COMPOSITE0, 1449 .vmux = TVP5150_COMPOSITE0,
@@ -1543,7 +1543,7 @@ struct em28xx_board em28xx_boards[] = {
1543 .mts_firmware = 1, 1543 .mts_firmware = 1,
1544 .has_dvb = 1, 1544 .has_dvb = 1,
1545 .dvb_gpio = evga_indtube_digital, 1545 .dvb_gpio = evga_indtube_digital,
1546 .ir_codes = ir_codes_evga_indtube, 1546 .ir_codes = &ir_codes_evga_indtube_table,
1547 .input = { { 1547 .input = { {
1548 .type = EM28XX_VMUX_TELEVISION, 1548 .type = EM28XX_VMUX_TELEVISION,
1549 .vmux = TVP5150_COMPOSITE0, 1549 .vmux = TVP5150_COMPOSITE0,
@@ -2217,17 +2217,17 @@ void em28xx_register_i2c_ir(struct em28xx *dev)
2217 break; 2217 break;
2218 case (EM2800_BOARD_TERRATEC_CINERGY_200): 2218 case (EM2800_BOARD_TERRATEC_CINERGY_200):
2219 case (EM2820_BOARD_TERRATEC_CINERGY_250): 2219 case (EM2820_BOARD_TERRATEC_CINERGY_250):
2220 init_data.ir_codes = ir_codes_em_terratec; 2220 init_data.ir_codes = &ir_codes_em_terratec_table;
2221 init_data.get_key = em28xx_get_key_terratec; 2221 init_data.get_key = em28xx_get_key_terratec;
2222 init_data.name = "i2c IR (EM28XX Terratec)"; 2222 init_data.name = "i2c IR (EM28XX Terratec)";
2223 break; 2223 break;
2224 case (EM2820_BOARD_PINNACLE_USB_2): 2224 case (EM2820_BOARD_PINNACLE_USB_2):
2225 init_data.ir_codes = ir_codes_pinnacle_grey; 2225 init_data.ir_codes = &ir_codes_pinnacle_grey_table;
2226 init_data.get_key = em28xx_get_key_pinnacle_usb_grey; 2226 init_data.get_key = em28xx_get_key_pinnacle_usb_grey;
2227 init_data.name = "i2c IR (EM28XX Pinnacle PCTV)"; 2227 init_data.name = "i2c IR (EM28XX Pinnacle PCTV)";
2228 break; 2228 break;
2229 case (EM2820_BOARD_HAUPPAUGE_WINTV_USB_2): 2229 case (EM2820_BOARD_HAUPPAUGE_WINTV_USB_2):
2230 init_data.ir_codes = ir_codes_hauppauge_new; 2230 init_data.ir_codes = &ir_codes_hauppauge_new_table;
2231 init_data.get_key = em28xx_get_key_em_haup; 2231 init_data.get_key = em28xx_get_key_em_haup;
2232 init_data.name = "i2c IR (EM2840 Hauppauge)"; 2232 init_data.name = "i2c IR (EM2840 Hauppauge)";
2233 break; 2233 break;
diff --git a/drivers/media/video/em28xx/em28xx.h b/drivers/media/video/em28xx/em28xx.h
index 23f34dd691e9..217f948e03d7 100644
--- a/drivers/media/video/em28xx/em28xx.h
+++ b/drivers/media/video/em28xx/em28xx.h
@@ -409,7 +409,7 @@ struct em28xx_board {
409 409
410 struct em28xx_input input[MAX_EM28XX_INPUT]; 410 struct em28xx_input input[MAX_EM28XX_INPUT];
411 struct em28xx_input radio; 411 struct em28xx_input radio;
412 IR_KEYTAB_TYPE *ir_codes; 412 struct ir_scancode_table *ir_codes;
413}; 413};
414 414
415struct em28xx_eeprom { 415struct em28xx_eeprom {
diff --git a/drivers/media/video/ir-kbd-i2c.c b/drivers/media/video/ir-kbd-i2c.c
index b92ddcabf0b6..247d3115a9b7 100644
--- a/drivers/media/video/ir-kbd-i2c.c
+++ b/drivers/media/video/ir-kbd-i2c.c
@@ -297,7 +297,7 @@ static void ir_work(struct work_struct *work)
297 297
298static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id) 298static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
299{ 299{
300 IR_KEYTAB_TYPE *ir_codes = NULL; 300 struct ir_scancode_table *ir_codes = NULL;
301 const char *name = NULL; 301 const char *name = NULL;
302 int ir_type; 302 int ir_type;
303 struct IR_i2c *ir; 303 struct IR_i2c *ir;
@@ -322,13 +322,13 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
322 name = "Pixelview"; 322 name = "Pixelview";
323 ir->get_key = get_key_pixelview; 323 ir->get_key = get_key_pixelview;
324 ir_type = IR_TYPE_OTHER; 324 ir_type = IR_TYPE_OTHER;
325 ir_codes = ir_codes_empty; 325 ir_codes = &ir_codes_empty_table;
326 break; 326 break;
327 case 0x4b: 327 case 0x4b:
328 name = "PV951"; 328 name = "PV951";
329 ir->get_key = get_key_pv951; 329 ir->get_key = get_key_pv951;
330 ir_type = IR_TYPE_OTHER; 330 ir_type = IR_TYPE_OTHER;
331 ir_codes = ir_codes_pv951; 331 ir_codes = &ir_codes_pv951_table;
332 break; 332 break;
333 case 0x18: 333 case 0x18:
334 case 0x1a: 334 case 0x1a:
@@ -336,22 +336,22 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
336 ir->get_key = get_key_haup; 336 ir->get_key = get_key_haup;
337 ir_type = IR_TYPE_RC5; 337 ir_type = IR_TYPE_RC5;
338 if (hauppauge == 1) { 338 if (hauppauge == 1) {
339 ir_codes = ir_codes_hauppauge_new; 339 ir_codes = &ir_codes_hauppauge_new_table;
340 } else { 340 } else {
341 ir_codes = ir_codes_rc5_tv; 341 ir_codes = &ir_codes_rc5_tv_table;
342 } 342 }
343 break; 343 break;
344 case 0x30: 344 case 0x30:
345 name = "KNC One"; 345 name = "KNC One";
346 ir->get_key = get_key_knc1; 346 ir->get_key = get_key_knc1;
347 ir_type = IR_TYPE_OTHER; 347 ir_type = IR_TYPE_OTHER;
348 ir_codes = ir_codes_empty; 348 ir_codes = &ir_codes_empty_table;
349 break; 349 break;
350 case 0x6b: 350 case 0x6b:
351 name = "FusionHDTV"; 351 name = "FusionHDTV";
352 ir->get_key = get_key_fusionhdtv; 352 ir->get_key = get_key_fusionhdtv;
353 ir_type = IR_TYPE_RC5; 353 ir_type = IR_TYPE_RC5;
354 ir_codes = ir_codes_fusionhdtv_mce; 354 ir_codes = &ir_codes_fusionhdtv_mce_table;
355 break; 355 break;
356 case 0x7a: 356 case 0x7a:
357 case 0x47: 357 case 0x47:
@@ -365,9 +365,9 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
365 ir_type = IR_TYPE_RC5; 365 ir_type = IR_TYPE_RC5;
366 ir->get_key = get_key_haup_xvr; 366 ir->get_key = get_key_haup_xvr;
367 if (hauppauge == 1) { 367 if (hauppauge == 1) {
368 ir_codes = ir_codes_hauppauge_new; 368 ir_codes = &ir_codes_hauppauge_new_table;
369 } else { 369 } else {
370 ir_codes = ir_codes_rc5_tv; 370 ir_codes = &ir_codes_rc5_tv_table;
371 } 371 }
372 } else { 372 } else {
373 /* Handled by saa7134-input */ 373 /* Handled by saa7134-input */
@@ -379,7 +379,7 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
379 name = "AVerMedia Cardbus remote"; 379 name = "AVerMedia Cardbus remote";
380 ir->get_key = get_key_avermedia_cardbus; 380 ir->get_key = get_key_avermedia_cardbus;
381 ir_type = IR_TYPE_OTHER; 381 ir_type = IR_TYPE_OTHER;
382 ir_codes = ir_codes_avermedia_cardbus; 382 ir_codes = &ir_codes_avermedia_cardbus_table;
383 break; 383 break;
384 default: 384 default:
385 dprintk(1, DEVNAME ": Unsupported i2c address 0x%02x\n", addr); 385 dprintk(1, DEVNAME ": Unsupported i2c address 0x%02x\n", addr);
diff --git a/drivers/media/video/saa7134/saa7134-input.c b/drivers/media/video/saa7134/saa7134-input.c
index 65fb7b17b678..9070e5fabb4e 100644
--- a/drivers/media/video/saa7134/saa7134-input.c
+++ b/drivers/media/video/saa7134/saa7134-input.c
@@ -394,7 +394,7 @@ int saa7134_input_init1(struct saa7134_dev *dev)
394{ 394{
395 struct card_ir *ir; 395 struct card_ir *ir;
396 struct input_dev *input_dev; 396 struct input_dev *input_dev;
397 IR_KEYTAB_TYPE *ir_codes = NULL; 397 struct ir_scancode_table *ir_codes = NULL;
398 u32 mask_keycode = 0; 398 u32 mask_keycode = 0;
399 u32 mask_keydown = 0; 399 u32 mask_keydown = 0;
400 u32 mask_keyup = 0; 400 u32 mask_keyup = 0;
@@ -416,27 +416,27 @@ int saa7134_input_init1(struct saa7134_dev *dev)
416 case SAA7134_BOARD_FLYTVPLATINUM_FM: 416 case SAA7134_BOARD_FLYTVPLATINUM_FM:
417 case SAA7134_BOARD_FLYTVPLATINUM_MINI2: 417 case SAA7134_BOARD_FLYTVPLATINUM_MINI2:
418 case SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM: 418 case SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM:
419 ir_codes = ir_codes_flyvideo; 419 ir_codes = &ir_codes_flyvideo_table;
420 mask_keycode = 0xEC00000; 420 mask_keycode = 0xEC00000;
421 mask_keydown = 0x0040000; 421 mask_keydown = 0x0040000;
422 break; 422 break;
423 case SAA7134_BOARD_CINERGY400: 423 case SAA7134_BOARD_CINERGY400:
424 case SAA7134_BOARD_CINERGY600: 424 case SAA7134_BOARD_CINERGY600:
425 case SAA7134_BOARD_CINERGY600_MK3: 425 case SAA7134_BOARD_CINERGY600_MK3:
426 ir_codes = ir_codes_cinergy; 426 ir_codes = &ir_codes_cinergy_table;
427 mask_keycode = 0x00003f; 427 mask_keycode = 0x00003f;
428 mask_keyup = 0x040000; 428 mask_keyup = 0x040000;
429 break; 429 break;
430 case SAA7134_BOARD_ECS_TVP3XP: 430 case SAA7134_BOARD_ECS_TVP3XP:
431 case SAA7134_BOARD_ECS_TVP3XP_4CB5: 431 case SAA7134_BOARD_ECS_TVP3XP_4CB5:
432 ir_codes = ir_codes_eztv; 432 ir_codes = &ir_codes_eztv_table;
433 mask_keycode = 0x00017c; 433 mask_keycode = 0x00017c;
434 mask_keyup = 0x000002; 434 mask_keyup = 0x000002;
435 polling = 50; // ms 435 polling = 50; // ms
436 break; 436 break;
437 case SAA7134_BOARD_KWORLD_XPERT: 437 case SAA7134_BOARD_KWORLD_XPERT:
438 case SAA7134_BOARD_AVACSSMARTTV: 438 case SAA7134_BOARD_AVACSSMARTTV:
439 ir_codes = ir_codes_pixelview; 439 ir_codes = &ir_codes_pixelview_table;
440 mask_keycode = 0x00001F; 440 mask_keycode = 0x00001F;
441 mask_keyup = 0x000020; 441 mask_keyup = 0x000020;
442 polling = 50; // ms 442 polling = 50; // ms
@@ -453,7 +453,7 @@ int saa7134_input_init1(struct saa7134_dev *dev)
453 case SAA7134_BOARD_AVERMEDIA_GO_007_FM: 453 case SAA7134_BOARD_AVERMEDIA_GO_007_FM:
454 case SAA7134_BOARD_AVERMEDIA_M102: 454 case SAA7134_BOARD_AVERMEDIA_M102:
455 case SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS: 455 case SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS:
456 ir_codes = ir_codes_avermedia; 456 ir_codes = &ir_codes_avermedia_table;
457 mask_keycode = 0x0007C8; 457 mask_keycode = 0x0007C8;
458 mask_keydown = 0x000010; 458 mask_keydown = 0x000010;
459 polling = 50; // ms 459 polling = 50; // ms
@@ -462,14 +462,14 @@ int saa7134_input_init1(struct saa7134_dev *dev)
462 saa_setb(SAA7134_GPIO_GPSTATUS0, 0x4); 462 saa_setb(SAA7134_GPIO_GPSTATUS0, 0x4);
463 break; 463 break;
464 case SAA7134_BOARD_AVERMEDIA_M135A: 464 case SAA7134_BOARD_AVERMEDIA_M135A:
465 ir_codes = ir_codes_avermedia_m135a; 465 ir_codes = &ir_codes_avermedia_m135a_table;
466 mask_keydown = 0x0040000; 466 mask_keydown = 0x0040000;
467 mask_keycode = 0x00013f; 467 mask_keycode = 0x00013f;
468 nec_gpio = 1; 468 nec_gpio = 1;
469 break; 469 break;
470 case SAA7134_BOARD_AVERMEDIA_777: 470 case SAA7134_BOARD_AVERMEDIA_777:
471 case SAA7134_BOARD_AVERMEDIA_A16AR: 471 case SAA7134_BOARD_AVERMEDIA_A16AR:
472 ir_codes = ir_codes_avermedia; 472 ir_codes = &ir_codes_avermedia_table;
473 mask_keycode = 0x02F200; 473 mask_keycode = 0x02F200;
474 mask_keydown = 0x000400; 474 mask_keydown = 0x000400;
475 polling = 50; // ms 475 polling = 50; // ms
@@ -478,7 +478,7 @@ int saa7134_input_init1(struct saa7134_dev *dev)
478 saa_setb(SAA7134_GPIO_GPSTATUS1, 0x1); 478 saa_setb(SAA7134_GPIO_GPSTATUS1, 0x1);
479 break; 479 break;
480 case SAA7134_BOARD_AVERMEDIA_A16D: 480 case SAA7134_BOARD_AVERMEDIA_A16D:
481 ir_codes = ir_codes_avermedia_a16d; 481 ir_codes = &ir_codes_avermedia_a16d_table;
482 mask_keycode = 0x02F200; 482 mask_keycode = 0x02F200;
483 mask_keydown = 0x000400; 483 mask_keydown = 0x000400;
484 polling = 50; /* ms */ 484 polling = 50; /* ms */
@@ -487,14 +487,14 @@ int saa7134_input_init1(struct saa7134_dev *dev)
487 saa_setb(SAA7134_GPIO_GPSTATUS1, 0x1); 487 saa_setb(SAA7134_GPIO_GPSTATUS1, 0x1);
488 break; 488 break;
489 case SAA7134_BOARD_KWORLD_TERMINATOR: 489 case SAA7134_BOARD_KWORLD_TERMINATOR:
490 ir_codes = ir_codes_pixelview; 490 ir_codes = &ir_codes_pixelview_table;
491 mask_keycode = 0x00001f; 491 mask_keycode = 0x00001f;
492 mask_keyup = 0x000060; 492 mask_keyup = 0x000060;
493 polling = 50; // ms 493 polling = 50; // ms
494 break; 494 break;
495 case SAA7134_BOARD_MANLI_MTV001: 495 case SAA7134_BOARD_MANLI_MTV001:
496 case SAA7134_BOARD_MANLI_MTV002: 496 case SAA7134_BOARD_MANLI_MTV002:
497 ir_codes = ir_codes_manli; 497 ir_codes = &ir_codes_manli_table;
498 mask_keycode = 0x001f00; 498 mask_keycode = 0x001f00;
499 mask_keyup = 0x004000; 499 mask_keyup = 0x004000;
500 polling = 50; /* ms */ 500 polling = 50; /* ms */
@@ -513,25 +513,25 @@ int saa7134_input_init1(struct saa7134_dev *dev)
513 case SAA7134_BOARD_BEHOLD_507_9FM: 513 case SAA7134_BOARD_BEHOLD_507_9FM:
514 case SAA7134_BOARD_BEHOLD_507RDS_MK3: 514 case SAA7134_BOARD_BEHOLD_507RDS_MK3:
515 case SAA7134_BOARD_BEHOLD_507RDS_MK5: 515 case SAA7134_BOARD_BEHOLD_507RDS_MK5:
516 ir_codes = ir_codes_manli; 516 ir_codes = &ir_codes_manli_table;
517 mask_keycode = 0x003f00; 517 mask_keycode = 0x003f00;
518 mask_keyup = 0x004000; 518 mask_keyup = 0x004000;
519 polling = 50; /* ms */ 519 polling = 50; /* ms */
520 break; 520 break;
521 case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM: 521 case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM:
522 ir_codes = ir_codes_behold_columbus; 522 ir_codes = &ir_codes_behold_columbus_table;
523 mask_keycode = 0x003f00; 523 mask_keycode = 0x003f00;
524 mask_keyup = 0x004000; 524 mask_keyup = 0x004000;
525 polling = 50; // ms 525 polling = 50; // ms
526 break; 526 break;
527 case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS: 527 case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS:
528 ir_codes = ir_codes_pctv_sedna; 528 ir_codes = &ir_codes_pctv_sedna_table;
529 mask_keycode = 0x001f00; 529 mask_keycode = 0x001f00;
530 mask_keyup = 0x004000; 530 mask_keyup = 0x004000;
531 polling = 50; // ms 531 polling = 50; // ms
532 break; 532 break;
533 case SAA7134_BOARD_GOTVIEW_7135: 533 case SAA7134_BOARD_GOTVIEW_7135:
534 ir_codes = ir_codes_gotview7135; 534 ir_codes = &ir_codes_gotview7135_table;
535 mask_keycode = 0x0003CC; 535 mask_keycode = 0x0003CC;
536 mask_keydown = 0x000010; 536 mask_keydown = 0x000010;
537 polling = 5; /* ms */ 537 polling = 5; /* ms */
@@ -540,75 +540,75 @@ int saa7134_input_init1(struct saa7134_dev *dev)
540 case SAA7134_BOARD_VIDEOMATE_TV_PVR: 540 case SAA7134_BOARD_VIDEOMATE_TV_PVR:
541 case SAA7134_BOARD_VIDEOMATE_GOLD_PLUS: 541 case SAA7134_BOARD_VIDEOMATE_GOLD_PLUS:
542 case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII: 542 case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII:
543 ir_codes = ir_codes_videomate_tv_pvr; 543 ir_codes = &ir_codes_videomate_tv_pvr_table;
544 mask_keycode = 0x00003F; 544 mask_keycode = 0x00003F;
545 mask_keyup = 0x400000; 545 mask_keyup = 0x400000;
546 polling = 50; // ms 546 polling = 50; // ms
547 break; 547 break;
548 case SAA7134_BOARD_PROTEUS_2309: 548 case SAA7134_BOARD_PROTEUS_2309:
549 ir_codes = ir_codes_proteus_2309; 549 ir_codes = &ir_codes_proteus_2309_table;
550 mask_keycode = 0x00007F; 550 mask_keycode = 0x00007F;
551 mask_keyup = 0x000080; 551 mask_keyup = 0x000080;
552 polling = 50; // ms 552 polling = 50; // ms
553 break; 553 break;
554 case SAA7134_BOARD_VIDEOMATE_DVBT_300: 554 case SAA7134_BOARD_VIDEOMATE_DVBT_300:
555 case SAA7134_BOARD_VIDEOMATE_DVBT_200: 555 case SAA7134_BOARD_VIDEOMATE_DVBT_200:
556 ir_codes = ir_codes_videomate_tv_pvr; 556 ir_codes = &ir_codes_videomate_tv_pvr_table;
557 mask_keycode = 0x003F00; 557 mask_keycode = 0x003F00;
558 mask_keyup = 0x040000; 558 mask_keyup = 0x040000;
559 break; 559 break;
560 case SAA7134_BOARD_FLYDVBS_LR300: 560 case SAA7134_BOARD_FLYDVBS_LR300:
561 case SAA7134_BOARD_FLYDVBT_LR301: 561 case SAA7134_BOARD_FLYDVBT_LR301:
562 case SAA7134_BOARD_FLYDVBTDUO: 562 case SAA7134_BOARD_FLYDVBTDUO:
563 ir_codes = ir_codes_flydvb; 563 ir_codes = &ir_codes_flydvb_table;
564 mask_keycode = 0x0001F00; 564 mask_keycode = 0x0001F00;
565 mask_keydown = 0x0040000; 565 mask_keydown = 0x0040000;
566 break; 566 break;
567 case SAA7134_BOARD_ASUSTeK_P7131_DUAL: 567 case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
568 case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA: 568 case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA:
569 case SAA7134_BOARD_ASUSTeK_P7131_ANALOG: 569 case SAA7134_BOARD_ASUSTeK_P7131_ANALOG:
570 ir_codes = ir_codes_asus_pc39; 570 ir_codes = &ir_codes_asus_pc39_table;
571 mask_keydown = 0x0040000; 571 mask_keydown = 0x0040000;
572 rc5_gpio = 1; 572 rc5_gpio = 1;
573 break; 573 break;
574 case SAA7134_BOARD_ENCORE_ENLTV: 574 case SAA7134_BOARD_ENCORE_ENLTV:
575 case SAA7134_BOARD_ENCORE_ENLTV_FM: 575 case SAA7134_BOARD_ENCORE_ENLTV_FM:
576 ir_codes = ir_codes_encore_enltv; 576 ir_codes = &ir_codes_encore_enltv_table;
577 mask_keycode = 0x00007f; 577 mask_keycode = 0x00007f;
578 mask_keyup = 0x040000; 578 mask_keyup = 0x040000;
579 polling = 50; // ms 579 polling = 50; // ms
580 break; 580 break;
581 case SAA7134_BOARD_ENCORE_ENLTV_FM53: 581 case SAA7134_BOARD_ENCORE_ENLTV_FM53:
582 ir_codes = ir_codes_encore_enltv_fm53; 582 ir_codes = &ir_codes_encore_enltv_fm53_table;
583 mask_keydown = 0x0040000; 583 mask_keydown = 0x0040000;
584 mask_keycode = 0x00007f; 584 mask_keycode = 0x00007f;
585 nec_gpio = 1; 585 nec_gpio = 1;
586 break; 586 break;
587 case SAA7134_BOARD_10MOONSTVMASTER3: 587 case SAA7134_BOARD_10MOONSTVMASTER3:
588 ir_codes = ir_codes_encore_enltv; 588 ir_codes = &ir_codes_encore_enltv_table;
589 mask_keycode = 0x5f80000; 589 mask_keycode = 0x5f80000;
590 mask_keyup = 0x8000000; 590 mask_keyup = 0x8000000;
591 polling = 50; //ms 591 polling = 50; //ms
592 break; 592 break;
593 case SAA7134_BOARD_GENIUS_TVGO_A11MCE: 593 case SAA7134_BOARD_GENIUS_TVGO_A11MCE:
594 ir_codes = ir_codes_genius_tvgo_a11mce; 594 ir_codes = &ir_codes_genius_tvgo_a11mce_table;
595 mask_keycode = 0xff; 595 mask_keycode = 0xff;
596 mask_keydown = 0xf00000; 596 mask_keydown = 0xf00000;
597 polling = 50; /* ms */ 597 polling = 50; /* ms */
598 break; 598 break;
599 case SAA7134_BOARD_REAL_ANGEL_220: 599 case SAA7134_BOARD_REAL_ANGEL_220:
600 ir_codes = ir_codes_real_audio_220_32_keys; 600 ir_codes = &ir_codes_real_audio_220_32_keys_table;
601 mask_keycode = 0x3f00; 601 mask_keycode = 0x3f00;
602 mask_keyup = 0x4000; 602 mask_keyup = 0x4000;
603 polling = 50; /* ms */ 603 polling = 50; /* ms */
604 break; 604 break;
605 case SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG: 605 case SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG:
606 ir_codes = ir_codes_kworld_plus_tv_analog; 606 ir_codes = &ir_codes_kworld_plus_tv_analog_table;
607 mask_keycode = 0x7f; 607 mask_keycode = 0x7f;
608 polling = 40; /* ms */ 608 polling = 40; /* ms */
609 break; 609 break;
610 case SAA7134_BOARD_VIDEOMATE_S350: 610 case SAA7134_BOARD_VIDEOMATE_S350:
611 ir_codes = ir_codes_videomate_s350; 611 ir_codes = &ir_codes_videomate_s350_table;
612 mask_keycode = 0x003f00; 612 mask_keycode = 0x003f00;
613 mask_keydown = 0x040000; 613 mask_keydown = 0x040000;
614 break; 614 break;
@@ -722,23 +722,23 @@ void saa7134_probe_i2c_ir(struct saa7134_dev *dev)
722 init_data.name = "Pinnacle PCTV"; 722 init_data.name = "Pinnacle PCTV";
723 if (pinnacle_remote == 0) { 723 if (pinnacle_remote == 0) {
724 init_data.get_key = get_key_pinnacle_color; 724 init_data.get_key = get_key_pinnacle_color;
725 init_data.ir_codes = ir_codes_pinnacle_color; 725 init_data.ir_codes = &ir_codes_pinnacle_color_table;
726 info.addr = 0x47; 726 info.addr = 0x47;
727 } else { 727 } else {
728 init_data.get_key = get_key_pinnacle_grey; 728 init_data.get_key = get_key_pinnacle_grey;
729 init_data.ir_codes = ir_codes_pinnacle_grey; 729 init_data.ir_codes = &ir_codes_pinnacle_grey_table;
730 info.addr = 0x47; 730 info.addr = 0x47;
731 } 731 }
732 break; 732 break;
733 case SAA7134_BOARD_UPMOST_PURPLE_TV: 733 case SAA7134_BOARD_UPMOST_PURPLE_TV:
734 init_data.name = "Purple TV"; 734 init_data.name = "Purple TV";
735 init_data.get_key = get_key_purpletv; 735 init_data.get_key = get_key_purpletv;
736 init_data.ir_codes = ir_codes_purpletv; 736 init_data.ir_codes = &ir_codes_purpletv_table;
737 break; 737 break;
738 case SAA7134_BOARD_MSI_TVATANYWHERE_PLUS: 738 case SAA7134_BOARD_MSI_TVATANYWHERE_PLUS:
739 init_data.name = "MSI TV@nywhere Plus"; 739 init_data.name = "MSI TV@nywhere Plus";
740 init_data.get_key = get_key_msi_tvanywhere_plus; 740 init_data.get_key = get_key_msi_tvanywhere_plus;
741 init_data.ir_codes = ir_codes_msi_tvanywhere_plus; 741 init_data.ir_codes = &ir_codes_msi_tvanywhere_plus_table;
742 info.addr = 0x30; 742 info.addr = 0x30;
743 /* MSI TV@nywhere Plus controller doesn't seem to 743 /* MSI TV@nywhere Plus controller doesn't seem to
744 respond to probes unless we read something from 744 respond to probes unless we read something from
@@ -752,7 +752,7 @@ void saa7134_probe_i2c_ir(struct saa7134_dev *dev)
752 case SAA7134_BOARD_HAUPPAUGE_HVR1110: 752 case SAA7134_BOARD_HAUPPAUGE_HVR1110:
753 init_data.name = "HVR 1110"; 753 init_data.name = "HVR 1110";
754 init_data.get_key = get_key_hvr1110; 754 init_data.get_key = get_key_hvr1110;
755 init_data.ir_codes = ir_codes_hauppauge_new; 755 init_data.ir_codes = &ir_codes_hauppauge_new_table;
756 break; 756 break;
757 case SAA7134_BOARD_BEHOLD_607FM_MK3: 757 case SAA7134_BOARD_BEHOLD_607FM_MK3:
758 case SAA7134_BOARD_BEHOLD_607FM_MK5: 758 case SAA7134_BOARD_BEHOLD_607FM_MK5:
@@ -769,7 +769,7 @@ void saa7134_probe_i2c_ir(struct saa7134_dev *dev)
769 case SAA7134_BOARD_BEHOLD_X7: 769 case SAA7134_BOARD_BEHOLD_X7:
770 init_data.name = "BeholdTV"; 770 init_data.name = "BeholdTV";
771 init_data.get_key = get_key_beholdm6xx; 771 init_data.get_key = get_key_beholdm6xx;
772 init_data.ir_codes = ir_codes_behold; 772 init_data.ir_codes = &ir_codes_behold_table;
773 break; 773 break;
774 case SAA7134_BOARD_AVERMEDIA_CARDBUS_501: 774 case SAA7134_BOARD_AVERMEDIA_CARDBUS_501:
775 case SAA7134_BOARD_AVERMEDIA_CARDBUS_506: 775 case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
diff --git a/include/media/ir-common.h b/include/media/ir-common.h
index 74a7e55734f0..29f0e53cff94 100644
--- a/include/media/ir-common.h
+++ b/include/media/ir-common.h
@@ -31,8 +31,18 @@
31#define IR_TYPE_PD 2 /* Pulse distance encoded IR */ 31#define IR_TYPE_PD 2 /* Pulse distance encoded IR */
32#define IR_TYPE_OTHER 99 32#define IR_TYPE_OTHER 99
33 33
34#define IR_KEYTAB_TYPE u32 34#define IR_KEYTAB_TYPE u32
35#define IR_KEYTAB_SIZE 128 // enougth for rc5, probably need more some day ... 35#define IR_KEYTAB_SIZE 128 /* enougth for rc5, probably need more some day */
36
37struct ir_scancode {
38 u16 scancode;
39 u32 keycode;
40};
41
42struct ir_scancode_table {
43 struct ir_scancode *scan;
44 int size;
45};
36 46
37#define IR_KEYCODE(tab,code) (((unsigned)code < IR_KEYTAB_SIZE) \ 47#define IR_KEYCODE(tab,code) (((unsigned)code < IR_KEYTAB_SIZE) \
38 ? tab[code] : KEY_RESERVED) 48 ? tab[code] : KEY_RESERVED)
@@ -93,7 +103,7 @@ struct card_ir {
93}; 103};
94 104
95void ir_input_init(struct input_dev *dev, struct ir_input_state *ir, 105void ir_input_init(struct input_dev *dev, struct ir_input_state *ir,
96 int ir_type, IR_KEYTAB_TYPE *ir_codes); 106 int ir_type, struct ir_scancode_table *ir_codes);
97void ir_input_nokey(struct input_dev *dev, struct ir_input_state *ir); 107void ir_input_nokey(struct input_dev *dev, struct ir_input_state *ir);
98void ir_input_keydown(struct input_dev *dev, struct ir_input_state *ir, 108void ir_input_keydown(struct input_dev *dev, struct ir_input_state *ir,
99 u32 ir_key, u32 ir_raw); 109 u32 ir_key, u32 ir_raw);
@@ -107,70 +117,63 @@ void ir_rc5_timer_keyup(unsigned long data);
107 117
108/* Keymaps to be used by other modules */ 118/* Keymaps to be used by other modules */
109 119
110extern IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE]; 120extern struct ir_scancode_table ir_codes_empty_table;
111extern IR_KEYTAB_TYPE ir_codes_avermedia[IR_KEYTAB_SIZE]; 121extern struct ir_scancode_table ir_codes_avermedia_table;
112extern IR_KEYTAB_TYPE ir_codes_avermedia_dvbt[IR_KEYTAB_SIZE]; 122extern struct ir_scancode_table ir_codes_avermedia_dvbt_table;
113extern IR_KEYTAB_TYPE ir_codes_avermedia_m135a[IR_KEYTAB_SIZE]; 123extern struct ir_scancode_table ir_codes_avermedia_m135a_table;
114extern IR_KEYTAB_TYPE ir_codes_avermedia_cardbus[IR_KEYTAB_SIZE]; 124extern struct ir_scancode_table ir_codes_avermedia_cardbus_table;
115extern IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE]; 125extern struct ir_scancode_table ir_codes_apac_viewcomp_table;
116extern IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE]; 126extern struct ir_scancode_table ir_codes_pixelview_table;
117extern IR_KEYTAB_TYPE ir_codes_pixelview_new[IR_KEYTAB_SIZE]; 127extern struct ir_scancode_table ir_codes_pixelview_new_table;
118extern IR_KEYTAB_TYPE ir_codes_nebula[IR_KEYTAB_SIZE]; 128extern struct ir_scancode_table ir_codes_nebula_table;
119extern IR_KEYTAB_TYPE ir_codes_dntv_live_dvb_t[IR_KEYTAB_SIZE]; 129extern struct ir_scancode_table ir_codes_dntv_live_dvb_t_table;
120extern IR_KEYTAB_TYPE ir_codes_iodata_bctv7e[IR_KEYTAB_SIZE]; 130extern struct ir_scancode_table ir_codes_iodata_bctv7e_table;
121extern IR_KEYTAB_TYPE ir_codes_adstech_dvb_t_pci[IR_KEYTAB_SIZE]; 131extern struct ir_scancode_table ir_codes_adstech_dvb_t_pci_table;
122extern IR_KEYTAB_TYPE ir_codes_msi_tvanywhere[IR_KEYTAB_SIZE]; 132extern struct ir_scancode_table ir_codes_msi_tvanywhere_table;
123extern IR_KEYTAB_TYPE ir_codes_cinergy_1400[IR_KEYTAB_SIZE]; 133extern struct ir_scancode_table ir_codes_cinergy_1400_table;
124extern IR_KEYTAB_TYPE ir_codes_avertv_303[IR_KEYTAB_SIZE]; 134extern struct ir_scancode_table ir_codes_avertv_303_table;
125extern IR_KEYTAB_TYPE ir_codes_dntv_live_dvbt_pro[IR_KEYTAB_SIZE]; 135extern struct ir_scancode_table ir_codes_dntv_live_dvbt_pro_table;
126extern IR_KEYTAB_TYPE ir_codes_em_terratec[IR_KEYTAB_SIZE]; 136extern struct ir_scancode_table ir_codes_em_terratec_table;
127extern IR_KEYTAB_TYPE ir_codes_pinnacle_grey[IR_KEYTAB_SIZE]; 137extern struct ir_scancode_table ir_codes_pinnacle_grey_table;
128extern IR_KEYTAB_TYPE ir_codes_flyvideo[IR_KEYTAB_SIZE]; 138extern struct ir_scancode_table ir_codes_flyvideo_table;
129extern IR_KEYTAB_TYPE ir_codes_flydvb[IR_KEYTAB_SIZE]; 139extern struct ir_scancode_table ir_codes_flydvb_table;
130extern IR_KEYTAB_TYPE ir_codes_cinergy[IR_KEYTAB_SIZE]; 140extern struct ir_scancode_table ir_codes_cinergy_table;
131extern IR_KEYTAB_TYPE ir_codes_eztv[IR_KEYTAB_SIZE]; 141extern struct ir_scancode_table ir_codes_eztv_table;
132extern IR_KEYTAB_TYPE ir_codes_avermedia[IR_KEYTAB_SIZE]; 142extern struct ir_scancode_table ir_codes_avermedia_table;
133extern IR_KEYTAB_TYPE ir_codes_videomate_tv_pvr[IR_KEYTAB_SIZE]; 143extern struct ir_scancode_table ir_codes_videomate_tv_pvr_table;
134extern IR_KEYTAB_TYPE ir_codes_manli[IR_KEYTAB_SIZE]; 144extern struct ir_scancode_table ir_codes_manli_table;
135extern IR_KEYTAB_TYPE ir_codes_gotview7135[IR_KEYTAB_SIZE]; 145extern struct ir_scancode_table ir_codes_gotview7135_table;
136extern IR_KEYTAB_TYPE ir_codes_purpletv[IR_KEYTAB_SIZE]; 146extern struct ir_scancode_table ir_codes_purpletv_table;
137extern IR_KEYTAB_TYPE ir_codes_pctv_sedna[IR_KEYTAB_SIZE]; 147extern struct ir_scancode_table ir_codes_pctv_sedna_table;
138extern IR_KEYTAB_TYPE ir_codes_pv951[IR_KEYTAB_SIZE]; 148extern struct ir_scancode_table ir_codes_pv951_table;
139extern IR_KEYTAB_TYPE ir_codes_rc5_tv[IR_KEYTAB_SIZE]; 149extern struct ir_scancode_table ir_codes_rc5_tv_table;
140extern IR_KEYTAB_TYPE ir_codes_winfast[IR_KEYTAB_SIZE]; 150extern struct ir_scancode_table ir_codes_winfast_table;
141extern IR_KEYTAB_TYPE ir_codes_pinnacle_color[IR_KEYTAB_SIZE]; 151extern struct ir_scancode_table ir_codes_pinnacle_color_table;
142extern IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR_KEYTAB_SIZE]; 152extern struct ir_scancode_table ir_codes_hauppauge_new_table;
143extern IR_KEYTAB_TYPE ir_codes_npgtech[IR_KEYTAB_SIZE]; 153extern struct ir_scancode_table ir_codes_npgtech_table;
144extern IR_KEYTAB_TYPE ir_codes_norwood[IR_KEYTAB_SIZE]; 154extern struct ir_scancode_table ir_codes_norwood_table;
145extern IR_KEYTAB_TYPE ir_codes_proteus_2309[IR_KEYTAB_SIZE]; 155extern struct ir_scancode_table ir_codes_proteus_2309_table;
146extern IR_KEYTAB_TYPE ir_codes_budget_ci_old[IR_KEYTAB_SIZE]; 156extern struct ir_scancode_table ir_codes_budget_ci_old_table;
147extern IR_KEYTAB_TYPE ir_codes_asus_pc39[IR_KEYTAB_SIZE]; 157extern struct ir_scancode_table ir_codes_asus_pc39_table;
148extern IR_KEYTAB_TYPE ir_codes_encore_enltv[IR_KEYTAB_SIZE]; 158extern struct ir_scancode_table ir_codes_encore_enltv_table;
149extern IR_KEYTAB_TYPE ir_codes_encore_enltv2[IR_KEYTAB_SIZE]; 159extern struct ir_scancode_table ir_codes_encore_enltv2_table;
150extern IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE]; 160extern struct ir_scancode_table ir_codes_tt_1500_table;
151extern IR_KEYTAB_TYPE ir_codes_fusionhdtv_mce[IR_KEYTAB_SIZE]; 161extern struct ir_scancode_table ir_codes_fusionhdtv_mce_table;
152extern IR_KEYTAB_TYPE ir_codes_behold[IR_KEYTAB_SIZE]; 162extern struct ir_scancode_table ir_codes_behold_table;
153extern IR_KEYTAB_TYPE ir_codes_behold_columbus[IR_KEYTAB_SIZE]; 163extern struct ir_scancode_table ir_codes_behold_columbus_table;
154extern IR_KEYTAB_TYPE ir_codes_pinnacle_pctv_hd[IR_KEYTAB_SIZE]; 164extern struct ir_scancode_table ir_codes_pinnacle_pctv_hd_table;
155extern IR_KEYTAB_TYPE ir_codes_genius_tvgo_a11mce[IR_KEYTAB_SIZE]; 165extern struct ir_scancode_table ir_codes_genius_tvgo_a11mce_table;
156extern IR_KEYTAB_TYPE ir_codes_powercolor_real_angel[IR_KEYTAB_SIZE]; 166extern struct ir_scancode_table ir_codes_powercolor_real_angel_table;
157extern IR_KEYTAB_TYPE ir_codes_avermedia_a16d[IR_KEYTAB_SIZE]; 167extern struct ir_scancode_table ir_codes_avermedia_a16d_table;
158extern IR_KEYTAB_TYPE ir_codes_encore_enltv_fm53[IR_KEYTAB_SIZE]; 168extern struct ir_scancode_table ir_codes_encore_enltv_fm53_table;
159extern IR_KEYTAB_TYPE ir_codes_real_audio_220_32_keys[IR_KEYTAB_SIZE]; 169extern struct ir_scancode_table ir_codes_real_audio_220_32_keys_table;
160extern IR_KEYTAB_TYPE ir_codes_msi_tvanywhere_plus[IR_KEYTAB_SIZE]; 170extern struct ir_scancode_table ir_codes_msi_tvanywhere_plus_table;
161extern IR_KEYTAB_TYPE ir_codes_ati_tv_wonder_hd_600[IR_KEYTAB_SIZE]; 171extern struct ir_scancode_table ir_codes_ati_tv_wonder_hd_600_table;
162extern IR_KEYTAB_TYPE ir_codes_kworld_plus_tv_analog[IR_KEYTAB_SIZE]; 172extern struct ir_scancode_table ir_codes_kworld_plus_tv_analog_table;
163extern IR_KEYTAB_TYPE ir_codes_kaiomy[IR_KEYTAB_SIZE]; 173extern struct ir_scancode_table ir_codes_kaiomy_table;
164extern IR_KEYTAB_TYPE ir_codes_dm1105_nec[IR_KEYTAB_SIZE]; 174extern struct ir_scancode_table ir_codes_dm1105_nec_table;
165extern IR_KEYTAB_TYPE ir_codes_evga_indtube[IR_KEYTAB_SIZE]; 175extern struct ir_scancode_table ir_codes_evga_indtube_table;
166extern IR_KEYTAB_TYPE ir_codes_terratec_cinergy_xs[IR_KEYTAB_SIZE]; 176extern struct ir_scancode_table ir_codes_terratec_cinergy_xs_table;
167extern IR_KEYTAB_TYPE ir_codes_videomate_s350[IR_KEYTAB_SIZE]; 177extern struct ir_scancode_table ir_codes_videomate_s350_table;
168extern IR_KEYTAB_TYPE ir_codes_gadmei_rm008z[IR_KEYTAB_SIZE]; 178extern struct ir_scancode_table ir_codes_gadmei_rm008z_table;
169
170#endif 179#endif
171
172/*
173 * Local variables:
174 * c-basic-offset: 8
175 * End:
176 */
diff --git a/include/media/ir-kbd-i2c.h b/include/media/ir-kbd-i2c.h
index defef3b18dfd..aaf65e8b1a40 100644
--- a/include/media/ir-kbd-i2c.h
+++ b/include/media/ir-kbd-i2c.h
@@ -6,7 +6,8 @@
6struct IR_i2c; 6struct IR_i2c;
7 7
8struct IR_i2c { 8struct IR_i2c {
9 IR_KEYTAB_TYPE *ir_codes; 9 struct ir_scancode_table *ir_codes;
10
10 struct i2c_client *c; 11 struct i2c_client *c;
11 struct input_dev *input; 12 struct input_dev *input;
12 struct ir_input_state ir; 13 struct ir_input_state ir;
@@ -33,7 +34,7 @@ enum ir_kbd_get_key_fn {
33 34
34/* Can be passed when instantiating an ir_video i2c device */ 35/* Can be passed when instantiating an ir_video i2c device */
35struct IR_i2c_init_data { 36struct IR_i2c_init_data {
36 IR_KEYTAB_TYPE *ir_codes; 37 struct ir_scancode_table *ir_codes;
37 const char *name; 38 const char *name;
38 int type; /* IR_TYPE_RC5, IR_TYPE_PD, etc */ 39 int type; /* IR_TYPE_RC5, IR_TYPE_PD, etc */
39 /* 40 /*