HID: asus: Fix keyboard support
The previous submission which added Touchpad support broke the Keyboard support of this driver. This patch: 1. fixes the Keyboard support (by assigning drvdata->input); 2. renames NOTEBOOK_QUIRKS to KEYBOARD_QUIRKS; 3. adds the NO_INIT_REPORT quirk to the KEYBOARD_QUIRKS; and 4. sets the input->name to 'Asus Keyboard' for the keyboard Signed-off-by: Brendan McGrath <redmcg@redmandi.dyndns.org> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
f39fdf2ab8
commit
c8b1b3dd89
|
@ -64,7 +64,8 @@ MODULE_DESCRIPTION("Asus HID Keyboard and TouchPad");
|
|||
#define QUIRK_SKIP_INPUT_MAPPING BIT(2)
|
||||
#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 | \
|
||||
QUIRK_SKIP_INPUT_MAPPING | \
|
||||
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)
|
||||
{
|
||||
struct input_dev *input = hi->input;
|
||||
struct asus_drvdata *drvdata = hid_get_drvdata(hdev);
|
||||
|
||||
if (drvdata->quirks & QUIRK_IS_MULTITOUCH) {
|
||||
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_Y, 0, MAX_Y, 0, 0);
|
||||
|
@ -191,9 +192,9 @@ 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);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
drvdata->input = input;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -286,7 +287,11 @@ static int asus_probe(struct hid_device *hdev, const struct hid_device_id *id)
|
|||
goto err_stop_hw;
|
||||
}
|
||||
|
||||
if (drvdata->quirks & QUIRK_IS_MULTITOUCH) {
|
||||
drvdata->input->name = "Asus TouchPad";
|
||||
} else {
|
||||
drvdata->input->name = "Asus Keyboard";
|
||||
}
|
||||
|
||||
if (drvdata->quirks & QUIRK_IS_MULTITOUCH) {
|
||||
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[] = {
|
||||
{ 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,
|
||||
USB_DEVICE_ID_ASUSTEK_TOUCHPAD), TOUCHPAD_QUIRKS },
|
||||
{ }
|
||||
|
|
Loading…
Reference in New Issue