[media] dib0700: Fix IR keycode handling

Fixes Fedora 14 bug: https://bugzilla.redhat.com/show_bug.cgi?id=667157

There are a few bugs at the code that generates the scancode at dib0700:
	- RC keycode is wrong (it outputs a 24 bits keycode);
	- NEC extended outputs a keycode that have endiannes issues;
	- keycode tables for NEC extended remotes need to be updated.

The last issue need to be done as we get reports, as we don't have
the complete NEC-extended keycodes at the dibcom table.

This patch fixes the first two issues.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Mauro Carvalho Chehab 2011-01-12 12:17:52 -03:00
parent 312d63e4b0
commit 59aa346009
1 changed files with 3 additions and 3 deletions

View File

@ -514,8 +514,8 @@ struct dib0700_rc_response {
union { union {
u16 system16; u16 system16;
struct { struct {
u8 system;
u8 not_system; u8 not_system;
u8 system;
}; };
}; };
u8 data; u8 data;
@ -575,7 +575,7 @@ static void dib0700_rc_urb_completion(struct urb *purb)
if ((poll_reply->system ^ poll_reply->not_system) != 0xff) { if ((poll_reply->system ^ poll_reply->not_system) != 0xff) {
deb_data("NEC extended protocol\n"); deb_data("NEC extended protocol\n");
/* NEC extended code - 24 bits */ /* NEC extended code - 24 bits */
keycode = poll_reply->system16 << 8 | poll_reply->data; keycode = be16_to_cpu(poll_reply->system16) << 8 | poll_reply->data;
} else { } else {
deb_data("NEC normal protocol\n"); deb_data("NEC normal protocol\n");
/* normal NEC code - 16 bits */ /* normal NEC code - 16 bits */
@ -587,7 +587,7 @@ static void dib0700_rc_urb_completion(struct urb *purb)
deb_data("RC5 protocol\n"); deb_data("RC5 protocol\n");
/* RC5 Protocol */ /* RC5 Protocol */
toggle = poll_reply->report_id; toggle = poll_reply->report_id;
keycode = poll_reply->system16 << 8 | poll_reply->data; keycode = poll_reply->system << 8 | poll_reply->data;
break; break;
} }