Commit 7dd8db68 authored by Benjamin Tissoires's avatar Benjamin Tissoires Committed by Jiri Kosina

HID: alps: allow incoming reports when only the trackstick is opened

If userspace only reads the trackstick node, and no one is listening to
the touchpad nor the hidraw node then, the device is not powered on.

Add open/close callbacks to allow users to disable the touchpad in Gnome
while keeping the trackstick active.

Link: https://bugzilla.redhat.com/show_bug.cgi?id=1559632
Link: https://gitlab.gnome.org/GNOME/mutter/issues/128Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 6298944d
...@@ -660,6 +660,20 @@ static int T4_init(struct hid_device *hdev, struct alps_dev *pri_data) ...@@ -660,6 +660,20 @@ static int T4_init(struct hid_device *hdev, struct alps_dev *pri_data)
return ret; return ret;
} }
static int alps_sp_open(struct input_dev *dev)
{
struct hid_device *hid = input_get_drvdata(dev);
return hid_hw_open(hid);
}
static void alps_sp_close(struct input_dev *dev)
{
struct hid_device *hid = input_get_drvdata(dev);
hid_hw_close(hid);
}
static int alps_input_configured(struct hid_device *hdev, struct hid_input *hi) static int alps_input_configured(struct hid_device *hdev, struct hid_input *hi)
{ {
struct alps_dev *data = hid_get_drvdata(hdev); struct alps_dev *data = hid_get_drvdata(hdev);
...@@ -733,6 +747,10 @@ static int alps_input_configured(struct hid_device *hdev, struct hid_input *hi) ...@@ -733,6 +747,10 @@ static int alps_input_configured(struct hid_device *hdev, struct hid_input *hi)
input2->id.version = input->id.version; input2->id.version = input->id.version;
input2->dev.parent = input->dev.parent; input2->dev.parent = input->dev.parent;
input_set_drvdata(input2, hdev);
input2->open = alps_sp_open;
input2->close = alps_sp_close;
__set_bit(EV_KEY, input2->evbit); __set_bit(EV_KEY, input2->evbit);
data->sp_btn_cnt = (data->sp_btn_info & 0x0F); data->sp_btn_cnt = (data->sp_btn_info & 0x0F);
for (i = 0; i < data->sp_btn_cnt; i++) for (i = 0; i < data->sp_btn_cnt; i++)
......
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