mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-10 23:29:46 +00:00
a43c7c5383
There are two types of 1FGT devices supported in wacom_wac.c. Changing them to follow the existing touchscreen format, i.e., only report BTN_TOUCH as a valid tool type. Touch data will be ignored if pen is in proximity. This requires a touch up event sent if touch was down when pen comes in. The touch up event should be sent before any pen events are emitted. Otherwise, two pointers would race for the cursor. However, we can not send a touch up inside wacom_tpc_pen since pen and touch are on different logical port. That is why we have to check if touch is up before sending pen events. Reviewed-by: Henrik Rydberg <rydberg@euromail.se> Reviewed-by: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Ping Cheng <pingc@wacom.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
106 lines
2.0 KiB
C
106 lines
2.0 KiB
C
/*
|
|
* drivers/input/tablet/wacom_wac.h
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*/
|
|
#ifndef WACOM_WAC_H
|
|
#define WACOM_WAC_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
/* maximum packet length for USB devices */
|
|
#define WACOM_PKGLEN_MAX 32
|
|
|
|
/* packet length for individual models */
|
|
#define WACOM_PKGLEN_PENPRTN 7
|
|
#define WACOM_PKGLEN_GRAPHIRE 8
|
|
#define WACOM_PKGLEN_BBFUN 9
|
|
#define WACOM_PKGLEN_INTUOS 10
|
|
#define WACOM_PKGLEN_TPC1FG 5
|
|
#define WACOM_PKGLEN_TPC2FG 14
|
|
#define WACOM_PKGLEN_BBTOUCH 20
|
|
|
|
/* device IDs */
|
|
#define STYLUS_DEVICE_ID 0x02
|
|
#define TOUCH_DEVICE_ID 0x03
|
|
#define CURSOR_DEVICE_ID 0x06
|
|
#define ERASER_DEVICE_ID 0x0A
|
|
#define PAD_DEVICE_ID 0x0F
|
|
|
|
/* wacom data packet report IDs */
|
|
#define WACOM_REPORT_PENABLED 2
|
|
#define WACOM_REPORT_INTUOSREAD 5
|
|
#define WACOM_REPORT_INTUOSWRITE 6
|
|
#define WACOM_REPORT_INTUOSPAD 12
|
|
#define WACOM_REPORT_TPC1FG 6
|
|
#define WACOM_REPORT_TPC2FG 13
|
|
|
|
/* device quirks */
|
|
#define WACOM_QUIRK_MULTI_INPUT 0x0001
|
|
#define WACOM_QUIRK_BBTOUCH_LOWRES 0x0002
|
|
|
|
enum {
|
|
PENPARTNER = 0,
|
|
GRAPHIRE,
|
|
WACOM_G4,
|
|
PTU,
|
|
PL,
|
|
DTU,
|
|
BAMBOO_PT,
|
|
INTUOS,
|
|
INTUOS3S,
|
|
INTUOS3,
|
|
INTUOS3L,
|
|
INTUOS4S,
|
|
INTUOS4,
|
|
INTUOS4L,
|
|
WACOM_21UX2,
|
|
CINTIQ,
|
|
WACOM_BEE,
|
|
WACOM_MO,
|
|
TABLETPC,
|
|
TABLETPC2FG,
|
|
MAX_TYPE
|
|
};
|
|
|
|
struct wacom_features {
|
|
const char *name;
|
|
int pktlen;
|
|
int x_max;
|
|
int y_max;
|
|
int pressure_max;
|
|
int distance_max;
|
|
int type;
|
|
int device_type;
|
|
int x_phy;
|
|
int y_phy;
|
|
unsigned char unit;
|
|
unsigned char unitExpo;
|
|
int x_fuzz;
|
|
int y_fuzz;
|
|
int pressure_fuzz;
|
|
int distance_fuzz;
|
|
unsigned quirks;
|
|
};
|
|
|
|
struct wacom_shared {
|
|
bool stylus_in_proximity;
|
|
bool touch_down;
|
|
};
|
|
|
|
struct wacom_wac {
|
|
char name[64];
|
|
unsigned char *data;
|
|
int tool[2];
|
|
int id[2];
|
|
__u32 serial[2];
|
|
struct wacom_features features;
|
|
struct wacom_shared *shared;
|
|
struct input_dev *input;
|
|
};
|
|
|
|
#endif
|