Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * drivers/input/tablet/wacom_wac.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) #ifndef WACOM_WAC_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) #define WACOM_WAC_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) #include <linux/hid.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #include <linux/kfifo.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) /* maximum packet length for USB/BT devices */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #define WACOM_PKGLEN_MAX	361
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) #define WACOM_NAME_MAX		64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) #define WACOM_MAX_REMOTES	5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) #define WACOM_STATUS_UNKNOWN	255
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) /* packet length for individual models */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) #define WACOM_PKGLEN_BBFUN	 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) #define WACOM_PKGLEN_TPC1FG	 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) #define WACOM_PKGLEN_TPC1FG_B	10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) #define WACOM_PKGLEN_TPC2FG	14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) #define WACOM_PKGLEN_BBTOUCH	20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) #define WACOM_PKGLEN_BBTOUCH3	64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) #define WACOM_PKGLEN_BBPEN	10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) #define WACOM_PKGLEN_WIRELESS	32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) #define WACOM_PKGLEN_PENABLED	 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) #define WACOM_PKGLEN_BPAD_TOUCH	32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) #define WACOM_PKGLEN_BPAD_TOUCH_USB	64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) /* wacom data size per MT contact */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) #define WACOM_BYTES_PER_MT_PACKET	11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) #define WACOM_BYTES_PER_24HDT_PACKET	14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) #define WACOM_BYTES_PER_QHDTHID_PACKET	 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) /* device IDs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) #define STYLUS_DEVICE_ID	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) #define TOUCH_DEVICE_ID		0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) #define CURSOR_DEVICE_ID	0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) #define ERASER_DEVICE_ID	0x0A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) #define PAD_DEVICE_ID		0x0F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) /* wacom data packet report IDs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) #define WACOM_REPORT_PENABLED		2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) #define WACOM_REPORT_PENABLED_BT	3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) #define WACOM_REPORT_INTUOS_ID1		5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) #define WACOM_REPORT_INTUOS_ID2		6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) #define WACOM_REPORT_INTUOSPAD		12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) #define WACOM_REPORT_INTUOS5PAD		3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) #define WACOM_REPORT_DTUSPAD		21
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) #define WACOM_REPORT_TPC1FG		6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) #define WACOM_REPORT_TPC2FG		13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) #define WACOM_REPORT_TPCMT		13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) #define WACOM_REPORT_TPCMT2		3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) #define WACOM_REPORT_TPCHID		15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) #define WACOM_REPORT_CINTIQ		16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) #define WACOM_REPORT_CINTIQPAD		17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) #define WACOM_REPORT_TPCST		16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) #define WACOM_REPORT_DTUS		17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) #define WACOM_REPORT_TPC1FGE		18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) #define WACOM_REPORT_24HDT		1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) #define WACOM_REPORT_WL			128
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) #define WACOM_REPORT_USB		192
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) #define WACOM_REPORT_BPAD_PEN		3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) #define WACOM_REPORT_BPAD_TOUCH		16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) #define WACOM_REPORT_DEVICE_LIST	16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) #define WACOM_REPORT_INTUOS_PEN		16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) #define WACOM_REPORT_REMOTE		17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) #define WACOM_REPORT_INTUOSHT2_ID	8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) /* wacom command report ids */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) #define WAC_CMD_WL_LED_CONTROL          0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) #define WAC_CMD_LED_CONTROL             0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) #define WAC_CMD_ICON_START              0x21
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) #define WAC_CMD_ICON_XFER               0x23
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) #define WAC_CMD_ICON_BT_XFER            0x26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) #define WAC_CMD_DELETE_PAIRING          0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) #define WAC_CMD_LED_CONTROL_GENERIC     0x32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) #define WAC_CMD_UNPAIR_ALL              0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) #define WAC_CMD_WL_INTUOSP2             0x82
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) /* device quirks */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) #define WACOM_QUIRK_BBTOUCH_LOWRES	0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) #define WACOM_QUIRK_SENSE		0x0002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) #define WACOM_QUIRK_AESPEN		0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) #define WACOM_QUIRK_BATTERY		0x0008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) #define WACOM_QUIRK_TOOLSERIAL		0x0010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) /* device types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) #define WACOM_DEVICETYPE_NONE           0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) #define WACOM_DEVICETYPE_PEN            0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) #define WACOM_DEVICETYPE_TOUCH          0x0002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) #define WACOM_DEVICETYPE_PAD            0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) #define WACOM_DEVICETYPE_WL_MONITOR     0x0008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) #define WACOM_DEVICETYPE_DIRECT         0x0010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) #define WACOM_POWER_SUPPLY_STATUS_AUTO  -1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define WACOM_HID_UP_WACOMDIGITIZER     0xff0d0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) #define WACOM_HID_SP_PAD                0x00040000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define WACOM_HID_SP_BUTTON             0x00090000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) #define WACOM_HID_SP_DIGITIZER          0x000d0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #define WACOM_HID_SP_DIGITIZERINFO      0x00100000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #define WACOM_HID_WD_DIGITIZER          (WACOM_HID_UP_WACOMDIGITIZER | 0x01)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) #define WACOM_HID_WD_PEN                (WACOM_HID_UP_WACOMDIGITIZER | 0x02)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #define WACOM_HID_WD_SENSE              (WACOM_HID_UP_WACOMDIGITIZER | 0x36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) #define WACOM_HID_WD_DIGITIZERFNKEYS    (WACOM_HID_UP_WACOMDIGITIZER | 0x39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define WACOM_HID_WD_SERIALNUMBER       (WACOM_HID_UP_WACOMDIGITIZER | 0x5b)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) #define WACOM_HID_WD_SERIALHI           (WACOM_HID_UP_WACOMDIGITIZER | 0x5c)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) #define WACOM_HID_WD_TOOLTYPE           (WACOM_HID_UP_WACOMDIGITIZER | 0x77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) #define WACOM_HID_WD_DISTANCE           (WACOM_HID_UP_WACOMDIGITIZER | 0x0132)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) #define WACOM_HID_WD_TOUCHSTRIP         (WACOM_HID_UP_WACOMDIGITIZER | 0x0136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define WACOM_HID_WD_TOUCHSTRIP2        (WACOM_HID_UP_WACOMDIGITIZER | 0x0137)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) #define WACOM_HID_WD_TOUCHRING          (WACOM_HID_UP_WACOMDIGITIZER | 0x0138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) #define WACOM_HID_WD_TOUCHRINGSTATUS    (WACOM_HID_UP_WACOMDIGITIZER | 0x0139)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) #define WACOM_HID_WD_REPORT_VALID       (WACOM_HID_UP_WACOMDIGITIZER | 0x01d0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) #define WACOM_HID_WD_ACCELEROMETER_X    (WACOM_HID_UP_WACOMDIGITIZER | 0x0401)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) #define WACOM_HID_WD_ACCELEROMETER_Y    (WACOM_HID_UP_WACOMDIGITIZER | 0x0402)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) #define WACOM_HID_WD_ACCELEROMETER_Z    (WACOM_HID_UP_WACOMDIGITIZER | 0x0403)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) #define WACOM_HID_WD_BATTERY_CHARGING   (WACOM_HID_UP_WACOMDIGITIZER | 0x0404)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #define WACOM_HID_WD_TOUCHONOFF         (WACOM_HID_UP_WACOMDIGITIZER | 0x0454)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) #define WACOM_HID_WD_BATTERY_LEVEL      (WACOM_HID_UP_WACOMDIGITIZER | 0x043b)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) #define WACOM_HID_WD_EXPRESSKEY00       (WACOM_HID_UP_WACOMDIGITIZER | 0x0910)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) #define WACOM_HID_WD_EXPRESSKEYCAP00    (WACOM_HID_UP_WACOMDIGITIZER | 0x0940)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) #define WACOM_HID_WD_MODE_CHANGE        (WACOM_HID_UP_WACOMDIGITIZER | 0x0980)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) #define WACOM_HID_WD_MUTE_DEVICE        (WACOM_HID_UP_WACOMDIGITIZER | 0x0981)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) #define WACOM_HID_WD_CONTROLPANEL       (WACOM_HID_UP_WACOMDIGITIZER | 0x0982)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) #define WACOM_HID_WD_ONSCREEN_KEYBOARD  (WACOM_HID_UP_WACOMDIGITIZER | 0x0983)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) #define WACOM_HID_WD_BUTTONCONFIG       (WACOM_HID_UP_WACOMDIGITIZER | 0x0986)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) #define WACOM_HID_WD_BUTTONHOME         (WACOM_HID_UP_WACOMDIGITIZER | 0x0990)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) #define WACOM_HID_WD_BUTTONUP           (WACOM_HID_UP_WACOMDIGITIZER | 0x0991)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #define WACOM_HID_WD_BUTTONDOWN         (WACOM_HID_UP_WACOMDIGITIZER | 0x0992)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) #define WACOM_HID_WD_BUTTONLEFT         (WACOM_HID_UP_WACOMDIGITIZER | 0x0993)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) #define WACOM_HID_WD_BUTTONRIGHT        (WACOM_HID_UP_WACOMDIGITIZER | 0x0994)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) #define WACOM_HID_WD_BUTTONCENTER       (WACOM_HID_UP_WACOMDIGITIZER | 0x0995)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) #define WACOM_HID_WD_FINGERWHEEL        (WACOM_HID_UP_WACOMDIGITIZER | 0x0d03)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) #define WACOM_HID_WD_OFFSETLEFT         (WACOM_HID_UP_WACOMDIGITIZER | 0x0d30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #define WACOM_HID_WD_OFFSETTOP          (WACOM_HID_UP_WACOMDIGITIZER | 0x0d31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) #define WACOM_HID_WD_OFFSETRIGHT        (WACOM_HID_UP_WACOMDIGITIZER | 0x0d32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #define WACOM_HID_WD_OFFSETBOTTOM       (WACOM_HID_UP_WACOMDIGITIZER | 0x0d33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #define WACOM_HID_WD_DATAMODE           (WACOM_HID_UP_WACOMDIGITIZER | 0x1002)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define WACOM_HID_WD_DIGITIZERINFO      (WACOM_HID_UP_WACOMDIGITIZER | 0x1013)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) #define WACOM_HID_WD_TOUCH_RING_SETTING (WACOM_HID_UP_WACOMDIGITIZER | 0x1032)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) #define WACOM_HID_UP_G9                 0xff090000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) #define WACOM_HID_G9_PEN                (WACOM_HID_UP_G9 | 0x02)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) #define WACOM_HID_G9_TOUCHSCREEN        (WACOM_HID_UP_G9 | 0x11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) #define WACOM_HID_UP_G11                0xff110000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) #define WACOM_HID_G11_PEN               (WACOM_HID_UP_G11 | 0x02)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) #define WACOM_HID_G11_TOUCHSCREEN       (WACOM_HID_UP_G11 | 0x11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) #define WACOM_HID_UP_WACOMTOUCH         0xff000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) #define WACOM_HID_WT_TOUCHSCREEN        (WACOM_HID_UP_WACOMTOUCH | 0x04)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) #define WACOM_HID_WT_TOUCHPAD           (WACOM_HID_UP_WACOMTOUCH | 0x05)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) #define WACOM_HID_WT_CONTACTMAX         (WACOM_HID_UP_WACOMTOUCH | 0x55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) #define WACOM_HID_WT_SERIALNUMBER       (WACOM_HID_UP_WACOMTOUCH | 0x5b)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) #define WACOM_HID_WT_X                  (WACOM_HID_UP_WACOMTOUCH | 0x130)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) #define WACOM_HID_WT_Y                  (WACOM_HID_UP_WACOMTOUCH | 0x131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) #define WACOM_HID_WT_REPORT_VALID       (WACOM_HID_UP_WACOMTOUCH | 0x1d0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) #define WACOM_BATTERY_USAGE(f)	(((f)->hid == HID_DG_BATTERYSTRENGTH) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 				 ((f)->hid == WACOM_HID_WD_BATTERY_CHARGING) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 				 ((f)->hid == WACOM_HID_WD_BATTERY_LEVEL))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) #define WACOM_PAD_FIELD(f)	(((f)->physical == HID_DG_TABLETFUNCTIONKEY) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 				 ((f)->physical == WACOM_HID_WD_DIGITIZERFNKEYS) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 				 ((f)->physical == WACOM_HID_WD_DIGITIZERINFO))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) #define WACOM_PEN_FIELD(f)	(((f)->logical == HID_DG_STYLUS) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 				 ((f)->physical == HID_DG_STYLUS) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 				 ((f)->physical == HID_DG_PEN) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 				 ((f)->application == HID_DG_PEN) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 				 ((f)->application == HID_DG_DIGITIZER) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 				 ((f)->application == WACOM_HID_WD_PEN) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 				 ((f)->application == WACOM_HID_WD_DIGITIZER) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 				 ((f)->application == WACOM_HID_G9_PEN) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 				 ((f)->application == WACOM_HID_G11_PEN))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) #define WACOM_FINGER_FIELD(f)	(((f)->logical == HID_DG_FINGER) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 				 ((f)->physical == HID_DG_FINGER) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 				 ((f)->application == HID_DG_TOUCHSCREEN) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 				 ((f)->application == WACOM_HID_G9_TOUCHSCREEN) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 				 ((f)->application == WACOM_HID_G11_TOUCHSCREEN) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 				 ((f)->application == WACOM_HID_WT_TOUCHPAD) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 				 ((f)->application == HID_DG_TOUCHPAD))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) #define WACOM_DIRECT_DEVICE(f)	(((f)->application == HID_DG_TOUCHSCREEN) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 				 ((f)->application == WACOM_HID_WT_TOUCHSCREEN) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 				 ((f)->application == HID_DG_PEN) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 				 ((f)->application == WACOM_HID_WD_PEN))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) enum {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 	PENPARTNER = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 	GRAPHIRE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 	GRAPHIRE_BT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 	WACOM_G4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 	PTU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 	PL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 	DTU,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 	DTUS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 	DTUSX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 	INTUOS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) 	INTUOS3S,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) 	INTUOS3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 	INTUOS3L,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 	INTUOS4S,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) 	INTUOS4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 	INTUOS4WL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 	INTUOS4L,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 	INTUOS5S,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 	INTUOS5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 	INTUOS5L,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 	INTUOSPS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 	INTUOSPM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 	INTUOSPL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 	INTUOSP2_BT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 	INTUOSP2S_BT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) 	INTUOSHT3_BT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 	WACOM_21UX2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 	WACOM_22HD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 	DTK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 	WACOM_24HD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) 	WACOM_27QHD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 	CINTIQ_HYBRID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) 	CINTIQ_COMPANION_2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) 	CINTIQ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) 	WACOM_BEE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 	WACOM_13HD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) 	WACOM_MO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 	BAMBOO_PEN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) 	INTUOSHT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) 	INTUOSHT2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) 	BAMBOO_TOUCH,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) 	BAMBOO_PT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) 	WACOM_24HDT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) 	WACOM_27QHDT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) 	BAMBOO_PAD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) 	WIRELESS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) 	REMOTE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) 	TABLETPC,   /* add new TPC below */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) 	TABLETPCE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) 	TABLETPC2FG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) 	MTSCREEN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) 	MTTPC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) 	MTTPC_B,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) 	HID_GENERIC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) 	MAX_TYPE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) struct wacom_features {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) 	const char *name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) 	int x_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) 	int y_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) 	int pressure_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) 	int distance_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) 	int type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) 	int x_resolution;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) 	int y_resolution;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) 	int numbered_buttons;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) 	int offset_left;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) 	int offset_right;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) 	int offset_top;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) 	int offset_bottom;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) 	int device_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) 	int x_phy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) 	int y_phy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) 	unsigned unit;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) 	int unitExpo;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) 	int x_fuzz;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) 	int y_fuzz;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) 	int pressure_fuzz;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) 	int distance_fuzz;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) 	int tilt_fuzz;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) 	unsigned quirks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) 	unsigned touch_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) 	int oVid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) 	int oPid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) 	int pktlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) 	bool check_for_hid_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) 	int hid_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) struct wacom_shared {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) 	bool stylus_in_proximity;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) 	bool touch_down;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) 	/* for wireless device to access USB interfaces */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) 	unsigned touch_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) 	int type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) 	struct input_dev *touch_input;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) 	struct hid_device *pen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) 	struct hid_device *touch;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) 	bool has_mute_touch_switch;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) 	bool is_touch_on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) struct hid_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) 	__s16 inputmode;	/* InputMode HID feature, -1 if non-existent */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) 	__s16 inputmode_index;	/* InputMode HID feature index in the report */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) 	bool sense_state;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) 	bool inrange_state;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 	bool invert_state;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) 	bool tipswitch;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 	bool barrelswitch;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) 	bool barrelswitch2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) 	bool confidence;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) 	int x;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) 	int y;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) 	int pressure;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) 	int width;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) 	int height;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) 	int id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) 	int cc_report;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) 	int cc_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) 	int cc_value_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) 	int last_slot_field;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) 	int num_expected;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) 	int num_received;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) 	int bat_status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) 	int battery_capacity;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) 	int bat_charging;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) 	int bat_connected;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) 	int ps_connected;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) 	bool pad_input_event_flag;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) struct wacom_remote_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) 	struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) 		u32 serial;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) 		bool connected;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) 	} remote[WACOM_MAX_REMOTES];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) struct wacom_wac {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) 	char name[WACOM_NAME_MAX];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) 	char pen_name[WACOM_NAME_MAX];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) 	char touch_name[WACOM_NAME_MAX];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) 	char pad_name[WACOM_NAME_MAX];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) 	unsigned char data[WACOM_PKGLEN_MAX];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) 	int tool[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) 	int id[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) 	__u64 serial[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) 	bool reporting_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) 	struct wacom_features features;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) 	struct wacom_shared *shared;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) 	struct input_dev *pen_input;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) 	struct input_dev *touch_input;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) 	struct input_dev *pad_input;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) 	struct kfifo_rec_ptr_2 *pen_fifo;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) 	int pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) 	int num_contacts_left;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) 	u8 bt_features;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) 	u8 bt_high_speed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) 	int mode_report;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) 	int mode_value;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) 	struct hid_data hid_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) 	bool has_mute_touch_switch;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) 	bool has_mode_change;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) 	bool is_direct_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) 	bool is_invalid_bt_frame;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) #endif