Skip to content

Commit

Permalink
HID: alps: allow incoming reports when only the trackstick is opened
Browse files Browse the repository at this point in the history
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/128
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
  • Loading branch information
Benjamin Tissoires authored and Jiri Kosina committed Oct 26, 2018
1 parent 6298944 commit 7dd8db6
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions drivers/hid/hid-alps.c
Original file line number Diff line number Diff line change
Expand Up @@ -660,6 +660,20 @@ static int T4_init(struct hid_device *hdev, struct alps_dev *pri_data)
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)
{
struct alps_dev *data = hid_get_drvdata(hdev);
Expand Down Expand Up @@ -733,6 +747,10 @@ static int alps_input_configured(struct hid_device *hdev, struct hid_input *hi)
input2->id.version = input->id.version;
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);
data->sp_btn_cnt = (data->sp_btn_info & 0x0F);
for (i = 0; i < data->sp_btn_cnt; i++)
Expand Down

0 comments on commit 7dd8db6

Please sign in to comment.