aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2012-01-21 10:14:13 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-01-21 10:47:07 -0500
commit9165144033944a4c650a9914888bf6b6f7328c7a (patch)
tree400d6d4ea001cc7b93ee127fa58727cd69b01e89 /drivers/media/dvb
parent711e1398d3131fd83aee0a35d450c6e1a809bfb2 (diff)
[media] az6007: Fix IR handling
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r--drivers/media/dvb/dvb-usb/az6007.c31
1 files changed, 13 insertions, 18 deletions
diff --git a/drivers/media/dvb/dvb-usb/az6007.c b/drivers/media/dvb/dvb-usb/az6007.c
index 142ef7b0c02e..a8aedb87ae69 100644
--- a/drivers/media/dvb/dvb-usb/az6007.c
+++ b/drivers/media/dvb/dvb-usb/az6007.c
@@ -204,13 +204,7 @@ static int az6007_rc_query(struct dvb_usb_device *d, u32 * event, int *state)
204 struct az6007_device_state *st = d->priv; 204 struct az6007_device_state *st = d->priv;
205 struct rc_map_table *keymap = d->props.rc.legacy.rc_map_table; 205 struct rc_map_table *keymap = d->props.rc.legacy.rc_map_table;
206 int i; 206 int i;
207 207 unsigned code = 0;
208 /*
209 * FIXME: remove the following return to enabled remote querying
210 * The driver likely needs proper locking to avoid troubles between
211 * this call and other concurrent calls.
212 */
213 return 0;
214 208
215 az6007_read(d, AZ6007_READ_IR, 0, 0, st->data, 10); 209 az6007_read(d, AZ6007_READ_IR, 0, 0, st->data, 10);
216 210
@@ -219,20 +213,21 @@ static int az6007_rc_query(struct dvb_usb_device *d, u32 * event, int *state)
219 return 0; 213 return 0;
220 } 214 }
221 215
222 /* 216 if ((st->data[1] ^ st->data[2]) == 0xff)
223 * FIXME: need to make something useful with the keycodes and to 217 code = st->data[1];
224 * convert it to the non-legacy mode. Yet, it is producing some 218 else
225 * debug info already, like: 219 code = st->data[1] << 8 | st->data[2];
226 * 88 04 eb 02 fd ff 00 82 63 82 (terratec IR) 220
227 * 88 04 eb 03 fc 00 00 82 63 82 (terratec IR) 221 if ((st->data[3] ^ st->data[4]) == 0xff)
228 * 88 80 7e 0d f2 ff 00 82 63 82 (another NEC-extended based IR) 222 code = code << 8 | st->data[3];
229 * I suspect that the IR data is at bytes 1 to 4, and byte 5 is parity 223 else
230 */ 224 code = code << 16 | st->data[3] << 8| st->data[4];
231 deb_rc("remote query key: %x %d\n", st->data[1], st->data[1]); 225
226 printk("remote query key: %04x\n", code);
232 print_hex_dump_bytes("Remote: ", DUMP_PREFIX_NONE, st->data, 10); 227 print_hex_dump_bytes("Remote: ", DUMP_PREFIX_NONE, st->data, 10);
233 228
234 for (i = 0; i < d->props.rc.legacy.rc_map_size; i++) { 229 for (i = 0; i < d->props.rc.legacy.rc_map_size; i++) {
235 if (rc5_custom(&keymap[i]) == st->data[1]) { 230 if (rc5_custom(&keymap[i]) == code) {
236 *event = keymap[i].keycode; 231 *event = keymap[i].keycode;
237 *state = REMOTE_KEY_PRESSED; 232 *state = REMOTE_KEY_PRESSED;
238 233