diff mbox

HID: wiimote: fix nunchuck button parser

Message ID 1361148435-25567-1-git-send-email-dh.herrmann@gmail.com (mailing list archive)
State New, archived
Delegated to: Jiri Kosina
Headers show

Commit Message

David Herrmann Feb. 18, 2013, 12:47 a.m. UTC
The buttons of the Wii Remote Nunchuck extension are actually active low.
Fix the parser to forward the inverted values. The comment in the function
always said "0 == pressed" but the implementation was wrong from the
beginning.

Cc: stable@vger.kernel.org
Reported-by: Victor Quicksilver <victor.quicksilver@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
---
 drivers/hid/hid-wiimote-ext.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Jiri Kosina Feb. 18, 2013, 9:42 a.m. UTC | #1
On Mon, 18 Feb 2013, David Herrmann wrote:

> The buttons of the Wii Remote Nunchuck extension are actually active low.
> Fix the parser to forward the inverted values. The comment in the function
> always said "0 == pressed" but the implementation was wrong from the
> beginning.
> 
> Cc: stable@vger.kernel.org
> Reported-by: Victor Quicksilver <victor.quicksilver@gmail.com>
> Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
> ---
>  drivers/hid/hid-wiimote-ext.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/hid/hid-wiimote-ext.c b/drivers/hid/hid-wiimote-ext.c
> index 38ae877..0472191 100644
> --- a/drivers/hid/hid-wiimote-ext.c
> +++ b/drivers/hid/hid-wiimote-ext.c
> @@ -403,14 +403,14 @@ static void handler_nunchuck(struct wiimote_ext *ext, const __u8 *payload)
>  
>  	if (ext->motionp) {
>  		input_report_key(ext->input,
> -			wiiext_keymap[WIIEXT_KEY_Z], !!(payload[5] & 0x04));
> +			wiiext_keymap[WIIEXT_KEY_Z], !(payload[5] & 0x04));
>  		input_report_key(ext->input,
> -			wiiext_keymap[WIIEXT_KEY_C], !!(payload[5] & 0x08));
> +			wiiext_keymap[WIIEXT_KEY_C], !(payload[5] & 0x08));
>  	} else {
>  		input_report_key(ext->input,
> -			wiiext_keymap[WIIEXT_KEY_Z], !!(payload[5] & 0x01));
> +			wiiext_keymap[WIIEXT_KEY_Z], !(payload[5] & 0x01));
>  		input_report_key(ext->input,
> -			wiiext_keymap[WIIEXT_KEY_C], !!(payload[5] & 0x02));
> +			wiiext_keymap[WIIEXT_KEY_C], !(payload[5] & 0x02));
>  	}
>  
>  	input_sync(ext->input);

Applied, thanks.
diff mbox

Patch

diff --git a/drivers/hid/hid-wiimote-ext.c b/drivers/hid/hid-wiimote-ext.c
index 38ae877..0472191 100644
--- a/drivers/hid/hid-wiimote-ext.c
+++ b/drivers/hid/hid-wiimote-ext.c
@@ -403,14 +403,14 @@  static void handler_nunchuck(struct wiimote_ext *ext, const __u8 *payload)
 
 	if (ext->motionp) {
 		input_report_key(ext->input,
-			wiiext_keymap[WIIEXT_KEY_Z], !!(payload[5] & 0x04));
+			wiiext_keymap[WIIEXT_KEY_Z], !(payload[5] & 0x04));
 		input_report_key(ext->input,
-			wiiext_keymap[WIIEXT_KEY_C], !!(payload[5] & 0x08));
+			wiiext_keymap[WIIEXT_KEY_C], !(payload[5] & 0x08));
 	} else {
 		input_report_key(ext->input,
-			wiiext_keymap[WIIEXT_KEY_Z], !!(payload[5] & 0x01));
+			wiiext_keymap[WIIEXT_KEY_Z], !(payload[5] & 0x01));
 		input_report_key(ext->input,
-			wiiext_keymap[WIIEXT_KEY_C], !!(payload[5] & 0x02));
+			wiiext_keymap[WIIEXT_KEY_C], !(payload[5] & 0x02));
 	}
 
 	input_sync(ext->input);