All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Nieder <jrnieder@gmail.com>
To: Nestor Lopez Casado <nlopezcasad@logitech.com>
Cc: Hugo Osvaldo Barrera <hugo@osvaldobarrera.com.ar>,
	linux-input@vger.kernel.org,
	Benjamin Tissoires <benjamin.tissoires@enac.fr>,
	671292@bugs.debian.org, Jiri Kosina <jkosina@suse.cz>
Subject: [PATCH/RFC] HID: logitech: read all 32 bits of report type bitfield
Date: Fri, 11 May 2012 02:22:31 -0500	[thread overview]
Message-ID: <20120511072231.GA5733@burratino> (raw)
In-Reply-To: <CAE7qMroedSu_-GJ3mye0vnKtQKiS1jEuDAkk75=qdTVQMTgaxQ@mail.gmail.com>

On big-endian systems (e.g., Apple PowerBook), trying to use a
logitech wireless mouse with the Logitech Unifying Receiver does not
work with v3.2 and later kernels.  The device doesn't show up in
/dev/input.  Older kernels work fine.

That is because the new hid-logitech-dj driver claims the device.  The
device arrival notification appears:

	20 00 41 02 00 00 00 00 00 00 00 00 00 00 00

and we read the report_types bitfield (02 00 00 00) to find out what
kind of device it is.  Unfortunately the driver only reads the first 8
bits and treats that value as a 32-bit little-endian number, so on a
powerpc the report type seems to be 0x02000000 and is not recognized.

Even on little-endian machines, connecting a media center remote
control (report type 00 01 00 00) with this driver loaded would
presumably fail for the same reason.

Fix both problems by using get_unaligned_le32() to read all four
bytes, which is a little clearer anyway.  After this change, the
wireless mouse works on Hugo's PowerBook again.

Based on a patch by Nestor Lopez Casado.
Addresses http://bugs.debian.org/671292

Reported-by: Hugo Osvaldo Barrera <hugo@osvaldobarrera.com.ar>
Inspired-by: Nestor Lopez Casado <nlopezcasad@logitech.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Cc: <stable@vger.kernel.org>
---
Nestor Lopez Casado wrote:

> Great news. Thanks Hugo for your help testing the patches.
>
> Jonathan, how do we proceed now, I mean to submit the fix ?

If the patch looks good to you, we ask Jiri to pick it up.  What do
you think?

Thanks,
Jonathan

 drivers/hid/hid-logitech-dj.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c
index 38b12e45780c..2eac8c566b17 100644
--- a/drivers/hid/hid-logitech-dj.c
+++ b/drivers/hid/hid-logitech-dj.c
@@ -26,6 +26,7 @@
 #include <linux/hid.h>
 #include <linux/module.h>
 #include <linux/usb.h>
+#include <asm/unaligned.h>
 #include "usbhid/usbhid.h"
 #include "hid-ids.h"
 #include "hid-logitech-dj.h"
@@ -265,8 +266,8 @@ static void logi_dj_recv_add_djhid_device(struct dj_receiver_dev *djrcv_dev,
 		goto dj_device_allocate_fail;
 	}
 
-	dj_dev->reports_supported = le32_to_cpu(
-		dj_report->report_params[DEVICE_PAIRED_RF_REPORT_TYPE]);
+	dj_dev->reports_supported = get_unaligned_le32(
+		dj_report->report_params + DEVICE_PAIRED_RF_REPORT_TYPE);
 	dj_dev->hdev = dj_hiddev;
 	dj_dev->dj_receiver_dev = djrcv_dev;
 	dj_dev->device_index = dj_report->device_index;
-- 
1.7.10.1


  reply	other threads:[~2012-05-11  7:22 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20120503052000.GC15205@burratino>
     [not found] ` <20120503052420.GD15205@burratino>
     [not found]   ` <4FA217B7.7070908@osvaldobarrera.com.ar>
2012-05-03  5:50     ` [bug?] [powerpc] hid_logitech_dj: Wireless mouse does not work in xorg or gpm Jonathan Nieder
     [not found]       ` <CAE7qMrqtmu+bYYYp43s7Ek=UxfUG8HzwQSQBsdCGcVCBzCMQQw@mail.gmail.com>
2012-05-03 13:08         ` Jonathan Nieder
2012-05-03 13:13           ` Jonathan Nieder
2012-05-04  2:40             ` Bug#671292: " Hugo Osvaldo Barrera
2012-05-04  7:41               ` Jonathan Nieder
2012-05-04  8:10                 ` Hugo Osvaldo Barrera
2012-05-04  8:14                   ` Hugo Osvaldo Barrera
2012-05-04  8:36                     ` Jonathan Nieder
2012-05-04 10:16                       ` Nestor Lopez Casado
2012-05-04 10:49                         ` Jonathan Nieder
2012-05-06  3:14         ` Hugo Osvaldo Barrera
2012-05-06  5:55           ` Jonathan Nieder
2012-05-06  6:11             ` Hugo Osvaldo Barrera
2012-05-06  6:23               ` Jonathan Nieder
2012-05-11  5:06                 ` Hugo Osvaldo Barrera
2012-05-11  6:38                   ` Nestor Lopez Casado
2012-05-11  7:22                     ` Jonathan Nieder [this message]
2012-05-11  7:36                       ` [PATCH/RFC] HID: logitech: read all 32 bits of report type bitfield Nestor Lopez Casado
2012-05-11  7:43                         ` Jonathan Nieder
2012-05-11  7:39                       ` [PATCH/RFC v2] " Jonathan Nieder
2012-05-11 10:55                         ` Jiri Kosina
2012-05-11 12:50                         ` Hugo Osvaldo Barrera

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120511072231.GA5733@burratino \
    --to=jrnieder@gmail.com \
    --cc=671292@bugs.debian.org \
    --cc=benjamin.tissoires@enac.fr \
    --cc=hugo@osvaldobarrera.com.ar \
    --cc=jkosina@suse.cz \
    --cc=linux-input@vger.kernel.org \
    --cc=nlopezcasad@logitech.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.