diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-01-21 10:14:13 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-01-21 10:47:07 -0500 |
commit | 9165144033944a4c650a9914888bf6b6f7328c7a (patch) | |
tree | 400d6d4ea001cc7b93ee127fa58727cd69b01e89 /drivers/media/dvb | |
parent | 711e1398d3131fd83aee0a35d450c6e1a809bfb2 (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.c | 31 |
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 | ||