wacom_wac.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. /*
  2. * drivers/input/tablet/wacom_wac.h
  3. *
  4. * This program is free software; you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License as published by
  6. * the Free Software Foundation; either version 2 of the License, or
  7. * (at your option) any later version.
  8. */
  9. #ifndef WACOM_WAC_H
  10. #define WACOM_WAC_H
  11. #include <linux/types.h>
  12. /* maximum packet length for USB devices */
  13. #define WACOM_PKGLEN_MAX 68
  14. #define WACOM_NAME_MAX 64
  15. /* packet length for individual models */
  16. #define WACOM_PKGLEN_PENPRTN 7
  17. #define WACOM_PKGLEN_GRAPHIRE 8
  18. #define WACOM_PKGLEN_BBFUN 9
  19. #define WACOM_PKGLEN_INTUOS 10
  20. #define WACOM_PKGLEN_TPC1FG 5
  21. #define WACOM_PKGLEN_TPC1FG_B 10
  22. #define WACOM_PKGLEN_TPC2FG 14
  23. #define WACOM_PKGLEN_BBTOUCH 20
  24. #define WACOM_PKGLEN_BBTOUCH3 64
  25. #define WACOM_PKGLEN_BBPEN 10
  26. #define WACOM_PKGLEN_WIRELESS 32
  27. #define WACOM_PKGLEN_MTOUCH 62
  28. #define WACOM_PKGLEN_MTTPC 40
  29. #define WACOM_PKGLEN_DTUS 68
  30. #define WACOM_PKGLEN_PENABLED 8
  31. /* wacom data size per MT contact */
  32. #define WACOM_BYTES_PER_MT_PACKET 11
  33. #define WACOM_BYTES_PER_24HDT_PACKET 14
  34. /* device IDs */
  35. #define STYLUS_DEVICE_ID 0x02
  36. #define TOUCH_DEVICE_ID 0x03
  37. #define CURSOR_DEVICE_ID 0x06
  38. #define ERASER_DEVICE_ID 0x0A
  39. #define PAD_DEVICE_ID 0x0F
  40. /* wacom data packet report IDs */
  41. #define WACOM_REPORT_PENABLED 2
  42. #define WACOM_REPORT_PENABLED_BT 3
  43. #define WACOM_REPORT_INTUOSREAD 5
  44. #define WACOM_REPORT_INTUOSWRITE 6
  45. #define WACOM_REPORT_INTUOSPAD 12
  46. #define WACOM_REPORT_INTUOS5PAD 3
  47. #define WACOM_REPORT_DTUSPAD 21
  48. #define WACOM_REPORT_TPC1FG 6
  49. #define WACOM_REPORT_TPC2FG 13
  50. #define WACOM_REPORT_TPCMT 13
  51. #define WACOM_REPORT_TPCMT2 3
  52. #define WACOM_REPORT_TPCHID 15
  53. #define WACOM_REPORT_TPCST 16
  54. #define WACOM_REPORT_DTUS 17
  55. #define WACOM_REPORT_TPC1FGE 18
  56. #define WACOM_REPORT_24HDT 1
  57. #define WACOM_REPORT_WL 128
  58. #define WACOM_REPORT_USB 192
  59. /* device quirks */
  60. #define WACOM_QUIRK_MULTI_INPUT 0x0001
  61. #define WACOM_QUIRK_BBTOUCH_LOWRES 0x0002
  62. #define WACOM_QUIRK_NO_INPUT 0x0004
  63. #define WACOM_QUIRK_MONITOR 0x0008
  64. #define WACOM_QUIRK_BATTERY 0x0010
  65. enum {
  66. PENPARTNER = 0,
  67. GRAPHIRE,
  68. GRAPHIRE_BT,
  69. WACOM_G4,
  70. PTU,
  71. PL,
  72. DTU,
  73. DTUS,
  74. INTUOS,
  75. INTUOS3S,
  76. INTUOS3,
  77. INTUOS3L,
  78. INTUOS4S,
  79. INTUOS4,
  80. INTUOS4WL,
  81. INTUOS4L,
  82. INTUOS5S,
  83. INTUOS5,
  84. INTUOS5L,
  85. INTUOSPS,
  86. INTUOSPM,
  87. INTUOSPL,
  88. INTUOSHT,
  89. WACOM_21UX2,
  90. WACOM_22HD,
  91. DTK,
  92. WACOM_24HD,
  93. CINTIQ_HYBRID,
  94. CINTIQ,
  95. WACOM_BEE,
  96. WACOM_13HD,
  97. WACOM_MO,
  98. WIRELESS,
  99. BAMBOO_PT,
  100. WACOM_24HDT,
  101. TABLETPC, /* add new TPC below */
  102. TABLETPCE,
  103. TABLETPC2FG,
  104. MTSCREEN,
  105. MTTPC,
  106. MTTPC_B,
  107. HID_GENERIC,
  108. MAX_TYPE
  109. };
  110. struct wacom_features {
  111. const char *name;
  112. int x_max;
  113. int y_max;
  114. int pressure_max;
  115. int distance_max;
  116. int type;
  117. int x_resolution;
  118. int y_resolution;
  119. int x_min;
  120. int y_min;
  121. int device_type;
  122. int x_phy;
  123. int y_phy;
  124. unsigned unit;
  125. int unitExpo;
  126. int x_fuzz;
  127. int y_fuzz;
  128. int pressure_fuzz;
  129. int distance_fuzz;
  130. unsigned quirks;
  131. unsigned touch_max;
  132. int oVid;
  133. int oPid;
  134. int pktlen;
  135. bool check_for_hid_type;
  136. int hid_type;
  137. };
  138. struct wacom_shared {
  139. bool stylus_in_proximity;
  140. bool touch_down;
  141. /* for wireless device to access USB interfaces */
  142. unsigned touch_max;
  143. int type;
  144. struct input_dev *touch_input;
  145. };
  146. struct hid_data {
  147. __s16 inputmode; /* InputMode HID feature, -1 if non-existent */
  148. __s16 inputmode_index; /* InputMode HID feature index in the report */
  149. bool inrange_state;
  150. bool invert_state;
  151. bool tipswitch;
  152. int x;
  153. int y;
  154. int pressure;
  155. int width;
  156. int height;
  157. int id;
  158. };
  159. struct wacom_wac {
  160. char name[WACOM_NAME_MAX];
  161. char pad_name[WACOM_NAME_MAX];
  162. char bat_name[WACOM_NAME_MAX];
  163. char ac_name[WACOM_NAME_MAX];
  164. unsigned char data[WACOM_PKGLEN_MAX];
  165. int tool[2];
  166. int id[2];
  167. __u32 serial[2];
  168. struct wacom_features features;
  169. struct wacom_shared *shared;
  170. struct input_dev *input;
  171. struct input_dev *pad_input;
  172. bool input_registered;
  173. int pid;
  174. int battery_capacity;
  175. int num_contacts_left;
  176. int bat_charging;
  177. int ps_connected;
  178. u8 bt_features;
  179. u8 bt_high_speed;
  180. struct hid_data hid_data;
  181. };
  182. #endif