Commit edf22f51 authored by Vojtech Pavlik's avatar Vojtech Pavlik

[PATCH] USB Joypad quirk

Orginally from Vojtech Pavlik (16th June 2002 via email), to fix my
'broken' USB joypad, Fully tested in both 2.4.x and 2.5.52 (and
2.5.52-bk).
parent 52a150d8
...@@ -1317,6 +1317,9 @@ void hid_init_reports(struct hid_device *hid) ...@@ -1317,6 +1317,9 @@ void hid_init_reports(struct hid_device *hid)
#define USB_DEVICE_ID_ATEN_2PORTKVM 0x2204 #define USB_DEVICE_ID_ATEN_2PORTKVM 0x2204
#define USB_DEVICE_ID_ATEN_4PORTKVM 0x2205 #define USB_DEVICE_ID_ATEN_4PORTKVM 0x2205
#define USB_VENDOR_ID_TOPMAX 0x0663
#define USB_DEVICE_ID_TOPMAX_COBRAPAD 0x0103
#define USB_VENDOR_ID_MGE 0x0463 #define USB_VENDOR_ID_MGE 0x0463
#define USB_DEVICE_ID_MGE_UPS 0xffff #define USB_DEVICE_ID_MGE_UPS 0xffff
#define USB_DEVICE_ID_MGE_UPS1 0x0001 #define USB_DEVICE_ID_MGE_UPS1 0x0001
...@@ -1355,6 +1358,7 @@ struct hid_blacklist { ...@@ -1355,6 +1358,7 @@ struct hid_blacklist {
{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM, HID_QUIRK_NOGET }, { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM, HID_QUIRK_NOGET },
{ USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_HIDDEV }, { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_HIDDEV },
{ USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS1, HID_QUIRK_HIDDEV }, { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS1, HID_QUIRK_HIDDEV },
{ USB_VENDOR_ID_TOPMAX, USB_DEVICE_ID_TOPMAX_COBRAPAD, HID_QUIRK_BADPAD },
{ 0, 0 } { 0, 0 }
}; };
......
...@@ -357,6 +357,11 @@ static void hidinput_configure_usage(struct hid_device *device, struct hid_field ...@@ -357,6 +357,11 @@ static void hidinput_configure_usage(struct hid_device *device, struct hid_field
int a = field->logical_minimum; int a = field->logical_minimum;
int b = field->logical_maximum; int b = field->logical_maximum;
if ((device->quirks & HID_QUIRK_BADPAD) && (usage->code == ABS_X || usage->code == ABS_Y)) {
a = field->logical_minimum = 0;
b = field->logical_maximum = 255;
}
input->absmin[usage->code] = a; input->absmin[usage->code] = a;
input->absmax[usage->code] = b; input->absmax[usage->code] = b;
input->absfuzz[usage->code] = (b - a) >> 8; input->absfuzz[usage->code] = (b - a) >> 8;
......
...@@ -206,6 +206,7 @@ struct hid_item { ...@@ -206,6 +206,7 @@ struct hid_item {
#define HID_QUIRK_IGNORE 0x04 #define HID_QUIRK_IGNORE 0x04
#define HID_QUIRK_NOGET 0x08 #define HID_QUIRK_NOGET 0x08
#define HID_QUIRK_HIDDEV 0x10 #define HID_QUIRK_HIDDEV 0x10
#define HID_QUIRK_BADPAD 0x12
/* /*
* This is the global enviroment of the parser. This information is * This is the global enviroment of the parser. This information is
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment