winebus.sys: Report device revision number for hidraw, too.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
2c73a08655
commit
d5fb7383d0
|
@ -1124,10 +1124,23 @@ next_line:
|
||||||
return (found_id && found_serial);
|
return (found_id && found_serial);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static DWORD a_to_bcd(const char *s)
|
||||||
|
{
|
||||||
|
DWORD r = 0;
|
||||||
|
const char *c;
|
||||||
|
int shift = strlen(s) - 1;
|
||||||
|
for (c = s; *c; ++c)
|
||||||
|
{
|
||||||
|
r |= (*c - '0') << (shift * 4);
|
||||||
|
--shift;
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
static void try_add_device(struct udev_device *dev)
|
static void try_add_device(struct udev_device *dev)
|
||||||
{
|
{
|
||||||
DWORD vid = 0, pid = 0, version = 0;
|
DWORD vid = 0, pid = 0, version = 0;
|
||||||
struct udev_device *hiddev = NULL;
|
struct udev_device *hiddev = NULL, *walk_device;
|
||||||
DEVICE_OBJECT *device = NULL;
|
DEVICE_OBJECT *device = NULL;
|
||||||
const char *subsystem;
|
const char *subsystem;
|
||||||
const char *devnode;
|
const char *devnode;
|
||||||
|
@ -1150,6 +1163,7 @@ static void try_add_device(struct udev_device *dev)
|
||||||
hiddev = udev_device_get_parent_with_subsystem_devtype(dev, "hid", NULL);
|
hiddev = udev_device_get_parent_with_subsystem_devtype(dev, "hid", NULL);
|
||||||
if (hiddev)
|
if (hiddev)
|
||||||
{
|
{
|
||||||
|
const char *bcdDevice = NULL;
|
||||||
#ifdef HAS_PROPER_INPUT_HEADER
|
#ifdef HAS_PROPER_INPUT_HEADER
|
||||||
const platform_vtbl *other_vtbl = NULL;
|
const platform_vtbl *other_vtbl = NULL;
|
||||||
DEVICE_OBJECT *dup = NULL;
|
DEVICE_OBJECT *dup = NULL;
|
||||||
|
@ -1171,6 +1185,17 @@ static void try_add_device(struct udev_device *dev)
|
||||||
&vid, &pid, &input, &serial);
|
&vid, &pid, &input, &serial);
|
||||||
if (serial == NULL)
|
if (serial == NULL)
|
||||||
serial = strdupAtoW(base_serial);
|
serial = strdupAtoW(base_serial);
|
||||||
|
|
||||||
|
walk_device = dev;
|
||||||
|
while (walk_device && !bcdDevice)
|
||||||
|
{
|
||||||
|
bcdDevice = udev_device_get_sysattr_value(walk_device, "bcdDevice");
|
||||||
|
walk_device = udev_device_get_parent(walk_device);
|
||||||
|
}
|
||||||
|
if (bcdDevice)
|
||||||
|
{
|
||||||
|
version = a_to_bcd(bcdDevice);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#ifdef HAS_PROPER_INPUT_HEADER
|
#ifdef HAS_PROPER_INPUT_HEADER
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue