[PATCH 11/11] HID: multitouch: add haptic multitouch support

Jonathan Denose posted 11 patches 2 months, 3 weeks ago
[PATCH 11/11] HID: multitouch: add haptic multitouch support
Posted by Jonathan Denose 2 months, 3 weeks ago
From: Angela Czubak <aczubak@google.com>

Add new option (MULTITOUCH_HAPTIC) to mark whether hid-multitouch
should try and configure simple haptic device.
Once this option is configured, and the device is recognized to have simple
haptic capabilities, check input frames for pressure and handle it using
hid_haptic_* API.

Signed-off-by: Angela Czubak <aczubak@google.com>
Co-developed-by: Jonathan Denose <jdenose@google.com>
Signed-off-by: Jonathan Denose <jdenose@google.com>
---
 drivers/hid/Kconfig          |  11 ++++
 drivers/hid/hid-haptic.h     |  52 +++++++++++++++++
 drivers/hid/hid-multitouch.c | 136 ++++++++++++++++++++++++++++++++++++++++++-
 3 files changed, 198 insertions(+), 1 deletion(-)

diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
index ad6bcc4248cc111705d7cfde2b1481b46353e2d7..b7452f11a4f914f92af582ed054d42ecbcd6cb9e 100644
--- a/drivers/hid/Kconfig
+++ b/drivers/hid/Kconfig
@@ -817,6 +817,17 @@ config HID_MULTITOUCH
 	  To compile this driver as a module, choose M here: the
 	  module will be called hid-multitouch.
 
+config MULTITOUCH_HAPTIC
+	bool "Simple haptic multitouch support"
+	depends on HID_MULTITOUCH
+	select HID_HAPTIC
+	default n
+	help
+	Support for simple multitouch haptic devices.
+	Adds extra parsing and FF device for the hid multitouch driver.
+	It can be used for Elan 2703 haptic touchpad.
+	To enable, say Y.
+
 config HID_NINTENDO
 	tristate "Nintendo Joy-Con, NSO, and Pro Controller support"
 	depends on NEW_LEDS
diff --git a/drivers/hid/hid-haptic.h b/drivers/hid/hid-haptic.h
index 0a34b0c6d706a985630962acc41f7a8eb73cd343..808cec0b4e51eba1f58b839f3e552493655b7899 100644
--- a/drivers/hid/hid-haptic.h
+++ b/drivers/hid/hid-haptic.h
@@ -58,6 +58,7 @@ struct hid_haptic_device {
 	struct hid_haptic_effect stop_effect;
 };
 
+#ifdef CONFIG_MULTITOUCH_HAPTIC
 void hid_haptic_feature_mapping(struct hid_device *hdev,
 				struct hid_haptic_device *haptic,
 				struct hid_field *field, struct hid_usage
@@ -77,3 +78,54 @@ void hid_haptic_handle_press_release(struct hid_haptic_device *haptic);
 void hid_haptic_pressure_reset(struct hid_haptic_device *haptic);
 void hid_haptic_pressure_increase(struct hid_haptic_device *haptic,
 				  __s32 pressure);
+#else
+static inline
+void hid_haptic_feature_mapping(struct hid_device *hdev,
+				struct hid_haptic_device *haptic,
+				struct hid_field *field, struct hid_usage
+				*usage)
+{}
+static inline
+bool hid_haptic_check_pressure_unit(struct hid_haptic_device *haptic,
+				    struct hid_input *hi, struct hid_field *field)
+{
+	return false;
+}
+static inline
+int hid_haptic_input_mapping(struct hid_device *hdev,
+			     struct hid_haptic_device *haptic,
+			     struct hid_input *hi,
+			     struct hid_field *field, struct hid_usage *usage,
+			     unsigned long **bit, int *max)
+{
+	return 0;
+}
+static inline
+int hid_haptic_input_configured(struct hid_device *hdev,
+				struct hid_haptic_device *haptic,
+				struct hid_input *hi)
+{
+	return 0;
+}
+static inline
+void hid_haptic_reset(struct hid_device *hdev, struct hid_haptic_device *haptic)
+{}
+static inline
+int hid_haptic_init(struct hid_device *hdev, struct hid_haptic_device **haptic_ptr)
+{
+	return 0;
+}
+static inline
+void hid_haptic_handle_press_release(struct hid_haptic_device *haptic) {}
+static inline
+bool hid_haptic_handle_input(struct hid_haptic_device *haptic)
+{
+	return false;
+}
+static inline
+void hid_haptic_pressure_reset(struct hid_haptic_device *haptic) {}
+static inline
+void hid_haptic_pressure_increase(struct hid_haptic_device *haptic,
+				  __s32 pressure)
+{}
+#endif
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index b41001e02da7e02d492bd85743b359ed7ec16e7f..4ff9ac5022b13a0739dbc7ae5f6ebd84f0114a73 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -49,6 +49,8 @@ MODULE_LICENSE("GPL");
 
 #include "hid-ids.h"
 
+#include "hid-haptic.h"
+
 /* quirks to control the device */
 #define MT_QUIRK_NOT_SEEN_MEANS_UP	BIT(0)
 #define MT_QUIRK_SLOT_IS_CONTACTID	BIT(1)
@@ -167,11 +169,13 @@ struct mt_report_data {
 struct mt_device {
 	struct mt_class mtclass;	/* our mt device class */
 	struct timer_list release_timer;	/* to release sticky fingers */
+	struct hid_haptic_device *haptic;	/* haptic related configuration */
 	struct hid_device *hdev;	/* hid_device we're attached to */
 	unsigned long mt_io_flags;	/* mt flags (MT_IO_FLAGS_*) */
 	__u8 inputmode_value;	/* InputMode HID feature value */
 	__u8 maxcontacts;
 	bool is_buttonpad;	/* is this device a button pad? */
+	bool is_haptic_touchpad;	/* is this device a haptic touchpad? */
 	bool serial_maybe;	/* need to check for serial protocol */
 
 	struct list_head applications;
@@ -490,6 +494,95 @@ static void mt_get_feature(struct hid_device *hdev, struct hid_report *report)
 	kfree(buf);
 }
 
+#if defined(CONFIG_MULTITOUCH_HAPTIC)
+static int mt_haptic_init(struct hid_device *hdev,
+				struct hid_haptic_device **haptic_ptr)
+{
+	return hid_haptic_init(hdev, haptic_ptr);
+}
+
+static void mt_haptic_feature_mapping(struct hid_device *hdev,
+				struct hid_haptic_device *haptic,
+				struct hid_field *field, struct hid_usage *usage)
+{
+	return hid_haptic_feature_mapping(hdev, haptic, field, usage);
+}
+
+static bool mt_haptic_check_pressure_unit(struct hid_haptic_device *haptic,
+				    struct hid_input *hi, struct hid_field *field)
+{
+	return hid_haptic_check_pressure_unit(haptic, hi, field);
+}
+
+static void mt_haptic_pressure_reset(struct hid_haptic_device *haptic)
+{
+	return hid_haptic_pressure_reset(haptic);
+}
+
+static void mt_haptic_pressure_increase(struct hid_haptic_device *haptic,
+				 __s32 pressure)
+{
+	return hid_haptic_pressure_increase(haptic, pressure);
+}
+
+static int mt_haptic_input_mapping(struct hid_device *hdev,
+			     struct hid_haptic_device *haptic,
+			     struct hid_input *hi,
+			     struct hid_field *field, struct hid_usage *usage,
+			     unsigned long **bit, int *max)
+{
+	return hid_haptic_input_mapping(hdev, haptic, hi, field, usage, bit, max);
+}
+
+static int mt_haptic_input_configured(struct hid_device *hdev,
+				struct hid_haptic_device *haptic,
+				struct hid_input *hi)
+{
+	return hid_haptic_input_configured(hdev, haptic, hi);
+}
+#else
+static int mt_haptic_init(struct hid_device *hdev,
+				struct hid_haptic_device **haptic_ptr)
+{
+	return 0;
+}
+
+static void mt_haptic_feature_mapping(struct hid_device *hdev,
+				struct hid_haptic_device *haptic,
+				struct hid_field *field, struct hid_usage *usage)
+{}
+
+static bool mt_haptic_check_pressure_unit(struct hid_haptic_device *haptic,
+				    struct hid_input *hi, struct hid_field *field)
+{
+	return 0;
+}
+
+static void mt_haptic_pressure_reset(struct hid_haptic_device *haptic)
+{}
+
+static void mt_haptic_pressure_increase(struct hid_haptic_device *haptic,
+				 __s32 pressure)
+{}
+
+static int mt_haptic_input_mapping(struct hid_device *hdev,
+			     struct hid_haptic_device *haptic,
+			     struct hid_input *hi,
+			     struct hid_field *field, struct hid_usage *usage,
+			     unsigned long **bit, int *max)
+{
+	return 0;
+}
+
+static int mt_haptic_input_configured(struct hid_device *hdev,
+				struct hid_haptic_device *haptic,
+				struct hid_input *hi)
+{
+	return 0;
+}
+#endif
+
+
 static void mt_feature_mapping(struct hid_device *hdev,
 		struct hid_field *field, struct hid_usage *usage)
 {
@@ -525,6 +618,8 @@ static void mt_feature_mapping(struct hid_device *hdev,
 			mt_get_feature(hdev, field->report);
 		break;
 	}
+
+	mt_haptic_feature_mapping(hdev, td->haptic, field, usage);
 }
 
 static void set_abs(struct input_dev *input, unsigned int code,
@@ -856,6 +951,9 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
 		case HID_DG_TIPPRESSURE:
 			set_abs(hi->input, ABS_MT_PRESSURE, field,
 				cls->sn_pressure);
+			td->is_haptic_touchpad =
+				mt_haptic_check_pressure_unit(td->haptic,
+							       hi, field);
 			MT_STORE_FIELD(p);
 			return 1;
 		case HID_DG_SCANTIME:
@@ -980,6 +1078,8 @@ static void mt_sync_frame(struct mt_device *td, struct mt_application *app,
 
 	app->num_received = 0;
 	app->left_button_state = 0;
+	if (td->is_haptic_touchpad)
+		mt_haptic_pressure_reset(td->haptic);
 
 	if (test_bit(MT_IO_FLAGS_ACTIVE_SLOTS, &td->mt_io_flags))
 		set_bit(MT_IO_FLAGS_PENDING_SLOTS, &td->mt_io_flags);
@@ -1137,6 +1237,9 @@ static int mt_process_slot(struct mt_device *td, struct input_dev *input,
 			minor = minor >> 1;
 		}
 
+		if (td->is_haptic_touchpad)
+			mt_haptic_pressure_increase(td->haptic, *slot->p);
+
 		x = hdev->quirks & HID_QUIRK_X_INVERT ?
 			input_abs_get_max(input, ABS_MT_POSITION_X) - *slot->x :
 			*slot->x;
@@ -1324,6 +1427,9 @@ static int mt_touch_input_configured(struct hid_device *hdev,
 	if (cls->is_indirect)
 		app->mt_flags |= INPUT_MT_POINTER;
 
+	if (td->is_haptic_touchpad)
+		app->mt_flags |= INPUT_MT_TOTAL_FORCE;
+
 	if (app->quirks & MT_QUIRK_NOT_SEEN_MEANS_UP)
 		app->mt_flags |= INPUT_MT_DROP_UNUSED;
 
@@ -1359,6 +1465,7 @@ static int mt_input_mapping(struct hid_device *hdev, struct hid_input *hi,
 	struct mt_device *td = hid_get_drvdata(hdev);
 	struct mt_application *application;
 	struct mt_report_data *rdata;
+	int ret;
 
 	rdata = mt_find_report_data(td, field->report);
 	if (!rdata) {
@@ -1421,6 +1528,11 @@ static int mt_input_mapping(struct hid_device *hdev, struct hid_input *hi,
 	if (field->physical == HID_DG_STYLUS)
 		hi->application = HID_DG_STYLUS;
 
+	ret = mt_haptic_input_mapping(hdev, td->haptic, hi, field, usage, bit,
+				       max);
+	if (ret != 0)
+		return ret;
+
 	/* let hid-core decide for the others */
 	return 0;
 }
@@ -1635,6 +1747,14 @@ static int mt_input_configured(struct hid_device *hdev, struct hid_input *hi)
 	struct hid_report *report;
 	int ret;
 
+	if (td->is_haptic_touchpad && (td->mtclass.name == MT_CLS_WIN_8 ||
+	    td->mtclass.name == MT_CLS_WIN_8_FORCE_MULTI_INPUT)) {
+		if (mt_haptic_input_configured(hdev, td->haptic, hi) == 0)
+			td->is_haptic_touchpad = false;
+	} else {
+		td->is_haptic_touchpad = false;
+	}
+
 	list_for_each_entry(report, &hi->reports, hidinput_list) {
 		rdata = mt_find_report_data(td, report);
 		if (!rdata) {
@@ -1764,7 +1884,6 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
 	int ret, i;
 	struct mt_device *td;
 	const struct mt_class *mtclass = mt_classes; /* MT_CLS_DEFAULT */
-
 	for (i = 0; mt_classes[i].name ; i++) {
 		if (id->driver_data == mt_classes[i].name) {
 			mtclass = &(mt_classes[i]);
@@ -1777,6 +1896,10 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
 		dev_err(&hdev->dev, "cannot allocate multitouch data\n");
 		return -ENOMEM;
 	}
+	td->haptic = kzalloc(sizeof(*(td->haptic)), GFP_KERNEL);
+	if (!td->haptic)
+		return -ENOMEM;
+	td->haptic->hdev = hdev;
 	td->hdev = hdev;
 	td->mtclass = *mtclass;
 	td->inputmode_value = MT_INPUTMODE_TOUCHSCREEN;
@@ -1840,6 +1963,17 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
 
 	mt_set_modes(hdev, HID_LATENCY_NORMAL, TOUCHPAD_REPORT_ALL);
 
+	if (td->is_haptic_touchpad) {
+		if (mt_haptic_init(hdev, &td->haptic)) {
+			dev_warn(&hdev->dev, "Cannot allocate haptic for %s\n",
+				 hdev->name);
+			td->is_haptic_touchpad = false;
+			kfree(td->haptic);
+		}
+	} else {
+		kfree(td->haptic);
+	}
+
 	return 0;
 }
 

-- 
2.50.0.727.gbf7dc18ff4-goog
Re: [PATCH 11/11] HID: multitouch: add haptic multitouch support
Posted by kernel test robot 2 months, 3 weeks ago
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@intel.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
Re: [PATCH 11/11] HID: multitouch: add haptic multitouch support
Posted by Jonathan Denose 2 months, 3 weeks ago
On Tue, Jul 15, 2025 at 6:36 AM kernel test robot <lkp@intel.com> wrote:
> 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)

I'm having trouble reproducing this build error. I tried following the
steps in the linked reproduce file, but when running:
COMPILER_INSTALL_PATH=$HOME/0day ~/lkp-tests/kbuild/make.cross C=1
CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__ -fmax-errors=unlimited
-fmax-warnings=unlimited' O=build_dir ARCH=hexagon olddefconfig

I get the errors:
0day/gcc-4.6.1-nolibc/hexagon-linux/bin/hexagon-linux-gcc: unknown C compiler
scripts/Kconfig.include:45: Sorry, this C compiler is not supported.

It looks to me like the hexagon-linux-gcc compiler is correctly
installed at $HOME/0day so I'm not sure what to do from here. Can
someone please assist me with this?

--
Jonathan
Re: [PATCH 11/11] HID: multitouch: add haptic multitouch support
Posted by Philip Li 2 months, 3 weeks ago
On Thu, Jul 17, 2025 at 01:43:28PM -0500, Jonathan Denose wrote:
> On Tue, Jul 15, 2025 at 6:36 AM kernel test robot <lkp@intel.com> wrote:
> > 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)
> 
> I'm having trouble reproducing this build error. I tried following the

Sorry Jonathan, the reproduce step we provide is wrong, would you mind to give
a try similar to the steps in [1]? We will resolve the bug as early as possible.

[1] https://download.01.org/0day-ci/archive/20250717/202507170506.Wzz1lR5I-lkp@intel.com/reproduce

> steps in the linked reproduce file, but when running:
> COMPILER_INSTALL_PATH=$HOME/0day ~/lkp-tests/kbuild/make.cross C=1
> CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__ -fmax-errors=unlimited
> -fmax-warnings=unlimited' O=build_dir ARCH=hexagon olddefconfig
> 
> I get the errors:
> 0day/gcc-4.6.1-nolibc/hexagon-linux/bin/hexagon-linux-gcc: unknown C compiler
> scripts/Kconfig.include:45: Sorry, this C compiler is not supported.
> 
> It looks to me like the hexagon-linux-gcc compiler is correctly
> installed at $HOME/0day so I'm not sure what to do from here. Can
> someone please assist me with this?
> 
> --
> Jonathan
> 
Re: [PATCH 11/11] HID: multitouch: add haptic multitouch support
Posted by Jonathan Denose 2 months, 2 weeks ago
On Thu, Jul 17, 2025 at 6:59 PM Philip Li <philip.li@intel.com> wrote:
>
> On Thu, Jul 17, 2025 at 01:43:28PM -0500, Jonathan Denose wrote:
> > On Tue, Jul 15, 2025 at 6:36 AM kernel test robot <lkp@intel.com> wrote:
> > > 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)
> >
> > I'm having trouble reproducing this build error. I tried following the
>
> Sorry Jonathan, the reproduce step we provide is wrong, would you mind to give
> a try similar to the steps in [1]? We will resolve the bug as early as possible.
>
> [1] https://download.01.org/0day-ci/archive/20250717/202507170506.Wzz1lR5I-lkp@intel.com/reproduce
>
> > steps in the linked reproduce file, but when running:
> > COMPILER_INSTALL_PATH=$HOME/0day ~/lkp-tests/kbuild/make.cross C=1
> > CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__ -fmax-errors=unlimited
> > -fmax-warnings=unlimited' O=build_dir ARCH=hexagon olddefconfig
> >
> > I get the errors:
> > 0day/gcc-4.6.1-nolibc/hexagon-linux/bin/hexagon-linux-gcc: unknown C compiler
> > scripts/Kconfig.include:45: Sorry, this C compiler is not supported.
> >
> > It looks to me like the hexagon-linux-gcc compiler is correctly
> > installed at $HOME/0day so I'm not sure what to do from here. Can
> > someone please assist me with this?
> >
> > --
> > Jonathan
> >
Great! Thanks for providing the correct reproduce steps Phillip.

I tried them and both of the make.cross steps completed successfully.
I am not getting the build errors that the test bot is reporting.
-- 
Jonathan
Re: [PATCH 11/11] HID: multitouch: add haptic multitouch support
Posted by Oliver Sang 2 months, 1 week ago
hi, Jonathan,

On Mon, Jul 21, 2025 at 11:06:33AM -0500, Jonathan Denose wrote:
> On Thu, Jul 17, 2025 at 6:59 PM Philip Li <philip.li@intel.com> wrote:
> >
> > On Thu, Jul 17, 2025 at 01:43:28PM -0500, Jonathan Denose wrote:
> > > On Tue, Jul 15, 2025 at 6:36 AM kernel test robot <lkp@intel.com> wrote:
> > > > 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)
> > >
> > > I'm having trouble reproducing this build error. I tried following the
> >
> > Sorry Jonathan, the reproduce step we provide is wrong, would you mind to give
> > a try similar to the steps in [1]? We will resolve the bug as early as possible.
> >
> > [1] https://download.01.org/0day-ci/archive/20250717/202507170506.Wzz1lR5I-lkp@intel.com/reproduce
> >
> > > steps in the linked reproduce file, but when running:
> > > COMPILER_INSTALL_PATH=$HOME/0day ~/lkp-tests/kbuild/make.cross C=1
> > > CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__ -fmax-errors=unlimited
> > > -fmax-warnings=unlimited' O=build_dir ARCH=hexagon olddefconfig
> > >
> > > I get the errors:
> > > 0day/gcc-4.6.1-nolibc/hexagon-linux/bin/hexagon-linux-gcc: unknown C compiler
> > > scripts/Kconfig.include:45: Sorry, this C compiler is not supported.
> > >
> > > It looks to me like the hexagon-linux-gcc compiler is correctly
> > > installed at $HOME/0day so I'm not sure what to do from here. Can
> > > someone please assist me with this?
> > >
> > > --
> > > Jonathan
> > >
> Great! Thanks for providing the correct reproduce steps Phillip.
> 
> I tried them and both of the make.cross steps completed successfully.
> I am not getting the build errors that the test bot is reporting.

sorry for this. just want to confirm one thing, did you follow below steps?
(the link [1] above is just for example, we need do small modification to
reproduce the issue in original report, there are 4 diff in below with [1],
(1) use your commit, (2) 'wget' command to get correct config (3) change to
use clang-17, btw, clang-20 can also reproduce the issue (4) change build
source to 'drivers/hid')

reproduce:
        git clone https://github.com/intel/lkp-tests.git ~/lkp-tests
        # https://github.com/intel-lab-lkp/linux/commit/4ccef2fdc95970f67857113edb4103d53205ac9c
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Jonathan-Denose/HID-add-haptics-page-defines/20250714-231444
        git checkout 4ccef2fdc95970f67857113edb4103d53205ac9c
        # save the config file
        wget https://download.01.org/0day-ci/archive/20250715/202507151942.94dhYylY-lkp@intel.com/config
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang-17 ~/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=hexagon olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang-17 ~/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/hid/


I can reproduce the issue with above steps, if you still cannot reproduce,
could you give me your full log? below is mine just FYI (this is for clang-20,
and I use some different folders but not important)

xsang@xsang-OptiPlex-9020:~/linux$ COMPILER_INSTALL_PATH=/home/xsang/cross-compiler/ COMPILER=clang-20 /home/xsang/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=hexagon olddefconfig
Compiler will be installed in /home/xsang/cross-compiler/
lftpget -c https://cdn.kernel.org/pub/tools/llvm/files/./llvm-20.1.8-x86_64.tar.xz
/home/xsang/linux
tar Jxf /home/xsang/cross-compiler//./llvm-20.1.8-x86_64.tar.xz -C /home/xsang/cross-compiler/
PATH=/home/xsang/cross-compiler//llvm-20.1.8-x86_64/bin:/home/xsang/.local/bin:/home/xsang/bin:/home/xsang/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/xsang/.local/bin
make --keep-going LLVM=1 CROSS_COMPILE=hexagon-linux- --jobs=72 KCFLAGS= -Wno-error=return-type -Wreturn-type -funsigned-char -Wundef W=1 O=build_dir ARCH=hexagon olddefconfig
make[1]: Entering directory '/home/xsang/linux/build_dir'
  GEN     Makefile
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/expr.o
  LEX     scripts/kconfig/lexer.lex.c
  YACC    scripts/kconfig/parser.tab.[ch]
  HOSTCC  scripts/kconfig/menu.o
  HOSTCC  scripts/kconfig/preprocess.o
  HOSTCC  scripts/kconfig/symbol.o
  HOSTCC  scripts/kconfig/util.o
  HOSTCC  scripts/kconfig/lexer.lex.o
  HOSTCC  scripts/kconfig/parser.tab.o
  HOSTLD  scripts/kconfig/conf
#
# configuration written to .config
#
make[1]: Leaving directory '/home/xsang/linux/build_dir'


xsang@xsang-OptiPlex-9020:~/linux$ COMPILER_INSTALL_PATH=/home/xsang/cross-compiler/ COMPILER=clang-20 /home/xsang/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/hid/
Compiler will be installed in /home/xsang/cross-compiler/
PATH=/home/xsang/cross-compiler//llvm-20.1.8-x86_64/bin:/home/xsang/.local/bin:/home/xsang/bin:/home/xsang/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/xsang/.local/bin
make --keep-going LLVM=1 CROSS_COMPILE=hexagon-linux- --jobs=72 KCFLAGS= -Wno-error=return-type -Wreturn-type -funsigned-char -Wundef W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/hid/
make[1]: Entering directory '/home/xsang/linux/build_dir'
  GEN     Makefile
  GENSEED scripts/basic/randstruct.seed
  WRAP    arch/hexagon/include/generated/uapi/asm/ucontext.h
  WRAP    arch/hexagon/include/generated/uapi/asm/auxvec.h
  WRAP    arch/hexagon/include/generated/uapi/asm/bitsperlong.h
  WRAP    arch/hexagon/include/generated/uapi/asm/bpf_perf_event.h
  WRAP    arch/hexagon/include/generated/uapi/asm/errno.h
  WRAP    arch/hexagon/include/generated/uapi/asm/fcntl.h
  UPD     include/generated/uapi/linux/version.h
  WRAP    arch/hexagon/include/generated/uapi/asm/ioctl.h
  WRAP    arch/hexagon/include/generated/uapi/asm/ipcbuf.h
  WRAP    arch/hexagon/include/generated/uapi/asm/ioctls.h
  WRAP    arch/hexagon/include/generated/uapi/asm/mman.h
  WRAP    arch/hexagon/include/generated/uapi/asm/msgbuf.h
  WRAP    arch/hexagon/include/generated/uapi/asm/poll.h
  WRAP    arch/hexagon/include/generated/uapi/asm/posix_types.h
  WRAP    arch/hexagon/include/generated/uapi/asm/resource.h
  WRAP    arch/hexagon/include/generated/uapi/asm/sembuf.h
  WRAP    arch/hexagon/include/generated/uapi/asm/shmbuf.h
  WRAP    arch/hexagon/include/generated/uapi/asm/siginfo.h
  WRAP    arch/hexagon/include/generated/uapi/asm/sockios.h
  WRAP    arch/hexagon/include/generated/uapi/asm/socket.h
  WRAP    arch/hexagon/include/generated/uapi/asm/stat.h
  WRAP    arch/hexagon/include/generated/uapi/asm/statfs.h
  WRAP    arch/hexagon/include/generated/uapi/asm/termbits.h
  WRAP    arch/hexagon/include/generated/uapi/asm/types.h
  WRAP    arch/hexagon/include/generated/uapi/asm/termios.h
  SYSHDR  arch/hexagon/include/generated/uapi/asm/unistd_32.h
  UPD     include/config/kernel.release
  UPD     include/generated/compile.h
  HOSTCC  scripts/dtc/dtc.o
  HOSTCC  scripts/dtc/flattree.o
  HOSTCC  scripts/dtc/fstree.o
  HOSTCC  scripts/dtc/data.o
  HOSTCC  scripts/dtc/livetree.o
  HOSTCC  scripts/dtc/treesource.o
  HOSTCC  scripts/dtc/srcpos.o
  HOSTCC  scripts/dtc/checks.o
  HOSTCC  scripts/dtc/util.o
  LEX     scripts/dtc/dtc-lexer.lex.c
  YACC    scripts/dtc/dtc-parser.tab.[ch]
  HOSTCC  scripts/dtc/libfdt/fdt.o
  HOSTCC  scripts/dtc/libfdt/fdt_ro.o
  UPD     include/generated/utsrelease.h
  HOSTCC  scripts/dtc/libfdt/fdt_wip.o
  HOSTCC  scripts/dtc/libfdt/fdt_sw.o
  HOSTCC  scripts/dtc/libfdt/fdt_rw.o
  HOSTCC  scripts/dtc/libfdt/fdt_strerror.o
  HOSTCC  scripts/dtc/libfdt/fdt_empty_tree.o
  HOSTCC  scripts/dtc/libfdt/fdt_addresses.o
  HOSTCC  scripts/dtc/libfdt/fdt_overlay.o
  HOSTCC  scripts/dtc/fdtoverlay.o
  WRAP    arch/hexagon/include/generated/asm/extable.h
  WRAP    arch/hexagon/include/generated/asm/iomap.h
  WRAP    arch/hexagon/include/generated/asm/kvm_para.h
  WRAP    arch/hexagon/include/generated/asm/mcs_spinlock.h
  WRAP    arch/hexagon/include/generated/asm/text-patching.h
  WRAP    arch/hexagon/include/generated/asm/archrandom.h
  WRAP    arch/hexagon/include/generated/asm/barrier.h
  WRAP    arch/hexagon/include/generated/asm/bug.h
  WRAP    arch/hexagon/include/generated/asm/cfi.h
  WRAP    arch/hexagon/include/generated/asm/compat.h
  WRAP    arch/hexagon/include/generated/asm/current.h
  WRAP    arch/hexagon/include/generated/asm/device.h
  WRAP    arch/hexagon/include/generated/asm/div64.h
  WRAP    arch/hexagon/include/generated/asm/dma-mapping.h
  WRAP    arch/hexagon/include/generated/asm/emergency-restart.h
  WRAP    arch/hexagon/include/generated/asm/ftrace.h
  WRAP    arch/hexagon/include/generated/asm/hardirq.h
  WRAP    arch/hexagon/include/generated/asm/hw_irq.h
  WRAP    arch/hexagon/include/generated/asm/irq_regs.h
  WRAP    arch/hexagon/include/generated/asm/irq_work.h
  WRAP    arch/hexagon/include/generated/asm/kdebug.h
  WRAP    arch/hexagon/include/generated/asm/kmap_size.h
  WRAP    arch/hexagon/include/generated/asm/kprobes.h
  WRAP    arch/hexagon/include/generated/asm/local.h
  WRAP    arch/hexagon/include/generated/asm/local64.h
  WRAP    arch/hexagon/include/generated/asm/mmiowb.h
  WRAP    arch/hexagon/include/generated/asm/module.h
  WRAP    arch/hexagon/include/generated/asm/module.lds.h
  WRAP    arch/hexagon/include/generated/asm/msi.h
  WRAP    arch/hexagon/include/generated/asm/pci.h
  WRAP    arch/hexagon/include/generated/asm/percpu.h
  WRAP    arch/hexagon/include/generated/asm/preempt.h
  WRAP    arch/hexagon/include/generated/asm/rqspinlock.h
  WRAP    arch/hexagon/include/generated/asm/runtime-const.h
  WRAP    arch/hexagon/include/generated/asm/rwonce.h
  WRAP    arch/hexagon/include/generated/asm/sections.h
  WRAP    arch/hexagon/include/generated/asm/serial.h
  WRAP    arch/hexagon/include/generated/asm/shmparam.h
  WRAP    arch/hexagon/include/generated/asm/simd.h
  WRAP    arch/hexagon/include/generated/asm/softirq_stack.h
  WRAP    arch/hexagon/include/generated/asm/topology.h
  WRAP    arch/hexagon/include/generated/asm/trace_clock.h
  WRAP    arch/hexagon/include/generated/asm/vga.h
  WRAP    arch/hexagon/include/generated/asm/video.h
  WRAP    arch/hexagon/include/generated/asm/word-at-a-time.h
  WRAP    arch/hexagon/include/generated/asm/xor.h
  SYSTBL  arch/hexagon/include/generated/asm/syscall_table_32.h
  HOSTCC  scripts/dtc/dtc-lexer.lex.o
  HOSTCC  scripts/dtc/dtc-parser.tab.o
  HOSTLD  scripts/dtc/fdtoverlay
  HOSTLD  scripts/dtc/dtc
  HOSTCC  scripts/kallsyms
  HOSTCC  scripts/asn1_compiler
  HOSTCC  scripts/insert-sys-cert
  CC      scripts/mod/empty.o
  HOSTCC  scripts/mod/mk_elfconfig
  CC      scripts/mod/devicetable-offsets.s
  UPD     scripts/mod/devicetable-offsets.h
  MKELF   scripts/mod/elfconfig.h
  HOSTCC  scripts/mod/modpost.o
  HOSTCC  scripts/mod/file2alias.o
  HOSTCC  scripts/mod/sumversion.o
  HOSTCC  scripts/mod/symsearch.o
  HOSTLD  scripts/mod/modpost
  CC      kernel/bounds.s
  CHKSHA1 ../include/linux/atomic/atomic-arch-fallback.h
  CHKSHA1 ../include/linux/atomic/atomic-instrumented.h
  CHKSHA1 ../include/linux/atomic/atomic-long.h
  UPD     include/generated/timeconst.h
  UPD     include/generated/bounds.h
  CC      arch/hexagon/kernel/asm-offsets.s
  UPD     include/generated/asm-offsets.h
  CALL    ../scripts/checksyscalls.sh
  CC      drivers/hid/hid-core.o
  CC      drivers/hid/hid-input.o
  CC      drivers/hid/hid-quirks.o
  CC      drivers/hid/hid-debug.o
  CC      drivers/hid/hid-haptic.o
  CC [M]  drivers/hid/usbhid/hid-core.o
  CC      drivers/hid/hidraw.o
  CC [M]  drivers/hid/usbhid/hiddev.o
  CC [M]  drivers/hid/usbhid/hid-pidff.o
  CC      drivers/hid/hid-a4tech.o
  CC      drivers/hid/hid-alps.o
  CC      drivers/hid/hid-apple.o
  CC      drivers/hid/hid-belkin.o
  CC      drivers/hid/hid-cherry.o
  CC      drivers/hid/hid-cmedia.o
  CC      drivers/hid/hid-cougar.o
  CC      drivers/hid/hid-ezkey.o
  CC      drivers/hid/hid-icade.o
  CC      drivers/hid/hid-ite.o
  CC      drivers/hid/hid-jabra.o
  CC      drivers/hid/hid-kensington.o
  CC      drivers/hid/hid-ortek.o
  CC      drivers/hid/hid-razer.o
  CC      drivers/hid/hid-rmi.o
  CC      drivers/hid/hid-saitek.o
  CC      drivers/hid/hid-sjoy.o
  CC      drivers/hid/hid-tivo.o
  CC      drivers/hid/hid-udraw-ps3.o
  CC      drivers/hid/hid-led.o
  CC      drivers/hid/hid-wiimote-core.o
  CC      drivers/hid/hid-wiimote-modules.o
  CC      drivers/hid/hid-wiimote-debug.o
  CC [M]  drivers/hid/uhid.o
  CC [M]  drivers/hid/hid-generic.o
  CC [M]  drivers/hid/hid-axff.o
  CC [M]  drivers/hid/hid-appleir.o
  CC [M]  drivers/hid/hid-asus.o
  CC [M]  drivers/hid/hid-aureal.o
  CC [M]  drivers/hid/hid-betopff.o
  CC [M]  drivers/hid/hid-bigbenff.o
  CC [M]  drivers/hid/hid-chicony.o
  CC [M]  drivers/hid/hid-corsair.o
  CC [M]  drivers/hid/hid-corsair-void.o
  CC [M]  drivers/hid/hid-cp2112.o
  CC [M]  drivers/hid/hid-cypress.o
  CC [M]  drivers/hid/hid-emsff.o
  CC [M]  drivers/hid/hid-elan.o
  CC [M]  drivers/hid/hid-elo.o
  CC [M]  drivers/hid/hid-gembird.o
  CC [M]  drivers/hid/hid-gfrm.o
  CC [M]  drivers/hid/hid-vivaldi-common.o
  CC [M]  drivers/hid/hid-google-stadiaff.o
  CC [M]  drivers/hid/hid-vivaldi.o
  CC [M]  drivers/hid/hid-gt683r.o
  CC [M]  drivers/hid/hid-gyration.o
  CC [M]  drivers/hid/hid-holtek-kbd.o
  CC [M]  drivers/hid/hid-holtek-mouse.o
  CC [M]  drivers/hid/hid-holtekff.o
  CC [M]  drivers/hid/hid-kye.o
  CC [M]  drivers/hid/hid-kysona.o
  CC [M]  drivers/hid/hid-letsketch.o
  CC [M]  drivers/hid/hid-macally.o
  CC [M]  drivers/hid/hid-magicmouse.o
  CC [M]  drivers/hid/hid-mcp2221.o
  CC [M]  drivers/hid/hid-megaworld.o
  CC [M]  drivers/hid/hid-microsoft.o
  CC [M]  drivers/hid/hid-nintendo.o
  CC [M]  drivers/hid/hid-nti.o
  CC [M]  drivers/hid/hid-pl.o
  CC [M]  drivers/hid/hid-penmount.o
  CC [M]  drivers/hid/hid-picolcd_core.o
  CC [M]  drivers/hid/hid-picolcd_fb.o
  CC [M]  drivers/hid/hid-picolcd_backlight.o
  CC [M]  drivers/hid/hid-picolcd_leds.o
  CC [M]  drivers/hid/hid-picolcd_cir.o
  CC [M]  drivers/hid/hid-picolcd_debugfs.o
../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  CC [M]  drivers/hid/hid-redragon.o
 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,
      |   CC [M]  drivers/hid/hid-retrode.o
     ^
7 errors generated.
make[5]: *** [../scripts/Makefile.build:287: drivers/hid/hid-haptic.o] Error 1
  CC [M]  drivers/hid/hid-roccat.o
  CC [M]  drivers/hid/hid-roccat-common.o
  CC [M]  drivers/hid/hid-roccat-arvo.o
  CC [M]  drivers/hid/hid-roccat-isku.o
  CC [M]  drivers/hid/hid-roccat-kone.o
  CC [M]  drivers/hid/hid-roccat-koneplus.o
  CC [M]  drivers/hid/hid-roccat-konepure.o
  CC [M]  drivers/hid/hid-roccat-kovaplus.o
  CC [M]  drivers/hid/hid-roccat-lua.o
  CC [M]  drivers/hid/hid-roccat-pyra.o
  CC [M]  drivers/hid/hid-roccat-ryos.o
  CC [M]  drivers/hid/hid-roccat-savu.o
  CC [M]  drivers/hid/hid-samsung.o
  CC [M]  drivers/hid/hid-sony.o
  CC [M]  drivers/hid/hid-steam.o
  CC [M]  drivers/hid/hid-sunplus.o
  CC [M]  drivers/hid/hid-gaff.o
  CC [M]  drivers/hid/hid-tmff.o
  CC [M]  drivers/hid/hid-thrustmaster.o
  CC [M]  drivers/hid/hid-uclogic-core.o
  CC [M]  drivers/hid/hid-uclogic-rdesc.o
  CC [M]  drivers/hid/hid-uclogic-params.o
  CC [M]  drivers/hid/hid-xinmo.o
  CC [M]  drivers/hid/hid-zpff.o
  CC [M]  drivers/hid/hid-vrc2.o
  CC [M]  drivers/hid/wacom_sys.o
  CC [M]  drivers/hid/wacom_wac.o
  CC [M]  drivers/hid/hid-waltop.o
  CC [M]  drivers/hid/hid-winwing.o
  CC [M]  drivers/hid/hid-uclogic-rdesc-test.o
  LD [M]  drivers/hid/usbhid/usbhid.o
  LD [M]  drivers/hid/hid-uclogic-test.o
  LD [M]  drivers/hid/hid-picolcd.o
  LD [M]  drivers/hid/hid-uclogic.o
  LD [M]  drivers/hid/wacom.o
make[5]: Target 'drivers/hid/' not remade because of errors.
make[4]: *** [../scripts/Makefile.build:554: drivers/hid] Error 2
make[4]: Target 'drivers/hid/' not remade because of errors.
make[3]: *** [../scripts/Makefile.build:554: drivers] Error 2
make[3]: Target 'drivers/hid/' not remade because of errors.
make[2]: *** [/home/xsang/linux/Makefile:2003: .] Error 2
make[2]: Target 'drivers/hid/' not remade because of errors.
make[1]: *** [/home/xsang/linux/Makefile:248: __sub-make] Error 2
make[1]: Target 'drivers/hid/' not remade because of errors.
make[1]: Leaving directory '/home/xsang/linux/build_dir'
make: *** [Makefile:248: __sub-make] Error 2
make: Target 'drivers/hid/' not remade because of errors.



> -- 
> Jonathan
> 
Re: [PATCH 11/11] HID: multitouch: add haptic multitouch support
Posted by Jonathan Denose 2 months ago
On Wed, Jul 30, 2025 at 9:55 PM Oliver Sang <oliver.sang@intel.com> wrote:
>
> hi, Jonathan,
>
> On Mon, Jul 21, 2025 at 11:06:33AM -0500, Jonathan Denose wrote:
> > On Thu, Jul 17, 2025 at 6:59 PM Philip Li <philip.li@intel.com> wrote:
> > >
> > > On Thu, Jul 17, 2025 at 01:43:28PM -0500, Jonathan Denose wrote:
> > > > On Tue, Jul 15, 2025 at 6:36 AM kernel test robot <lkp@intel.com> wrote:
> > > > > 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)
> > > >
> > > > I'm having trouble reproducing this build error. I tried following the
> > >
> > > Sorry Jonathan, the reproduce step we provide is wrong, would you mind to give
> > > a try similar to the steps in [1]? We will resolve the bug as early as possible.
> > >
> > > [1] https://download.01.org/0day-ci/archive/20250717/202507170506.Wzz1lR5I-lkp@intel.com/reproduce
> > >
> > > > steps in the linked reproduce file, but when running:
> > > > COMPILER_INSTALL_PATH=$HOME/0day ~/lkp-tests/kbuild/make.cross C=1
> > > > CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__ -fmax-errors=unlimited
> > > > -fmax-warnings=unlimited' O=build_dir ARCH=hexagon olddefconfig
> > > >
> > > > I get the errors:
> > > > 0day/gcc-4.6.1-nolibc/hexagon-linux/bin/hexagon-linux-gcc: unknown C compiler
> > > > scripts/Kconfig.include:45: Sorry, this C compiler is not supported.
> > > >
> > > > It looks to me like the hexagon-linux-gcc compiler is correctly
> > > > installed at $HOME/0day so I'm not sure what to do from here. Can
> > > > someone please assist me with this?
> > > >
> > > > --
> > > > Jonathan
> > > >
> > Great! Thanks for providing the correct reproduce steps Phillip.
> >
> > I tried them and both of the make.cross steps completed successfully.
> > I am not getting the build errors that the test bot is reporting.
>
> sorry for this. just want to confirm one thing, did you follow below steps?
> (the link [1] above is just for example, we need do small modification to
> reproduce the issue in original report, there are 4 diff in below with [1],
> (1) use your commit, (2) 'wget' command to get correct config (3) change to
> use clang-17, btw, clang-20 can also reproduce the issue (4) change build
> source to 'drivers/hid')
>
> reproduce:
>         git clone https://github.com/intel/lkp-tests.git ~/lkp-tests
>         # https://github.com/intel-lab-lkp/linux/commit/4ccef2fdc95970f67857113edb4103d53205ac9c
>         git remote add linux-review https://github.com/intel-lab-lkp/linux
>         git fetch --no-tags linux-review Jonathan-Denose/HID-add-haptics-page-defines/20250714-231444
>         git checkout 4ccef2fdc95970f67857113edb4103d53205ac9c
>         # save the config file
>         wget https://download.01.org/0day-ci/archive/20250715/202507151942.94dhYylY-lkp@intel.com/config
>         mkdir build_dir && cp config build_dir/.config
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang-17 ~/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=hexagon olddefconfig
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang-17 ~/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/hid/
>
>
> I can reproduce the issue with above steps, if you still cannot reproduce,
> could you give me your full log? below is mine just FYI (this is for clang-20,
> and I use some different folders but not important)
>
> xsang@xsang-OptiPlex-9020:~/linux$ COMPILER_INSTALL_PATH=/home/xsang/cross-compiler/ COMPILER=clang-20 /home/xsang/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=hexagon olddefconfig
> Compiler will be installed in /home/xsang/cross-compiler/
> lftpget -c https://cdn.kernel.org/pub/tools/llvm/files/./llvm-20.1.8-x86_64.tar.xz
> /home/xsang/linux
> tar Jxf /home/xsang/cross-compiler//./llvm-20.1.8-x86_64.tar.xz -C /home/xsang/cross-compiler/
> PATH=/home/xsang/cross-compiler//llvm-20.1.8-x86_64/bin:/home/xsang/.local/bin:/home/xsang/bin:/home/xsang/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/xsang/.local/bin
> make --keep-going LLVM=1 CROSS_COMPILE=hexagon-linux- --jobs=72 KCFLAGS= -Wno-error=return-type -Wreturn-type -funsigned-char -Wundef W=1 O=build_dir ARCH=hexagon olddefconfig
> make[1]: Entering directory '/home/xsang/linux/build_dir'
>   GEN     Makefile
>   HOSTCC  scripts/basic/fixdep
>   HOSTCC  scripts/kconfig/conf.o
>   HOSTCC  scripts/kconfig/confdata.o
>   HOSTCC  scripts/kconfig/expr.o
>   LEX     scripts/kconfig/lexer.lex.c
>   YACC    scripts/kconfig/parser.tab.[ch]
>   HOSTCC  scripts/kconfig/menu.o
>   HOSTCC  scripts/kconfig/preprocess.o
>   HOSTCC  scripts/kconfig/symbol.o
>   HOSTCC  scripts/kconfig/util.o
>   HOSTCC  scripts/kconfig/lexer.lex.o
>   HOSTCC  scripts/kconfig/parser.tab.o
>   HOSTLD  scripts/kconfig/conf
> #
> # configuration written to .config
> #
> make[1]: Leaving directory '/home/xsang/linux/build_dir'
>
>
> xsang@xsang-OptiPlex-9020:~/linux$ COMPILER_INSTALL_PATH=/home/xsang/cross-compiler/ COMPILER=clang-20 /home/xsang/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/hid/
> Compiler will be installed in /home/xsang/cross-compiler/
> PATH=/home/xsang/cross-compiler//llvm-20.1.8-x86_64/bin:/home/xsang/.local/bin:/home/xsang/bin:/home/xsang/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/xsang/.local/bin
> make --keep-going LLVM=1 CROSS_COMPILE=hexagon-linux- --jobs=72 KCFLAGS= -Wno-error=return-type -Wreturn-type -funsigned-char -Wundef W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/hid/
> make[1]: Entering directory '/home/xsang/linux/build_dir'
>   GEN     Makefile
>   GENSEED scripts/basic/randstruct.seed
>   WRAP    arch/hexagon/include/generated/uapi/asm/ucontext.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/auxvec.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/bitsperlong.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/bpf_perf_event.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/errno.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/fcntl.h
>   UPD     include/generated/uapi/linux/version.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/ioctl.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/ipcbuf.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/ioctls.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/mman.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/msgbuf.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/poll.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/posix_types.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/resource.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/sembuf.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/shmbuf.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/siginfo.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/sockios.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/socket.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/stat.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/statfs.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/termbits.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/types.h
>   WRAP    arch/hexagon/include/generated/uapi/asm/termios.h
>   SYSHDR  arch/hexagon/include/generated/uapi/asm/unistd_32.h
>   UPD     include/config/kernel.release
>   UPD     include/generated/compile.h
>   HOSTCC  scripts/dtc/dtc.o
>   HOSTCC  scripts/dtc/flattree.o
>   HOSTCC  scripts/dtc/fstree.o
>   HOSTCC  scripts/dtc/data.o
>   HOSTCC  scripts/dtc/livetree.o
>   HOSTCC  scripts/dtc/treesource.o
>   HOSTCC  scripts/dtc/srcpos.o
>   HOSTCC  scripts/dtc/checks.o
>   HOSTCC  scripts/dtc/util.o
>   LEX     scripts/dtc/dtc-lexer.lex.c
>   YACC    scripts/dtc/dtc-parser.tab.[ch]
>   HOSTCC  scripts/dtc/libfdt/fdt.o
>   HOSTCC  scripts/dtc/libfdt/fdt_ro.o
>   UPD     include/generated/utsrelease.h
>   HOSTCC  scripts/dtc/libfdt/fdt_wip.o
>   HOSTCC  scripts/dtc/libfdt/fdt_sw.o
>   HOSTCC  scripts/dtc/libfdt/fdt_rw.o
>   HOSTCC  scripts/dtc/libfdt/fdt_strerror.o
>   HOSTCC  scripts/dtc/libfdt/fdt_empty_tree.o
>   HOSTCC  scripts/dtc/libfdt/fdt_addresses.o
>   HOSTCC  scripts/dtc/libfdt/fdt_overlay.o
>   HOSTCC  scripts/dtc/fdtoverlay.o
>   WRAP    arch/hexagon/include/generated/asm/extable.h
>   WRAP    arch/hexagon/include/generated/asm/iomap.h
>   WRAP    arch/hexagon/include/generated/asm/kvm_para.h
>   WRAP    arch/hexagon/include/generated/asm/mcs_spinlock.h
>   WRAP    arch/hexagon/include/generated/asm/text-patching.h
>   WRAP    arch/hexagon/include/generated/asm/archrandom.h
>   WRAP    arch/hexagon/include/generated/asm/barrier.h
>   WRAP    arch/hexagon/include/generated/asm/bug.h
>   WRAP    arch/hexagon/include/generated/asm/cfi.h
>   WRAP    arch/hexagon/include/generated/asm/compat.h
>   WRAP    arch/hexagon/include/generated/asm/current.h
>   WRAP    arch/hexagon/include/generated/asm/device.h
>   WRAP    arch/hexagon/include/generated/asm/div64.h
>   WRAP    arch/hexagon/include/generated/asm/dma-mapping.h
>   WRAP    arch/hexagon/include/generated/asm/emergency-restart.h
>   WRAP    arch/hexagon/include/generated/asm/ftrace.h
>   WRAP    arch/hexagon/include/generated/asm/hardirq.h
>   WRAP    arch/hexagon/include/generated/asm/hw_irq.h
>   WRAP    arch/hexagon/include/generated/asm/irq_regs.h
>   WRAP    arch/hexagon/include/generated/asm/irq_work.h
>   WRAP    arch/hexagon/include/generated/asm/kdebug.h
>   WRAP    arch/hexagon/include/generated/asm/kmap_size.h
>   WRAP    arch/hexagon/include/generated/asm/kprobes.h
>   WRAP    arch/hexagon/include/generated/asm/local.h
>   WRAP    arch/hexagon/include/generated/asm/local64.h
>   WRAP    arch/hexagon/include/generated/asm/mmiowb.h
>   WRAP    arch/hexagon/include/generated/asm/module.h
>   WRAP    arch/hexagon/include/generated/asm/module.lds.h
>   WRAP    arch/hexagon/include/generated/asm/msi.h
>   WRAP    arch/hexagon/include/generated/asm/pci.h
>   WRAP    arch/hexagon/include/generated/asm/percpu.h
>   WRAP    arch/hexagon/include/generated/asm/preempt.h
>   WRAP    arch/hexagon/include/generated/asm/rqspinlock.h
>   WRAP    arch/hexagon/include/generated/asm/runtime-const.h
>   WRAP    arch/hexagon/include/generated/asm/rwonce.h
>   WRAP    arch/hexagon/include/generated/asm/sections.h
>   WRAP    arch/hexagon/include/generated/asm/serial.h
>   WRAP    arch/hexagon/include/generated/asm/shmparam.h
>   WRAP    arch/hexagon/include/generated/asm/simd.h
>   WRAP    arch/hexagon/include/generated/asm/softirq_stack.h
>   WRAP    arch/hexagon/include/generated/asm/topology.h
>   WRAP    arch/hexagon/include/generated/asm/trace_clock.h
>   WRAP    arch/hexagon/include/generated/asm/vga.h
>   WRAP    arch/hexagon/include/generated/asm/video.h
>   WRAP    arch/hexagon/include/generated/asm/word-at-a-time.h
>   WRAP    arch/hexagon/include/generated/asm/xor.h
>   SYSTBL  arch/hexagon/include/generated/asm/syscall_table_32.h
>   HOSTCC  scripts/dtc/dtc-lexer.lex.o
>   HOSTCC  scripts/dtc/dtc-parser.tab.o
>   HOSTLD  scripts/dtc/fdtoverlay
>   HOSTLD  scripts/dtc/dtc
>   HOSTCC  scripts/kallsyms
>   HOSTCC  scripts/asn1_compiler
>   HOSTCC  scripts/insert-sys-cert
>   CC      scripts/mod/empty.o
>   HOSTCC  scripts/mod/mk_elfconfig
>   CC      scripts/mod/devicetable-offsets.s
>   UPD     scripts/mod/devicetable-offsets.h
>   MKELF   scripts/mod/elfconfig.h
>   HOSTCC  scripts/mod/modpost.o
>   HOSTCC  scripts/mod/file2alias.o
>   HOSTCC  scripts/mod/sumversion.o
>   HOSTCC  scripts/mod/symsearch.o
>   HOSTLD  scripts/mod/modpost
>   CC      kernel/bounds.s
>   CHKSHA1 ../include/linux/atomic/atomic-arch-fallback.h
>   CHKSHA1 ../include/linux/atomic/atomic-instrumented.h
>   CHKSHA1 ../include/linux/atomic/atomic-long.h
>   UPD     include/generated/timeconst.h
>   UPD     include/generated/bounds.h
>   CC      arch/hexagon/kernel/asm-offsets.s
>   UPD     include/generated/asm-offsets.h
>   CALL    ../scripts/checksyscalls.sh
>   CC      drivers/hid/hid-core.o
>   CC      drivers/hid/hid-input.o
>   CC      drivers/hid/hid-quirks.o
>   CC      drivers/hid/hid-debug.o
>   CC      drivers/hid/hid-haptic.o
>   CC [M]  drivers/hid/usbhid/hid-core.o
>   CC      drivers/hid/hidraw.o
>   CC [M]  drivers/hid/usbhid/hiddev.o
>   CC [M]  drivers/hid/usbhid/hid-pidff.o
>   CC      drivers/hid/hid-a4tech.o
>   CC      drivers/hid/hid-alps.o
>   CC      drivers/hid/hid-apple.o
>   CC      drivers/hid/hid-belkin.o
>   CC      drivers/hid/hid-cherry.o
>   CC      drivers/hid/hid-cmedia.o
>   CC      drivers/hid/hid-cougar.o
>   CC      drivers/hid/hid-ezkey.o
>   CC      drivers/hid/hid-icade.o
>   CC      drivers/hid/hid-ite.o
>   CC      drivers/hid/hid-jabra.o
>   CC      drivers/hid/hid-kensington.o
>   CC      drivers/hid/hid-ortek.o
>   CC      drivers/hid/hid-razer.o
>   CC      drivers/hid/hid-rmi.o
>   CC      drivers/hid/hid-saitek.o
>   CC      drivers/hid/hid-sjoy.o
>   CC      drivers/hid/hid-tivo.o
>   CC      drivers/hid/hid-udraw-ps3.o
>   CC      drivers/hid/hid-led.o
>   CC      drivers/hid/hid-wiimote-core.o
>   CC      drivers/hid/hid-wiimote-modules.o
>   CC      drivers/hid/hid-wiimote-debug.o
>   CC [M]  drivers/hid/uhid.o
>   CC [M]  drivers/hid/hid-generic.o
>   CC [M]  drivers/hid/hid-axff.o
>   CC [M]  drivers/hid/hid-appleir.o
>   CC [M]  drivers/hid/hid-asus.o
>   CC [M]  drivers/hid/hid-aureal.o
>   CC [M]  drivers/hid/hid-betopff.o
>   CC [M]  drivers/hid/hid-bigbenff.o
>   CC [M]  drivers/hid/hid-chicony.o
>   CC [M]  drivers/hid/hid-corsair.o
>   CC [M]  drivers/hid/hid-corsair-void.o
>   CC [M]  drivers/hid/hid-cp2112.o
>   CC [M]  drivers/hid/hid-cypress.o
>   CC [M]  drivers/hid/hid-emsff.o
>   CC [M]  drivers/hid/hid-elan.o
>   CC [M]  drivers/hid/hid-elo.o
>   CC [M]  drivers/hid/hid-gembird.o
>   CC [M]  drivers/hid/hid-gfrm.o
>   CC [M]  drivers/hid/hid-vivaldi-common.o
>   CC [M]  drivers/hid/hid-google-stadiaff.o
>   CC [M]  drivers/hid/hid-vivaldi.o
>   CC [M]  drivers/hid/hid-gt683r.o
>   CC [M]  drivers/hid/hid-gyration.o
>   CC [M]  drivers/hid/hid-holtek-kbd.o
>   CC [M]  drivers/hid/hid-holtek-mouse.o
>   CC [M]  drivers/hid/hid-holtekff.o
>   CC [M]  drivers/hid/hid-kye.o
>   CC [M]  drivers/hid/hid-kysona.o
>   CC [M]  drivers/hid/hid-letsketch.o
>   CC [M]  drivers/hid/hid-macally.o
>   CC [M]  drivers/hid/hid-magicmouse.o
>   CC [M]  drivers/hid/hid-mcp2221.o
>   CC [M]  drivers/hid/hid-megaworld.o
>   CC [M]  drivers/hid/hid-microsoft.o
>   CC [M]  drivers/hid/hid-nintendo.o
>   CC [M]  drivers/hid/hid-nti.o
>   CC [M]  drivers/hid/hid-pl.o
>   CC [M]  drivers/hid/hid-penmount.o
>   CC [M]  drivers/hid/hid-picolcd_core.o
>   CC [M]  drivers/hid/hid-picolcd_fb.o
>   CC [M]  drivers/hid/hid-picolcd_backlight.o
>   CC [M]  drivers/hid/hid-picolcd_leds.o
>   CC [M]  drivers/hid/hid-picolcd_cir.o
>   CC [M]  drivers/hid/hid-picolcd_debugfs.o
> ../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  CC [M]  drivers/hid/hid-redragon.o
>  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,
>       |   CC [M]  drivers/hid/hid-retrode.o
>      ^
> 7 errors generated.
> make[5]: *** [../scripts/Makefile.build:287: drivers/hid/hid-haptic.o] Error 1
>   CC [M]  drivers/hid/hid-roccat.o
>   CC [M]  drivers/hid/hid-roccat-common.o
>   CC [M]  drivers/hid/hid-roccat-arvo.o
>   CC [M]  drivers/hid/hid-roccat-isku.o
>   CC [M]  drivers/hid/hid-roccat-kone.o
>   CC [M]  drivers/hid/hid-roccat-koneplus.o
>   CC [M]  drivers/hid/hid-roccat-konepure.o
>   CC [M]  drivers/hid/hid-roccat-kovaplus.o
>   CC [M]  drivers/hid/hid-roccat-lua.o
>   CC [M]  drivers/hid/hid-roccat-pyra.o
>   CC [M]  drivers/hid/hid-roccat-ryos.o
>   CC [M]  drivers/hid/hid-roccat-savu.o
>   CC [M]  drivers/hid/hid-samsung.o
>   CC [M]  drivers/hid/hid-sony.o
>   CC [M]  drivers/hid/hid-steam.o
>   CC [M]  drivers/hid/hid-sunplus.o
>   CC [M]  drivers/hid/hid-gaff.o
>   CC [M]  drivers/hid/hid-tmff.o
>   CC [M]  drivers/hid/hid-thrustmaster.o
>   CC [M]  drivers/hid/hid-uclogic-core.o
>   CC [M]  drivers/hid/hid-uclogic-rdesc.o
>   CC [M]  drivers/hid/hid-uclogic-params.o
>   CC [M]  drivers/hid/hid-xinmo.o
>   CC [M]  drivers/hid/hid-zpff.o
>   CC [M]  drivers/hid/hid-vrc2.o
>   CC [M]  drivers/hid/wacom_sys.o
>   CC [M]  drivers/hid/wacom_wac.o
>   CC [M]  drivers/hid/hid-waltop.o
>   CC [M]  drivers/hid/hid-winwing.o
>   CC [M]  drivers/hid/hid-uclogic-rdesc-test.o
>   LD [M]  drivers/hid/usbhid/usbhid.o
>   LD [M]  drivers/hid/hid-uclogic-test.o
>   LD [M]  drivers/hid/hid-picolcd.o
>   LD [M]  drivers/hid/hid-uclogic.o
>   LD [M]  drivers/hid/wacom.o
> make[5]: Target 'drivers/hid/' not remade because of errors.
> make[4]: *** [../scripts/Makefile.build:554: drivers/hid] Error 2
> make[4]: Target 'drivers/hid/' not remade because of errors.
> make[3]: *** [../scripts/Makefile.build:554: drivers] Error 2
> make[3]: Target 'drivers/hid/' not remade because of errors.
> make[2]: *** [/home/xsang/linux/Makefile:2003: .] Error 2
> make[2]: Target 'drivers/hid/' not remade because of errors.
> make[1]: *** [/home/xsang/linux/Makefile:248: __sub-make] Error 2
> make[1]: Target 'drivers/hid/' not remade because of errors.
> make[1]: Leaving directory '/home/xsang/linux/build_dir'
> make: *** [Makefile:248: __sub-make] Error 2
> make: Target 'drivers/hid/' not remade because of errors.
>
>
>
> > --
> > Jonathan
> >
Hi Oliver,

I think I didn't have the right config so the issue wasn't reproducing
but I'm seeing it now so I'll fix and resubmit.

Thanks!
-- 
Jonathan