Re: [PATCH] hid: sony: Drop invalid Sixaxis input reports

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> When connected via Bluetooth the sixaxis periodically sends reports with
> an ID of 1, the second byte 0xff and the rest zeroed.  These reports are
> not related to the controller state and must be dropped to avoid
> generating false input events.

These 'problem reports' were reported (*) over the on Bluetooth list, and
appear in both the HID and the HCI streams (suggesting that they are
really sent from device). They are not seen on the USB connection.

Dropping them in 'raw_event()' seems a sensible approach,
Simon.

* http://www.spinics.net/lists/linux-bluetooth/msg63028.html


>
> Signed-off-by: Frank Praznik <frank.praznik@xxxxxxxxx>
> ---
>  drivers/hid/hid-sony.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c
> index ed2f008..beb2b02 100644
> --- a/drivers/hid/hid-sony.c
> +++ b/drivers/hid/hid-sony.c
> @@ -1270,6 +1270,17 @@ static int sony_raw_event(struct hid_device *hdev,
> struct hid_report *report,
>  	 * has to be BYTE_SWAPPED before passing up to joystick interface
>  	 */
>  	if ((sc->quirks & SIXAXIS_CONTROLLER) && rd[0] == 0x01 && size == 49) {
> +		/*
> +		 * When connected via Bluetooth the Sixaxis occasionally sends
> +		 * a report with the second byte 0xff and the rest zeroed.
> +		 *
> +		 * This report does not reflect the actual state of the
> +		 * controller must be ignored to avoid generating false input
> +		 * events.
> +		 */
> +		if (rd[1] == 0xff)
> +			return -EINVAL;
> +
>  		swap(rd[41], rd[42]);
>  		swap(rd[43], rd[44]);
>  		swap(rd[45], rd[46]);
> --
> 2.4.3
>
>

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux