diff options
author | Ping Cheng <pinglinux@gmail.com> | 2014-11-18 13:29:16 -0800 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2014-11-20 17:28:43 +0100 |
commit | 30ebc1aea8ce02da5b3789eba775dd2d79837813 (patch) | |
tree | b325a178596ec590e89dcb3bc7745d49bbf928c3 /drivers/hid/wacom_sys.c | |
parent | 97edcad81324ede21e421b79eaeab26f0b1ad2fc (diff) | |
download | op-kernel-dev-30ebc1aea8ce02da5b3789eba775dd2d79837813.zip op-kernel-dev-30ebc1aea8ce02da5b3789eba775dd2d79837813.tar.gz |
HID: wacom - Bamboo pen-only tablet does not support PAD
Bamboo models do not support HID_DG_CONTACTMAX. Plus, Bamboo pen-only
has touch descriptor. This leads to some complications in the code.
This patch also fixes duplicated PAD interfeaces for Intuos Pen
models.
Signed-off-by: Ping Cheng <pingc@wacom.com>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/wacom_sys.c')
-rw-r--r-- | drivers/hid/wacom_sys.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c index 8593047..68b6cd6 100644 --- a/drivers/hid/wacom_sys.c +++ b/drivers/hid/wacom_sys.c @@ -192,9 +192,15 @@ static void wacom_usage_mapping(struct hid_device *hdev, if (!pen && !finger) return; - if (finger && !features->touch_max) - /* touch device at least supports one touch point */ - features->touch_max = 1; + /* + * Bamboo models do not support HID_DG_CONTACTMAX. + * And, Bamboo Pen only descriptor contains touch. + */ + if (features->type != BAMBOO_PT) { + /* ISDv4 touch devices at least supports one touch point */ + if (finger && !features->touch_max) + features->touch_max = 1; + } switch (usage->hid) { case HID_GD_X: @@ -1151,13 +1157,12 @@ static int wacom_register_inputs(struct wacom *wacom) if (!input_dev || !pad_input_dev) return -EINVAL; - error = wacom_setup_input_capabilities(input_dev, wacom_wac); - if (error) - return error; - - error = input_register_device(input_dev); - if (error) - return error; + error = wacom_setup_pentouch_input_capabilities(input_dev, wacom_wac); + if (!error) { + error = input_register_device(input_dev); + if (error) + return error; + } error = wacom_setup_pad_input_capabilities(pad_input_dev, wacom_wac); if (error) { |