1
0
forked from drath/libratbag

hidpp20/data: add the G305

Signed-off-by: Filipe Laíns <lains@archlinux.org>
This commit is contained in:
Filipe Laíns
2019-07-31 09:07:46 +01:00
committed by Peter Hutterer
parent 196d53e65f
commit cad05ffced
5 changed files with 23 additions and 1 deletions

View File

@@ -0,0 +1,7 @@
[Device]
Name=Logitech Gaming Mouse G305
DeviceMatch=usb:046d:4074
Driver=hidpp20
[Driver/hidpp20]
Quirk=G305

View File

@@ -294,6 +294,7 @@ data_files = files(
'data/devices/logitech-g300.device',
'data/devices/logitech-g302.device',
'data/devices/logitech-g303.device',
'data/devices/logitech-g305.device',
'data/devices/logitech-g402.device',
'data/devices/logitech-g403-hero.device',
'data/devices/logitech-g403-wireless.device',

View File

@@ -2620,6 +2620,15 @@ hidpp20_onboard_profiles_initialize(struct hidpp20_device *device,
HIDPP20_USER_PROFILES_G402,
profiles->sector_size,
data);
if (rc && device->quirk != HIDPP20_QUIRK_G305) {
/* The G305 has a bug where it throws an ERR_INVALID_ARGUMENT
if the sector has not been written to yet. If this happens
we will read the ROM profiles.*/
read_userdata = false;
goto read_profiles;
}
if (rc < 0)
return rc; // ignore_clang_sa_mem_leak
@@ -2653,6 +2662,7 @@ hidpp20_onboard_profiles_initialize(struct hidpp20_device *device,
read_userdata = false;
}
read_profiles:
for (i = 0; i < profiles->num_profiles; i++) {
if (read_userdata) {
hidpp_log_debug(&device->base, "Parsing profile %u\n", i);

View File

@@ -83,8 +83,8 @@ hidpp20_device_destroy(struct hidpp20_device *device);
enum {
HIDPP20_QUIRK_NONE,
HIDPP20_QUIRK_G305,
}
#define HIDPP20_QUIRK_G305 1
/* -------------------------------------------------------------------------- */
/* 0x0000: Root */

View File

@@ -166,6 +166,10 @@ init_data_hidpp20(struct ratbag *ratbag,
str = g_key_file_get_string(keyfile, group, "Quirk", NULL);
data->hidpp20.quirk = HIDPP20_QUIRK_NONE;
if (str) {
if (streq(str, "G305"))
data->hidpp20.quirk = HIDPP20_QUIRK_G305;
}
}
static void