wacom_wac.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  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 64
  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_TPC2FG 14
  22. #define WACOM_PKGLEN_BBTOUCH 20
  23. #define WACOM_PKGLEN_BBTOUCH3 64
  24. #define WACOM_PKGLEN_BBPEN 10
  25. #define WACOM_PKGLEN_WIRELESS 32
  26. #define WACOM_PKGLEN_MTOUCH 62
  27. #define WACOM_PKGLEN_MTTPC 40
  28. /* wacom data size per MT contact */
  29. #define WACOM_BYTES_PER_MT_PACKET 11
  30. #define WACOM_BYTES_PER_24HDT_PACKET 14
  31. /* device IDs */
  32. #define STYLUS_DEVICE_ID 0x02
  33. #define TOUCH_DEVICE_ID 0x03
  34. #define CURSOR_DEVICE_ID 0x06
  35. #define ERASER_DEVICE_ID 0x0A
  36. #define PAD_DEVICE_ID 0x0F
  37. /* wacom data packet report IDs */
  38. #define WACOM_REPORT_PENABLED 2
  39. #define WACOM_REPORT_INTUOSREAD 5
  40. #define WACOM_REPORT_INTUOSWRITE 6
  41. #define WACOM_REPORT_INTUOSPAD 12
  42. #define WACOM_REPORT_INTUOS5PAD 3
  43. #define WACOM_REPORT_TPC1FG 6
  44. #define WACOM_REPORT_TPC2FG 13
  45. #define WACOM_REPORT_TPCMT 13
  46. #define WACOM_REPORT_TPCHID 15
  47. #define WACOM_REPORT_TPCST 16
  48. #define WACOM_REPORT_TPC1FGE 18
  49. #define WACOM_REPORT_24HDT 1
  50. /* device quirks */
  51. #define WACOM_QUIRK_MULTI_INPUT 0x0001
  52. #define WACOM_QUIRK_BBTOUCH_LOWRES 0x0002
  53. #define WACOM_QUIRK_NO_INPUT 0x0004
  54. #define WACOM_QUIRK_MONITOR 0x0008
  55. enum {
  56. PENPARTNER = 0,
  57. GRAPHIRE,
  58. WACOM_G4,
  59. PTU,
  60. PL,
  61. DTU,
  62. INTUOS,
  63. INTUOS3S,
  64. INTUOS3,
  65. INTUOS3L,
  66. INTUOS4S,
  67. INTUOS4,
  68. INTUOS4L,
  69. INTUOS5S,
  70. INTUOS5,
  71. INTUOS5L,
  72. INTUOSPS,
  73. INTUOSPM,
  74. INTUOSPL,
  75. WACOM_21UX2,
  76. WACOM_22HD,
  77. DTK,
  78. WACOM_24HD,
  79. CINTIQ_HYBRID,
  80. CINTIQ,
  81. WACOM_BEE,
  82. WACOM_13HD,
  83. WACOM_MO,
  84. WIRELESS,
  85. BAMBOO_PT,
  86. WACOM_24HDT,
  87. TABLETPC, /* add new TPC below */
  88. TABLETPCE,
  89. TABLETPC2FG,
  90. MTSCREEN,
  91. MTTPC,
  92. MAX_TYPE
  93. };
  94. struct wacom_features {
  95. const char *name;
  96. int pktlen;
  97. int x_max;
  98. int y_max;
  99. int pressure_max;
  100. int distance_max;
  101. int type;
  102. int x_resolution;
  103. int y_resolution;
  104. int device_type;
  105. int x_phy;
  106. int y_phy;
  107. unsigned char unit;
  108. unsigned char unitExpo;
  109. int x_fuzz;
  110. int y_fuzz;
  111. int pressure_fuzz;
  112. int distance_fuzz;
  113. unsigned quirks;
  114. unsigned touch_max;
  115. int oVid;
  116. int oPid;
  117. };
  118. struct wacom_shared {
  119. bool stylus_in_proximity;
  120. bool touch_down;
  121. };
  122. struct wacom_wac {
  123. char name[WACOM_NAME_MAX];
  124. unsigned char *data;
  125. int tool[2];
  126. int id[2];
  127. __u32 serial[2];
  128. struct wacom_features features;
  129. struct wacom_shared *shared;
  130. struct input_dev *input;
  131. int pid;
  132. int battery_capacity;
  133. int num_contacts_left;
  134. };
  135. #endif