Linux Input/HID development
 help / color / mirror / Atom feed
* [PATCH RESEND v3 0/3] Input: Add ektf2232 support
From: Andreas Kemnade @ 2024-06-21 22:40 UTC (permalink / raw)
  To: dmitry.torokhov, robh, krzk+dt, conor+dt, andreas, hdegoede,
	andy.shevchenko, u.kleine-koenig, siebren.vroegindeweij,
	linux-input, devicetree, linux-kernel

Add support for the EKTF2232 to the ektf2127 driver which
contains support for similar chips.

Add the needed compatible to bindings and convert them.

Changes in v3:
- use dev_err_probe
- use i2c_get_match_data

Changes in v2:
- separate patch for adding compatible
- use match data for selecting status shift

Andreas Kemnade (3):
  dt-bindings: touchscreen: convert elan,ektf2127 to json-schema
  dt-bindings: touchscreen: elan,ektf2127: Add EKTF2232
  Input: ektf2127 - add ektf2232 support

 .../bindings/input/touchscreen/ektf2127.txt   | 25 --------
 .../input/touchscreen/elan,ektf2127.yaml      | 58 +++++++++++++++++++
 drivers/input/touchscreen/ektf2127.c          | 36 ++++++++++--
 3 files changed, 88 insertions(+), 31 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/input/touchscreen/ektf2127.txt
 create mode 100644 Documentation/devicetree/bindings/input/touchscreen/elan,ektf2127.yaml

-- 
2.39.2


^ permalink raw reply

* [PATCH RESEND v3 1/3] dt-bindings: touchscreen: convert elan,ektf2127 to json-schema
From: Andreas Kemnade @ 2024-06-21 22:40 UTC (permalink / raw)
  To: dmitry.torokhov, robh, krzk+dt, conor+dt, andreas, hdegoede,
	andy.shevchenko, u.kleine-koenig, siebren.vroegindeweij,
	linux-input, devicetree, linux-kernel
  Cc: Krzysztof Kozlowski
In-Reply-To: <20240621224022.1620897-1-andreas@kemnade.info>

Convert EKTF2127 infrared touchscreen controller binding to DT schema
and add ektf2232 compatible.

Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 .../bindings/input/touchscreen/ektf2127.txt   | 25 --------
 .../input/touchscreen/elan,ektf2127.yaml      | 57 +++++++++++++++++++
 2 files changed, 57 insertions(+), 25 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/input/touchscreen/ektf2127.txt
 create mode 100644 Documentation/devicetree/bindings/input/touchscreen/elan,ektf2127.yaml

diff --git a/Documentation/devicetree/bindings/input/touchscreen/ektf2127.txt b/Documentation/devicetree/bindings/input/touchscreen/ektf2127.txt
deleted file mode 100644
index c9f2c9f578e34..0000000000000
--- a/Documentation/devicetree/bindings/input/touchscreen/ektf2127.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-* Elan eKTF2127 I2C touchscreen controller
-
-Required properties:
- - compatible		  : "elan,ektf2127" or "elan,ektf2132"
- - reg			  : I2C slave address of the chip (0x40)
- - interrupts		  : interrupt specification for the ektf2127 interrupt
- - power-gpios		  : GPIO specification for the pin connected to the
-			    ektf2127's wake input. This needs to be driven high
-			    to take ektf2127 out of its low power state
-
-For additional optional properties see: touchscreen.txt
-
-Example:
-
-i2c@00000000 {
-	ektf2127: touchscreen@15 {
-		compatible = "elan,ektf2127";
-		reg = <0x15>;
-		interrupt-parent = <&pio>;
-		interrupts = <6 11 IRQ_TYPE_EDGE_FALLING>
-		power-gpios = <&pio 1 3 GPIO_ACTIVE_HIGH>;
-		touchscreen-inverted-x;
-		touchscreen-swapped-x-y;
-	};
-};
diff --git a/Documentation/devicetree/bindings/input/touchscreen/elan,ektf2127.yaml b/Documentation/devicetree/bindings/input/touchscreen/elan,ektf2127.yaml
new file mode 100644
index 0000000000000..5c4c29da0b11d
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/touchscreen/elan,ektf2127.yaml
@@ -0,0 +1,57 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/input/touchscreen/elan,ektf2127.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Elan eKTF2127 I2C touchscreen controller
+
+maintainers:
+  - Siebren Vroegindeweij <siebren.vroegindeweij@hotmail.com>
+
+allOf:
+  - $ref: touchscreen.yaml#
+
+properties:
+  compatible:
+    enum:
+      - elan,ektf2127
+      - elan,ektf2132
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  power-gpios:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - power-gpios
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        touchscreen@15 {
+            compatible = "elan,ektf2127";
+            reg = <0x15>;
+            interrupt-parent = <&pio>;
+            interrupts = <6 11 IRQ_TYPE_EDGE_FALLING>;
+            power-gpios = <&pio 1 3 GPIO_ACTIVE_HIGH>;
+            touchscreen-inverted-x;
+            touchscreen-swapped-x-y;
+        };
+    };
+...
-- 
2.39.2


^ permalink raw reply related

* [PATCH RESEND v3 2/3] dt-bindings: touchscreen: elan,ektf2127: Add EKTF2232
From: Andreas Kemnade @ 2024-06-21 22:40 UTC (permalink / raw)
  To: dmitry.torokhov, robh, krzk+dt, conor+dt, andreas, hdegoede,
	andy.shevchenko, u.kleine-koenig, siebren.vroegindeweij,
	linux-input, devicetree, linux-kernel
  Cc: Krzysztof Kozlowski
In-Reply-To: <20240621224022.1620897-1-andreas@kemnade.info>

Add a compatible for the EKTF2232, which is similar to other chips in this
document.

Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 .../devicetree/bindings/input/touchscreen/elan,ektf2127.yaml     | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/input/touchscreen/elan,ektf2127.yaml b/Documentation/devicetree/bindings/input/touchscreen/elan,ektf2127.yaml
index 5c4c29da0b11d..ff0ec3fd24c5d 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/elan,ektf2127.yaml
+++ b/Documentation/devicetree/bindings/input/touchscreen/elan,ektf2127.yaml
@@ -17,6 +17,7 @@ properties:
     enum:
       - elan,ektf2127
       - elan,ektf2132
+      - elan,ektf2232
 
   reg:
     maxItems: 1
-- 
2.39.2


^ permalink raw reply related

* [PATCH RESEND v3 3/3] Input: ektf2127 - add ektf2232 support
From: Andreas Kemnade @ 2024-06-21 22:40 UTC (permalink / raw)
  To: dmitry.torokhov, robh, krzk+dt, conor+dt, andreas, hdegoede,
	andy.shevchenko, u.kleine-koenig, siebren.vroegindeweij,
	linux-input, devicetree, linux-kernel
In-Reply-To: <20240621224022.1620897-1-andreas@kemnade.info>

The chip is similar, but has status bits at different positions,
so use the correct bits.

Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
---
 drivers/input/touchscreen/ektf2127.c | 36 +++++++++++++++++++++++-----
 1 file changed, 30 insertions(+), 6 deletions(-)

diff --git a/drivers/input/touchscreen/ektf2127.c b/drivers/input/touchscreen/ektf2127.c
index cc3103b9cbfba..b6f5046f4b917 100644
--- a/drivers/input/touchscreen/ektf2127.c
+++ b/drivers/input/touchscreen/ektf2127.c
@@ -13,6 +13,7 @@
  * Hans de Goede <hdegoede@redhat.com>
  */
 
+#include <linux/bits.h>
 #include <linux/gpio/consumer.h>
 #include <linux/interrupt.h>
 #include <linux/i2c.h>
@@ -46,6 +47,11 @@ struct ektf2127_ts {
 	struct input_dev *input;
 	struct gpio_desc *power_gpios;
 	struct touchscreen_properties prop;
+	int status_shift;
+};
+
+struct ektf2127_i2c_chip_data {
+	int status_shift;
 };
 
 static void ektf2127_parse_coordinates(const u8 *buf, unsigned int touch_count,
@@ -112,8 +118,8 @@ static void ektf2127_report2_contact(struct ektf2127_ts *ts, int slot,
 
 static void ektf2127_report2_event(struct ektf2127_ts *ts, const u8 *buf)
 {
-	ektf2127_report2_contact(ts, 0, &buf[1], !!(buf[7] & 2));
-	ektf2127_report2_contact(ts, 1, &buf[4], !!(buf[7] & 4));
+	ektf2127_report2_contact(ts, 0, &buf[1], !!(buf[7] & BIT(ts->status_shift)));
+	ektf2127_report2_contact(ts, 1, &buf[4], !!(buf[7] & BIT(ts->status_shift + 1)));
 
 	input_mt_sync_frame(ts->input);
 	input_sync(ts->input);
@@ -247,6 +253,7 @@ static int ektf2127_query_dimension(struct i2c_client *client, bool width)
 static int ektf2127_probe(struct i2c_client *client)
 {
 	struct device *dev = &client->dev;
+	const struct ektf2127_i2c_chip_data *chip_data;
 	struct ektf2127_ts *ts;
 	struct input_dev *input;
 	u8 buf[4];
@@ -303,6 +310,13 @@ static int ektf2127_probe(struct i2c_client *client)
 		return error;
 
 	ts->input = input;
+
+	chip_data = i2c_get_match_data(client);
+	if (!chip_data)
+		return dev_err_probe(&client->dev, -EINVAL, "missing chip data\n");
+
+	ts->status_shift = chip_data->status_shift;
+
 	input_set_drvdata(input, ts);
 
 	error = devm_request_threaded_irq(dev, client->irq,
@@ -325,18 +339,28 @@ static int ektf2127_probe(struct i2c_client *client)
 	return 0;
 }
 
+static const struct ektf2127_i2c_chip_data ektf2127_data = {
+	.status_shift = 1,
+};
+
+static const struct ektf2127_i2c_chip_data ektf2232_data = {
+	.status_shift = 0,
+};
+
 #ifdef CONFIG_OF
 static const struct of_device_id ektf2127_of_match[] = {
-	{ .compatible = "elan,ektf2127" },
-	{ .compatible = "elan,ektf2132" },
+	{ .compatible = "elan,ektf2127",	.data = &ektf2127_data},
+	{ .compatible = "elan,ektf2132",	.data = &ektf2127_data},
+	{ .compatible = "elan,ektf2232",	.data = &ektf2232_data},
 	{}
 };
 MODULE_DEVICE_TABLE(of, ektf2127_of_match);
 #endif
 
 static const struct i2c_device_id ektf2127_i2c_id[] = {
-	{ "ektf2127", 0 },
-	{ "ektf2132", 0 },
+	{ .name = "ektf2127", .driver_data = (long)&ektf2127_data },
+	{ .name = "ektf2132", .driver_data = (long)&ektf2127_data },
+	{ .name = "ektf2232", .driver_data = (long)&ektf2232_data },
 	{}
 };
 MODULE_DEVICE_TABLE(i2c, ektf2127_i2c_id);
-- 
2.39.2


^ permalink raw reply related

* Sticky fingers with GXTP7386:00 27C6:0111
From: Michael Zimmermann @ 2024-06-22  7:05 UTC (permalink / raw)
  To: linux-input; +Cc: Jiri Kosina, Benjamin Tissoires

Hi

I have a StarLite Mk V with said touchscreen and I seem to have sticky
finger issues. Within a desktop environment I noticed this by gestures
suddenly behaving weird or stopping to work altogether. So I wrote a
simple C-program which uses libevdev to track slots and that shows
which slots are currently reported active and which positions they
have. And it looks like some slots will simply not see release
events(ABS_MT_TRACKING_ID with value=-1).

I didn't yet find a simple and consistent way to reproduce this, I'm
basically just using 10 fingers to randomly cause many events per
second until I see that some points got stuck. It's usually many(like
3-4) and not just one. The weird part is that it seems to be using
"MT_CLS_WIN_8" which has "MT_QUIRK_STICKY_FINGERS" enabled which
sounds like it's supposed to solve this exact problem.

I'm currently on "Linux archlinux 6.9.5-zen1-1-zen #1 ZEN SMP
PREEMPT_DYNAMIC Sun, 16 Jun 2024 19:06:18 +0000 x86_64 GNU/Linux".

Thanks
Michael

^ permalink raw reply

* Re: [PATCH v3 0/2] Input: add ft5426
From: Andreas Kemnade @ 2024-06-22  6:51 UTC (permalink / raw)
  To: dmitry.torokhov, robh, krzk+dt, conor+dt, o.rempel, andreas,
	u.kleine-koenig, hdegoede, oliver.graute, ye.xingchen,
	p.puschmann, linux-input, devicetree, linux-kernel,
	andy.shevchenko, felix
In-Reply-To: <20240501204758.758537-1-andreas@kemnade.info>

ping

On Wed,  1 May 2024 22:47:56 +0200
Andreas Kemnade <andreas@kemnade.info> wrote:

> Changes in v3:
> - reorder compatible also in driver
> 
> Changes in v2:
> - reorder compatible
> 
> Andreas Kemnade (2):
>   dt-bindings: input: touchscreen: edt-ft5x06: Add ft5426
>   Input: edt-ft5x06 - add ft5426
> 
>  .../devicetree/bindings/input/touchscreen/edt-ft5x06.yaml        | 1 +
>  drivers/input/touchscreen/edt-ft5x06.c                           | 1 +
>  2 files changed, 2 insertions(+)
> 


^ permalink raw reply

* Re: [PATCH RESEND v3 0/3] Input: Add ektf2232 support
From: Dmitry Torokhov @ 2024-06-22  8:00 UTC (permalink / raw)
  To: Andreas Kemnade
  Cc: robh, krzk+dt, conor+dt, hdegoede, andy.shevchenko,
	u.kleine-koenig, siebren.vroegindeweij, linux-input, devicetree,
	linux-kernel
In-Reply-To: <20240621224022.1620897-1-andreas@kemnade.info>

On Sat, Jun 22, 2024 at 12:40:19AM +0200, Andreas Kemnade wrote:
> Add support for the EKTF2232 to the ektf2127 driver which
> contains support for similar chips.
> 
> Add the needed compatible to bindings and convert them.
> 
> Changes in v3:
> - use dev_err_probe
> - use i2c_get_match_data
> 
> Changes in v2:
> - separate patch for adding compatible
> - use match data for selecting status shift
> 
> Andreas Kemnade (3):
>   dt-bindings: touchscreen: convert elan,ektf2127 to json-schema
>   dt-bindings: touchscreen: elan,ektf2127: Add EKTF2232
>   Input: ektf2127 - add ektf2232 support

Applied the lot, thank you.

-- 
Dmitry

^ permalink raw reply

* Re: linux-next: build failure after merge of the bpf-next tree
From: kernel test robot @ 2024-06-22  8:17 UTC (permalink / raw)
  To: Mark Brown, Daniel Borkmann, Alexei Starovoitov, Andrii Nakryiko,
	bpf, Networking, Benjamin Tissoires, Jiri Kosina
  Cc: oe-kbuild-all, Kui-Feng Lee, Martin KaFai Lau, linux-input,
	Linux Kernel Mailing List, Linux Next Mailing List
In-Reply-To: <ZnB9X1Jj6c04ufC0@sirena.org.uk>

Hi Mark,

kernel test robot noticed the following build errors:

[auto build test ERROR on hid/for-next]
[cannot apply to linus/master v6.10-rc4 next-20240621]
[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#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Mark-Brown/linux-next-build-failure-after-merge-of-the-bpf-next-tree/20240618-022240
base:   https://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git for-next
patch link:    https://lore.kernel.org/r/ZnB9X1Jj6c04ufC0%40sirena.org.uk
patch subject: linux-next: build failure after merge of the bpf-next tree
config: x86_64-randconfig-r122-20240622 (https://download.01.org/0day-ci/archive/20240622/202406221655.xSqDIUk6-lkp@intel.com/config)
compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240622/202406221655.xSqDIUk6-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/202406221655.xSqDIUk6-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/hid/bpf/hid_bpf_struct_ops.c:280:9: error: incompatible function pointer types initializing 'int (*)(void *)' with an expression of type 'int (void *, struct bpf_link *)' [-Wincompatible-function-pointer-types]
     280 |         .reg = hid_bpf_reg,
         |                ^~~~~~~~~~~
>> drivers/hid/bpf/hid_bpf_struct_ops.c:281:11: error: incompatible function pointer types initializing 'void (*)(void *)' with an expression of type 'void (void *, struct bpf_link *)' [-Wincompatible-function-pointer-types]
     281 |         .unreg = hid_bpf_unreg,
         |                  ^~~~~~~~~~~~~
   2 errors generated.


vim +280 drivers/hid/bpf/hid_bpf_struct_ops.c

ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  274  
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  275  static struct bpf_struct_ops bpf_hid_bpf_ops = {
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  276  	.verifier_ops = &hid_bpf_verifier_ops,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  277  	.init = hid_bpf_ops_init,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  278  	.check_member = hid_bpf_ops_check_member,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  279  	.init_member = hid_bpf_ops_init_member,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08 @280  	.reg = hid_bpf_reg,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08 @281  	.unreg = hid_bpf_unreg,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  282  	.name = "hid_bpf_ops",
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  283  	.cfi_stubs = &__bpf_hid_bpf_ops,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  284  	.owner = THIS_MODULE,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  285  };
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  286  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply

* Re: [PATCH] adp5588-keys: Support for dedicated gpio operation
From: dmitry.torokhov @ 2024-06-22  8:21 UTC (permalink / raw)
  To: Agarwal, Utsav
  Cc: Hennerich, Michael, linux-input@vger.kernel.org,
	linux-kernel@vger.kernel.org, Artamonovs, Arturs,
	Bimpikas, Vasileios
In-Reply-To: <SJ0PR03MB6343CB033C1005A36B102BF89BC92@SJ0PR03MB6343.namprd03.prod.outlook.com>

Hi Utsav,

On Fri, Jun 21, 2024 at 10:44:12AM +0000, Agarwal, Utsav wrote:
> From: UtsavAgarwalADI <utsav.agarwal@analog.com>
> 
> We have a SoC which uses ADP5587 exclusively as an I2C GPIO expander.
> The current state of the driver for the ADP5588/87 only allows
> partial I/O to be used as GPIO. This support was present before as a
> separate gpio driver, which was dropped with the commit
> 5ddc896088b0 ("gpio: gpio-adp5588: drop the driver") since the
> functionality was deemed to have been merged with adp5588-keys.
> 
> To restore this functionality, the "gpio-only" property allows
> indicating if the device is to be used for GPIO only.
> When specified, the driver skips relevant input device
> checks/parsing and allows all GPINS to be registered as GPIO.
> 
> Signed-off-by: Utsav Agarwal <utsav.agarwal@analog.com>
> ---
>  drivers/input/keyboard/adp5588-keys.c | 30 ++++++++++++++++++++-------
>  1 file changed, 23 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/input/keyboard/adp5588-keys.c b/drivers/input/keyboard/adp5588-keys.c
> index 1b0279393df4..78770b2dfe1b 100644
> --- a/drivers/input/keyboard/adp5588-keys.c
> +++ b/drivers/input/keyboard/adp5588-keys.c
> @@ -719,7 +719,7 @@ static int adp5588_probe(struct i2c_client *client)
>  	struct input_dev *input;
>  	struct gpio_desc *gpio;
>  	unsigned int revid;
> -	int ret;
> +	int ret, gpio_mode_only;
>  	int error;
>  
>  	if (!i2c_check_functionality(client->adapter,
> @@ -739,13 +739,17 @@ static int adp5588_probe(struct i2c_client *client)
>  	kpad->client = client;
>  	kpad->input = input;
>  
> -	error = adp5588_fw_parse(kpad);
> -	if (error)
> -		return error;
> +	gpio_mode_only = device_property_present(&client->dev, "gpio-only");

Do we really need a new property? Can we simply allow omitting
keypad,num-rows/cols properties in case where we only want to have
GPIO functionality?

In any case this requires DT binding update.

> +	if (!gpio_mode_only) {
> +		error = adp5588_fw_parse(kpad);
> +		if (error)
> +			return error;
>  
> -	error = devm_regulator_get_enable(&client->dev, "vcc");
> -	if (error)
> -		return error;
> +		error = devm_regulator_get_enable(&client->dev, "vcc");
> +		if (error)
> +			return error;

Why regulator is not needed for the pure GPIO mode? Please add a
comment.

> +
> +	}
>  
>  	gpio = devm_gpiod_get_optional(&client->dev, "reset", GPIOD_OUT_HIGH);
>  	if (IS_ERR(gpio))
> @@ -790,6 +794,11 @@ static int adp5588_probe(struct i2c_client *client)
>  	if (error)
>  		return error;
>  
> +	if (!client->irq && gpio_mode_only) {
> +		dev_info(&client->dev, "Rev.%d, started as GPIO only\n", revid);
> +		return 0;
> +	}
> +

What is the reason for requesting interrupt in pure GPIO mode? Can we
program the controller to not raise attention in this case?

>  	error = devm_request_threaded_irq(&client->dev, client->irq,
>  					  adp5588_hard_irq, adp5588_thread_irq,
>  					  IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
> @@ -800,6 +809,13 @@ static int adp5588_probe(struct i2c_client *client)
>  		return error;
>  	}
>  
> +
> +	if (gpio_mode_only) {
> +		dev_info(&client->dev, "Rev.%d irq %d, started as GPIO only\n",
> +				revid, client->irq);
> +		return 0;
> +	}
> +
>  	dev_info(&client->dev, "Rev.%d keypad, irq %d\n", revid, client->irq);
>  	return 0;
>  }
> -- 
> 2.34.1

Thanks.

-- 
Dmitry

^ permalink raw reply

* Re: linux-next: build failure after merge of the bpf-next tree
From: kernel test robot @ 2024-06-22  8:28 UTC (permalink / raw)
  To: Mark Brown, Daniel Borkmann, Alexei Starovoitov, Andrii Nakryiko,
	bpf, Networking, Benjamin Tissoires, Jiri Kosina
  Cc: oe-kbuild-all, Kui-Feng Lee, Martin KaFai Lau, linux-input,
	Linux Kernel Mailing List, Linux Next Mailing List
In-Reply-To: <ZnB9X1Jj6c04ufC0@sirena.org.uk>

Hi Mark,

kernel test robot noticed the following build errors:

[auto build test ERROR on hid/for-next]
[cannot apply to linus/master v6.10-rc4 next-20240621]
[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#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Mark-Brown/linux-next-build-failure-after-merge-of-the-bpf-next-tree/20240618-022240
base:   https://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git for-next
patch link:    https://lore.kernel.org/r/ZnB9X1Jj6c04ufC0%40sirena.org.uk
patch subject: linux-next: build failure after merge of the bpf-next tree
config: i386-allmodconfig (https://download.01.org/0day-ci/archive/20240622/202406221626.JK0Nnkxy-lkp@intel.com/config)
compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240622/202406221626.JK0Nnkxy-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/202406221626.JK0Nnkxy-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/hid/bpf/hid_bpf_struct_ops.c:280:16: error: initialization of 'int (*)(void *)' from incompatible pointer type 'int (*)(void *, struct bpf_link *)' [-Werror=incompatible-pointer-types]
     280 |         .reg = hid_bpf_reg,
         |                ^~~~~~~~~~~
   drivers/hid/bpf/hid_bpf_struct_ops.c:280:16: note: (near initialization for 'bpf_hid_bpf_ops.reg')
>> drivers/hid/bpf/hid_bpf_struct_ops.c:281:18: error: initialization of 'void (*)(void *)' from incompatible pointer type 'void (*)(void *, struct bpf_link *)' [-Werror=incompatible-pointer-types]
     281 |         .unreg = hid_bpf_unreg,
         |                  ^~~~~~~~~~~~~
   drivers/hid/bpf/hid_bpf_struct_ops.c:281:18: note: (near initialization for 'bpf_hid_bpf_ops.unreg')
   cc1: some warnings being treated as errors


vim +280 drivers/hid/bpf/hid_bpf_struct_ops.c

ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  274  
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  275  static struct bpf_struct_ops bpf_hid_bpf_ops = {
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  276  	.verifier_ops = &hid_bpf_verifier_ops,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  277  	.init = hid_bpf_ops_init,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  278  	.check_member = hid_bpf_ops_check_member,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  279  	.init_member = hid_bpf_ops_init_member,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08 @280  	.reg = hid_bpf_reg,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08 @281  	.unreg = hid_bpf_unreg,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  282  	.name = "hid_bpf_ops",
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  283  	.cfi_stubs = &__bpf_hid_bpf_ops,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  284  	.owner = THIS_MODULE,
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  285  };
ebc0d8093e8c97 Benjamin Tissoires 2024-06-08  286  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply

* Re: [PATCH v3 0/2] Input: add ft5426
From: Dmitry Torokhov @ 2024-06-22  8:30 UTC (permalink / raw)
  To: Andreas Kemnade
  Cc: robh, krzk+dt, conor+dt, o.rempel, u.kleine-koenig, hdegoede,
	oliver.graute, ye.xingchen, p.puschmann, linux-input, devicetree,
	linux-kernel, andy.shevchenko, felix
In-Reply-To: <20240501204758.758537-1-andreas@kemnade.info>

On Wed, May 01, 2024 at 10:47:56PM +0200, Andreas Kemnade wrote:
> Changes in v3:
> - reorder compatible also in driver
> 
> Changes in v2:
> - reorder compatible
> 
> Andreas Kemnade (2):
>   dt-bindings: input: touchscreen: edt-ft5x06: Add ft5426
>   Input: edt-ft5x06 - add ft5426

Applied the series, thank you.

-- 
Dmitry

^ permalink raw reply

* [linux-next:master] BUILD REGRESSION f76698bd9a8ca01d3581236082d786e9a6b72bb7
From: kernel test robot @ 2024-06-22 23:11 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Linux Memory Management List, amd-gfx, imx, intel-xe,
	linux-arm-kernel, linux-arm-msm, linux-input, linux-mediatek,
	linux-mtd, linux-trace-kernel, netdev, Mark Brown

tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
branch HEAD: f76698bd9a8ca01d3581236082d786e9a6b72bb7  Add linux-next specific files for 20240621

Error/Warning reports:

https://lore.kernel.org/oe-kbuild-all/202406220536.JnAncjqz-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202406220754.evK8Hrjw-lkp@intel.com

Error/Warning: (recently discovered and may have been fixed)

drivers/soc/qcom/smsm.c:(.text.qcom_smsm_remove+0x70): undefined reference to `mbox_free_channel'

Unverified Error/Warning (likely false positive, please contact us if interested):

include/linux/container_of.h:20:54: error: invalid use of undefined type 'struct thpsize'
include/linux/list.h:645:25: error: invalid use of undefined type 'struct thpsize'
include/linux/stddef.h:16:33: error: invalid use of undefined type 'struct thpsize'
mm/huge_memory.c:455:21: error: implicit declaration of function 'to_thpsize'; did you mean 'thp_size'? [-Werror=implicit-function-declaration]
mm/huge_memory.c:455:37: error: invalid type argument of '->' (have 'int')
mm/huge_memory.c:558:35: error: 'MTHP_STAT_FILE_ALLOC' undeclared (first use in this function); did you mean 'THP_FILE_ALLOC'?
mm/huge_memory.c:559:38: error: 'MTHP_STAT_FILE_FALLBACK' undeclared (first use in this function); did you mean 'THP_FILE_FALLBACK'?
mm/huge_memory.c:560:45: error: 'MTHP_STAT_FILE_FALLBACK_CHARGE' undeclared (first use in this function); did you mean 'THP_FILE_FALLBACK_CHARGE'?
mm/huge_memory.c:579:17: warning: assignment to 'struct thpsize *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
mm/huge_memory.c:579:33: error: invalid application of 'sizeof' to incomplete type 'struct thpsize'
mm/huge_memory.c:583:44: error: invalid use of undefined type 'struct thpsize'
mm/huge_memory.c:608:15: warning: passing argument 1 of 'kfree' makes pointer from integer without a cast [-Wint-conversion]

Error/Warning ids grouped by kconfigs:

gcc_recent_errors
|-- arm64-defconfig
|   `-- arch-arm64-boot-dts-ti-k3-am62p-j722s-common-main.dtsi.-.:Warning-(graph_child_address):bus-f0000-usb-f900000-usb:graph-node-has-single-child-node-port-address-cells-size-cells-are-not-necessary
|-- arm64-randconfig-051-20240622
|   |-- arch-arm64-boot-dts-mediatek-mt8188-evb.dtb:power-controller:power-domain:power-domain:power-domain:power-domain:Unevaluated-properties-are-not-allowed-(-power-domain-power-domain-were-unexpected)
|   |-- arch-arm64-boot-dts-mediatek-mt8390-genio-evk.dtb:mailbox:clock-names-is-a-required-property
|   |-- arch-arm64-boot-dts-mediatek-mt8390-genio-evk.dtb:power-controller:power-domain:power-domain:power-domain:power-domain:Unevaluated-properties-are-not-allowed-(-power-domain-power-domain-were-unexpecte
|   |-- arch-arm64-boot-dts-qcom-ipq5018-tplink-archer-ax55-v1.dtb:usb-8af8800:interrupt-names:hs_phy_irq-is-too-short
|   |-- arch-arm64-boot-dts-qcom-ipq5018-tplink-archer-ax55-v1.dtb:usb-8af8800:interrupt-names:pwr_event-was-expected
|   `-- arch-arm64-boot-dts-qcom-ipq5018-tplink-archer-ax55-v1.dtb:usb-8af8800:interrupts:is-too-short
|-- arm64-randconfig-r131-20240622
|   `-- arch-arm64-boot-dts-ti-k3-am62p-j722s-common-main.dtsi.-.:Warning-(graph_child_address):bus-f0000-usb-f900000-usb:graph-node-has-single-child-node-port-address-cells-size-cells-are-not-necessary
|-- csky-randconfig-r111-20240622
|   `-- drivers-clk-imx-clk-composite-7ulp.c:sparse:sparse:Using-plain-integer-as-NULL-pointer
|-- loongarch-randconfig-r121-20240622
|   |-- drivers-gpu-drm-xe-xe_oa.c:sparse:sparse:incorrect-type-in-initializer-(different-address-spaces)-expected-unsigned-long-long-const-noderef-__user-got-unsigned-long-long-usertype-ptr
|   `-- drivers-gpu-drm-xe-xe_oa.c:sparse:sparse:incorrect-type-in-initializer-(different-address-spaces)-expected-unsigned-long-long-usertype-ptr-got-void-noderef-__user
|-- mips-randconfig-r023-20221012
|   `-- drivers-soc-qcom-smsm.c:(.text.qcom_smsm_remove):undefined-reference-to-mbox_free_channel
|-- sparc-randconfig-r111-20240622
|   |-- drivers-mtd-nand-raw-mxc_nand.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-buf-got-void-noderef-__iomem
|   `-- drivers-mtd-nand-raw-mxc_nand.c:sparse:sparse:incorrect-type-in-initializer-(different-address-spaces)-expected-unsigned-short-noderef-usertype-__iomem-t-got-void-buf
|-- x86_64-randconfig-014-20240202
|   |-- include-linux-container_of.h:error:invalid-use-of-undefined-type-struct-thpsize
|   |-- include-linux-list.h:error:invalid-use-of-undefined-type-struct-thpsize
|   |-- include-linux-stddef.h:error:invalid-use-of-undefined-type-struct-thpsize
|   |-- mm-huge_memory.c:error:MTHP_STAT_FILE_ALLOC-undeclared-(first-use-in-this-function)
|   |-- mm-huge_memory.c:error:MTHP_STAT_FILE_FALLBACK-undeclared-(first-use-in-this-function)
|   |-- mm-huge_memory.c:error:MTHP_STAT_FILE_FALLBACK_CHARGE-undeclared-(first-use-in-this-function)
|   |-- mm-huge_memory.c:error:implicit-declaration-of-function-to_thpsize
|   |-- mm-huge_memory.c:error:invalid-application-of-sizeof-to-incomplete-type-struct-thpsize
|   |-- mm-huge_memory.c:error:invalid-type-argument-of-(have-int-)
|   |-- mm-huge_memory.c:error:invalid-use-of-undefined-type-struct-thpsize
|   |-- mm-huge_memory.c:warning:assignment-to-struct-thpsize-from-int-makes-pointer-from-integer-without-a-cast
|   `-- mm-huge_memory.c:warning:passing-argument-of-kfree-makes-pointer-from-integer-without-a-cast
`-- x86_64-randconfig-072-20240622
    |-- drivers-input-touchscreen-wacom_w8001.c:warning:Finger-directive-output-may-be-truncated-writing-bytes-into-a-region-of-size-between-and
    `-- drivers-input-touchscreen-wacom_w8001.c:warning:Pen-directive-output-may-be-truncated-writing-bytes-into-a-region-of-size-between-and
clang_recent_errors
|-- i386-randconfig-062-20240622
|   |-- drivers-gpu-drm-xe-xe_oa.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-const-volatile-noderef-__user-ptr-got-unsigned-long-long-usertype-ptr
|   |-- drivers-gpu-drm-xe-xe_oa.c:sparse:sparse:incorrect-type-in-initializer-(different-address-spaces)-expected-unsigned-long-long-usertype-ptr-got-void-noderef-__user
|   |-- net-l2tp-l2tp_core.c:sparse:sparse:cast-removes-address-space-__rcu-of-expression
|   |-- net-l2tp-l2tp_core.c:sparse:sparse:dereference-of-noderef-expression
|   |-- net-l2tp-l2tp_core.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-list_head-const-list-got-struct-list_head-noderef-__rcu-pos
|   |-- net-l2tp-l2tp_core.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-struct-list_head-noderef-__rcu-pos-got-struct-list_head-assigned-tmp
|   `-- net-l2tp-l2tp_core.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-struct-list_head-noderef-__rcu-pos-got-struct-list_head-next
|-- x86_64-randconfig-121-20240622
|   `-- drivers-gpu-drm-amd-amdgpu-..-display-dc-resource-dcn32-dcn32_resource_helpers.c:sparse:sparse:Using-plain-integer-as-NULL-pointer
`-- x86_64-randconfig-123-20240622
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-B-got-struct-ftrace_hash-noderef-__rcu-filter_hash
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-B-got-struct-ftrace_hash-noderef-__rcu-notrace_hash
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-new_hash-got-struct-ftrace_hash-noderef-__rcu-filter_hash
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-new_hash1-got-struct-ftrace_hash-noderef-__rcu-filter_hash
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-new_hash2-got-struct-ftrace_hash-noderef-__rcu-filter_hash
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-new_hash2-got-struct-ftrace_hash-noderef-__rcu-notrace_hash
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-orig_hash-got-struct-ftrace_hash-noderef-__rcu
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-src-got-struct-ftrace_hash-noderef-__rcu-filter_hash
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-src-got-struct-ftrace_hash-noderef-__rcu-notrace_hash
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-struct-ftrace_hash-noderef-__rcu-filter_hash-got-struct-ftrace_hash
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-struct-ftrace_hash-noderef-__rcu-filter_hash-got-struct-ftrace_hash-assigned-filter_hash
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-struct-ftrace_hash-noderef-__rcu-filter_hash-got-struct-ftrace_hash-save_filter_hash
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-struct-ftrace_hash-noderef-__rcu-notrace_hash-got-struct-ftrace_hash
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-struct-ftrace_hash-noderef-__rcu-notrace_hash-got-struct-ftrace_hash-assigned-notrace_hash
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-struct-ftrace_hash-noderef-__rcu-notrace_hash-got-struct-ftrace_hash-save_notrace_hash
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-struct-ftrace_hash-notrace_hash-got-struct-ftrace_hash-noderef-__rcu-notrace_hash
    |-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-struct-ftrace_hash-save_filter_hash-got-struct-ftrace_hash-noderef-__rcu-filter_hash
    `-- kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-struct-ftrace_hash-save_notrace_hash-got-struct-ftrace_hash-noderef-__rcu-notrace_hash

elapsed time: 1700m

configs tested: 134
configs skipped: 2

tested configs:
alpha                             allnoconfig   gcc-13.2.0
alpha                               defconfig   gcc-13.2.0
arc                               allnoconfig   gcc-13.2.0
arc                                 defconfig   gcc-13.2.0
arc                   randconfig-001-20240622   gcc-13.2.0
arc                   randconfig-002-20240622   gcc-13.2.0
arm                               allnoconfig   clang-19
arm                                 defconfig   clang-14
arm                          pxa168_defconfig   clang-19
arm                   randconfig-001-20240622   gcc-13.2.0
arm                   randconfig-002-20240622   clang-19
arm                   randconfig-003-20240622   clang-14
arm                   randconfig-004-20240622   gcc-13.2.0
arm                         wpcm450_defconfig   gcc-13.2.0
arm64                             allnoconfig   gcc-13.2.0
arm64                               defconfig   gcc-13.2.0
arm64                 randconfig-001-20240622   clang-19
arm64                 randconfig-002-20240622   clang-14
arm64                 randconfig-003-20240622   gcc-13.2.0
arm64                 randconfig-004-20240622   clang-19
csky                             alldefconfig   gcc-13.2.0
csky                              allnoconfig   gcc-13.2.0
csky                                defconfig   gcc-13.2.0
csky                  randconfig-001-20240622   gcc-13.2.0
csky                  randconfig-002-20240622   gcc-13.2.0
hexagon                           allnoconfig   clang-19
hexagon                             defconfig   clang-19
hexagon               randconfig-001-20240622   clang-19
hexagon               randconfig-002-20240622   clang-19
i386         buildonly-randconfig-001-20240622   gcc-13
i386         buildonly-randconfig-002-20240622   clang-18
i386         buildonly-randconfig-003-20240622   clang-18
i386         buildonly-randconfig-004-20240622   gcc-13
i386         buildonly-randconfig-005-20240622   gcc-13
i386         buildonly-randconfig-006-20240622   clang-18
i386                  randconfig-001-20240622   gcc-10
i386                  randconfig-002-20240622   clang-18
i386                  randconfig-003-20240622   gcc-13
i386                  randconfig-004-20240622   gcc-13
i386                  randconfig-005-20240622   clang-18
i386                  randconfig-006-20240622   gcc-13
i386                  randconfig-011-20240622   gcc-9
i386                  randconfig-012-20240622   gcc-7
i386                  randconfig-013-20240622   clang-18
i386                  randconfig-014-20240622   clang-18
i386                  randconfig-015-20240622   clang-18
i386                  randconfig-016-20240622   clang-18
loongarch                         allnoconfig   gcc-13.2.0
loongarch                           defconfig   gcc-13.2.0
loongarch                 loongson3_defconfig   gcc-13.2.0
loongarch             randconfig-001-20240622   gcc-13.2.0
loongarch             randconfig-002-20240622   gcc-13.2.0
m68k                              allnoconfig   gcc-13.2.0
m68k                                defconfig   gcc-13.2.0
microblaze                        allnoconfig   gcc-13.2.0
microblaze                          defconfig   gcc-13.2.0
mips                              allnoconfig   gcc-13.2.0
nios2                             allnoconfig   gcc-13.2.0
nios2                               defconfig   gcc-13.2.0
nios2                 randconfig-001-20240622   gcc-13.2.0
nios2                 randconfig-002-20240622   gcc-13.2.0
openrisc                          allnoconfig   gcc-13.2.0
openrisc                            defconfig   gcc-13.2.0
parisc                            allnoconfig   gcc-13.2.0
parisc                              defconfig   gcc-13.2.0
parisc                randconfig-001-20240622   gcc-13.2.0
parisc                randconfig-002-20240622   gcc-13.2.0
parisc64                            defconfig   gcc-13.2.0
powerpc                           allnoconfig   gcc-13.2.0
powerpc                      chrp32_defconfig   clang-19
powerpc                      cm5200_defconfig   clang-19
powerpc                   currituck_defconfig   clang-19
powerpc                      mgcoge_defconfig   clang-19
powerpc                     mpc5200_defconfig   clang-14
powerpc                      pasemi_defconfig   clang-19
powerpc               randconfig-001-20240622   gcc-13.2.0
powerpc               randconfig-002-20240622   gcc-13.2.0
powerpc               randconfig-003-20240622   clang-19
powerpc                      walnut_defconfig   gcc-13.2.0
powerpc64             randconfig-001-20240622   gcc-13.2.0
powerpc64             randconfig-002-20240622   gcc-13.2.0
powerpc64             randconfig-003-20240622   gcc-13.2.0
riscv                             allnoconfig   gcc-13.2.0
riscv                               defconfig   clang-19
riscv                 randconfig-001-20240622   gcc-13.2.0
riscv                 randconfig-002-20240622   gcc-13.2.0
s390                              allnoconfig   clang-19
s390                                defconfig   clang-19
s390                  randconfig-001-20240622   clang-19
s390                  randconfig-002-20240622   clang-15
sh                                allnoconfig   gcc-13.2.0
sh                                  defconfig   gcc-13.2.0
sh                 kfr2r09-romimage_defconfig   gcc-13.2.0
sh                    randconfig-001-20240622   gcc-13.2.0
sh                    randconfig-002-20240622   gcc-13.2.0
sh                           sh2007_defconfig   gcc-13.2.0
sparc                             allnoconfig   gcc-13.2.0
sparc                               defconfig   gcc-13.2.0
sparc64                             defconfig   gcc-13.2.0
sparc64               randconfig-001-20240622   gcc-13.2.0
sparc64               randconfig-002-20240622   gcc-13.2.0
um                                allnoconfig   clang-17
um                                  defconfig   clang-19
um                             i386_defconfig   gcc-13
um                    randconfig-001-20240622   gcc-10
um                    randconfig-002-20240622   clang-19
um                           x86_64_defconfig   clang-15
x86_64       buildonly-randconfig-001-20240622   gcc-8
x86_64       buildonly-randconfig-002-20240622   clang-18
x86_64       buildonly-randconfig-003-20240622   gcc-12
x86_64       buildonly-randconfig-004-20240622   gcc-13
x86_64       buildonly-randconfig-005-20240622   clang-18
x86_64       buildonly-randconfig-006-20240622   gcc-13
x86_64                randconfig-001-20240622   clang-18
x86_64                randconfig-002-20240622   clang-18
x86_64                randconfig-003-20240622   clang-18
x86_64                randconfig-004-20240622   clang-18
x86_64                randconfig-005-20240622   clang-18
x86_64                randconfig-006-20240622   clang-18
x86_64                randconfig-011-20240622   gcc-12
x86_64                randconfig-012-20240622   gcc-8
x86_64                randconfig-013-20240622   clang-18
x86_64                randconfig-014-20240622   gcc-8
x86_64                randconfig-015-20240622   clang-18
x86_64                randconfig-016-20240622   gcc-12
x86_64                randconfig-071-20240622   clang-18
x86_64                randconfig-072-20240622   gcc-8
x86_64                randconfig-073-20240622   clang-18
x86_64                randconfig-074-20240622   gcc-12
x86_64                randconfig-075-20240622   gcc-13
x86_64                randconfig-076-20240622   gcc-10
xtensa                            allnoconfig   gcc-13.2.0
xtensa                randconfig-001-20240622   gcc-13.2.0
xtensa                randconfig-002-20240622   gcc-13.2.0

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply

* Re: [PATCH RESEND v11 1/5] firmware: cs_dsp: Add write sequence interface
From: Jeff LaBundy @ 2024-06-23  0:19 UTC (permalink / raw)
  To: James Ogletree
  Cc: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	broonie, patches, linux-sound, linux-input, devicetree,
	Charles Keepax
In-Reply-To: <20240620161745.2312359-2-jogletre@opensource.cirrus.com>

Hi James,

On Thu, Jun 20, 2024 at 04:17:41PM +0000, James Ogletree wrote:
> A write sequence is a sequence of register addresses
> and values executed by some Cirrus DSPs following
> certain power state transitions.
> 
> Add support for Cirrus drivers to update or add to a
> write sequence present in firmware.
> 
> Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
> Signed-off-by: James Ogletree <jogletre@opensource.cirrus.com>

Reviewed-by: Jeff LaBundy <jeff@labundy.com>

Thanks again for your great work here. This entire driver is well
organized, scalable, and serves as a great template for future FF
devices with similar use-cases. Nice job!

Kind regards,
Jeff LaBundy

> ---
> Note that this patch can be applied before the others.
> 
>  drivers/firmware/cirrus/cs_dsp.c       | 278 +++++++++++++++++++++++++
>  include/linux/firmware/cirrus/cs_dsp.h |  27 +++
>  2 files changed, 305 insertions(+)
> 
> diff --git a/drivers/firmware/cirrus/cs_dsp.c b/drivers/firmware/cirrus/cs_dsp.c
> index 79d4254d1f9b..6d886ffea10f 100644
> --- a/drivers/firmware/cirrus/cs_dsp.c
> +++ b/drivers/firmware/cirrus/cs_dsp.c
> @@ -275,6 +275,12 @@
>  #define HALO_MPU_VIO_ERR_SRC_MASK           0x00007fff
>  #define HALO_MPU_VIO_ERR_SRC_SHIFT                   0
>  
> +/*
> + * Write Sequence
> + */
> +#define WSEQ_OP_MAX_WORDS	3
> +#define WSEQ_END_OF_SCRIPT	0xFFFFFF
> +
>  struct cs_dsp_ops {
>  	bool (*validate_version)(struct cs_dsp *dsp, unsigned int version);
>  	unsigned int (*parse_sizes)(struct cs_dsp *dsp,
> @@ -3339,6 +3345,278 @@ int cs_dsp_chunk_read(struct cs_dsp_chunk *ch, int nbits)
>  }
>  EXPORT_SYMBOL_NS_GPL(cs_dsp_chunk_read, FW_CS_DSP);
>  
> +
> +struct cs_dsp_wseq_op {
> +	struct list_head list;
> +	u32 address;
> +	u32 data;
> +	u16 offset;
> +	u8 operation;
> +};
> +
> +static void cs_dsp_wseq_clear(struct cs_dsp *dsp, struct cs_dsp_wseq *wseq)
> +{
> +	struct cs_dsp_wseq_op *op, *op_tmp;
> +
> +	list_for_each_entry_safe(op, op_tmp, &wseq->ops, list) {
> +		list_del(&op->list);
> +		devm_kfree(dsp->dev, op);
> +	}
> +}
> +
> +static int cs_dsp_populate_wseq(struct cs_dsp *dsp, struct cs_dsp_wseq *wseq)
> +{
> +	struct cs_dsp_wseq_op *op = NULL;
> +	struct cs_dsp_chunk chunk;
> +	u8 *words;
> +	int ret;
> +
> +	if (!wseq->ctl) {
> +		cs_dsp_err(dsp, "No control for write sequence\n");
> +		return -EINVAL;
> +	}
> +
> +	words = kzalloc(wseq->ctl->len, GFP_KERNEL);
> +	if (!words)
> +		return -ENOMEM;
> +
> +	ret = cs_dsp_coeff_read_ctrl(wseq->ctl, 0, words, wseq->ctl->len);
> +	if (ret) {
> +		cs_dsp_err(dsp, "Failed to read %s: %d\n", wseq->ctl->subname, ret);
> +		goto err_free;
> +	}
> +
> +	INIT_LIST_HEAD(&wseq->ops);
> +
> +	chunk = cs_dsp_chunk(words, wseq->ctl->len);
> +
> +	while (!cs_dsp_chunk_end(&chunk)) {
> +		op = devm_kzalloc(dsp->dev, sizeof(*op), GFP_KERNEL);
> +		if (!op) {
> +			ret = -ENOMEM;
> +			goto err_free;
> +		}
> +
> +		op->offset = cs_dsp_chunk_bytes(&chunk);
> +		op->operation = cs_dsp_chunk_read(&chunk, 8);
> +
> +		switch (op->operation) {
> +		case CS_DSP_WSEQ_END:
> +			op->data = WSEQ_END_OF_SCRIPT;
> +			break;
> +		case CS_DSP_WSEQ_UNLOCK:
> +			op->data = cs_dsp_chunk_read(&chunk, 16);
> +			break;
> +		case CS_DSP_WSEQ_ADDR8:
> +			op->address = cs_dsp_chunk_read(&chunk, 8);
> +			op->data = cs_dsp_chunk_read(&chunk, 32);
> +			break;
> +		case CS_DSP_WSEQ_H16:
> +		case CS_DSP_WSEQ_L16:
> +			op->address = cs_dsp_chunk_read(&chunk, 24);
> +			op->data = cs_dsp_chunk_read(&chunk, 16);
> +			break;
> +		case CS_DSP_WSEQ_FULL:
> +			op->address = cs_dsp_chunk_read(&chunk, 32);
> +			op->data = cs_dsp_chunk_read(&chunk, 32);
> +			break;
> +		default:
> +			ret = -EINVAL;
> +			cs_dsp_err(dsp, "Unsupported op: %X\n", op->operation);
> +			devm_kfree(dsp->dev, op);
> +			goto err_free;
> +		}
> +
> +		list_add_tail(&op->list, &wseq->ops);
> +
> +		if (op->operation == CS_DSP_WSEQ_END)
> +			break;
> +	}
> +
> +	if (op && op->operation != CS_DSP_WSEQ_END) {
> +		cs_dsp_err(dsp, "%s missing end terminator\n", wseq->ctl->subname);
> +		ret = -ENOENT;
> +	}
> +
> +err_free:
> +	kfree(words);
> +
> +	return ret;
> +}
> +
> +/**
> + * cs_dsp_wseq_init() - Initialize write sequences contained within the loaded DSP firmware
> + * @dsp: Pointer to DSP structure
> + * @wseqs: List of write sequences to initialize
> + * @num_wseqs: Number of write sequences to initialize
> + *
> + * Return: Zero for success, a negative number on error.
> + */
> +int cs_dsp_wseq_init(struct cs_dsp *dsp, struct cs_dsp_wseq *wseqs, unsigned int num_wseqs)
> +{
> +	int i, ret;
> +
> +	lockdep_assert_held(&dsp->pwr_lock);
> +
> +	for (i = 0; i < num_wseqs; i++) {
> +		ret = cs_dsp_populate_wseq(dsp, &wseqs[i]);
> +		if (ret) {
> +			cs_dsp_wseq_clear(dsp, &wseqs[i]);
> +			return ret;
> +		}
> +	}
> +
> +	return 0;
> +}
> +EXPORT_SYMBOL_NS_GPL(cs_dsp_wseq_init, FW_CS_DSP);
> +
> +static struct cs_dsp_wseq_op *cs_dsp_wseq_find_op(u32 addr, u8 op_code,
> +						  struct list_head *wseq_ops)
> +{
> +	struct cs_dsp_wseq_op *op;
> +
> +	list_for_each_entry(op, wseq_ops, list) {
> +		if (op->operation == op_code && op->address == addr)
> +			return op;
> +	}
> +
> +	return NULL;
> +}
> +
> +/**
> + * cs_dsp_wseq_write() - Add or update an entry in a write sequence
> + * @dsp: Pointer to a DSP structure
> + * @wseq: Write sequence to write to
> + * @addr: Address of the register to be written to
> + * @data: Data to be written
> + * @op_code: The type of operation of the new entry
> + * @update: If true, searches for the first entry in the write sequence with
> + * the same address and op_code, and replaces it. If false, creates a new entry
> + * at the tail
> + *
> + * This function formats register address and value pairs into the format
> + * required for write sequence entries, and either updates or adds the
> + * new entry into the write sequence.
> + *
> + * If update is set to true and no matching entry is found, it will add a new entry.
> + *
> + * Return: Zero for success, a negative number on error.
> + */
> +int cs_dsp_wseq_write(struct cs_dsp *dsp, struct cs_dsp_wseq *wseq,
> +		      u32 addr, u32 data, u8 op_code, bool update)
> +{
> +	struct cs_dsp_wseq_op *op_end, *op_new = NULL;
> +	u32 words[WSEQ_OP_MAX_WORDS];
> +	struct cs_dsp_chunk chunk;
> +	int new_op_size, ret;
> +
> +	if (update)
> +		op_new = cs_dsp_wseq_find_op(addr, op_code, &wseq->ops);
> +
> +	/* If entry to update is not found, treat it as a new operation */
> +	if (!op_new) {
> +		op_end = cs_dsp_wseq_find_op(0, CS_DSP_WSEQ_END, &wseq->ops);
> +		if (!op_end) {
> +			cs_dsp_err(dsp, "Missing terminator for %s\n", wseq->ctl->subname);
> +			return -EINVAL;
> +		}
> +
> +		op_new = devm_kzalloc(dsp->dev, sizeof(*op_new), GFP_KERNEL);
> +		if (!op_new)
> +			return -ENOMEM;
> +
> +		op_new->operation = op_code;
> +		op_new->address = addr;
> +		op_new->offset = op_end->offset;
> +		update = false;
> +	}
> +
> +	op_new->data = data;
> +
> +	chunk = cs_dsp_chunk(words, sizeof(words));
> +	cs_dsp_chunk_write(&chunk, 8, op_new->operation);
> +
> +	switch (op_code) {
> +	case CS_DSP_WSEQ_FULL:
> +		cs_dsp_chunk_write(&chunk, 32, op_new->address);
> +		cs_dsp_chunk_write(&chunk, 32, op_new->data);
> +		break;
> +	case CS_DSP_WSEQ_L16:
> +	case CS_DSP_WSEQ_H16:
> +		cs_dsp_chunk_write(&chunk, 24, op_new->address);
> +		cs_dsp_chunk_write(&chunk, 16, op_new->data);
> +		break;
> +	default:
> +		ret = -EINVAL;
> +		cs_dsp_err(dsp, "Operation %X not supported\n", op_code);
> +		goto op_new_free;
> +	}
> +
> +	new_op_size = cs_dsp_chunk_bytes(&chunk);
> +
> +	if (!update) {
> +		if (wseq->ctl->len - op_end->offset < new_op_size) {
> +			cs_dsp_err(dsp, "Not enough memory in %s for entry\n", wseq->ctl->subname);
> +			ret = -E2BIG;
> +			goto op_new_free;
> +		}
> +
> +		op_end->offset += new_op_size;
> +
> +		ret = cs_dsp_coeff_write_ctrl(wseq->ctl, op_end->offset / sizeof(u32),
> +					      &op_end->data, sizeof(u32));
> +		if (ret)
> +			goto op_new_free;
> +
> +		list_add_tail(&op_new->list, &op_end->list);
> +	}
> +
> +	ret = cs_dsp_coeff_write_ctrl(wseq->ctl, op_new->offset / sizeof(u32),
> +				      words, new_op_size);
> +	if (ret)
> +		goto op_new_free;
> +
> +	return 0;
> +
> +op_new_free:
> +	devm_kfree(dsp->dev, op_new);
> +
> +	return ret;
> +}
> +EXPORT_SYMBOL_NS_GPL(cs_dsp_wseq_write, FW_CS_DSP);
> +
> +/**
> + * cs_dsp_wseq_multi_write() - Add or update multiple entries in a write sequence
> + * @dsp: Pointer to a DSP structure
> + * @wseq: Write sequence to write to
> + * @reg_seq: List of address-data pairs
> + * @num_regs: Number of address-data pairs
> + * @op_code: The types of operations of the new entries
> + * @update: If true, searches for the first entry in the write sequence with
> + * the same address and op_code, and replaces it. If false, creates a new entry
> + * at the tail
> + *
> + * This function calls cs_dsp_wseq_write() for multiple address-data pairs.
> + *
> + * Return: Zero for success, a negative number on error.
> + */
> +int cs_dsp_wseq_multi_write(struct cs_dsp *dsp, struct cs_dsp_wseq *wseq,
> +			    const struct reg_sequence *reg_seq, int num_regs,
> +			    u8 op_code, bool update)
> +{
> +	int i, ret;
> +
> +	for (i = 0; i < num_regs; i++) {
> +		ret = cs_dsp_wseq_write(dsp, wseq, reg_seq[i].reg,
> +					reg_seq[i].def, op_code, update);
> +		if (ret)
> +			return ret;
> +	}
> +
> +	return 0;
> +}
> +EXPORT_SYMBOL_NS_GPL(cs_dsp_wseq_multi_write, FW_CS_DSP);
> +
>  MODULE_DESCRIPTION("Cirrus Logic DSP Support");
>  MODULE_AUTHOR("Simon Trimmer <simont@opensource.cirrus.com>");
>  MODULE_LICENSE("GPL v2");
> diff --git a/include/linux/firmware/cirrus/cs_dsp.h b/include/linux/firmware/cirrus/cs_dsp.h
> index 29cd11d5a3cf..4cef6fafa1d8 100644
> --- a/include/linux/firmware/cirrus/cs_dsp.h
> +++ b/include/linux/firmware/cirrus/cs_dsp.h
> @@ -42,6 +42,16 @@
>  #define CS_DSP_ACKED_CTL_MIN_VALUE           0
>  #define CS_DSP_ACKED_CTL_MAX_VALUE           0xFFFFFF
>  
> +/*
> + * Write sequence operation codes
> + */
> +#define CS_DSP_WSEQ_FULL	0x00
> +#define CS_DSP_WSEQ_ADDR8	0x02
> +#define CS_DSP_WSEQ_L16		0x04
> +#define CS_DSP_WSEQ_H16		0x05
> +#define CS_DSP_WSEQ_UNLOCK	0xFD
> +#define CS_DSP_WSEQ_END		0xFF
> +
>  /**
>   * struct cs_dsp_region - Describes a logical memory region in DSP address space
>   * @type:	Memory region type
> @@ -255,6 +265,23 @@ struct cs_dsp_alg_region *cs_dsp_find_alg_region(struct cs_dsp *dsp,
>  
>  const char *cs_dsp_mem_region_name(unsigned int type);
>  
> +/**
> + * struct cs_dsp_wseq - Describes a write sequence
> + * @ctl:	Write sequence cs_dsp control
> + * @ops:	Operations contained within
> + */
> +struct cs_dsp_wseq {
> +	struct cs_dsp_coeff_ctl *ctl;
> +	struct list_head ops;
> +};
> +
> +int cs_dsp_wseq_init(struct cs_dsp *dsp, struct cs_dsp_wseq *wseqs, unsigned int num_wseqs);
> +int cs_dsp_wseq_write(struct cs_dsp *dsp, struct cs_dsp_wseq *wseq, u32 addr, u32 data,
> +		      u8 op_code, bool update);
> +int cs_dsp_wseq_multi_write(struct cs_dsp *dsp, struct cs_dsp_wseq *wseq,
> +			    const struct reg_sequence *reg_seq, int num_regs,
> +			    u8 op_code, bool update);
> +
>  /**
>   * struct cs_dsp_chunk - Describes a buffer holding data formatted for the DSP
>   * @data:	Pointer to underlying buffer memory
> -- 
> 2.34.1
> 

^ permalink raw reply

* Re: [PATCH RESEND v11 2/5] dt-bindings: input: cirrus,cs40l50: Add initial DT binding
From: Jeff LaBundy @ 2024-06-23  0:20 UTC (permalink / raw)
  To: James Ogletree
  Cc: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	broonie, patches, linux-sound, linux-input, devicetree,
	Krzysztof Kozlowski
In-Reply-To: <20240620161745.2312359-3-jogletre@opensource.cirrus.com>

Hi James,

On Thu, Jun 20, 2024 at 04:17:42PM +0000, James Ogletree wrote:
> CS40L50 is a haptic driver with waveform memory,
> integrated DSP, and closed-loop algorithms.
> 
> Add a YAML DT binding document for this device.
> 
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> Signed-off-by: James Ogletree <jogletre@opensource.cirrus.com>

Reviewed-by: Jeff LaBundy <jeff@labundy.com>

Kind regards,
Jeff LaBundy

^ permalink raw reply

* Re: [PATCH RESEND v11 3/5] mfd: cs40l50: Add support for CS40L50 core driver
From: Jeff LaBundy @ 2024-06-23  0:21 UTC (permalink / raw)
  To: James Ogletree
  Cc: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	broonie, patches, linux-sound, linux-input, devicetree
In-Reply-To: <20240620161745.2312359-4-jogletre@opensource.cirrus.com>

Hi James,

On Thu, Jun 20, 2024 at 04:17:43PM +0000, James Ogletree wrote:
> Introduce support for Cirrus Logic Device CS40L50: a
> haptic driver with waveform memory, integrated DSP,
> and closed-loop algorithms.
> 
> The MFD component registers and initializes the device.
> 
> Signed-off-by: James Ogletree <jogletre@opensource.cirrus.com>

Reviewed-by: Jeff LaBundy <jeff@labundy.com>

Kind regards,
Jeff LaBundy

^ permalink raw reply

* Re: [PATCH RESEND v11 4/5] Input: cs40l50 - Add support for the CS40L50 haptic driver
From: Jeff LaBundy @ 2024-06-23  0:22 UTC (permalink / raw)
  To: James Ogletree
  Cc: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	broonie, patches, linux-sound, linux-input, devicetree
In-Reply-To: <20240620161745.2312359-5-jogletre@opensource.cirrus.com>

Hi James,

On Thu, Jun 20, 2024 at 04:17:44PM +0000, James Ogletree wrote:
> Introduce support for Cirrus Logic Device CS40L50: a
> haptic driver with waveform memory, integrated DSP,
> and closed-loop algorithms.
> 
> The input driver provides the interface for control of
> haptic effects through the device.
> 
> Signed-off-by: James Ogletree <jogletre@opensource.cirrus.com>

Reviewed-by: Jeff LaBundy <jeff@labundy.com>

Kind regards,
Jeff LaBundy


^ permalink raw reply

* Re: [PATCH RESEND v11 5/5] ASoC: cs40l50: Support I2S streaming to CS40L50
From: Jeff LaBundy @ 2024-06-23  0:23 UTC (permalink / raw)
  To: James Ogletree
  Cc: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	broonie, patches, linux-sound, linux-input, devicetree,
	David Rhodes
In-Reply-To: <20240620161745.2312359-6-jogletre@opensource.cirrus.com>

Hi James,

On Thu, Jun 20, 2024 at 04:17:45PM +0000, James Ogletree wrote:
> Introduce support for Cirrus Logic Device CS40L50: a
> haptic driver with waveform memory, integrated DSP,
> and closed-loop algorithms.
> 
> The ASoC driver enables I2S streaming to the device.
> 
> Reviewed-by: David Rhodes <drhodes@opensource.cirrus.com>
> Signed-off-by: James Ogletree <jogletre@opensource.cirrus.com>

Reviewed-by: Jeff LaBundy <jeff@labundy.com>

Kind regards,
Jeff LaBundy

^ permalink raw reply

* Re: [PATCH RESEND v11 4/5] Input: cs40l50 - Add support for the CS40L50 haptic driver
From: Dmitry Torokhov @ 2024-06-23  8:02 UTC (permalink / raw)
  To: Jeff LaBundy
  Cc: James Ogletree, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	broonie, patches, linux-sound, linux-input, devicetree
In-Reply-To: <ZndqwfN4G+RkCNrn@nixie71>

On Sat, Jun 22, 2024 at 07:22:25PM -0500, Jeff LaBundy wrote:
> Hi James,
> 
> On Thu, Jun 20, 2024 at 04:17:44PM +0000, James Ogletree wrote:
> > Introduce support for Cirrus Logic Device CS40L50: a
> > haptic driver with waveform memory, integrated DSP,
> > and closed-loop algorithms.
> > 
> > The input driver provides the interface for control of
> > haptic effects through the device.
> > 
> > Signed-off-by: James Ogletree <jogletre@opensource.cirrus.com>
> 
> Reviewed-by: Jeff LaBundy <jeff@labundy.com>

OK, let's merge it.

Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

IMO it still needs improvements so that the repeated effect can be
stopped/erased without waiting for it to finish playing, but that
can be improved later.

I assume it is going through MFD tree?

Thanks.

-- 
Dmitry

^ permalink raw reply

* [dtor-input:next] BUILD SUCCESS 0ca1323c6aba8fd9309ca33a4bf57c1c9fc06171
From: kernel test robot @ 2024-06-23 10:26 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input

tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git next
branch HEAD: 0ca1323c6aba8fd9309ca33a4bf57c1c9fc06171  Input: edt-ft5x06 - add ft5426

elapsed time: 1520m

configs tested: 80
configs skipped: 0

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
arc                   randconfig-001-20240623   gcc-13.2.0
arc                   randconfig-002-20240623   gcc-13.2.0
arm                   randconfig-001-20240623   gcc-13.2.0
arm                   randconfig-002-20240623   gcc-13.2.0
arm                   randconfig-003-20240623   gcc-13.2.0
arm                   randconfig-004-20240623   gcc-13.2.0
arm64                 randconfig-001-20240623   clang-15
arm64                 randconfig-002-20240623   clang-19
arm64                 randconfig-003-20240623   clang-19
arm64                 randconfig-004-20240623   clang-19
csky                  randconfig-001-20240623   gcc-13.2.0
csky                  randconfig-002-20240623   gcc-13.2.0
hexagon               randconfig-001-20240623   clang-19
hexagon               randconfig-002-20240623   clang-19
i386         buildonly-randconfig-001-20240622   gcc-13
i386         buildonly-randconfig-002-20240622   clang-18
i386         buildonly-randconfig-003-20240622   clang-18
i386         buildonly-randconfig-004-20240622   gcc-13
i386         buildonly-randconfig-005-20240622   gcc-13
i386         buildonly-randconfig-006-20240622   clang-18
i386                  randconfig-001-20240622   gcc-10
i386                  randconfig-002-20240622   clang-18
i386                  randconfig-003-20240622   gcc-13
i386                  randconfig-004-20240622   gcc-13
i386                  randconfig-005-20240622   clang-18
i386                  randconfig-006-20240622   gcc-13
i386                  randconfig-011-20240622   gcc-9
i386                  randconfig-012-20240622   gcc-7
i386                  randconfig-013-20240622   clang-18
i386                  randconfig-014-20240622   clang-18
i386                  randconfig-015-20240622   clang-18
i386                  randconfig-016-20240622   clang-18
loongarch             randconfig-001-20240623   gcc-13.2.0
loongarch             randconfig-002-20240623   gcc-13.2.0
nios2                 randconfig-001-20240623   gcc-13.2.0
nios2                 randconfig-002-20240623   gcc-13.2.0
parisc                randconfig-001-20240623   gcc-13.2.0
parisc                randconfig-002-20240623   gcc-13.2.0
powerpc               randconfig-001-20240623   gcc-13.2.0
powerpc               randconfig-002-20240623   clang-15
powerpc               randconfig-003-20240623   clang-19
powerpc64             randconfig-001-20240623   gcc-13.2.0
powerpc64             randconfig-002-20240623   clang-19
powerpc64             randconfig-003-20240623   gcc-13.2.0
riscv                 randconfig-001-20240623   clang-19
riscv                 randconfig-002-20240623   clang-19
s390                  randconfig-001-20240623   gcc-13.2.0
s390                  randconfig-002-20240623   gcc-13.2.0
sh                    randconfig-001-20240623   gcc-13.2.0
sh                    randconfig-002-20240623   gcc-13.2.0
sparc64               randconfig-001-20240623   gcc-13.2.0
sparc64               randconfig-002-20240623   gcc-13.2.0
um                    randconfig-001-20240623   gcc-7
um                    randconfig-002-20240623   clang-19
x86_64       buildonly-randconfig-001-20240623   clang-18
x86_64       buildonly-randconfig-002-20240623   clang-18
x86_64       buildonly-randconfig-003-20240623   clang-18
x86_64       buildonly-randconfig-004-20240623   clang-18
x86_64       buildonly-randconfig-005-20240623   clang-18
x86_64       buildonly-randconfig-006-20240623   clang-18
x86_64                randconfig-001-20240623   gcc-13
x86_64                randconfig-002-20240623   gcc-13
x86_64                randconfig-003-20240623   clang-18
x86_64                randconfig-004-20240623   gcc-13
x86_64                randconfig-005-20240623   gcc-8
x86_64                randconfig-006-20240623   clang-18
x86_64                randconfig-011-20240623   clang-18
x86_64                randconfig-012-20240623   gcc-13
x86_64                randconfig-013-20240623   clang-18
x86_64                randconfig-014-20240623   clang-18
x86_64                randconfig-015-20240623   gcc-13
x86_64                randconfig-016-20240623   clang-18
x86_64                randconfig-071-20240623   gcc-13
x86_64                randconfig-072-20240623   gcc-13
x86_64                randconfig-073-20240623   clang-18
x86_64                randconfig-074-20240623   clang-18
x86_64                randconfig-075-20240623   gcc-13
x86_64                randconfig-076-20240623   clang-18
xtensa                randconfig-001-20240623   gcc-13.2.0
xtensa                randconfig-002-20240623   gcc-13.2.0

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply

* Re: [PATCH] Input: ads7846 - add dummy command register clearing cycle
From: Marek Vasut @ 2024-06-23 18:21 UTC (permalink / raw)
  To: linux-input
  Cc: Arnd Bergmann, Dmitry Torokhov, Greg Kroah-Hartman, Linus Walleij,
	kernel
In-Reply-To: <20240320072533.170029-1-marex@denx.de>

On 3/20/24 8:23 AM, Marek Vasut wrote:
> On STM32MP135F with XPT2046 touch controller attached to SPI bus, it has
> been observed that the touch controller locks up after Linux kernel has
> finished booting. Adding a dummy cycle on the SPI bus seems to mitigate
> the lock up.
> 
> The XPTEK XPT2046 controller seems to be an identical clone of TI TSC2046,
> the datasheet seems to be a clone of the TI part as well, text seem to be
> word to word identical, except all the pictures have been drawn again.
> 
> This touch controller is present e.g. on WaveShare 3.2inch RPi LCD (B)
> panel, the DTO provided by WaveShare uses 50 kHz SPI clock for this
> touch controller, which is unusually low and possibly might have been
> used as some sort of workaround for an issue. The SPI LCD on the same
> bus uses 16 MHz clock.
> 
> SPI bus DT properties spi-cs-setup-delay-ns, spi-cs-hold-delay-ns,
> spi-cs-inactive-delay-ns, spi-rx-delay-us, spi-tx-delay-us set to
> range of 500ns..5us seem to have no impact on the behavior of the
> touch controller, the lock up always occurs. The STM32MP13xx SPI
> controller users GPIO control for the nCS pins.
> 
> Since the dummy cycle happens after the controller has been put into
> power down mode and both ADC and REF regulators have been disabled,
> the cycle should have no impact on the configuration of the controller,
> i.e. it should be a NOP.
> 
> It is unclear whether this problem is specific to this cloned XPT2046
> controller, or whether this is also present on TSC2046. A test on
> either TSC2046 or ADS7846 would be very welcome.

Hi,

Are there still any open topics with this patch ?

^ permalink raw reply

* Re: [PATCH RESEND v11 4/5] Input: cs40l50 - Add support for the CS40L50 haptic driver
From: James Ogletree @ 2024-06-23 19:04 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Jeff LaBundy, James Ogletree, robh+dt@kernel.org,
	Krzysztof Kozlowski, Conor Dooley, Lee Jones, broonie@kernel.org,
	patches@opensource.cirrus.com, linux-sound@vger.kernel.org,
	linux-input@vger.kernel.org, devicetree@vger.kernel.org
In-Reply-To: <ZnfWmR48MfcQKpTS@google.com>


> On Jun 23, 2024, at 3:02 AM, Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote:
> 
> On Sat, Jun 22, 2024 at 07:22:25PM -0500, Jeff LaBundy wrote:
>> Hi James,
>> 
>> On Thu, Jun 20, 2024 at 04:17:44PM +0000, James Ogletree wrote:
>>> Introduce support for Cirrus Logic Device CS40L50: a
>>> haptic driver with waveform memory, integrated DSP,
>>> and closed-loop algorithms.
>>> 
>>> The input driver provides the interface for control of
>>> haptic effects through the device.
>>> 
>>> Signed-off-by: James Ogletree <jogletre@opensource.cirrus.com>
>> 
>> Reviewed-by: Jeff LaBundy <jeff@labundy.com>
> 
> OK, let's merge it.
> 
> Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> 
> IMO it still needs improvements so that the repeated effect can be
> stopped/erased without waiting for it to finish playing, but that
> can be improved later.
> 
> I assume it is going through MFD tree?
> 
> Thanks.
> 
> -- 
> Dmitry

Correct, it is going through the MFD tree.

Best,
James

^ permalink raw reply

* [git pull] Input updates for v6.10-rc5
From: Dmitry Torokhov @ 2024-06-23 23:05 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-input

Hi Linus,

Please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git tags/input-for-v6.10-rc5

to receive updates for the input subsystem. You will get:

- fixes for ili210x and elantech drivers

- new products IDs added to xpad controller driver

- a tweak to i8042 driver to always keep keyboard in Ayaneo Kun
  handheld in raw mode

- populated "id_table" in ads7846 touchscreen driver to make sure
  non-OF instantiated devices can properly determine the model data.

Changelog:
---------

Alexander Stein (1):
      Input: ads7846 - use spi_device_id table

John Keeping (1):
      Input: ili210x - fix ili251x_read_touch_data() return value

Jonathan Denose (1):
      Input: elantech - fix touchpad state on resume for Lenovo N24

Luke D. Jones (1):
      Input: xpad - add support for ASUS ROG RAIKIRI PRO

Tobias Jakobi (1):
      Input: i8042 - add Ayaneo Kun to i8042 quirk table

Diffstat:
--------

 drivers/input/joystick/xpad.c         |  1 +
 drivers/input/mouse/elantech.c        | 31 +++++++++++++++++++++++++++++++
 drivers/input/serio/i8042-acpipnpio.h | 18 ++++++++++++++++--
 drivers/input/touchscreen/ads7846.c   | 12 +++++++++++-
 drivers/input/touchscreen/ili210x.c   |  4 ++--
 5 files changed, 61 insertions(+), 5 deletions(-)

Thanks.


-- 
Dmitry

^ permalink raw reply

* [PATCH] Fixes: bda38f9a41 ("HID: asus: use hid for brightness control on keyboard")
From: Luke D. Jones @ 2024-06-24  0:14 UTC (permalink / raw)
  To: linux-input; +Cc: linux-kernel, jikos, bentiss, Luke D. Jones

- Fix missing braces around initializer
- Remove unused function declaration from asus-wmi.h

Signed-off-by: Luke D. Jones <luke@ljones.dev>
---
 include/linux/platform_data/x86/asus-wmi.h | 11 +----------
 1 file changed, 1 insertion(+), 10 deletions(-)

diff --git a/include/linux/platform_data/x86/asus-wmi.h b/include/linux/platform_data/x86/asus-wmi.h
index 96c780efa0d7..74b32e1d6735 100644
--- a/include/linux/platform_data/x86/asus-wmi.h
+++ b/include/linux/platform_data/x86/asus-wmi.h
@@ -162,15 +162,6 @@ static inline int asus_wmi_evaluate_method(u32 method_id, u32 arg0, u32 arg1,
 #endif
 
 /* To be used by both hid-asus and asus-wmi to determine which controls kbd_brightness */
-#if IS_ENABLED(CONFIG_ASUS_WMI)
-bool asus_use_hid_led(void);
-#else
-static inline bool asus_use_hid_led(void)
-{
-	return true;
-}
-#endif
-
 static const struct dmi_system_id asus_use_hid_led_dmi_ids[] = {
 	{
 		.matches = {
@@ -202,7 +193,7 @@ static const struct dmi_system_id asus_use_hid_led_dmi_ids[] = {
 			DMI_MATCH(DMI_BOARD_NAME, "RC71L"),
 		},
 	},
-	NULL,
+	{ },
 };
 
 #endif	/* __PLATFORM_DATA_X86_ASUS_WMI_H */
-- 
2.45.2


^ permalink raw reply related

* [PATCH 0/7] qcom: initial support for the OnePlus 8T
From: Caleb Connolly @ 2024-06-24  1:30 UTC (permalink / raw)
  To: Caleb Connolly, Neil Armstrong, Jessica Zhang, David Airlie,
	Daniel Vetter, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Dmitry Torokhov, Bjorn Andersson, Konrad Dybcio, Henrik Rydberg
  Cc: dri-devel, devicetree, linux-input, linux-arm-msm,
	~postmarketos/upstreaming, Frieder Hannenheim

Add bindings for the SM8250 OnePlus devices, a common devicetree,
touchscreen and display drivers, and a dts for the OnePlus 8T (kebab).

The OnePlus 8 series is made up of 3 flagship smartphones from 2019,
featuring the Qualcomm X55 5G PCIe modem.

This series introduces initial support for the 8T, adding drivers for
the 1080x2400 120Hz DSC panel and the Synaptics TCM Oncell touchscreen.

The panel driver suffers from similar limitations to the LG SW43408
panel found on the Pixel 3, namely that after toggling the reset GPIO it
is not possible to get the panel into a working state.

Given the apparent prevelance of this issue, particularly with DSC
panels, I believe this is a bug in the core DSI code, and not a device
or panel specific issue. I think it is still useful to accept these
panel drivers into upstream since, from a users perspective, the panel
is fully functional just by leaving the reset GPIO alone and keeping the
regulator on. The only (theoretical) downside is worse battery life,
which is a small price to pay for a working display.

The Synaptics TCM Oncell touchscreens are a new generation of Synaptics
controllers with a totally incompatible firmware compared to the older
rmi4 touchscreens. A new driver is written which currently only supports
the S3908 controller found on the OnePlus 8T. Downstream vendor drivers
suggest that the controller supports custom touch report configuration,
one can define the exact bit packing of the touch reports, however the
combination of controller and firmware available on this device does not
allow for programming in cusotm configs, so for simplicity this initial
driver uses a hardcoded bit packing to decode the touch reports.

With this series, the OnePlus 8T can boot up to GNOME shell, connect to
a wifi network and browse the web with GPU acceleration.

The touchscreen driver included here is loosely based on a previous
attempt by Frieder Hannenheim which can be found below.

Link: https://lore.kernel.org/lkml/20240327214643.7055-1-friederhannenheim@riseup.net/

---
Caleb Connolly (7):
      dt-bindings: panel: document Samsung AMB655X
      dt-bindings: input: touchscreen: document synaptics TCM oncell
      dt-bindings: arm: qcom: add OnePlus 8 series
      drm: mipi: add mipi_dsi_generic_write_multi_type()
      drm/panel: add driver for samsung amb655x
      Input: touchscreen: add Synaptics TCM oncell S3908
      arm64: dts: qcom: add OnePlus 8T (kebab)

 Documentation/devicetree/bindings/arm/qcom.yaml    |   3 +
 .../bindings/display/panel/samsung,amb655x.yaml    |  59 ++
 .../input/touchscreen/syna,tcm-oncell.yaml         |  66 ++
 MAINTAINERS                                        |  14 +
 arch/arm64/boot/dts/qcom/Makefile                  |   1 +
 .../arm64/boot/dts/qcom/sm8250-oneplus-common.dtsi | 866 +++++++++++++++++++++
 arch/arm64/boot/dts/qcom/sm8250-oneplus-kebab.dts  |  36 +
 drivers/gpu/drm/drm_mipi_dsi.c                     |  40 +
 drivers/gpu/drm/panel/Kconfig                      |   9 +
 drivers/gpu/drm/panel/Makefile                     |   1 +
 drivers/gpu/drm/panel/panel-samsung-amb655x.c      | 420 ++++++++++
 drivers/input/touchscreen/Kconfig                  |  11 +
 drivers/input/touchscreen/Makefile                 |   1 +
 drivers/input/touchscreen/synaptics_tcm_oncell.c   | 617 +++++++++++++++
 include/drm/drm_mipi_dsi.h                         |  16 +
 15 files changed, 2160 insertions(+)
---
change-id: 20240622-oneplus8-788005cc74ae
base-commit: f76698bd9a8ca01d3581236082d786e9a6b72bb7

// Caleb (they/them)


^ permalink raw reply

* [PATCH 1/7] dt-bindings: panel: document Samsung AMB655X
From: Caleb Connolly @ 2024-06-24  1:30 UTC (permalink / raw)
  To: Caleb Connolly, Neil Armstrong, Jessica Zhang, David Airlie,
	Daniel Vetter, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Dmitry Torokhov, Bjorn Andersson, Konrad Dybcio, Henrik Rydberg
  Cc: dri-devel, devicetree, linux-input, linux-arm-msm,
	~postmarketos/upstreaming
In-Reply-To: <20240624-oneplus8-v1-0-388eecf2dff7@postmarketos.org>

Describe the Samsung AMB655X panel. It has three supplies.

Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
---
 .../bindings/display/panel/samsung,amb655x.yaml    | 59 ++++++++++++++++++++++
 1 file changed, 59 insertions(+)

diff --git a/Documentation/devicetree/bindings/display/panel/samsung,amb655x.yaml b/Documentation/devicetree/bindings/display/panel/samsung,amb655x.yaml
new file mode 100644
index 000000000000..eb987d022a0d
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/panel/samsung,amb655x.yaml
@@ -0,0 +1,59 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/samsung,amb655x.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Samsung AMB655X 1080x2400 120hz AMOLED panel
+
+maintainers:
+  - Caleb Connolly <caleb@postmarketos.org>
+
+allOf:
+  - $ref: panel-common.yaml#
+
+properties:
+  compatible:
+    const: samsung,amb655x
+
+  reg:
+    maxItems: 1
+
+  reset-gpios:
+    description: reset gpio, must be GPIO_ACTIVE_LOW
+  vddio-supply: true
+  vdd-supply: true
+  avdd-supply: true
+  enable-gpios: true
+  port: true
+
+required:
+  - compatible
+  - reg
+  - vdd-supply
+  - avdd-supply
+  - vddio-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        panel@0 {
+            compatible = "samsung,ams495qa01";
+            reg = <0>;
+            reset-gpios = <&gpio4 0 GPIO_ACTIVE_LOW>;
+            vdd-supply = <&vcc_3v3>;
+
+            port {
+                mipi_in_panel: endpoint {
+                  remote-endpoint = <&mipi_out_panel>;
+                };
+            };
+        };
+    };
+
+...

-- 
2.45.0


^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox