Message ID | 20200115201811.3271284-1-lains@archlinux.org (mailing list archive) |
---|---|
State | Mainlined |
Commit | 8c9d734cdffc6e41344653ae9884feece33b4f92 |
Delegated to: | Jiri Kosina |
Headers | show |
Series | HID: logitech-dj: add support for the static device in the Powerplay mat/receiver | expand |
On Wed, 2020-01-15 at 20:18 +0000, Filipe Laíns wrote: > The Logitech G Powerplay has a lightspeed receiver with a static > HID++ > device with ID 7 attached to it to. It is used to configure the led > on > the mat. For this reason I increased the max number of devices. > > Signed-off-by: Filipe Laíns <lains@archlinux.org> > --- > drivers/hid/hid-logitech-dj.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid- > logitech-dj.c > index bb50d6e7745b..79294b873057 100644 > --- a/drivers/hid/hid-logitech-dj.c > +++ b/drivers/hid/hid-logitech-dj.c > @@ -16,11 +16,11 @@ > #include <asm/unaligned.h> > #include "hid-ids.h" > > -#define DJ_MAX_PAIRED_DEVICES 6 > +#define DJ_MAX_PAIRED_DEVICES 7 > #define DJ_MAX_NUMBER_NOTIFS 8 > #define DJ_RECEIVER_INDEX 0 > #define DJ_DEVICE_INDEX_MIN 1 > -#define DJ_DEVICE_INDEX_MAX 6 > +#define DJ_DEVICE_INDEX_MAX 7 > > #define DJREPORT_SHORT_LENGTH 15 > #define DJREPORT_LONG_LENGTH 32 > @@ -980,6 +980,11 @@ static void logi_hidpp_recv_queue_notif(struct > hid_device *hdev, > break; > } > > + /* custom receiver device (eg. powerplay) */ > + if (hidpp_report->device_index == 7) { > + workitem.reports_supported |= HIDPP; > + } > + > if (workitem.type == WORKITEM_TYPE_EMPTY) { > hid_warn(hdev, > "unusable device of type %s (0x%02x) connected > on slot %d", Benjamin, is there any updates on this? Were you able to test it? Thank you, Filipe Laíns
On Wed, 15 Jan 2020, Filipe Laíns wrote: > The Logitech G Powerplay has a lightspeed receiver with a static HID++ > device with ID 7 attached to it to. It is used to configure the led on > the mat. For this reason I increased the max number of devices. > > Signed-off-by: Filipe Laíns <lains@archlinux.org> > --- > drivers/hid/hid-logitech-dj.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c > index bb50d6e7745b..79294b873057 100644 > --- a/drivers/hid/hid-logitech-dj.c > +++ b/drivers/hid/hid-logitech-dj.c > @@ -16,11 +16,11 @@ > #include <asm/unaligned.h> > #include "hid-ids.h" > > -#define DJ_MAX_PAIRED_DEVICES 6 > +#define DJ_MAX_PAIRED_DEVICES 7 > #define DJ_MAX_NUMBER_NOTIFS 8 > #define DJ_RECEIVER_INDEX 0 > #define DJ_DEVICE_INDEX_MIN 1 > -#define DJ_DEVICE_INDEX_MAX 6 > +#define DJ_DEVICE_INDEX_MAX 7 > > #define DJREPORT_SHORT_LENGTH 15 > #define DJREPORT_LONG_LENGTH 32 > @@ -980,6 +980,11 @@ static void logi_hidpp_recv_queue_notif(struct hid_device *hdev, > break; > } > > + /* custom receiver device (eg. powerplay) */ > + if (hidpp_report->device_index == 7) { > + workitem.reports_supported |= HIDPP; > + } > + I guess we can't do anything else than to trust Logitech that they will not assign conflicting device_index ID in the future to something that will not be HID++, right? Or is this properly documented somewhere? Thanks,
On Wed, 2020-02-12 at 14:50 +0100, Jiri Kosina wrote: > On Wed, 15 Jan 2020, Filipe Laíns wrote: > > > The Logitech G Powerplay has a lightspeed receiver with a static HID++ > > device with ID 7 attached to it to. It is used to configure the led on > > the mat. For this reason I increased the max number of devices. > > > > Signed-off-by: Filipe Laíns <lains@archlinux.org> > > --- > > drivers/hid/hid-logitech-dj.c | 9 +++++++-- > > 1 file changed, 7 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c > > index bb50d6e7745b..79294b873057 100644 > > --- a/drivers/hid/hid-logitech-dj.c > > +++ b/drivers/hid/hid-logitech-dj.c > > @@ -16,11 +16,11 @@ > > #include <asm/unaligned.h> > > #include "hid-ids.h" > > > > -#define DJ_MAX_PAIRED_DEVICES 6 > > +#define DJ_MAX_PAIRED_DEVICES 7 > > #define DJ_MAX_NUMBER_NOTIFS 8 > > #define DJ_RECEIVER_INDEX 0 > > #define DJ_DEVICE_INDEX_MIN 1 > > -#define DJ_DEVICE_INDEX_MAX 6 > > +#define DJ_DEVICE_INDEX_MAX 7 > > > > #define DJREPORT_SHORT_LENGTH 15 > > #define DJREPORT_LONG_LENGTH 32 > > @@ -980,6 +980,11 @@ static void logi_hidpp_recv_queue_notif(struct hid_device *hdev, > > break; > > } > > > > + /* custom receiver device (eg. powerplay) */ > > + if (hidpp_report->device_index == 7) { > > + workitem.reports_supported |= HIDPP; > > + } > > + > > I guess we can't do anything else than to trust Logitech that they will > not assign conflicting device_index ID in the future to something that > will not be HID++, right? > > Or is this properly documented somewhere? > > Thanks, CCing Nestor Yes, we need to trust Logitech on this. There's isn't anything documented regarding this AFAIK. Even if Logitech released a device with index 7 that didn't support HID++, it wouldn't be that big of an issue. We would just end up with a hidraw node which would export a vendor page report descriptor but the device wouldn't actually reply to anything. Regards, Filipe Laíns
On Wed, 12 Feb 2020, Filipe Laíns wrote: > > > + /* custom receiver device (eg. powerplay) */ > > > + if (hidpp_report->device_index == 7) { > > > + workitem.reports_supported |= HIDPP; > > > + } > > > + > > > > I guess we can't do anything else than to trust Logitech that they will > > not assign conflicting device_index ID in the future to something that > > will not be HID++, right? > > > > Or is this properly documented somewhere? > > > > Thanks, > > > CCing Nestor > > Yes, we need to trust Logitech on this. There's isn't anything > documented regarding this AFAIK. > > Even if Logitech released a device with index 7 that didn't support > HID++, it wouldn't be that big of an issue. We would just end up with a > hidraw node which would export a vendor page report descriptor but the > device wouldn't actually reply to anything. Given the silence from Nestor, I guess we can just apply this for 5.7; pushing to for-5.7/logitech branch. Thanks,
diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c index bb50d6e7745b..79294b873057 100644 --- a/drivers/hid/hid-logitech-dj.c +++ b/drivers/hid/hid-logitech-dj.c @@ -16,11 +16,11 @@ #include <asm/unaligned.h> #include "hid-ids.h" -#define DJ_MAX_PAIRED_DEVICES 6 +#define DJ_MAX_PAIRED_DEVICES 7 #define DJ_MAX_NUMBER_NOTIFS 8 #define DJ_RECEIVER_INDEX 0 #define DJ_DEVICE_INDEX_MIN 1 -#define DJ_DEVICE_INDEX_MAX 6 +#define DJ_DEVICE_INDEX_MAX 7 #define DJREPORT_SHORT_LENGTH 15 #define DJREPORT_LONG_LENGTH 32 @@ -980,6 +980,11 @@ static void logi_hidpp_recv_queue_notif(struct hid_device *hdev, break; } + /* custom receiver device (eg. powerplay) */ + if (hidpp_report->device_index == 7) { + workitem.reports_supported |= HIDPP; + } + if (workitem.type == WORKITEM_TYPE_EMPTY) { hid_warn(hdev, "unusable device of type %s (0x%02x) connected on slot %d",
The Logitech G Powerplay has a lightspeed receiver with a static HID++ device with ID 7 attached to it to. It is used to configure the led on the mat. For this reason I increased the max number of devices. Signed-off-by: Filipe Laíns <lains@archlinux.org> --- drivers/hid/hid-logitech-dj.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)