diff mbox series

[v11,2/4] HID: wacom: Add support for the AG14 Wacom device

Message ID 20211009114313.17967-2-alistair@alistair23.me (mailing list archive)
State New, archived
Headers show
Series [v11,1/4] HID: wacom_sys: Add support for flipping the data values | expand

Commit Message

Alistair Francis Oct. 9, 2021, 11:43 a.m. UTC
Add support for the AG14 Wacom digitiser connected via I2C. This is used
on the reMarkable2 tablet.

The vendor ID is different then the usual Wacom vendor ID, and I'm not
sure why. Otherwise we can just use the generic HID type.

Signed-off-by: Alistair Francis <alistair@alistair23.me>
---
 drivers/hid/hid-core.c  | 1 +
 drivers/hid/hid-ids.h   | 1 +
 drivers/hid/wacom_wac.c | 8 ++++++++
 3 files changed, 10 insertions(+)

Comments

kernel test robot Oct. 9, 2021, 1:41 p.m. UTC | #1
Hi Alistair,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on hid/for-next]
[also build test ERROR on robh/for-next shawnguo/for-next linus/master v5.15-rc4 next-20211008]
[cannot apply to dtor-input/next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Alistair-Francis/HID-wacom_sys-Add-support-for-flipping-the-data-values/20211009-194419
base:   https://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git for-next
config: i386-randconfig-r015-20211009 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 30caca39f401ae17927439c0a0bd6d1b1916dd6a)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/b41e12004527538eaeaa1fd929a751c9504a32a0
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Alistair-Francis/HID-wacom_sys-Add-support-for-flipping-the-data-values/20211009-194419
        git checkout b41e12004527538eaeaa1fd929a751c9504a32a0
        # save the attached .config to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/hid/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/hid/wacom_wac.c:4900:4: error: use of undeclared identifier 'USB_VENDOR_ID_I2C_WACOM'
           { I2C_AG14_DEVICE_WACOM(0x95) },
             ^
   drivers/hid/wacom_wac.c:4836:39: note: expanded from macro 'I2C_AG14_DEVICE_WACOM'
           HID_DEVICE(BUS_I2C, HID_GROUP_WACOM, USB_VENDOR_ID_I2C_WACOM, prod),\
                                                ^
>> drivers/hid/wacom_wac.c:5010:1: error: definition of variable with array type needs an explicit size or an initializer
   MODULE_DEVICE_TABLE(hid, wacom_ids);
   ^
   include/linux/module.h:244:21: note: expanded from macro 'MODULE_DEVICE_TABLE'
   extern typeof(name) __mod_##type##__##name##_device_table               \
                       ^
   <scratch space>:160:1: note: expanded from here
   __mod_hid__wacom_ids_device_table
   ^
   2 errors generated.


vim +/USB_VENDOR_ID_I2C_WACOM +4900 drivers/hid/wacom_wac.c

  4275	
  4276	static const struct wacom_features wacom_features_0x00 =
  4277		{ "Wacom Penpartner", 5040, 3780, 255, 0,
  4278		  PENPARTNER, WACOM_PENPRTN_RES, WACOM_PENPRTN_RES };
  4279	static const struct wacom_features wacom_features_0x10 =
  4280		{ "Wacom Graphire", 10206, 7422, 511, 63,
  4281		  GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4282	static const struct wacom_features wacom_features_0x81 =
  4283		{ "Wacom Graphire BT", 16704, 12064, 511, 32,
  4284		  GRAPHIRE_BT, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES, 2 };
  4285	static const struct wacom_features wacom_features_0x11 =
  4286		{ "Wacom Graphire2 4x5", 10206, 7422, 511, 63,
  4287		  GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4288	static const struct wacom_features wacom_features_0x12 =
  4289		{ "Wacom Graphire2 5x7", 13918, 10206, 511, 63,
  4290		  GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4291	static const struct wacom_features wacom_features_0x13 =
  4292		{ "Wacom Graphire3", 10208, 7424, 511, 63,
  4293		  GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4294	static const struct wacom_features wacom_features_0x14 =
  4295		{ "Wacom Graphire3 6x8", 16704, 12064, 511, 63,
  4296		  GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4297	static const struct wacom_features wacom_features_0x15 =
  4298		{ "Wacom Graphire4 4x5", 10208, 7424, 511, 63,
  4299		  WACOM_G4, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4300	static const struct wacom_features wacom_features_0x16 =
  4301		{ "Wacom Graphire4 6x8", 16704, 12064, 511, 63,
  4302		  WACOM_G4, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4303	static const struct wacom_features wacom_features_0x17 =
  4304		{ "Wacom BambooFun 4x5", 14760, 9225, 511, 63,
  4305		  WACOM_MO, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4306	static const struct wacom_features wacom_features_0x18 =
  4307		{ "Wacom BambooFun 6x8", 21648, 13530, 511, 63,
  4308		  WACOM_MO, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4309	static const struct wacom_features wacom_features_0x19 =
  4310		{ "Wacom Bamboo1 Medium", 16704, 12064, 511, 63,
  4311		  GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4312	static const struct wacom_features wacom_features_0x60 =
  4313		{ "Wacom Volito", 5104, 3712, 511, 63,
  4314		  GRAPHIRE, WACOM_VOLITO_RES, WACOM_VOLITO_RES };
  4315	static const struct wacom_features wacom_features_0x61 =
  4316		{ "Wacom PenStation2", 3250, 2320, 255, 63,
  4317		  GRAPHIRE, WACOM_VOLITO_RES, WACOM_VOLITO_RES };
  4318	static const struct wacom_features wacom_features_0x62 =
  4319		{ "Wacom Volito2 4x5", 5104, 3712, 511, 63,
  4320		  GRAPHIRE, WACOM_VOLITO_RES, WACOM_VOLITO_RES };
  4321	static const struct wacom_features wacom_features_0x63 =
  4322		{ "Wacom Volito2 2x3", 3248, 2320, 511, 63,
  4323		  GRAPHIRE, WACOM_VOLITO_RES, WACOM_VOLITO_RES };
  4324	static const struct wacom_features wacom_features_0x64 =
  4325		{ "Wacom PenPartner2", 3250, 2320, 511, 63,
  4326		  GRAPHIRE, WACOM_VOLITO_RES, WACOM_VOLITO_RES };
  4327	static const struct wacom_features wacom_features_0x65 =
  4328		{ "Wacom Bamboo", 14760, 9225, 511, 63,
  4329		  WACOM_MO, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4330	static const struct wacom_features wacom_features_0x69 =
  4331		{ "Wacom Bamboo1", 5104, 3712, 511, 63,
  4332		  GRAPHIRE, WACOM_PENPRTN_RES, WACOM_PENPRTN_RES };
  4333	static const struct wacom_features wacom_features_0x6A =
  4334		{ "Wacom Bamboo1 4x6", 14760, 9225, 1023, 63,
  4335		  GRAPHIRE, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4336	static const struct wacom_features wacom_features_0x6B =
  4337		{ "Wacom Bamboo1 5x8", 21648, 13530, 1023, 63,
  4338		  GRAPHIRE, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4339	static const struct wacom_features wacom_features_0x20 =
  4340		{ "Wacom Intuos 4x5", 12700, 10600, 1023, 31,
  4341		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4342	static const struct wacom_features wacom_features_0x21 =
  4343		{ "Wacom Intuos 6x8", 20320, 16240, 1023, 31,
  4344		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4345	static const struct wacom_features wacom_features_0x22 =
  4346		{ "Wacom Intuos 9x12", 30480, 24060, 1023, 31,
  4347		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4348	static const struct wacom_features wacom_features_0x23 =
  4349		{ "Wacom Intuos 12x12", 30480, 31680, 1023, 31,
  4350		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4351	static const struct wacom_features wacom_features_0x24 =
  4352		{ "Wacom Intuos 12x18", 45720, 31680, 1023, 31,
  4353		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4354	static const struct wacom_features wacom_features_0x30 =
  4355		{ "Wacom PL400", 5408, 4056, 255, 0,
  4356		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4357	static const struct wacom_features wacom_features_0x31 =
  4358		{ "Wacom PL500", 6144, 4608, 255, 0,
  4359		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4360	static const struct wacom_features wacom_features_0x32 =
  4361		{ "Wacom PL600", 6126, 4604, 255, 0,
  4362		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4363	static const struct wacom_features wacom_features_0x33 =
  4364		{ "Wacom PL600SX", 6260, 5016, 255, 0,
  4365		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4366	static const struct wacom_features wacom_features_0x34 =
  4367		{ "Wacom PL550", 6144, 4608, 511, 0,
  4368		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4369	static const struct wacom_features wacom_features_0x35 =
  4370		{ "Wacom PL800", 7220, 5780, 511, 0,
  4371		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4372	static const struct wacom_features wacom_features_0x37 =
  4373		{ "Wacom PL700", 6758, 5406, 511, 0,
  4374		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4375	static const struct wacom_features wacom_features_0x38 =
  4376		{ "Wacom PL510", 6282, 4762, 511, 0,
  4377		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4378	static const struct wacom_features wacom_features_0x39 =
  4379		{ "Wacom DTU710", 34080, 27660, 511, 0,
  4380		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4381	static const struct wacom_features wacom_features_0xC4 =
  4382		{ "Wacom DTF521", 6282, 4762, 511, 0,
  4383		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4384	static const struct wacom_features wacom_features_0xC0 =
  4385		{ "Wacom DTF720", 6858, 5506, 511, 0,
  4386		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4387	static const struct wacom_features wacom_features_0xC2 =
  4388		{ "Wacom DTF720a", 6858, 5506, 511, 0,
  4389		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4390	static const struct wacom_features wacom_features_0x03 =
  4391		{ "Wacom Cintiq Partner", 20480, 15360, 511, 0,
  4392		  PTU, WACOM_PL_RES, WACOM_PL_RES };
  4393	static const struct wacom_features wacom_features_0x41 =
  4394		{ "Wacom Intuos2 4x5", 12700, 10600, 1023, 31,
  4395		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4396	static const struct wacom_features wacom_features_0x42 =
  4397		{ "Wacom Intuos2 6x8", 20320, 16240, 1023, 31,
  4398		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4399	static const struct wacom_features wacom_features_0x43 =
  4400		{ "Wacom Intuos2 9x12", 30480, 24060, 1023, 31,
  4401		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4402	static const struct wacom_features wacom_features_0x44 =
  4403		{ "Wacom Intuos2 12x12", 30480, 31680, 1023, 31,
  4404		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4405	static const struct wacom_features wacom_features_0x45 =
  4406		{ "Wacom Intuos2 12x18", 45720, 31680, 1023, 31,
  4407		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4408	static const struct wacom_features wacom_features_0xB0 =
  4409		{ "Wacom Intuos3 4x5", 25400, 20320, 1023, 63,
  4410		  INTUOS3S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 4 };
  4411	static const struct wacom_features wacom_features_0xB1 =
  4412		{ "Wacom Intuos3 6x8", 40640, 30480, 1023, 63,
  4413		  INTUOS3, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 8 };
  4414	static const struct wacom_features wacom_features_0xB2 =
  4415		{ "Wacom Intuos3 9x12", 60960, 45720, 1023, 63,
  4416		  INTUOS3, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 8 };
  4417	static const struct wacom_features wacom_features_0xB3 =
  4418		{ "Wacom Intuos3 12x12", 60960, 60960, 1023, 63,
  4419		  INTUOS3L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 8 };
  4420	static const struct wacom_features wacom_features_0xB4 =
  4421		{ "Wacom Intuos3 12x19", 97536, 60960, 1023, 63,
  4422		  INTUOS3L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 8 };
  4423	static const struct wacom_features wacom_features_0xB5 =
  4424		{ "Wacom Intuos3 6x11", 54204, 31750, 1023, 63,
  4425		  INTUOS3, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 8 };
  4426	static const struct wacom_features wacom_features_0xB7 =
  4427		{ "Wacom Intuos3 4x6", 31496, 19685, 1023, 63,
  4428		  INTUOS3S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 4 };
  4429	static const struct wacom_features wacom_features_0xB8 =
  4430		{ "Wacom Intuos4 4x6", 31496, 19685, 2047, 63,
  4431		  INTUOS4S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 7 };
  4432	static const struct wacom_features wacom_features_0xB9 =
  4433		{ "Wacom Intuos4 6x9", 44704, 27940, 2047, 63,
  4434		  INTUOS4, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9 };
  4435	static const struct wacom_features wacom_features_0xBA =
  4436		{ "Wacom Intuos4 8x13", 65024, 40640, 2047, 63,
  4437		  INTUOS4L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9 };
  4438	static const struct wacom_features wacom_features_0xBB =
  4439		{ "Wacom Intuos4 12x19", 97536, 60960, 2047, 63,
  4440		  INTUOS4L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9 };
  4441	static const struct wacom_features wacom_features_0xBC =
  4442		{ "Wacom Intuos4 WL", 40640, 25400, 2047, 63,
  4443		  INTUOS4, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9 };
  4444	static const struct wacom_features wacom_features_0xBD =
  4445		{ "Wacom Intuos4 WL", 40640, 25400, 2047, 63,
  4446		  INTUOS4WL, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9 };
  4447	static const struct wacom_features wacom_features_0x26 =
  4448		{ "Wacom Intuos5 touch S", 31496, 19685, 2047, 63,
  4449		  INTUOS5S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 7, .touch_max = 16 };
  4450	static const struct wacom_features wacom_features_0x27 =
  4451		{ "Wacom Intuos5 touch M", 44704, 27940, 2047, 63,
  4452		  INTUOS5, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9, .touch_max = 16 };
  4453	static const struct wacom_features wacom_features_0x28 =
  4454		{ "Wacom Intuos5 touch L", 65024, 40640, 2047, 63,
  4455		  INTUOS5L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9, .touch_max = 16 };
  4456	static const struct wacom_features wacom_features_0x29 =
  4457		{ "Wacom Intuos5 S", 31496, 19685, 2047, 63,
  4458		  INTUOS5S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 7 };
  4459	static const struct wacom_features wacom_features_0x2A =
  4460		{ "Wacom Intuos5 M", 44704, 27940, 2047, 63,
  4461		  INTUOS5, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9 };
  4462	static const struct wacom_features wacom_features_0x314 =
  4463		{ "Wacom Intuos Pro S", 31496, 19685, 2047, 63,
  4464		  INTUOSPS, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 7, .touch_max = 16,
  4465		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4466	static const struct wacom_features wacom_features_0x315 =
  4467		{ "Wacom Intuos Pro M", 44704, 27940, 2047, 63,
  4468		  INTUOSPM, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9, .touch_max = 16,
  4469		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4470	static const struct wacom_features wacom_features_0x317 =
  4471		{ "Wacom Intuos Pro L", 65024, 40640, 2047, 63,
  4472		  INTUOSPL, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9, .touch_max = 16,
  4473		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4474	static const struct wacom_features wacom_features_0xF4 =
  4475		{ "Wacom Cintiq 24HD", 104480, 65600, 2047, 63,
  4476		  WACOM_24HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 16,
  4477		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4478		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET };
  4479	static const struct wacom_features wacom_features_0xF8 =
  4480		{ "Wacom Cintiq 24HD touch", 104480, 65600, 2047, 63, /* Pen */
  4481		  WACOM_24HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 16,
  4482		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4483		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4484		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0xf6 };
  4485	static const struct wacom_features wacom_features_0xF6 =
  4486		{ "Wacom Cintiq 24HD touch", .type = WACOM_24HDT, /* Touch */
  4487		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0xf8, .touch_max = 10,
  4488		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4489	static const struct wacom_features wacom_features_0x32A =
  4490		{ "Wacom Cintiq 27QHD", 120140, 67920, 2047, 63,
  4491		  WACOM_27QHD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 0,
  4492		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4493		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET };
  4494	static const struct wacom_features wacom_features_0x32B =
  4495		{ "Wacom Cintiq 27QHD touch", 120140, 67920, 2047, 63,
  4496		  WACOM_27QHD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 0,
  4497		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4498		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4499		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x32C };
  4500	static const struct wacom_features wacom_features_0x32C =
  4501		{ "Wacom Cintiq 27QHD touch", .type = WACOM_27QHDT,
  4502		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x32B, .touch_max = 10 };
  4503	static const struct wacom_features wacom_features_0x3F =
  4504		{ "Wacom Cintiq 21UX", 87200, 65600, 1023, 63,
  4505		  CINTIQ, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 8 };
  4506	static const struct wacom_features wacom_features_0xC5 =
  4507		{ "Wacom Cintiq 20WSX", 86680, 54180, 1023, 63,
  4508		  WACOM_BEE, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 10 };
  4509	static const struct wacom_features wacom_features_0xC6 =
  4510		{ "Wacom Cintiq 12WX", 53020, 33440, 1023, 63,
  4511		  WACOM_BEE, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 10 };
  4512	static const struct wacom_features wacom_features_0x304 =
  4513		{ "Wacom Cintiq 13HD", 59552, 33848, 1023, 63,
  4514		  WACOM_13HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9,
  4515		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4516		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET };
  4517	static const struct wacom_features wacom_features_0x333 =
  4518		{ "Wacom Cintiq 13HD touch", 59552, 33848, 2047, 63,
  4519		  WACOM_13HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9,
  4520		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4521		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4522		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x335 };
  4523	static const struct wacom_features wacom_features_0x335 =
  4524		{ "Wacom Cintiq 13HD touch", .type = WACOM_24HDT, /* Touch */
  4525		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x333, .touch_max = 10,
  4526		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4527	static const struct wacom_features wacom_features_0xC7 =
  4528		{ "Wacom DTU1931", 37832, 30305, 511, 0,
  4529		  PL, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4530	static const struct wacom_features wacom_features_0xCE =
  4531		{ "Wacom DTU2231", 47864, 27011, 511, 0,
  4532		  DTU, WACOM_INTUOS_RES, WACOM_INTUOS_RES,
  4533		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBMOUSE };
  4534	static const struct wacom_features wacom_features_0xF0 =
  4535		{ "Wacom DTU1631", 34623, 19553, 511, 0,
  4536		  DTU, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4537	static const struct wacom_features wacom_features_0xFB =
  4538		{ "Wacom DTU1031", 22096, 13960, 511, 0,
  4539		  DTUS, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4,
  4540		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET,
  4541		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET };
  4542	static const struct wacom_features wacom_features_0x32F =
  4543		{ "Wacom DTU1031X", 22672, 12928, 511, 0,
  4544		  DTUSX, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 0,
  4545		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET,
  4546		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET };
  4547	static const struct wacom_features wacom_features_0x336 =
  4548		{ "Wacom DTU1141", 23672, 13403, 1023, 0,
  4549		  DTUS, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4,
  4550		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET,
  4551		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET };
  4552	static const struct wacom_features wacom_features_0x57 =
  4553		{ "Wacom DTK2241", 95840, 54260, 2047, 63,
  4554		  DTK, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 6,
  4555		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4556		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET };
  4557	static const struct wacom_features wacom_features_0x59 = /* Pen */
  4558		{ "Wacom DTH2242", 95840, 54260, 2047, 63,
  4559		  DTK, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 6,
  4560		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4561		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4562		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x5D };
  4563	static const struct wacom_features wacom_features_0x5D = /* Touch */
  4564		{ "Wacom DTH2242",       .type = WACOM_24HDT,
  4565		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x59, .touch_max = 10,
  4566		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4567	static const struct wacom_features wacom_features_0xCC =
  4568		{ "Wacom Cintiq 21UX2", 87200, 65600, 2047, 63,
  4569		  WACOM_21UX2, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 18,
  4570		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4571		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET };
  4572	static const struct wacom_features wacom_features_0xFA =
  4573		{ "Wacom Cintiq 22HD", 95840, 54260, 2047, 63,
  4574		  WACOM_22HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 18,
  4575		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4576		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET };
  4577	static const struct wacom_features wacom_features_0x5B =
  4578		{ "Wacom Cintiq 22HDT", 95840, 54260, 2047, 63,
  4579		  WACOM_22HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 18,
  4580		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4581		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4582		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x5e };
  4583	static const struct wacom_features wacom_features_0x5E =
  4584		{ "Wacom Cintiq 22HDT", .type = WACOM_24HDT,
  4585		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x5b, .touch_max = 10,
  4586		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4587	static const struct wacom_features wacom_features_0x90 =
  4588		{ "Wacom ISDv4 90", 26202, 16325, 255, 0,
  4589		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; /* Pen-only */
  4590	static const struct wacom_features wacom_features_0x93 =
  4591		{ "Wacom ISDv4 93", 26202, 16325, 255, 0,
  4592		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 1 };
  4593	static const struct wacom_features wacom_features_0x97 =
  4594		{ "Wacom ISDv4 97", 26202, 16325, 511, 0,
  4595		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; /* Pen-only */
  4596	static const struct wacom_features wacom_features_0x9A =
  4597		{ "Wacom ISDv4 9A", 26202, 16325, 255, 0,
  4598		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 1 };
  4599	static const struct wacom_features wacom_features_0x9F =
  4600		{ "Wacom ISDv4 9F", 26202, 16325, 255, 0,
  4601		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 1 };
  4602	static const struct wacom_features wacom_features_0xE2 =
  4603		{ "Wacom ISDv4 E2", 26202, 16325, 255, 0,
  4604		  TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4605	static const struct wacom_features wacom_features_0xE3 =
  4606		{ "Wacom ISDv4 E3", 26202, 16325, 255, 0,
  4607		  TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4608	static const struct wacom_features wacom_features_0xE5 =
  4609		{ "Wacom ISDv4 E5", 26202, 16325, 255, 0,
  4610		  MTSCREEN, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4611	static const struct wacom_features wacom_features_0xE6 =
  4612		{ "Wacom ISDv4 E6", 27760, 15694, 255, 0,
  4613		  TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4614	static const struct wacom_features wacom_features_0xEC =
  4615		{ "Wacom ISDv4 EC", 25710, 14500, 255, 0,
  4616		  TABLETPC,    WACOM_INTUOS_RES, WACOM_INTUOS_RES }; /* Pen-only */
  4617	static const struct wacom_features wacom_features_0xED =
  4618		{ "Wacom ISDv4 ED", 26202, 16325, 255, 0,
  4619		  TABLETPCE, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 1 };
  4620	static const struct wacom_features wacom_features_0xEF =
  4621		{ "Wacom ISDv4 EF", 26202, 16325, 255, 0,
  4622		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; /* Pen-only */
  4623	static const struct wacom_features wacom_features_0x100 =
  4624		{ "Wacom ISDv4 100", 26202, 16325, 255, 0,
  4625		  MTTPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4626	static const struct wacom_features wacom_features_0x101 =
  4627		{ "Wacom ISDv4 101", 26202, 16325, 255, 0,
  4628		  MTTPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4629	static const struct wacom_features wacom_features_0x10D =
  4630		{ "Wacom ISDv4 10D", 26202, 16325, 255, 0,
  4631		  MTTPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4632	static const struct wacom_features wacom_features_0x10E =
  4633		{ "Wacom ISDv4 10E", 27760, 15694, 255, 0,
  4634		  MTTPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4635	static const struct wacom_features wacom_features_0x10F =
  4636		{ "Wacom ISDv4 10F", 27760, 15694, 255, 0,
  4637		  MTTPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4638	static const struct wacom_features wacom_features_0x116 =
  4639		{ "Wacom ISDv4 116", 26202, 16325, 255, 0,
  4640		  TABLETPCE, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 1 };
  4641	static const struct wacom_features wacom_features_0x12C =
  4642		{ "Wacom ISDv4 12C", 27848, 15752, 2047, 0,
  4643		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; /* Pen-only */
  4644	static const struct wacom_features wacom_features_0x4001 =
  4645		{ "Wacom ISDv4 4001", 26202, 16325, 255, 0,
  4646		  MTTPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4647	static const struct wacom_features wacom_features_0x4004 =
  4648		{ "Wacom ISDv4 4004", 11060, 6220, 255, 0,
  4649		  MTTPC_B, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4650	static const struct wacom_features wacom_features_0x5000 =
  4651		{ "Wacom ISDv4 5000", 27848, 15752, 1023, 0,
  4652		  MTTPC_B, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4653	static const struct wacom_features wacom_features_0x5002 =
  4654		{ "Wacom ISDv4 5002", 29576, 16724, 1023, 0,
  4655		  MTTPC_B, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4656	static const struct wacom_features wacom_features_0x47 =
  4657		{ "Wacom Intuos2 6x8", 20320, 16240, 1023, 31,
  4658		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4659	static const struct wacom_features wacom_features_0x84 =
  4660		{ "Wacom Wireless Receiver", .type = WIRELESS, .touch_max = 16 };
  4661	static const struct wacom_features wacom_features_0xD0 =
  4662		{ "Wacom Bamboo 2FG", 14720, 9200, 1023, 31,
  4663		  BAMBOO_TOUCH, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4664	static const struct wacom_features wacom_features_0xD1 =
  4665		{ "Wacom Bamboo 2FG 4x5", 14720, 9200, 1023, 31,
  4666		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4667	static const struct wacom_features wacom_features_0xD2 =
  4668		{ "Wacom Bamboo Craft", 14720, 9200, 1023, 31,
  4669		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4670	static const struct wacom_features wacom_features_0xD3 =
  4671		{ "Wacom Bamboo 2FG 6x8", 21648, 13700, 1023, 31,
  4672		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4673	static const struct wacom_features wacom_features_0xD4 =
  4674		{ "Wacom Bamboo Pen", 14720, 9200, 1023, 31,
  4675		  BAMBOO_PEN, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4676	static const struct wacom_features wacom_features_0xD5 =
  4677		{ "Wacom Bamboo Pen 6x8", 21648, 13700, 1023, 31,
  4678		  BAMBOO_PEN, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4679	static const struct wacom_features wacom_features_0xD6 =
  4680		{ "Wacom BambooPT 2FG 4x5", 14720, 9200, 1023, 31,
  4681		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4682	static const struct wacom_features wacom_features_0xD7 =
  4683		{ "Wacom BambooPT 2FG Small", 14720, 9200, 1023, 31,
  4684		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4685	static const struct wacom_features wacom_features_0xD8 =
  4686		{ "Wacom Bamboo Comic 2FG", 21648, 13700, 1023, 31,
  4687		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4688	static const struct wacom_features wacom_features_0xDA =
  4689		{ "Wacom Bamboo 2FG 4x5 SE", 14720, 9200, 1023, 31,
  4690		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4691	static const struct wacom_features wacom_features_0xDB =
  4692		{ "Wacom Bamboo 2FG 6x8 SE", 21648, 13700, 1023, 31,
  4693		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4694	static const struct wacom_features wacom_features_0xDD =
  4695	        { "Wacom Bamboo Connect", 14720, 9200, 1023, 31,
  4696	          BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4697	static const struct wacom_features wacom_features_0xDE =
  4698	        { "Wacom Bamboo 16FG 4x5", 14720, 9200, 1023, 31,
  4699		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 16 };
  4700	static const struct wacom_features wacom_features_0xDF =
  4701	        { "Wacom Bamboo 16FG 6x8", 21648, 13700, 1023, 31,
  4702		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 16 };
  4703	static const struct wacom_features wacom_features_0x300 =
  4704		{ "Wacom Bamboo One S", 14720, 9225, 1023, 31,
  4705		  BAMBOO_PEN, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4706	static const struct wacom_features wacom_features_0x301 =
  4707		{ "Wacom Bamboo One M", 21648, 13530, 1023, 31,
  4708		  BAMBOO_PEN, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4709	static const struct wacom_features wacom_features_0x302 =
  4710		{ "Wacom Intuos PT S", 15200, 9500, 1023, 31,
  4711		  INTUOSHT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 16,
  4712		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4713	static const struct wacom_features wacom_features_0x303 =
  4714		{ "Wacom Intuos PT M", 21600, 13500, 1023, 31,
  4715		  INTUOSHT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 16,
  4716		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4717	static const struct wacom_features wacom_features_0x30E =
  4718		{ "Wacom Intuos S", 15200, 9500, 1023, 31,
  4719		  INTUOSHT, WACOM_INTUOS_RES, WACOM_INTUOS_RES,
  4720		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4721	static const struct wacom_features wacom_features_0x6004 =
  4722		{ "ISD-V4", 12800, 8000, 255, 0,
  4723		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4724	static const struct wacom_features wacom_features_0x307 =
  4725		{ "Wacom ISDv5 307", 59552, 33848, 2047, 63,
  4726		  CINTIQ_HYBRID, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9,
  4727		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4728		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4729		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x309 };
  4730	static const struct wacom_features wacom_features_0x309 =
  4731		{ "Wacom ISDv5 309", .type = WACOM_24HDT, /* Touch */
  4732		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x0307, .touch_max = 10,
  4733		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4734	static const struct wacom_features wacom_features_0x30A =
  4735		{ "Wacom ISDv5 30A", 59552, 33848, 2047, 63,
  4736		  CINTIQ_HYBRID, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9,
  4737		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4738		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4739		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x30C };
  4740	static const struct wacom_features wacom_features_0x30C =
  4741		{ "Wacom ISDv5 30C", .type = WACOM_24HDT, /* Touch */
  4742		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x30A, .touch_max = 10,
  4743		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4744	static const struct wacom_features wacom_features_0x318 =
  4745		{ "Wacom USB Bamboo PAD", 4095, 4095, /* Touch */
  4746		  .type = BAMBOO_PAD, 35, 48, .touch_max = 4 };
  4747	static const struct wacom_features wacom_features_0x319 =
  4748		{ "Wacom Wireless Bamboo PAD", 4095, 4095, /* Touch */
  4749		  .type = BAMBOO_PAD, 35, 48, .touch_max = 4 };
  4750	static const struct wacom_features wacom_features_0x325 =
  4751		{ "Wacom ISDv5 325", 59552, 33848, 2047, 63,
  4752		  CINTIQ_COMPANION_2, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 11,
  4753		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4754		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4755		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x326 };
  4756	static const struct wacom_features wacom_features_0x326 = /* Touch */
  4757		{ "Wacom ISDv5 326", .type = HID_GENERIC, .oVid = USB_VENDOR_ID_WACOM,
  4758		  .oPid = 0x325 };
  4759	static const struct wacom_features wacom_features_0x323 =
  4760		{ "Wacom Intuos P M", 21600, 13500, 1023, 31,
  4761		  INTUOSHT, WACOM_INTUOS_RES, WACOM_INTUOS_RES,
  4762		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4763	static const struct wacom_features wacom_features_0x331 =
  4764		{ "Wacom Express Key Remote", .type = REMOTE,
  4765		  .numbered_buttons = 18, .check_for_hid_type = true,
  4766		  .hid_type = HID_TYPE_USBNONE };
  4767	static const struct wacom_features wacom_features_0x33B =
  4768		{ "Wacom Intuos S 2", 15200, 9500, 2047, 63,
  4769		  INTUOSHT2, WACOM_INTUOS_RES, WACOM_INTUOS_RES,
  4770		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4771	static const struct wacom_features wacom_features_0x33C =
  4772		{ "Wacom Intuos PT S 2", 15200, 9500, 2047, 63,
  4773		  INTUOSHT2, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 16,
  4774		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4775	static const struct wacom_features wacom_features_0x33D =
  4776		{ "Wacom Intuos P M 2", 21600, 13500, 2047, 63,
  4777		  INTUOSHT2, WACOM_INTUOS_RES, WACOM_INTUOS_RES,
  4778		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4779	static const struct wacom_features wacom_features_0x33E =
  4780		{ "Wacom Intuos PT M 2", 21600, 13500, 2047, 63,
  4781		  INTUOSHT2, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 16,
  4782		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4783	static const struct wacom_features wacom_features_0x343 =
  4784		{ "Wacom DTK1651", 34816, 19759, 1023, 0,
  4785		  DTUS, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4,
  4786		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET,
  4787		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET };
  4788	static const struct wacom_features wacom_features_0x360 =
  4789		{ "Wacom Intuos Pro M", 44800, 29600, 8191, 63,
  4790		  INTUOSP2_BT, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9, .touch_max = 10 };
  4791	static const struct wacom_features wacom_features_0x361 =
  4792		{ "Wacom Intuos Pro L", 62200, 43200, 8191, 63,
  4793		  INTUOSP2_BT, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9, .touch_max = 10 };
  4794	static const struct wacom_features wacom_features_0x377 =
  4795		{ "Wacom Intuos BT S", 15200, 9500, 4095, 63,
  4796		  INTUOSHT3_BT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4 };
  4797	static const struct wacom_features wacom_features_0x379 =
  4798		{ "Wacom Intuos BT M", 21600, 13500, 4095, 63,
  4799		  INTUOSHT3_BT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4 };
  4800	static const struct wacom_features wacom_features_0x37A =
  4801		{ "Wacom One by Wacom S", 15200, 9500, 2047, 63,
  4802		  BAMBOO_PEN, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4803	static const struct wacom_features wacom_features_0x37B =
  4804		{ "Wacom One by Wacom M", 21600, 13500, 2047, 63,
  4805		  BAMBOO_PEN, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4806	static const struct wacom_features wacom_features_0x393 =
  4807		{ "Wacom Intuos Pro S", 31920, 19950, 8191, 63,
  4808		  INTUOSP2S_BT, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 7,
  4809		  .touch_max = 10 };
  4810	static const struct wacom_features wacom_features_0x3c6 =
  4811		{ "Wacom Intuos BT S", 15200, 9500, 4095, 63,
  4812		  INTUOSHT3_BT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4 };
  4813	static const struct wacom_features wacom_features_0x3c8 =
  4814		{ "Wacom Intuos BT M", 21600, 13500, 4095, 63,
  4815		  INTUOSHT3_BT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4 };
  4816	
  4817	static const struct wacom_features wacom_features_0x95 =
  4818		{ "Wacom AG14", .type = HID_GENERIC, .oVid = 0x2D1F, .oPid = 149 };
  4819	
  4820	static const struct wacom_features wacom_features_HID_ANY_ID =
  4821		{ "Wacom HID", .type = HID_GENERIC, .oVid = HID_ANY_ID, .oPid = HID_ANY_ID };
  4822	
  4823	#define USB_DEVICE_WACOM(prod)						\
  4824		HID_DEVICE(BUS_USB, HID_GROUP_WACOM, USB_VENDOR_ID_WACOM, prod),\
  4825		.driver_data = (kernel_ulong_t)&wacom_features_##prod
  4826	
  4827	#define BT_DEVICE_WACOM(prod)						\
  4828		HID_DEVICE(BUS_BLUETOOTH, HID_GROUP_WACOM, USB_VENDOR_ID_WACOM, prod),\
  4829		.driver_data = (kernel_ulong_t)&wacom_features_##prod
  4830	
  4831	#define I2C_DEVICE_WACOM(prod)						\
  4832		HID_DEVICE(BUS_I2C, HID_GROUP_WACOM, USB_VENDOR_ID_WACOM, prod),\
  4833		.driver_data = (kernel_ulong_t)&wacom_features_##prod
  4834	
  4835	#define I2C_AG14_DEVICE_WACOM(prod)					    \
  4836		HID_DEVICE(BUS_I2C, HID_GROUP_WACOM, USB_VENDOR_ID_I2C_WACOM, prod),\
  4837		.driver_data = (kernel_ulong_t)&wacom_features_##prod
  4838	
  4839	#define USB_DEVICE_LENOVO(prod)					\
  4840		HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, prod),			\
  4841		.driver_data = (kernel_ulong_t)&wacom_features_##prod
  4842	
  4843	const struct hid_device_id wacom_ids[] = {
  4844		{ USB_DEVICE_WACOM(0x00) },
  4845		{ USB_DEVICE_WACOM(0x03) },
  4846		{ USB_DEVICE_WACOM(0x10) },
  4847		{ USB_DEVICE_WACOM(0x11) },
  4848		{ USB_DEVICE_WACOM(0x12) },
  4849		{ USB_DEVICE_WACOM(0x13) },
  4850		{ USB_DEVICE_WACOM(0x14) },
  4851		{ USB_DEVICE_WACOM(0x15) },
  4852		{ USB_DEVICE_WACOM(0x16) },
  4853		{ USB_DEVICE_WACOM(0x17) },
  4854		{ USB_DEVICE_WACOM(0x18) },
  4855		{ USB_DEVICE_WACOM(0x19) },
  4856		{ USB_DEVICE_WACOM(0x20) },
  4857		{ USB_DEVICE_WACOM(0x21) },
  4858		{ USB_DEVICE_WACOM(0x22) },
  4859		{ USB_DEVICE_WACOM(0x23) },
  4860		{ USB_DEVICE_WACOM(0x24) },
  4861		{ USB_DEVICE_WACOM(0x26) },
  4862		{ USB_DEVICE_WACOM(0x27) },
  4863		{ USB_DEVICE_WACOM(0x28) },
  4864		{ USB_DEVICE_WACOM(0x29) },
  4865		{ USB_DEVICE_WACOM(0x2A) },
  4866		{ USB_DEVICE_WACOM(0x30) },
  4867		{ USB_DEVICE_WACOM(0x31) },
  4868		{ USB_DEVICE_WACOM(0x32) },
  4869		{ USB_DEVICE_WACOM(0x33) },
  4870		{ USB_DEVICE_WACOM(0x34) },
  4871		{ USB_DEVICE_WACOM(0x35) },
  4872		{ USB_DEVICE_WACOM(0x37) },
  4873		{ USB_DEVICE_WACOM(0x38) },
  4874		{ USB_DEVICE_WACOM(0x39) },
  4875		{ USB_DEVICE_WACOM(0x3F) },
  4876		{ USB_DEVICE_WACOM(0x41) },
  4877		{ USB_DEVICE_WACOM(0x42) },
  4878		{ USB_DEVICE_WACOM(0x43) },
  4879		{ USB_DEVICE_WACOM(0x44) },
  4880		{ USB_DEVICE_WACOM(0x45) },
  4881		{ USB_DEVICE_WACOM(0x47) },
  4882		{ USB_DEVICE_WACOM(0x57) },
  4883		{ USB_DEVICE_WACOM(0x59) },
  4884		{ USB_DEVICE_WACOM(0x5B) },
  4885		{ USB_DEVICE_WACOM(0x5D) },
  4886		{ USB_DEVICE_WACOM(0x5E) },
  4887		{ USB_DEVICE_WACOM(0x60) },
  4888		{ USB_DEVICE_WACOM(0x61) },
  4889		{ USB_DEVICE_WACOM(0x62) },
  4890		{ USB_DEVICE_WACOM(0x63) },
  4891		{ USB_DEVICE_WACOM(0x64) },
  4892		{ USB_DEVICE_WACOM(0x65) },
  4893		{ USB_DEVICE_WACOM(0x69) },
  4894		{ USB_DEVICE_WACOM(0x6A) },
  4895		{ USB_DEVICE_WACOM(0x6B) },
  4896		{ BT_DEVICE_WACOM(0x81) },
  4897		{ USB_DEVICE_WACOM(0x84) },
  4898		{ USB_DEVICE_WACOM(0x90) },
  4899		{ USB_DEVICE_WACOM(0x93) },
> 4900		{ I2C_AG14_DEVICE_WACOM(0x95) },
  4901		{ USB_DEVICE_WACOM(0x97) },
  4902		{ USB_DEVICE_WACOM(0x9A) },
  4903		{ USB_DEVICE_WACOM(0x9F) },
  4904		{ USB_DEVICE_WACOM(0xB0) },
  4905		{ USB_DEVICE_WACOM(0xB1) },
  4906		{ USB_DEVICE_WACOM(0xB2) },
  4907		{ USB_DEVICE_WACOM(0xB3) },
  4908		{ USB_DEVICE_WACOM(0xB4) },
  4909		{ USB_DEVICE_WACOM(0xB5) },
  4910		{ USB_DEVICE_WACOM(0xB7) },
  4911		{ USB_DEVICE_WACOM(0xB8) },
  4912		{ USB_DEVICE_WACOM(0xB9) },
  4913		{ USB_DEVICE_WACOM(0xBA) },
  4914		{ USB_DEVICE_WACOM(0xBB) },
  4915		{ USB_DEVICE_WACOM(0xBC) },
  4916		{ BT_DEVICE_WACOM(0xBD) },
  4917		{ USB_DEVICE_WACOM(0xC0) },
  4918		{ USB_DEVICE_WACOM(0xC2) },
  4919		{ USB_DEVICE_WACOM(0xC4) },
  4920		{ USB_DEVICE_WACOM(0xC5) },
  4921		{ USB_DEVICE_WACOM(0xC6) },
  4922		{ USB_DEVICE_WACOM(0xC7) },
  4923		{ USB_DEVICE_WACOM(0xCC) },
  4924		{ USB_DEVICE_WACOM(0xCE) },
  4925		{ USB_DEVICE_WACOM(0xD0) },
  4926		{ USB_DEVICE_WACOM(0xD1) },
  4927		{ USB_DEVICE_WACOM(0xD2) },
  4928		{ USB_DEVICE_WACOM(0xD3) },
  4929		{ USB_DEVICE_WACOM(0xD4) },
  4930		{ USB_DEVICE_WACOM(0xD5) },
  4931		{ USB_DEVICE_WACOM(0xD6) },
  4932		{ USB_DEVICE_WACOM(0xD7) },
  4933		{ USB_DEVICE_WACOM(0xD8) },
  4934		{ USB_DEVICE_WACOM(0xDA) },
  4935		{ USB_DEVICE_WACOM(0xDB) },
  4936		{ USB_DEVICE_WACOM(0xDD) },
  4937		{ USB_DEVICE_WACOM(0xDE) },
  4938		{ USB_DEVICE_WACOM(0xDF) },
  4939		{ USB_DEVICE_WACOM(0xE2) },
  4940		{ USB_DEVICE_WACOM(0xE3) },
  4941		{ USB_DEVICE_WACOM(0xE5) },
  4942		{ USB_DEVICE_WACOM(0xE6) },
  4943		{ USB_DEVICE_WACOM(0xEC) },
  4944		{ USB_DEVICE_WACOM(0xED) },
  4945		{ USB_DEVICE_WACOM(0xEF) },
  4946		{ USB_DEVICE_WACOM(0xF0) },
  4947		{ USB_DEVICE_WACOM(0xF4) },
  4948		{ USB_DEVICE_WACOM(0xF6) },
  4949		{ USB_DEVICE_WACOM(0xF8) },
  4950		{ USB_DEVICE_WACOM(0xFA) },
  4951		{ USB_DEVICE_WACOM(0xFB) },
  4952		{ USB_DEVICE_WACOM(0x100) },
  4953		{ USB_DEVICE_WACOM(0x101) },
  4954		{ USB_DEVICE_WACOM(0x10D) },
  4955		{ USB_DEVICE_WACOM(0x10E) },
  4956		{ USB_DEVICE_WACOM(0x10F) },
  4957		{ USB_DEVICE_WACOM(0x116) },
  4958		{ USB_DEVICE_WACOM(0x12C) },
  4959		{ USB_DEVICE_WACOM(0x300) },
  4960		{ USB_DEVICE_WACOM(0x301) },
  4961		{ USB_DEVICE_WACOM(0x302) },
  4962		{ USB_DEVICE_WACOM(0x303) },
  4963		{ USB_DEVICE_WACOM(0x304) },
  4964		{ USB_DEVICE_WACOM(0x307) },
  4965		{ USB_DEVICE_WACOM(0x309) },
  4966		{ USB_DEVICE_WACOM(0x30A) },
  4967		{ USB_DEVICE_WACOM(0x30C) },
  4968		{ USB_DEVICE_WACOM(0x30E) },
  4969		{ USB_DEVICE_WACOM(0x314) },
  4970		{ USB_DEVICE_WACOM(0x315) },
  4971		{ USB_DEVICE_WACOM(0x317) },
  4972		{ USB_DEVICE_WACOM(0x318) },
  4973		{ USB_DEVICE_WACOM(0x319) },
  4974		{ USB_DEVICE_WACOM(0x323) },
  4975		{ USB_DEVICE_WACOM(0x325) },
  4976		{ USB_DEVICE_WACOM(0x326) },
  4977		{ USB_DEVICE_WACOM(0x32A) },
  4978		{ USB_DEVICE_WACOM(0x32B) },
  4979		{ USB_DEVICE_WACOM(0x32C) },
  4980		{ USB_DEVICE_WACOM(0x32F) },
  4981		{ USB_DEVICE_WACOM(0x331) },
  4982		{ USB_DEVICE_WACOM(0x333) },
  4983		{ USB_DEVICE_WACOM(0x335) },
  4984		{ USB_DEVICE_WACOM(0x336) },
  4985		{ USB_DEVICE_WACOM(0x33B) },
  4986		{ USB_DEVICE_WACOM(0x33C) },
  4987		{ USB_DEVICE_WACOM(0x33D) },
  4988		{ USB_DEVICE_WACOM(0x33E) },
  4989		{ USB_DEVICE_WACOM(0x343) },
  4990		{ BT_DEVICE_WACOM(0x360) },
  4991		{ BT_DEVICE_WACOM(0x361) },
  4992		{ BT_DEVICE_WACOM(0x377) },
  4993		{ BT_DEVICE_WACOM(0x379) },
  4994		{ USB_DEVICE_WACOM(0x37A) },
  4995		{ USB_DEVICE_WACOM(0x37B) },
  4996		{ BT_DEVICE_WACOM(0x393) },
  4997		{ BT_DEVICE_WACOM(0x3c6) },
  4998		{ BT_DEVICE_WACOM(0x3c8) },
  4999		{ USB_DEVICE_WACOM(0x4001) },
  5000		{ USB_DEVICE_WACOM(0x4004) },
  5001		{ USB_DEVICE_WACOM(0x5000) },
  5002		{ USB_DEVICE_WACOM(0x5002) },
  5003		{ USB_DEVICE_LENOVO(0x6004) },
  5004	
  5005		{ USB_DEVICE_WACOM(HID_ANY_ID) },
  5006		{ I2C_DEVICE_WACOM(HID_ANY_ID) },
  5007		{ BT_DEVICE_WACOM(HID_ANY_ID) },
  5008		{ }
  5009	};
> 5010	MODULE_DEVICE_TABLE(hid, wacom_ids);

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
kernel test robot Oct. 9, 2021, 2:32 p.m. UTC | #2
Hi Alistair,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on hid/for-next]
[also build test ERROR on robh/for-next shawnguo/for-next linus/master v5.15-rc4 next-20211008]
[cannot apply to dtor-input/next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Alistair-Francis/HID-wacom_sys-Add-support-for-flipping-the-data-values/20211009-194419
base:   https://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git for-next
config: arm-randconfig-r016-20211009 (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/b41e12004527538eaeaa1fd929a751c9504a32a0
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Alistair-Francis/HID-wacom_sys-Add-support-for-flipping-the-data-values/20211009-194419
        git checkout b41e12004527538eaeaa1fd929a751c9504a32a0
        # save the attached .config to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=arm SHELL=/bin/bash drivers/hid/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   In file included from drivers/hid/wacom_wac.h:9,
                    from drivers/hid/wacom_wac.c:11:
>> drivers/hid/wacom_wac.c:4836:46: error: 'USB_VENDOR_ID_I2C_WACOM' undeclared here (not in a function); did you mean 'USB_VENDOR_ID_WACOM'?
    4836 |         HID_DEVICE(BUS_I2C, HID_GROUP_WACOM, USB_VENDOR_ID_I2C_WACOM, prod),\
         |                                              ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/hid.h:680:46: note: in definition of macro 'HID_DEVICE'
     680 |         .bus = (b), .group = (g), .vendor = (ven), .product = (prod)
         |                                              ^~~
   drivers/hid/wacom_wac.c:4900:11: note: in expansion of macro 'I2C_AG14_DEVICE_WACOM'
    4900 |         { I2C_AG14_DEVICE_WACOM(0x95) },
         |           ^~~~~~~~~~~~~~~~~~~~~


vim +4836 drivers/hid/wacom_wac.c

  4275	
  4276	static const struct wacom_features wacom_features_0x00 =
  4277		{ "Wacom Penpartner", 5040, 3780, 255, 0,
  4278		  PENPARTNER, WACOM_PENPRTN_RES, WACOM_PENPRTN_RES };
  4279	static const struct wacom_features wacom_features_0x10 =
  4280		{ "Wacom Graphire", 10206, 7422, 511, 63,
  4281		  GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4282	static const struct wacom_features wacom_features_0x81 =
  4283		{ "Wacom Graphire BT", 16704, 12064, 511, 32,
  4284		  GRAPHIRE_BT, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES, 2 };
  4285	static const struct wacom_features wacom_features_0x11 =
  4286		{ "Wacom Graphire2 4x5", 10206, 7422, 511, 63,
  4287		  GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4288	static const struct wacom_features wacom_features_0x12 =
  4289		{ "Wacom Graphire2 5x7", 13918, 10206, 511, 63,
  4290		  GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4291	static const struct wacom_features wacom_features_0x13 =
  4292		{ "Wacom Graphire3", 10208, 7424, 511, 63,
  4293		  GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4294	static const struct wacom_features wacom_features_0x14 =
  4295		{ "Wacom Graphire3 6x8", 16704, 12064, 511, 63,
  4296		  GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4297	static const struct wacom_features wacom_features_0x15 =
  4298		{ "Wacom Graphire4 4x5", 10208, 7424, 511, 63,
  4299		  WACOM_G4, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4300	static const struct wacom_features wacom_features_0x16 =
  4301		{ "Wacom Graphire4 6x8", 16704, 12064, 511, 63,
  4302		  WACOM_G4, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4303	static const struct wacom_features wacom_features_0x17 =
  4304		{ "Wacom BambooFun 4x5", 14760, 9225, 511, 63,
  4305		  WACOM_MO, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4306	static const struct wacom_features wacom_features_0x18 =
  4307		{ "Wacom BambooFun 6x8", 21648, 13530, 511, 63,
  4308		  WACOM_MO, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4309	static const struct wacom_features wacom_features_0x19 =
  4310		{ "Wacom Bamboo1 Medium", 16704, 12064, 511, 63,
  4311		  GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES };
  4312	static const struct wacom_features wacom_features_0x60 =
  4313		{ "Wacom Volito", 5104, 3712, 511, 63,
  4314		  GRAPHIRE, WACOM_VOLITO_RES, WACOM_VOLITO_RES };
  4315	static const struct wacom_features wacom_features_0x61 =
  4316		{ "Wacom PenStation2", 3250, 2320, 255, 63,
  4317		  GRAPHIRE, WACOM_VOLITO_RES, WACOM_VOLITO_RES };
  4318	static const struct wacom_features wacom_features_0x62 =
  4319		{ "Wacom Volito2 4x5", 5104, 3712, 511, 63,
  4320		  GRAPHIRE, WACOM_VOLITO_RES, WACOM_VOLITO_RES };
  4321	static const struct wacom_features wacom_features_0x63 =
  4322		{ "Wacom Volito2 2x3", 3248, 2320, 511, 63,
  4323		  GRAPHIRE, WACOM_VOLITO_RES, WACOM_VOLITO_RES };
  4324	static const struct wacom_features wacom_features_0x64 =
  4325		{ "Wacom PenPartner2", 3250, 2320, 511, 63,
  4326		  GRAPHIRE, WACOM_VOLITO_RES, WACOM_VOLITO_RES };
  4327	static const struct wacom_features wacom_features_0x65 =
  4328		{ "Wacom Bamboo", 14760, 9225, 511, 63,
  4329		  WACOM_MO, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4330	static const struct wacom_features wacom_features_0x69 =
  4331		{ "Wacom Bamboo1", 5104, 3712, 511, 63,
  4332		  GRAPHIRE, WACOM_PENPRTN_RES, WACOM_PENPRTN_RES };
  4333	static const struct wacom_features wacom_features_0x6A =
  4334		{ "Wacom Bamboo1 4x6", 14760, 9225, 1023, 63,
  4335		  GRAPHIRE, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4336	static const struct wacom_features wacom_features_0x6B =
  4337		{ "Wacom Bamboo1 5x8", 21648, 13530, 1023, 63,
  4338		  GRAPHIRE, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4339	static const struct wacom_features wacom_features_0x20 =
  4340		{ "Wacom Intuos 4x5", 12700, 10600, 1023, 31,
  4341		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4342	static const struct wacom_features wacom_features_0x21 =
  4343		{ "Wacom Intuos 6x8", 20320, 16240, 1023, 31,
  4344		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4345	static const struct wacom_features wacom_features_0x22 =
  4346		{ "Wacom Intuos 9x12", 30480, 24060, 1023, 31,
  4347		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4348	static const struct wacom_features wacom_features_0x23 =
  4349		{ "Wacom Intuos 12x12", 30480, 31680, 1023, 31,
  4350		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4351	static const struct wacom_features wacom_features_0x24 =
  4352		{ "Wacom Intuos 12x18", 45720, 31680, 1023, 31,
  4353		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4354	static const struct wacom_features wacom_features_0x30 =
  4355		{ "Wacom PL400", 5408, 4056, 255, 0,
  4356		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4357	static const struct wacom_features wacom_features_0x31 =
  4358		{ "Wacom PL500", 6144, 4608, 255, 0,
  4359		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4360	static const struct wacom_features wacom_features_0x32 =
  4361		{ "Wacom PL600", 6126, 4604, 255, 0,
  4362		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4363	static const struct wacom_features wacom_features_0x33 =
  4364		{ "Wacom PL600SX", 6260, 5016, 255, 0,
  4365		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4366	static const struct wacom_features wacom_features_0x34 =
  4367		{ "Wacom PL550", 6144, 4608, 511, 0,
  4368		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4369	static const struct wacom_features wacom_features_0x35 =
  4370		{ "Wacom PL800", 7220, 5780, 511, 0,
  4371		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4372	static const struct wacom_features wacom_features_0x37 =
  4373		{ "Wacom PL700", 6758, 5406, 511, 0,
  4374		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4375	static const struct wacom_features wacom_features_0x38 =
  4376		{ "Wacom PL510", 6282, 4762, 511, 0,
  4377		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4378	static const struct wacom_features wacom_features_0x39 =
  4379		{ "Wacom DTU710", 34080, 27660, 511, 0,
  4380		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4381	static const struct wacom_features wacom_features_0xC4 =
  4382		{ "Wacom DTF521", 6282, 4762, 511, 0,
  4383		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4384	static const struct wacom_features wacom_features_0xC0 =
  4385		{ "Wacom DTF720", 6858, 5506, 511, 0,
  4386		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4387	static const struct wacom_features wacom_features_0xC2 =
  4388		{ "Wacom DTF720a", 6858, 5506, 511, 0,
  4389		  PL, WACOM_PL_RES, WACOM_PL_RES };
  4390	static const struct wacom_features wacom_features_0x03 =
  4391		{ "Wacom Cintiq Partner", 20480, 15360, 511, 0,
  4392		  PTU, WACOM_PL_RES, WACOM_PL_RES };
  4393	static const struct wacom_features wacom_features_0x41 =
  4394		{ "Wacom Intuos2 4x5", 12700, 10600, 1023, 31,
  4395		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4396	static const struct wacom_features wacom_features_0x42 =
  4397		{ "Wacom Intuos2 6x8", 20320, 16240, 1023, 31,
  4398		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4399	static const struct wacom_features wacom_features_0x43 =
  4400		{ "Wacom Intuos2 9x12", 30480, 24060, 1023, 31,
  4401		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4402	static const struct wacom_features wacom_features_0x44 =
  4403		{ "Wacom Intuos2 12x12", 30480, 31680, 1023, 31,
  4404		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4405	static const struct wacom_features wacom_features_0x45 =
  4406		{ "Wacom Intuos2 12x18", 45720, 31680, 1023, 31,
  4407		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4408	static const struct wacom_features wacom_features_0xB0 =
  4409		{ "Wacom Intuos3 4x5", 25400, 20320, 1023, 63,
  4410		  INTUOS3S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 4 };
  4411	static const struct wacom_features wacom_features_0xB1 =
  4412		{ "Wacom Intuos3 6x8", 40640, 30480, 1023, 63,
  4413		  INTUOS3, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 8 };
  4414	static const struct wacom_features wacom_features_0xB2 =
  4415		{ "Wacom Intuos3 9x12", 60960, 45720, 1023, 63,
  4416		  INTUOS3, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 8 };
  4417	static const struct wacom_features wacom_features_0xB3 =
  4418		{ "Wacom Intuos3 12x12", 60960, 60960, 1023, 63,
  4419		  INTUOS3L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 8 };
  4420	static const struct wacom_features wacom_features_0xB4 =
  4421		{ "Wacom Intuos3 12x19", 97536, 60960, 1023, 63,
  4422		  INTUOS3L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 8 };
  4423	static const struct wacom_features wacom_features_0xB5 =
  4424		{ "Wacom Intuos3 6x11", 54204, 31750, 1023, 63,
  4425		  INTUOS3, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 8 };
  4426	static const struct wacom_features wacom_features_0xB7 =
  4427		{ "Wacom Intuos3 4x6", 31496, 19685, 1023, 63,
  4428		  INTUOS3S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 4 };
  4429	static const struct wacom_features wacom_features_0xB8 =
  4430		{ "Wacom Intuos4 4x6", 31496, 19685, 2047, 63,
  4431		  INTUOS4S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 7 };
  4432	static const struct wacom_features wacom_features_0xB9 =
  4433		{ "Wacom Intuos4 6x9", 44704, 27940, 2047, 63,
  4434		  INTUOS4, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9 };
  4435	static const struct wacom_features wacom_features_0xBA =
  4436		{ "Wacom Intuos4 8x13", 65024, 40640, 2047, 63,
  4437		  INTUOS4L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9 };
  4438	static const struct wacom_features wacom_features_0xBB =
  4439		{ "Wacom Intuos4 12x19", 97536, 60960, 2047, 63,
  4440		  INTUOS4L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9 };
  4441	static const struct wacom_features wacom_features_0xBC =
  4442		{ "Wacom Intuos4 WL", 40640, 25400, 2047, 63,
  4443		  INTUOS4, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9 };
  4444	static const struct wacom_features wacom_features_0xBD =
  4445		{ "Wacom Intuos4 WL", 40640, 25400, 2047, 63,
  4446		  INTUOS4WL, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9 };
  4447	static const struct wacom_features wacom_features_0x26 =
  4448		{ "Wacom Intuos5 touch S", 31496, 19685, 2047, 63,
  4449		  INTUOS5S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 7, .touch_max = 16 };
  4450	static const struct wacom_features wacom_features_0x27 =
  4451		{ "Wacom Intuos5 touch M", 44704, 27940, 2047, 63,
  4452		  INTUOS5, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9, .touch_max = 16 };
  4453	static const struct wacom_features wacom_features_0x28 =
  4454		{ "Wacom Intuos5 touch L", 65024, 40640, 2047, 63,
  4455		  INTUOS5L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9, .touch_max = 16 };
  4456	static const struct wacom_features wacom_features_0x29 =
  4457		{ "Wacom Intuos5 S", 31496, 19685, 2047, 63,
  4458		  INTUOS5S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 7 };
  4459	static const struct wacom_features wacom_features_0x2A =
  4460		{ "Wacom Intuos5 M", 44704, 27940, 2047, 63,
  4461		  INTUOS5, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9 };
  4462	static const struct wacom_features wacom_features_0x314 =
  4463		{ "Wacom Intuos Pro S", 31496, 19685, 2047, 63,
  4464		  INTUOSPS, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 7, .touch_max = 16,
  4465		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4466	static const struct wacom_features wacom_features_0x315 =
  4467		{ "Wacom Intuos Pro M", 44704, 27940, 2047, 63,
  4468		  INTUOSPM, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9, .touch_max = 16,
  4469		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4470	static const struct wacom_features wacom_features_0x317 =
  4471		{ "Wacom Intuos Pro L", 65024, 40640, 2047, 63,
  4472		  INTUOSPL, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9, .touch_max = 16,
  4473		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4474	static const struct wacom_features wacom_features_0xF4 =
  4475		{ "Wacom Cintiq 24HD", 104480, 65600, 2047, 63,
  4476		  WACOM_24HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 16,
  4477		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4478		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET };
  4479	static const struct wacom_features wacom_features_0xF8 =
  4480		{ "Wacom Cintiq 24HD touch", 104480, 65600, 2047, 63, /* Pen */
  4481		  WACOM_24HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 16,
  4482		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4483		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4484		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0xf6 };
  4485	static const struct wacom_features wacom_features_0xF6 =
  4486		{ "Wacom Cintiq 24HD touch", .type = WACOM_24HDT, /* Touch */
  4487		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0xf8, .touch_max = 10,
  4488		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4489	static const struct wacom_features wacom_features_0x32A =
  4490		{ "Wacom Cintiq 27QHD", 120140, 67920, 2047, 63,
  4491		  WACOM_27QHD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 0,
  4492		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4493		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET };
  4494	static const struct wacom_features wacom_features_0x32B =
  4495		{ "Wacom Cintiq 27QHD touch", 120140, 67920, 2047, 63,
  4496		  WACOM_27QHD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 0,
  4497		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4498		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4499		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x32C };
  4500	static const struct wacom_features wacom_features_0x32C =
  4501		{ "Wacom Cintiq 27QHD touch", .type = WACOM_27QHDT,
  4502		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x32B, .touch_max = 10 };
  4503	static const struct wacom_features wacom_features_0x3F =
  4504		{ "Wacom Cintiq 21UX", 87200, 65600, 1023, 63,
  4505		  CINTIQ, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 8 };
  4506	static const struct wacom_features wacom_features_0xC5 =
  4507		{ "Wacom Cintiq 20WSX", 86680, 54180, 1023, 63,
  4508		  WACOM_BEE, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 10 };
  4509	static const struct wacom_features wacom_features_0xC6 =
  4510		{ "Wacom Cintiq 12WX", 53020, 33440, 1023, 63,
  4511		  WACOM_BEE, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 10 };
  4512	static const struct wacom_features wacom_features_0x304 =
  4513		{ "Wacom Cintiq 13HD", 59552, 33848, 1023, 63,
  4514		  WACOM_13HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9,
  4515		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4516		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET };
  4517	static const struct wacom_features wacom_features_0x333 =
  4518		{ "Wacom Cintiq 13HD touch", 59552, 33848, 2047, 63,
  4519		  WACOM_13HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9,
  4520		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4521		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4522		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x335 };
  4523	static const struct wacom_features wacom_features_0x335 =
  4524		{ "Wacom Cintiq 13HD touch", .type = WACOM_24HDT, /* Touch */
  4525		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x333, .touch_max = 10,
  4526		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4527	static const struct wacom_features wacom_features_0xC7 =
  4528		{ "Wacom DTU1931", 37832, 30305, 511, 0,
  4529		  PL, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4530	static const struct wacom_features wacom_features_0xCE =
  4531		{ "Wacom DTU2231", 47864, 27011, 511, 0,
  4532		  DTU, WACOM_INTUOS_RES, WACOM_INTUOS_RES,
  4533		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBMOUSE };
  4534	static const struct wacom_features wacom_features_0xF0 =
  4535		{ "Wacom DTU1631", 34623, 19553, 511, 0,
  4536		  DTU, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4537	static const struct wacom_features wacom_features_0xFB =
  4538		{ "Wacom DTU1031", 22096, 13960, 511, 0,
  4539		  DTUS, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4,
  4540		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET,
  4541		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET };
  4542	static const struct wacom_features wacom_features_0x32F =
  4543		{ "Wacom DTU1031X", 22672, 12928, 511, 0,
  4544		  DTUSX, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 0,
  4545		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET,
  4546		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET };
  4547	static const struct wacom_features wacom_features_0x336 =
  4548		{ "Wacom DTU1141", 23672, 13403, 1023, 0,
  4549		  DTUS, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4,
  4550		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET,
  4551		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET };
  4552	static const struct wacom_features wacom_features_0x57 =
  4553		{ "Wacom DTK2241", 95840, 54260, 2047, 63,
  4554		  DTK, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 6,
  4555		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4556		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET };
  4557	static const struct wacom_features wacom_features_0x59 = /* Pen */
  4558		{ "Wacom DTH2242", 95840, 54260, 2047, 63,
  4559		  DTK, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 6,
  4560		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4561		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4562		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x5D };
  4563	static const struct wacom_features wacom_features_0x5D = /* Touch */
  4564		{ "Wacom DTH2242",       .type = WACOM_24HDT,
  4565		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x59, .touch_max = 10,
  4566		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4567	static const struct wacom_features wacom_features_0xCC =
  4568		{ "Wacom Cintiq 21UX2", 87200, 65600, 2047, 63,
  4569		  WACOM_21UX2, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 18,
  4570		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4571		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET };
  4572	static const struct wacom_features wacom_features_0xFA =
  4573		{ "Wacom Cintiq 22HD", 95840, 54260, 2047, 63,
  4574		  WACOM_22HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 18,
  4575		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4576		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET };
  4577	static const struct wacom_features wacom_features_0x5B =
  4578		{ "Wacom Cintiq 22HDT", 95840, 54260, 2047, 63,
  4579		  WACOM_22HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 18,
  4580		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4581		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4582		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x5e };
  4583	static const struct wacom_features wacom_features_0x5E =
  4584		{ "Wacom Cintiq 22HDT", .type = WACOM_24HDT,
  4585		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x5b, .touch_max = 10,
  4586		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4587	static const struct wacom_features wacom_features_0x90 =
  4588		{ "Wacom ISDv4 90", 26202, 16325, 255, 0,
  4589		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; /* Pen-only */
  4590	static const struct wacom_features wacom_features_0x93 =
  4591		{ "Wacom ISDv4 93", 26202, 16325, 255, 0,
  4592		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 1 };
  4593	static const struct wacom_features wacom_features_0x97 =
  4594		{ "Wacom ISDv4 97", 26202, 16325, 511, 0,
  4595		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; /* Pen-only */
  4596	static const struct wacom_features wacom_features_0x9A =
  4597		{ "Wacom ISDv4 9A", 26202, 16325, 255, 0,
  4598		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 1 };
  4599	static const struct wacom_features wacom_features_0x9F =
  4600		{ "Wacom ISDv4 9F", 26202, 16325, 255, 0,
  4601		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 1 };
  4602	static const struct wacom_features wacom_features_0xE2 =
  4603		{ "Wacom ISDv4 E2", 26202, 16325, 255, 0,
  4604		  TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4605	static const struct wacom_features wacom_features_0xE3 =
  4606		{ "Wacom ISDv4 E3", 26202, 16325, 255, 0,
  4607		  TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4608	static const struct wacom_features wacom_features_0xE5 =
  4609		{ "Wacom ISDv4 E5", 26202, 16325, 255, 0,
  4610		  MTSCREEN, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4611	static const struct wacom_features wacom_features_0xE6 =
  4612		{ "Wacom ISDv4 E6", 27760, 15694, 255, 0,
  4613		  TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4614	static const struct wacom_features wacom_features_0xEC =
  4615		{ "Wacom ISDv4 EC", 25710, 14500, 255, 0,
  4616		  TABLETPC,    WACOM_INTUOS_RES, WACOM_INTUOS_RES }; /* Pen-only */
  4617	static const struct wacom_features wacom_features_0xED =
  4618		{ "Wacom ISDv4 ED", 26202, 16325, 255, 0,
  4619		  TABLETPCE, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 1 };
  4620	static const struct wacom_features wacom_features_0xEF =
  4621		{ "Wacom ISDv4 EF", 26202, 16325, 255, 0,
  4622		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; /* Pen-only */
  4623	static const struct wacom_features wacom_features_0x100 =
  4624		{ "Wacom ISDv4 100", 26202, 16325, 255, 0,
  4625		  MTTPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4626	static const struct wacom_features wacom_features_0x101 =
  4627		{ "Wacom ISDv4 101", 26202, 16325, 255, 0,
  4628		  MTTPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4629	static const struct wacom_features wacom_features_0x10D =
  4630		{ "Wacom ISDv4 10D", 26202, 16325, 255, 0,
  4631		  MTTPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4632	static const struct wacom_features wacom_features_0x10E =
  4633		{ "Wacom ISDv4 10E", 27760, 15694, 255, 0,
  4634		  MTTPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4635	static const struct wacom_features wacom_features_0x10F =
  4636		{ "Wacom ISDv4 10F", 27760, 15694, 255, 0,
  4637		  MTTPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4638	static const struct wacom_features wacom_features_0x116 =
  4639		{ "Wacom ISDv4 116", 26202, 16325, 255, 0,
  4640		  TABLETPCE, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 1 };
  4641	static const struct wacom_features wacom_features_0x12C =
  4642		{ "Wacom ISDv4 12C", 27848, 15752, 2047, 0,
  4643		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; /* Pen-only */
  4644	static const struct wacom_features wacom_features_0x4001 =
  4645		{ "Wacom ISDv4 4001", 26202, 16325, 255, 0,
  4646		  MTTPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4647	static const struct wacom_features wacom_features_0x4004 =
  4648		{ "Wacom ISDv4 4004", 11060, 6220, 255, 0,
  4649		  MTTPC_B, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4650	static const struct wacom_features wacom_features_0x5000 =
  4651		{ "Wacom ISDv4 5000", 27848, 15752, 1023, 0,
  4652		  MTTPC_B, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4653	static const struct wacom_features wacom_features_0x5002 =
  4654		{ "Wacom ISDv4 5002", 29576, 16724, 1023, 0,
  4655		  MTTPC_B, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4656	static const struct wacom_features wacom_features_0x47 =
  4657		{ "Wacom Intuos2 6x8", 20320, 16240, 1023, 31,
  4658		  INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4659	static const struct wacom_features wacom_features_0x84 =
  4660		{ "Wacom Wireless Receiver", .type = WIRELESS, .touch_max = 16 };
  4661	static const struct wacom_features wacom_features_0xD0 =
  4662		{ "Wacom Bamboo 2FG", 14720, 9200, 1023, 31,
  4663		  BAMBOO_TOUCH, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4664	static const struct wacom_features wacom_features_0xD1 =
  4665		{ "Wacom Bamboo 2FG 4x5", 14720, 9200, 1023, 31,
  4666		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4667	static const struct wacom_features wacom_features_0xD2 =
  4668		{ "Wacom Bamboo Craft", 14720, 9200, 1023, 31,
  4669		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4670	static const struct wacom_features wacom_features_0xD3 =
  4671		{ "Wacom Bamboo 2FG 6x8", 21648, 13700, 1023, 31,
  4672		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4673	static const struct wacom_features wacom_features_0xD4 =
  4674		{ "Wacom Bamboo Pen", 14720, 9200, 1023, 31,
  4675		  BAMBOO_PEN, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4676	static const struct wacom_features wacom_features_0xD5 =
  4677		{ "Wacom Bamboo Pen 6x8", 21648, 13700, 1023, 31,
  4678		  BAMBOO_PEN, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4679	static const struct wacom_features wacom_features_0xD6 =
  4680		{ "Wacom BambooPT 2FG 4x5", 14720, 9200, 1023, 31,
  4681		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4682	static const struct wacom_features wacom_features_0xD7 =
  4683		{ "Wacom BambooPT 2FG Small", 14720, 9200, 1023, 31,
  4684		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4685	static const struct wacom_features wacom_features_0xD8 =
  4686		{ "Wacom Bamboo Comic 2FG", 21648, 13700, 1023, 31,
  4687		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4688	static const struct wacom_features wacom_features_0xDA =
  4689		{ "Wacom Bamboo 2FG 4x5 SE", 14720, 9200, 1023, 31,
  4690		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4691	static const struct wacom_features wacom_features_0xDB =
  4692		{ "Wacom Bamboo 2FG 6x8 SE", 21648, 13700, 1023, 31,
  4693		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 2 };
  4694	static const struct wacom_features wacom_features_0xDD =
  4695	        { "Wacom Bamboo Connect", 14720, 9200, 1023, 31,
  4696	          BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4697	static const struct wacom_features wacom_features_0xDE =
  4698	        { "Wacom Bamboo 16FG 4x5", 14720, 9200, 1023, 31,
  4699		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 16 };
  4700	static const struct wacom_features wacom_features_0xDF =
  4701	        { "Wacom Bamboo 16FG 6x8", 21648, 13700, 1023, 31,
  4702		  BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 16 };
  4703	static const struct wacom_features wacom_features_0x300 =
  4704		{ "Wacom Bamboo One S", 14720, 9225, 1023, 31,
  4705		  BAMBOO_PEN, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4706	static const struct wacom_features wacom_features_0x301 =
  4707		{ "Wacom Bamboo One M", 21648, 13530, 1023, 31,
  4708		  BAMBOO_PEN, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4709	static const struct wacom_features wacom_features_0x302 =
  4710		{ "Wacom Intuos PT S", 15200, 9500, 1023, 31,
  4711		  INTUOSHT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 16,
  4712		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4713	static const struct wacom_features wacom_features_0x303 =
  4714		{ "Wacom Intuos PT M", 21600, 13500, 1023, 31,
  4715		  INTUOSHT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 16,
  4716		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4717	static const struct wacom_features wacom_features_0x30E =
  4718		{ "Wacom Intuos S", 15200, 9500, 1023, 31,
  4719		  INTUOSHT, WACOM_INTUOS_RES, WACOM_INTUOS_RES,
  4720		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4721	static const struct wacom_features wacom_features_0x6004 =
  4722		{ "ISD-V4", 12800, 8000, 255, 0,
  4723		  TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4724	static const struct wacom_features wacom_features_0x307 =
  4725		{ "Wacom ISDv5 307", 59552, 33848, 2047, 63,
  4726		  CINTIQ_HYBRID, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9,
  4727		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4728		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4729		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x309 };
  4730	static const struct wacom_features wacom_features_0x309 =
  4731		{ "Wacom ISDv5 309", .type = WACOM_24HDT, /* Touch */
  4732		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x0307, .touch_max = 10,
  4733		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4734	static const struct wacom_features wacom_features_0x30A =
  4735		{ "Wacom ISDv5 30A", 59552, 33848, 2047, 63,
  4736		  CINTIQ_HYBRID, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9,
  4737		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4738		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4739		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x30C };
  4740	static const struct wacom_features wacom_features_0x30C =
  4741		{ "Wacom ISDv5 30C", .type = WACOM_24HDT, /* Touch */
  4742		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x30A, .touch_max = 10,
  4743		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4744	static const struct wacom_features wacom_features_0x318 =
  4745		{ "Wacom USB Bamboo PAD", 4095, 4095, /* Touch */
  4746		  .type = BAMBOO_PAD, 35, 48, .touch_max = 4 };
  4747	static const struct wacom_features wacom_features_0x319 =
  4748		{ "Wacom Wireless Bamboo PAD", 4095, 4095, /* Touch */
  4749		  .type = BAMBOO_PAD, 35, 48, .touch_max = 4 };
  4750	static const struct wacom_features wacom_features_0x325 =
  4751		{ "Wacom ISDv5 325", 59552, 33848, 2047, 63,
  4752		  CINTIQ_COMPANION_2, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 11,
  4753		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4754		  WACOM_CINTIQ_OFFSET, WACOM_CINTIQ_OFFSET,
  4755		  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0x326 };
  4756	static const struct wacom_features wacom_features_0x326 = /* Touch */
  4757		{ "Wacom ISDv5 326", .type = HID_GENERIC, .oVid = USB_VENDOR_ID_WACOM,
  4758		  .oPid = 0x325 };
  4759	static const struct wacom_features wacom_features_0x323 =
  4760		{ "Wacom Intuos P M", 21600, 13500, 1023, 31,
  4761		  INTUOSHT, WACOM_INTUOS_RES, WACOM_INTUOS_RES,
  4762		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4763	static const struct wacom_features wacom_features_0x331 =
  4764		{ "Wacom Express Key Remote", .type = REMOTE,
  4765		  .numbered_buttons = 18, .check_for_hid_type = true,
  4766		  .hid_type = HID_TYPE_USBNONE };
  4767	static const struct wacom_features wacom_features_0x33B =
  4768		{ "Wacom Intuos S 2", 15200, 9500, 2047, 63,
  4769		  INTUOSHT2, WACOM_INTUOS_RES, WACOM_INTUOS_RES,
  4770		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4771	static const struct wacom_features wacom_features_0x33C =
  4772		{ "Wacom Intuos PT S 2", 15200, 9500, 2047, 63,
  4773		  INTUOSHT2, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 16,
  4774		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4775	static const struct wacom_features wacom_features_0x33D =
  4776		{ "Wacom Intuos P M 2", 21600, 13500, 2047, 63,
  4777		  INTUOSHT2, WACOM_INTUOS_RES, WACOM_INTUOS_RES,
  4778		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4779	static const struct wacom_features wacom_features_0x33E =
  4780		{ "Wacom Intuos PT M 2", 21600, 13500, 2047, 63,
  4781		  INTUOSHT2, WACOM_INTUOS_RES, WACOM_INTUOS_RES, .touch_max = 16,
  4782		  .check_for_hid_type = true, .hid_type = HID_TYPE_USBNONE };
  4783	static const struct wacom_features wacom_features_0x343 =
  4784		{ "Wacom DTK1651", 34816, 19759, 1023, 0,
  4785		  DTUS, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4,
  4786		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET,
  4787		  WACOM_DTU_OFFSET, WACOM_DTU_OFFSET };
  4788	static const struct wacom_features wacom_features_0x360 =
  4789		{ "Wacom Intuos Pro M", 44800, 29600, 8191, 63,
  4790		  INTUOSP2_BT, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9, .touch_max = 10 };
  4791	static const struct wacom_features wacom_features_0x361 =
  4792		{ "Wacom Intuos Pro L", 62200, 43200, 8191, 63,
  4793		  INTUOSP2_BT, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 9, .touch_max = 10 };
  4794	static const struct wacom_features wacom_features_0x377 =
  4795		{ "Wacom Intuos BT S", 15200, 9500, 4095, 63,
  4796		  INTUOSHT3_BT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4 };
  4797	static const struct wacom_features wacom_features_0x379 =
  4798		{ "Wacom Intuos BT M", 21600, 13500, 4095, 63,
  4799		  INTUOSHT3_BT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4 };
  4800	static const struct wacom_features wacom_features_0x37A =
  4801		{ "Wacom One by Wacom S", 15200, 9500, 2047, 63,
  4802		  BAMBOO_PEN, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4803	static const struct wacom_features wacom_features_0x37B =
  4804		{ "Wacom One by Wacom M", 21600, 13500, 2047, 63,
  4805		  BAMBOO_PEN, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
  4806	static const struct wacom_features wacom_features_0x393 =
  4807		{ "Wacom Intuos Pro S", 31920, 19950, 8191, 63,
  4808		  INTUOSP2S_BT, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, 7,
  4809		  .touch_max = 10 };
  4810	static const struct wacom_features wacom_features_0x3c6 =
  4811		{ "Wacom Intuos BT S", 15200, 9500, 4095, 63,
  4812		  INTUOSHT3_BT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4 };
  4813	static const struct wacom_features wacom_features_0x3c8 =
  4814		{ "Wacom Intuos BT M", 21600, 13500, 4095, 63,
  4815		  INTUOSHT3_BT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4 };
  4816	
  4817	static const struct wacom_features wacom_features_0x95 =
  4818		{ "Wacom AG14", .type = HID_GENERIC, .oVid = 0x2D1F, .oPid = 149 };
  4819	
  4820	static const struct wacom_features wacom_features_HID_ANY_ID =
  4821		{ "Wacom HID", .type = HID_GENERIC, .oVid = HID_ANY_ID, .oPid = HID_ANY_ID };
  4822	
  4823	#define USB_DEVICE_WACOM(prod)						\
  4824		HID_DEVICE(BUS_USB, HID_GROUP_WACOM, USB_VENDOR_ID_WACOM, prod),\
  4825		.driver_data = (kernel_ulong_t)&wacom_features_##prod
  4826	
  4827	#define BT_DEVICE_WACOM(prod)						\
  4828		HID_DEVICE(BUS_BLUETOOTH, HID_GROUP_WACOM, USB_VENDOR_ID_WACOM, prod),\
  4829		.driver_data = (kernel_ulong_t)&wacom_features_##prod
  4830	
  4831	#define I2C_DEVICE_WACOM(prod)						\
  4832		HID_DEVICE(BUS_I2C, HID_GROUP_WACOM, USB_VENDOR_ID_WACOM, prod),\
  4833		.driver_data = (kernel_ulong_t)&wacom_features_##prod
  4834	
  4835	#define I2C_AG14_DEVICE_WACOM(prod)					    \
> 4836		HID_DEVICE(BUS_I2C, HID_GROUP_WACOM, USB_VENDOR_ID_I2C_WACOM, prod),\
  4837		.driver_data = (kernel_ulong_t)&wacom_features_##prod
  4838	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff mbox series

Patch

diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index dbed2524fd47..724bec1754bd 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -904,6 +904,7 @@  static int hid_scan_report(struct hid_device *hid)
 	 * Vendor specific handlings
 	 */
 	switch (hid->vendor) {
+	case USB_VENDOR_ID_I2C_WACOM:
 	case USB_VENDOR_ID_WACOM:
 		hid->group = HID_GROUP_WACOM;
 		break;
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 29564b370341..daa0197445e7 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -1260,6 +1260,7 @@ 
 #define USB_DEVICE_ID_VTL_MULTITOUCH_FF3F	0xff3f
 
 #define USB_VENDOR_ID_WACOM		0x056a
+#define USB_VENDOR_ID_I2C_WACOM		0x2D1F
 #define USB_DEVICE_ID_WACOM_GRAPHIRE_BLUETOOTH	0x81
 #define USB_DEVICE_ID_WACOM_INTUOS4_BLUETOOTH   0x00BD
 
diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
index c01f683e23fa..6a800150933a 100644
--- a/drivers/hid/wacom_wac.c
+++ b/drivers/hid/wacom_wac.c
@@ -4814,6 +4814,9 @@  static const struct wacom_features wacom_features_0x3c8 =
 	{ "Wacom Intuos BT M", 21600, 13500, 4095, 63,
 	  INTUOSHT3_BT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, 4 };
 
+static const struct wacom_features wacom_features_0x95 =
+	{ "Wacom AG14", .type = HID_GENERIC, .oVid = 0x2D1F, .oPid = 149 };
+
 static const struct wacom_features wacom_features_HID_ANY_ID =
 	{ "Wacom HID", .type = HID_GENERIC, .oVid = HID_ANY_ID, .oPid = HID_ANY_ID };
 
@@ -4829,6 +4832,10 @@  static const struct wacom_features wacom_features_HID_ANY_ID =
 	HID_DEVICE(BUS_I2C, HID_GROUP_WACOM, USB_VENDOR_ID_WACOM, prod),\
 	.driver_data = (kernel_ulong_t)&wacom_features_##prod
 
+#define I2C_AG14_DEVICE_WACOM(prod)					    \
+	HID_DEVICE(BUS_I2C, HID_GROUP_WACOM, USB_VENDOR_ID_I2C_WACOM, prod),\
+	.driver_data = (kernel_ulong_t)&wacom_features_##prod
+
 #define USB_DEVICE_LENOVO(prod)					\
 	HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, prod),			\
 	.driver_data = (kernel_ulong_t)&wacom_features_##prod
@@ -4890,6 +4897,7 @@  const struct hid_device_id wacom_ids[] = {
 	{ USB_DEVICE_WACOM(0x84) },
 	{ USB_DEVICE_WACOM(0x90) },
 	{ USB_DEVICE_WACOM(0x93) },
+	{ I2C_AG14_DEVICE_WACOM(0x95) },
 	{ USB_DEVICE_WACOM(0x97) },
 	{ USB_DEVICE_WACOM(0x9A) },
 	{ USB_DEVICE_WACOM(0x9F) },