[Applied] Re: [PATCH][ONEIRIC] UBUNTU: SAUCE: HID: magicmouse: ignore 'ivalid report id' while switching modes

Leann Ogasawara leann.ogasawara at canonical.com
Fri Sep 9 19:59:24 UTC 2011


On Fri, 2011-09-09 at 11:07 -0700, Chase Douglas wrote:
> From: Jiri Kosina <jkosina at suse.cz>
> 
> This is basically a more generic respin of 23746a6 ("HID: magicmouse: ignore
> 'ivalid report id' while switching modes") which got reverted later by
> c3a492.
> 
> It turns out that on some configurations, this is actually still the case
> and we are not able to detect in runtime.
> 
> The device reponds with 'invalid report id' when feature report switching it
> into multitouch mode is sent to it.
> 
> This has been silently ignored before 0825411ade ("HID: bt: Wait for ACK
> on Sent Reports"), but since this commit, it propagates -EIO from the _raw
> callback .
> 
> So let the driver ignore -EIO as response to 0xd7,0x01 report, as that's
> how the device reacts in normal mode.
> 
> Sad, but following reality.
> 
> This fixes https://bugzilla.kernel.org/show_bug.cgi?id=35022
> 
> Reported-by: Chase Douglas <chase.douglas at canonical.com>
> Reported-by: Jaikumar Ganesh <jaikumarg at android.com>
> Tested-by: Chase Douglas <chase.douglas at canonical.com>
> Tested-by: Jaikumar Ganesh <jaikumarg at android.com>
> Signed-off-by: Jiri Kosina <jkosina at suse.cz>
> Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
> ---
> 
> This has been held up by the kernel.org compromise. Unfortunately, I don't
> even have an upstream maintainer tree commit hash. This has only been seen
> on the linux-input mailing list. However, it *should* be on its way once
> kernel.org is straightened out, and I have personally tested it.

Given the fact that this has been tested and confirmed to resolve the
upstream bug 35022 and the patch is making it's way upstream, I've gone
ahead and applied this SAUCE patch to Oneiric master-next.

Thanks,
Leann

>  drivers/hid/hid-magicmouse.c |   10 +++++++++-
>  1 files changed, 9 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/hid/hid-magicmouse.c b/drivers/hid/hid-magicmouse.c
> index b5bdab3..f0fbd7b 100644
> --- a/drivers/hid/hid-magicmouse.c
> +++ b/drivers/hid/hid-magicmouse.c
> @@ -537,9 +537,17 @@ static int magicmouse_probe(struct hid_device *hdev,
>  	}
>  	report->size = 6;
>  
> +	/*
> +	 * Some devices repond with 'invalid report id' when feature
> +	 * report switching it into multitouch mode is sent to it.
> +	 *
> +	 * This results in -EIO from the _raw low-level transport callback,
> +	 * but there seems to be no other way of switching the mode.
> +	 * Thus the super-ugly hacky success check below.
> +	 */
>  	ret = hdev->hid_output_raw_report(hdev, feature, sizeof(feature),
>  			HID_FEATURE_REPORT);
> -	if (ret != sizeof(feature)) {
> +	if (ret != -EIO && ret != sizeof(feature)) {
>  		hid_err(hdev, "unable to request touch data (%d)\n", ret);
>  		goto err_stop_hw;
>  	}
> -- 
> 1.7.4.1
> 
> 






More information about the kernel-team mailing list