[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202507151942.94dhYylY-lkp@intel.com>
Date: Tue, 15 Jul 2025 19:35:07 +0800
From: kernel test robot <lkp@...el.com>
To: Jonathan Denose <jdenose@...gle.com>, Jiri Kosina <jikos@...nel.org>,
Benjamin Tissoires <bentiss@...nel.org>,
Dmitry Torokhov <dmitry.torokhov@...il.com>,
Jonathan Corbet <corbet@....net>,
Henrik Rydberg <rydberg@...math.org>
Cc: oe-kbuild-all@...ts.linux.dev, linux-input@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-doc@...r.kernel.org,
Angela Czubak <aczubak@...gle.com>,
Sean O'Brien <seobrien@...gle.com>,
Jonathan Denose <jdenose@...gle.com>
Subject: Re: [PATCH 11/11] HID: multitouch: add haptic multitouch support
Hi Jonathan,
kernel test robot noticed the following build errors:
[auto build test ERROR on 86731a2a651e58953fc949573895f2fa6d456841]
url: https://github.com/intel-lab-lkp/linux/commits/Jonathan-Denose/HID-add-haptics-page-defines/20250714-231444
base: 86731a2a651e58953fc949573895f2fa6d456841
patch link: https://lore.kernel.org/r/20250714-support-forcepads-v1-11-71c7c05748c9%40google.com
patch subject: [PATCH 11/11] HID: multitouch: add haptic multitouch support
config: hexagon-randconfig-r112-20250715 (https://download.01.org/0day-ci/archive/20250715/202507151942.94dhYylY-lkp@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce: (https://download.01.org/0day-ci/archive/20250715/202507151942.94dhYylY-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202507151942.94dhYylY-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/hid/hid-haptic.c:13:6: error: redefinition of 'hid_haptic_feature_mapping'
13 | void hid_haptic_feature_mapping(struct hid_device *hdev,
| ^
drivers/hid/hid-haptic.h:83:6: note: previous definition is here
83 | void hid_haptic_feature_mapping(struct hid_device *hdev,
| ^
>> drivers/hid/hid-haptic.c:51:6: error: redefinition of 'hid_haptic_check_pressure_unit'
51 | bool hid_haptic_check_pressure_unit(struct hid_haptic_device *haptic,
| ^
drivers/hid/hid-haptic.h:89:6: note: previous definition is here
89 | bool hid_haptic_check_pressure_unit(struct hid_haptic_device *haptic,
| ^
>> drivers/hid/hid-haptic.c:65:5: error: redefinition of 'hid_haptic_input_mapping'
65 | int hid_haptic_input_mapping(struct hid_device *hdev,
| ^
drivers/hid/hid-haptic.h:95:5: note: previous definition is here
95 | int hid_haptic_input_mapping(struct hid_device *hdev,
| ^
>> drivers/hid/hid-haptic.c:81:5: error: redefinition of 'hid_haptic_input_configured'
81 | int hid_haptic_input_configured(struct hid_device *hdev,
| ^
drivers/hid/hid-haptic.h:104:5: note: previous definition is here
104 | int hid_haptic_input_configured(struct hid_device *hdev,
| ^
>> drivers/hid/hid-haptic.c:403:5: error: redefinition of 'hid_haptic_init'
403 | int hid_haptic_init(struct hid_device *hdev,
| ^
drivers/hid/hid-haptic.h:114:5: note: previous definition is here
114 | int hid_haptic_init(struct hid_device *hdev, struct hid_haptic_device **haptic_ptr)
| ^
>> drivers/hid/hid-haptic.c:569:6: error: redefinition of 'hid_haptic_pressure_reset'
569 | void hid_haptic_pressure_reset(struct hid_haptic_device *haptic)
| ^
drivers/hid/hid-haptic.h:126:6: note: previous definition is here
126 | void hid_haptic_pressure_reset(struct hid_haptic_device *haptic) {}
| ^
>> drivers/hid/hid-haptic.c:575:6: error: redefinition of 'hid_haptic_pressure_increase'
575 | void hid_haptic_pressure_increase(struct hid_haptic_device *haptic,
| ^
drivers/hid/hid-haptic.h:128:6: note: previous definition is here
128 | void hid_haptic_pressure_increase(struct hid_haptic_device *haptic,
| ^
7 errors generated.
vim +/hid_haptic_feature_mapping +13 drivers/hid/hid-haptic.c
783df9659b1cddf Angela Czubak 2025-07-14 12
783df9659b1cddf Angela Czubak 2025-07-14 @13 void hid_haptic_feature_mapping(struct hid_device *hdev,
783df9659b1cddf Angela Czubak 2025-07-14 14 struct hid_haptic_device *haptic,
783df9659b1cddf Angela Czubak 2025-07-14 15 struct hid_field *field, struct hid_usage *usage)
783df9659b1cddf Angela Czubak 2025-07-14 16 {
59b86a929daae04 Angela Czubak 2025-07-14 17 u16 usage_hid;
59b86a929daae04 Angela Czubak 2025-07-14 18
783df9659b1cddf Angela Czubak 2025-07-14 19 if (usage->hid == HID_HP_AUTOTRIGGER) {
783df9659b1cddf Angela Czubak 2025-07-14 20 if (usage->usage_index >= field->report_count) {
783df9659b1cddf Angela Czubak 2025-07-14 21 dev_err(&hdev->dev,
783df9659b1cddf Angela Czubak 2025-07-14 22 "HID_HP_AUTOTRIGGER out of range\n");
783df9659b1cddf Angela Czubak 2025-07-14 23 return;
783df9659b1cddf Angela Czubak 2025-07-14 24 }
783df9659b1cddf Angela Czubak 2025-07-14 25
783df9659b1cddf Angela Czubak 2025-07-14 26 hid_device_io_start(hdev);
783df9659b1cddf Angela Czubak 2025-07-14 27 hid_hw_request(hdev, field->report, HID_REQ_GET_REPORT);
783df9659b1cddf Angela Czubak 2025-07-14 28 hid_hw_wait(hdev);
783df9659b1cddf Angela Czubak 2025-07-14 29 hid_device_io_stop(hdev);
783df9659b1cddf Angela Czubak 2025-07-14 30 haptic->default_auto_trigger =
783df9659b1cddf Angela Czubak 2025-07-14 31 field->value[usage->usage_index];
783df9659b1cddf Angela Czubak 2025-07-14 32 haptic->auto_trigger_report = field->report;
59b86a929daae04 Angela Czubak 2025-07-14 33 } else if ((usage->hid & HID_USAGE_PAGE) == HID_UP_ORDINAL) {
59b86a929daae04 Angela Czubak 2025-07-14 34 usage_hid = usage->hid & HID_USAGE;
59b86a929daae04 Angela Czubak 2025-07-14 35 switch (field->logical) {
59b86a929daae04 Angela Czubak 2025-07-14 36 case HID_HP_WAVEFORMLIST:
59b86a929daae04 Angela Czubak 2025-07-14 37 if (usage_hid > haptic->max_waveform_id)
59b86a929daae04 Angela Czubak 2025-07-14 38 haptic->max_waveform_id = usage_hid;
59b86a929daae04 Angela Czubak 2025-07-14 39 break;
59b86a929daae04 Angela Czubak 2025-07-14 40 case HID_HP_DURATIONLIST:
59b86a929daae04 Angela Czubak 2025-07-14 41 if (usage_hid > haptic->max_duration_id)
59b86a929daae04 Angela Czubak 2025-07-14 42 haptic->max_duration_id = usage_hid;
59b86a929daae04 Angela Czubak 2025-07-14 43 break;
59b86a929daae04 Angela Czubak 2025-07-14 44 default:
59b86a929daae04 Angela Czubak 2025-07-14 45 break;
59b86a929daae04 Angela Czubak 2025-07-14 46 }
783df9659b1cddf Angela Czubak 2025-07-14 47 }
783df9659b1cddf Angela Czubak 2025-07-14 48 }
783df9659b1cddf Angela Czubak 2025-07-14 49 EXPORT_SYMBOL_GPL(hid_haptic_feature_mapping);
783df9659b1cddf Angela Czubak 2025-07-14 50
783df9659b1cddf Angela Czubak 2025-07-14 @51 bool hid_haptic_check_pressure_unit(struct hid_haptic_device *haptic,
783df9659b1cddf Angela Czubak 2025-07-14 52 struct hid_input *hi, struct hid_field *field)
783df9659b1cddf Angela Czubak 2025-07-14 53 {
f96e0cf76b31615 Angela Czubak 2025-07-14 54 if (field->unit == HID_UNIT_GRAM || field->unit == HID_UNIT_NEWTON) {
f96e0cf76b31615 Angela Czubak 2025-07-14 55 haptic->force_logical_minimum = field->logical_minimum;
f96e0cf76b31615 Angela Czubak 2025-07-14 56 haptic->force_physical_minimum = field->physical_minimum;
f96e0cf76b31615 Angela Czubak 2025-07-14 57 haptic->force_resolution = input_abs_get_res(hi->input,
f96e0cf76b31615 Angela Czubak 2025-07-14 58 ABS_MT_PRESSURE);
783df9659b1cddf Angela Czubak 2025-07-14 59 return true;
f96e0cf76b31615 Angela Czubak 2025-07-14 60 }
783df9659b1cddf Angela Czubak 2025-07-14 61 return false;
783df9659b1cddf Angela Czubak 2025-07-14 62 }
783df9659b1cddf Angela Czubak 2025-07-14 63 EXPORT_SYMBOL_GPL(hid_haptic_check_pressure_unit);
783df9659b1cddf Angela Czubak 2025-07-14 64
783df9659b1cddf Angela Czubak 2025-07-14 @65 int hid_haptic_input_mapping(struct hid_device *hdev,
783df9659b1cddf Angela Czubak 2025-07-14 66 struct hid_haptic_device *haptic,
783df9659b1cddf Angela Czubak 2025-07-14 67 struct hid_input *hi,
783df9659b1cddf Angela Czubak 2025-07-14 68 struct hid_field *field, struct hid_usage *usage,
783df9659b1cddf Angela Czubak 2025-07-14 69 unsigned long **bit, int *max)
783df9659b1cddf Angela Czubak 2025-07-14 70 {
783df9659b1cddf Angela Czubak 2025-07-14 71 if (usage->hid == HID_HP_MANUALTRIGGER) {
783df9659b1cddf Angela Czubak 2025-07-14 72 haptic->manual_trigger_report = field->report;
783df9659b1cddf Angela Czubak 2025-07-14 73 /* we don't really want to map these fields */
783df9659b1cddf Angela Czubak 2025-07-14 74 return -1;
783df9659b1cddf Angela Czubak 2025-07-14 75 }
783df9659b1cddf Angela Czubak 2025-07-14 76
783df9659b1cddf Angela Czubak 2025-07-14 77 return 0;
783df9659b1cddf Angela Czubak 2025-07-14 78 }
783df9659b1cddf Angela Czubak 2025-07-14 79 EXPORT_SYMBOL_GPL(hid_haptic_input_mapping);
783df9659b1cddf Angela Czubak 2025-07-14 80
783df9659b1cddf Angela Czubak 2025-07-14 @81 int hid_haptic_input_configured(struct hid_device *hdev,
783df9659b1cddf Angela Czubak 2025-07-14 82 struct hid_haptic_device *haptic,
783df9659b1cddf Angela Czubak 2025-07-14 83 struct hid_input *hi)
783df9659b1cddf Angela Czubak 2025-07-14 84 {
783df9659b1cddf Angela Czubak 2025-07-14 85
783df9659b1cddf Angela Czubak 2025-07-14 86 if (hi->application == HID_DG_TOUCHPAD) {
783df9659b1cddf Angela Czubak 2025-07-14 87 if (haptic->auto_trigger_report &&
783df9659b1cddf Angela Czubak 2025-07-14 88 haptic->manual_trigger_report) {
783df9659b1cddf Angela Czubak 2025-07-14 89 __set_bit(INPUT_PROP_HAPTIC_TOUCHPAD, hi->input->propbit);
783df9659b1cddf Angela Czubak 2025-07-14 90 return 1;
783df9659b1cddf Angela Czubak 2025-07-14 91 }
783df9659b1cddf Angela Czubak 2025-07-14 92 return 0;
783df9659b1cddf Angela Czubak 2025-07-14 93 }
783df9659b1cddf Angela Czubak 2025-07-14 94 return -1;
783df9659b1cddf Angela Czubak 2025-07-14 95 }
783df9659b1cddf Angela Czubak 2025-07-14 96 EXPORT_SYMBOL_GPL(hid_haptic_input_configured);
59b86a929daae04 Angela Czubak 2025-07-14 97
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists