|
@@ -64,7 +64,8 @@ MODULE_DESCRIPTION("Asus HID Keyboard and TouchPad");
|
|
#define QUIRK_SKIP_INPUT_MAPPING BIT(2)
|
|
#define QUIRK_SKIP_INPUT_MAPPING BIT(2)
|
|
#define QUIRK_IS_MULTITOUCH BIT(3)
|
|
#define QUIRK_IS_MULTITOUCH BIT(3)
|
|
|
|
|
|
-#define NOTEBOOK_QUIRKS QUIRK_FIX_NOTEBOOK_REPORT
|
|
|
|
|
|
+#define KEYBOARD_QUIRKS (QUIRK_FIX_NOTEBOOK_REPORT | \
|
|
|
|
+ QUIRK_NO_INIT_REPORTS)
|
|
#define TOUCHPAD_QUIRKS (QUIRK_NO_INIT_REPORTS | \
|
|
#define TOUCHPAD_QUIRKS (QUIRK_NO_INIT_REPORTS | \
|
|
QUIRK_SKIP_INPUT_MAPPING | \
|
|
QUIRK_SKIP_INPUT_MAPPING | \
|
|
QUIRK_IS_MULTITOUCH)
|
|
QUIRK_IS_MULTITOUCH)
|
|
@@ -170,11 +171,11 @@ static int asus_raw_event(struct hid_device *hdev,
|
|
|
|
|
|
static int asus_input_configured(struct hid_device *hdev, struct hid_input *hi)
|
|
static int asus_input_configured(struct hid_device *hdev, struct hid_input *hi)
|
|
{
|
|
{
|
|
|
|
+ struct input_dev *input = hi->input;
|
|
struct asus_drvdata *drvdata = hid_get_drvdata(hdev);
|
|
struct asus_drvdata *drvdata = hid_get_drvdata(hdev);
|
|
|
|
|
|
if (drvdata->quirks & QUIRK_IS_MULTITOUCH) {
|
|
if (drvdata->quirks & QUIRK_IS_MULTITOUCH) {
|
|
int ret;
|
|
int ret;
|
|
- struct input_dev *input = hi->input;
|
|
|
|
|
|
|
|
input_set_abs_params(input, ABS_MT_POSITION_X, 0, MAX_X, 0, 0);
|
|
input_set_abs_params(input, ABS_MT_POSITION_X, 0, MAX_X, 0, 0);
|
|
input_set_abs_params(input, ABS_MT_POSITION_Y, 0, MAX_Y, 0, 0);
|
|
input_set_abs_params(input, ABS_MT_POSITION_Y, 0, MAX_Y, 0, 0);
|
|
@@ -191,10 +192,10 @@ static int asus_input_configured(struct hid_device *hdev, struct hid_input *hi)
|
|
hid_err(hdev, "Asus input mt init slots failed: %d\n", ret);
|
|
hid_err(hdev, "Asus input mt init slots failed: %d\n", ret);
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
-
|
|
|
|
- drvdata->input = input;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ drvdata->input = input;
|
|
|
|
+
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -286,7 +287,11 @@ static int asus_probe(struct hid_device *hdev, const struct hid_device_id *id)
|
|
goto err_stop_hw;
|
|
goto err_stop_hw;
|
|
}
|
|
}
|
|
|
|
|
|
- drvdata->input->name = "Asus TouchPad";
|
|
|
|
|
|
+ if (drvdata->quirks & QUIRK_IS_MULTITOUCH) {
|
|
|
|
+ drvdata->input->name = "Asus TouchPad";
|
|
|
|
+ } else {
|
|
|
|
+ drvdata->input->name = "Asus Keyboard";
|
|
|
|
+ }
|
|
|
|
|
|
if (drvdata->quirks & QUIRK_IS_MULTITOUCH) {
|
|
if (drvdata->quirks & QUIRK_IS_MULTITOUCH) {
|
|
ret = asus_start_multitouch(hdev);
|
|
ret = asus_start_multitouch(hdev);
|
|
@@ -315,7 +320,7 @@ static __u8 *asus_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
|
|
|
|
|
static const struct hid_device_id asus_devices[] = {
|
|
static const struct hid_device_id asus_devices[] = {
|
|
{ HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK,
|
|
{ HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK,
|
|
- USB_DEVICE_ID_ASUSTEK_NOTEBOOK_KEYBOARD), NOTEBOOK_QUIRKS},
|
|
|
|
|
|
+ USB_DEVICE_ID_ASUSTEK_NOTEBOOK_KEYBOARD), KEYBOARD_QUIRKS},
|
|
{ HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK,
|
|
{ HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK,
|
|
USB_DEVICE_ID_ASUSTEK_TOUCHPAD), TOUCHPAD_QUIRKS },
|
|
USB_DEVICE_ID_ASUSTEK_TOUCHPAD), TOUCHPAD_QUIRKS },
|
|
{ }
|
|
{ }
|