Linux Input/HID development
 help / color / mirror / Atom feed
* [PATCH] touchscreen: elants: fix a missing check of return values
From: Kangjie Lu @ 2018-12-21  6:59 UTC (permalink / raw)
  To: kjlu
  Cc: pakki001, Dmitry Torokhov, Greg Kroah-Hartman, Stephen Boyd,
	Joe Perches, linux-input, linux-kernel

elants_i2c_send() may fail, let's check its return values. The fix does
the check and reports an error message upon the failure.

Signed-off-by: Kangjie Lu <kjlu@umn.edu>
---
 drivers/input/touchscreen/elants_i2c.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/input/touchscreen/elants_i2c.c b/drivers/input/touchscreen/elants_i2c.c
index f2cb23121833..cb3c1470bb68 100644
--- a/drivers/input/touchscreen/elants_i2c.c
+++ b/drivers/input/touchscreen/elants_i2c.c
@@ -245,8 +245,14 @@ static int elants_i2c_calibrate(struct elants_data *ts)
 	ts->state = ELAN_WAIT_RECALIBRATION;
 	reinit_completion(&ts->cmd_done);
 
-	elants_i2c_send(client, w_flashkey, sizeof(w_flashkey));
-	elants_i2c_send(client, rek, sizeof(rek));
+	error = elants_i2c_send(client, w_flashkey, sizeof(w_flashkey));
+	error |= elants_i2c_send(client, rek, sizeof(rek));
+	if (error) {
+		dev_err(&client->dev,
+				"error in sending I2C messages for calibration: %d\n",
+				error);
+		return error;
+	}
 
 	enable_irq(client->irq);
 
-- 
2.17.2 (Apple Git-113)

^ permalink raw reply related

* Re: [PATCH v2 2/2] input: add official Raspberry Pi's touchscreen driver
From: Nicolas Saenz Julienne @ 2018-12-20 19:12 UTC (permalink / raw)
  To: Eric Anholt, Henrik Rydberg
  Cc: linux-rpi-kernel, stefan.wahren, agraf, afaerber, Dmitry Torokhov,
	Corentin Labbe, Mark Jonas, Masanari Iida, Heiko Schocher,
	Hans de Goede, Eugen Hristev, Zhu Yi, Jonathan Cameron,
	linux-kernel, linux-input
In-Reply-To: <87r2ecdovo.fsf@anholt.net>

[-- Attachment #1: Type: text/plain, Size: 928 bytes --]

On Thu, 2018-12-20 at 10:39 -0800, Eric Anholt wrote:
> Nicolas Saenz Julienne <nsaenzjulienne@suse.de> writes:
> 
> > Add's support to Raspberry Pi's 7" Touch device. Instead of using a
> > conventional bus all information is copied into a memory mapped
> > area by
> > RPi's firmware.
> > 
> > Based on the driver found in RPi's kernel repository.
> > 
> > Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
> 
> While I wish we could just have a native driver instead, it does make
> sense to have this driver upstream given the constraints.
> 
> Acked-by: Eric Anholt <eric@anholt.net>

Thanks Eric.

FYI I did manage to access the touchscreen after altering the native
driver (edt-ft5x06). That said, as commented in the cover letter, it's
not good enough as it breaks the camera. I plan on posting the patch
and an overlay. I'm just waiting to see how these first patches are
received.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* Re: [PATCH v2 2/2] input: add official Raspberry Pi's touchscreen driver
From: Eric Anholt @ 2018-12-20 18:39 UTC (permalink / raw)
  To: Henrik Rydberg
  Cc: linux-rpi-kernel, stefan.wahren, agraf, afaerber,
	Nicolas Saenz Julienne, Dmitry Torokhov, Corentin Labbe,
	Mark Jonas, Masanari Iida, Heiko Schocher, Hans de Goede,
	Eugen Hristev, Zhu Yi, Jonathan Cameron, linux-kernel,
	linux-input
In-Reply-To: <20181211112408.9524-3-nsaenzjulienne@suse.de>

[-- Attachment #1: Type: text/plain, Size: 514 bytes --]

Nicolas Saenz Julienne <nsaenzjulienne@suse.de> writes:

> Add's support to Raspberry Pi's 7" Touch device. Instead of using a
> conventional bus all information is copied into a memory mapped area by
> RPi's firmware.
>
> Based on the driver found in RPi's kernel repository.
>
> Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>

While I wish we could just have a native driver instead, it does make
sense to have this driver upstream given the constraints.

Acked-by: Eric Anholt <eric@anholt.net>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply

* Re: [PATCH 8/8] Input: dt-bindings: tm2-touchkey: Add support for aries touchkey
From: Rob Herring @ 2018-12-20 17:10 UTC (permalink / raw)
  Cc: dmitry.torokhov, robh+dt, mark.rutland, devicetree, linux-input,
	linux-kernel, pawel.mikolaj.chmiel, xc-racer2, simon
In-Reply-To: <20181207105811.1831-9-pawel.mikolaj.chmiel@gmail.com>

On Fri,  7 Dec 2018 11:58:11 +0100, =?UTF-8?q?Pawe=C5=82=20Chmiel?= wrote:
> From: Jonathan Bakker <xc-racer2@live.ca>
> 
> Document compatible for aries touchkey.
> 
> Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
> Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
> ---
>  Documentation/devicetree/bindings/input/cypress,tm2-touchkey.txt | 1 +
>  1 file changed, 1 insertion(+)
> 

Reviewed-by: Rob Herring <robh@kernel.org>

^ permalink raw reply

* Re: [PATCH 2/8] Input: dt-bindings: tm2-touchkey: Add support for midas touchkey
From: Rob Herring @ 2018-12-20 17:09 UTC (permalink / raw)
  Cc: dmitry.torokhov, robh+dt, mark.rutland, devicetree, linux-input,
	linux-kernel, pawel.mikolaj.chmiel, xc-racer2, simon
In-Reply-To: <20181207105811.1831-3-pawel.mikolaj.chmiel@gmail.com>

On Fri,  7 Dec 2018 11:58:05 +0100, =?UTF-8?q?Pawe=C5=82=20Chmiel?= wrote:
> From: Simon Shields <simon@lineageos.org>
> 
> Document compatible for midas touchkey.
> 
> Signed-off-by: Simon Shields <simon@lineageos.org>
> Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
> ---
>  .../devicetree/bindings/input/cypress,tm2-touchkey.txt        | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 

Reviewed-by: Rob Herring <robh@kernel.org>

^ permalink raw reply

* Re: [PATCH v3 7/8] HID: logitech: Enable high-resolution scrolling on Logitech mice
From: Benjamin Tissoires @ 2018-12-19 20:34 UTC (permalink / raw)
  To: Clément VUCHENER
  Cc: hcutts, Peter Hutterer, open list:HID CORE LAYER, Dmitry Torokhov,
	Jiri Kosina, Linus Torvalds, Nestor Lopez Casado, lkml
In-Reply-To: <CAM4jgCqj5gs-q7VKLm90p0a01k_tYAqxA=zxsmShxv4PSGBJ4A@mail.gmail.com>

On Wed, Dec 19, 2018 at 11:57 AM Clément VUCHENER
<clement.vuchener@gmail.com> wrote:
>
> Le sam. 15 déc. 2018 à 15:45, Clément VUCHENER
> <clement.vuchener@gmail.com> a écrit :
> >
> > Le ven. 14 déc. 2018 à 19:37, Harry Cutts <hcutts@chromium.org> a écrit :
> > >
> > > Hi Clement,
> > >
> > > On Fri, 14 Dec 2018 at 05:47, Clément VUCHENER
> > > <clement.vuchener@gmail.com> wrote:
> > > > Hi, The G500s (and the G500 too, I think) does support the "scrolling
> > > > acceleration" bit. If I set it, I get around 8 events for each wheel
> > > > "click", this is what this driver expects, right? If I understood
> > > > correctly, I should try this patch with the
> > > > HIDPP_QUIRK_HI_RES_SCROLL_1P0 quirk set for my mouse.
> > >
> > > Thanks for the info! Yes, that should work.
> >
> > Well, it is not that simple. I get "Device not connected" errors for
> > both interfaces of the mouse.
>
> I suspect the device is not responding because the hid device is not
> started. When is hid_hw_start supposed to be called? It is called
> early for HID_QUIRK_CLASS_G920 but later for other device. So the
> device is not started when hidpp_is_connected is called. Is this
> because most of the device in this driver are not real HID devices but
> DJ devices? How should non-DJ devices be treated?

Hi Clement,

I have a series I sent last September that allows to support non DJ
devices on logitech-hidpp
(https://patchwork.kernel.org/project/linux-input/list/?series=16359).

In its current form, with the latest upstream kernel, the series will
oops during the .event() callback, which is easy enough to fix.
However, I am currently trying to make it better as a second or third
reading made me realized that there was a bunch of non-sense in it and
a proper support would require slightly more work for the non unifying
receiver case.

I hope I'll be able to send out something by the end of the week.

Cheers,
Benjamin

^ permalink raw reply

* Re: [PATCH 7/9] dt-bindings: input: touchscreen: goodix: Add GT5663 compatible
From: Rob Herring @ 2018-12-19 17:15 UTC (permalink / raw)
  To: Jagan Teki
  Cc: Maxime Ripard, Chen-Yu Tsai, Dmitry Torokhov,
	linux-input-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Lee Jones,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw
In-Reply-To: <20181203101547.16835-7-jagan-dyjBcgdgk7Pe9wHmmfpqLFaTQe2KTcn/@public.gmane.org>

On Mon, Dec 03, 2018 at 03:45:45PM +0530, Jagan Teki wrote:
> GT5663 is capacitive touch controller with customized smart wakeup gestures,
> the existing goodix driver will work by phandle vcc-supply regulator.
> 
> So, document compatible and example node for the same.
> 
> Signed-off-by: Jagan Teki <jagan-dyjBcgdgk7Pe9wHmmfpqLFaTQe2KTcn/@public.gmane.org>
> ---
>  .../bindings/input/touchscreen/goodix.txt           | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/input/touchscreen/goodix.txt b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
> index 604766e347ce..1898d3dde8e1 100644
> --- a/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
> +++ b/Documentation/devicetree/bindings/input/touchscreen/goodix.txt
> @@ -3,6 +3,7 @@ Device tree bindings for Goodix GT9xx series touchscreen controller
>  Required properties:
>  
>   - compatible		: Should be "goodix,gt1151"
> +				 or "goodix,gt5663"
>  				 or "goodix,gt911"
>  				 or "goodix,gt9110"
>  				 or "goodix,gt912"
> @@ -42,3 +43,15 @@ Example:
>  
>  		/* ... */
>  	};
> +
> +	touchscreen@5d {
> +		compatible = "goodix,gt5663";

Just a new compatible doesn't warrant a new example.

> +		reg = <0x5d>;
> +		vcc-supply = <&reg_ldo_io0>;
> +		interrupt-parent = <&pio>;
> +		interrupts = <7 4 IRQ_TYPE_EDGE_FALLING>;
> +		irq-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>;	/* CTP-INT: PH4 */
> +		reset-gpios = <&pio 7 8 GPIO_ACTIVE_HIGH>;	/* CTP-RST: PH8 */
> +		touchscreen-inverted-x;
> +		touchscreen-inverted-y;
> +	};
> -- 
> 2.18.0.321.gffc6fa0e3
> 

^ permalink raw reply

* Re: [PATCH] HID: debug: Change to use DEFINE_SHOW_ATTRIBUTE macro
From: Jiri Kosina @ 2018-12-19 13:21 UTC (permalink / raw)
  To: Yangtao Li; +Cc: benjamin.tissoires, linux-input, linux-kernel
In-Reply-To: <20181201024951.5508-1-tiny.windzz@gmail.com>

On Fri, 30 Nov 2018, Yangtao Li wrote:

> Use DEFINE_SHOW_ATTRIBUTE macro to simplify the code.
> 
> Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
> ---
>  drivers/hid/hid-debug.c | 12 +-----------
>  1 file changed, 1 insertion(+), 11 deletions(-)
> 
> diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c
> index b48100236df8..c530476edba6 100644
> --- a/drivers/hid/hid-debug.c
> +++ b/drivers/hid/hid-debug.c
> @@ -1072,11 +1072,6 @@ static int hid_debug_rdesc_show(struct seq_file *f, void *p)
>  	return 0;
>  }
>  
> -static int hid_debug_rdesc_open(struct inode *inode, struct file *file)
> -{
> -	return single_open(file, hid_debug_rdesc_show, inode->i_private);
> -}
> -
>  static int hid_debug_events_open(struct inode *inode, struct file *file)
>  {
>  	int err = 0;
> @@ -1211,12 +1206,7 @@ static int hid_debug_events_release(struct inode *inode, struct file *file)
>  	return 0;
>  }
>  
> -static const struct file_operations hid_debug_rdesc_fops = {
> -	.open           = hid_debug_rdesc_open,
> -	.read           = seq_read,
> -	.llseek         = seq_lseek,
> -	.release        = single_release,
> -};
> +DEFINE_SHOW_ATTRIBUTE(hid_debug_rdesc);

Applied to hid.git#for-4.21/core. Thanks,

-- 
Jiri Kosina
SUSE Labs

^ permalink raw reply

* Re: [PATCH] HID: i2c-hid: Ignore input report if there's no data present on Elan touchpanels
From: Jiri Kosina @ 2018-12-19 13:09 UTC (permalink / raw)
  To: Kai-Heng Feng; +Cc: benjamin.tissoires, linux-input, linux-kernel
In-Reply-To: <20181214090930.13386-1-kai.heng.feng@canonical.com>

On Fri, 14 Dec 2018, Kai-Heng Feng wrote:

> While using Elan touchpads, the message floods:
> [  136.138487] i2c_hid i2c-DELL08D6:00: i2c_hid_get_input: incomplete report (14/65535)
> 
> Though the message flood is annoying, the device it self works without
> any issue. I suspect that the device in question takes too much time to
> pull the IRQ back to high after I2C host has done reading its data.
> 
> Since the host receives all useful data, let's ignore the input report
> when there's no data.

Interesting, never seen such a bug before.

> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> ---
>  drivers/hid/i2c-hid/i2c-hid-core.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c-hid/i2c-hid-core.c
> index 8555ce7e737b..1776afa6d69c 100644
> --- a/drivers/hid/i2c-hid/i2c-hid-core.c
> +++ b/drivers/hid/i2c-hid/i2c-hid-core.c
> @@ -50,6 +50,7 @@
>  #define I2C_HID_QUIRK_NO_IRQ_AFTER_RESET	BIT(1)
>  #define I2C_HID_QUIRK_NO_RUNTIME_PM		BIT(2)
>  #define I2C_HID_QUIRK_DELAY_AFTER_SLEEP		BIT(3)
> +#define I2C_HID_QUIRK_BOGUS_IRQ			BIT(4)
>  
>  /* flags */
>  #define I2C_HID_STARTED		0
> @@ -179,6 +180,8 @@ static const struct i2c_hid_quirks {
>  		I2C_HID_QUIRK_DELAY_AFTER_SLEEP },
>  	{ USB_VENDOR_ID_LG, I2C_DEVICE_ID_LG_8001,
>  		I2C_HID_QUIRK_NO_RUNTIME_PM },
> +	{ USB_VENDOR_ID_ELAN, HID_ANY_ID,
> +		 I2C_HID_QUIRK_BOGUS_IRQ },
>  	{ 0, 0 }
>  };
>  
> @@ -503,6 +506,12 @@ static void i2c_hid_get_input(struct i2c_hid *ihid)
>  		return;
>  	}
>  
> +	if (ihid->quirks & I2C_HID_QUIRK_BOGUS_IRQ && ret_size == 0xffff) {
> +		dev_dbg(&ihid->client->dev,
> +			"%s: IRQ triggered but there's no data\n", __func__);
> +		return;
> +	}

Would it perhaps make sense to make this some sort of printk_once(), so 
that it's immediately apparent from dmesg that the system/device is 
suffering from this particular problem? Might potentially be helpful piece 
of information.

Thanks,

-- 
Jiri Kosina
SUSE Labs

^ permalink raw reply

* Re: [PATCH v3 7/8] HID: logitech: Enable high-resolution scrolling on Logitech mice
From: Clément VUCHENER @ 2018-12-19 10:57 UTC (permalink / raw)
  To: Harry Cutts
  Cc: Peter Hutterer, linux-input, Dmitry Torokhov, Jiri Kosina,
	torvalds, Nestor Lopez Casado, lkml, Benjamin Tissoires
In-Reply-To: <CAM4jgCo483upCJWUnpP45zh2LzQWqAZmQREf2622p49a1vbnnA@mail.gmail.com>

Le sam. 15 déc. 2018 à 15:45, Clément VUCHENER
<clement.vuchener@gmail.com> a écrit :
>
> Le ven. 14 déc. 2018 à 19:37, Harry Cutts <hcutts@chromium.org> a écrit :
> >
> > Hi Clement,
> >
> > On Fri, 14 Dec 2018 at 05:47, Clément VUCHENER
> > <clement.vuchener@gmail.com> wrote:
> > > Hi, The G500s (and the G500 too, I think) does support the "scrolling
> > > acceleration" bit. If I set it, I get around 8 events for each wheel
> > > "click", this is what this driver expects, right? If I understood
> > > correctly, I should try this patch with the
> > > HIDPP_QUIRK_HI_RES_SCROLL_1P0 quirk set for my mouse.
> >
> > Thanks for the info! Yes, that should work.
>
> Well, it is not that simple. I get "Device not connected" errors for
> both interfaces of the mouse.

I suspect the device is not responding because the hid device is not
started. When is hid_hw_start supposed to be called? It is called
early for HID_QUIRK_CLASS_G920 but later for other device. So the
device is not started when hidpp_is_connected is called. Is this
because most of the device in this driver are not real HID devices but
DJ devices? How should non-DJ devices be treated?

^ permalink raw reply

* Re: [PATCH v2 1/2] dt-bindings: input: Add Raspberry Pi Touchscreen
From: Rob Herring @ 2018-12-18 16:52 UTC (permalink / raw)
  Cc: linux-kernel, linux-rpi-kernel, stefan.wahren, eric, agraf,
	afaerber, Nicolas Saenz Julienne, Dmitry Torokhov, Mark Rutland,
	linux-input, devicetree
In-Reply-To: <20181211112408.9524-2-nsaenzjulienne@suse.de>

On Tue, 11 Dec 2018 12:23:53 +0100, Nicolas Saenz Julienne wrote:
> Adds device tree documentation for Raspberry Pi's official 7"
> touchscreen.
> 
> This binding is meant to be used as an overlay.
> 
> Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
> ---
>  .../touchscreen/raspberrypi,firmware-ts.txt   | 26 +++++++++++++++++++
>  1 file changed, 26 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/input/touchscreen/raspberrypi,firmware-ts.txt
> 

Reviewed-by: Rob Herring <robh@kernel.org>

^ permalink raw reply

* Re: [rfd] saving old mice -- button glitching/debouncing
From: kbuild test robot @ 2018-12-18 15:26 UTC (permalink / raw)
  To: Pavel Machek
  Cc: kbuild-all, kernel list, jikos, vojtech, linux-input,
	dmitry.torokhov
In-Reply-To: <20181214232437.GA8310@amd>

[-- Attachment #1: Type: text/plain, Size: 35139 bytes --]

Hi Pavel,

I love your patch! Perhaps something to improve:

[auto build test WARNING on input/next]
[also build test WARNING on v4.20-rc7 next-20181218]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Pavel-Machek/saving-old-mice-button-glitching-debouncing/20181216-025214
base:   https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git next
reproduce: make htmldocs

All warnings (new ones prefixed by >>):

   WARNING: convert(1) not found, for SVG to PDF conversion install ImageMagick (https://www.imagemagick.org)
   include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.ibss' not described in 'wireless_dev'
   include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.connect' not described in 'wireless_dev'
   include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.keys' not described in 'wireless_dev'
   include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.ie' not described in 'wireless_dev'
   include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.ie_len' not described in 'wireless_dev'
   include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.bssid' not described in 'wireless_dev'
   include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.ssid' not described in 'wireless_dev'
   include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.default_key' not described in 'wireless_dev'
   include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.default_mgmt_key' not described in 'wireless_dev'
   include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.prev_bssid_valid' not described in 'wireless_dev'
   include/net/mac80211.h:2282: warning: Function parameter or member 'radiotap_timestamp.units_pos' not described in 'ieee80211_hw'
   include/net/mac80211.h:2282: warning: Function parameter or member 'radiotap_timestamp.accuracy' not described in 'ieee80211_hw'
   include/net/mac80211.h:955: warning: Function parameter or member 'control.rates' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'control.rts_cts_rate_idx' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'control.use_rts' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'control.use_cts_prot' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'control.short_preamble' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'control.skip_table' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'control.jiffies' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'control.vif' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'control.hw_key' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'control.flags' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'control.enqueue_time' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'ack' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'ack.cookie' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'status.rates' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'status.ack_signal' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'status.ampdu_ack_len' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'status.ampdu_len' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'status.antenna' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'status.tx_time' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'status.is_valid_ack_signal' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'status.status_driver_data' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'driver_rates' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'pad' not described in 'ieee80211_tx_info'
   include/net/mac80211.h:955: warning: Function parameter or member 'rate_driver_data' not described in 'ieee80211_tx_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'rx_stats_avg' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'rx_stats_avg.signal' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'rx_stats_avg.chain_signal' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.filtered' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.retry_failed' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.retry_count' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.lost_packets' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.last_tdls_pkt_time' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.msdu_retries' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.msdu_failed' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.last_ack' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.last_ack_signal' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.ack_signal_filled' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.packets' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.bytes' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.last_rate' not described in 'sta_info'
   net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.msdu' not described in 'sta_info'
   kernel/sched/fair.c:3719: warning: Function parameter or member 'flags' not described in 'attach_entity_load_avg'
   include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_excl.cb' not described in 'dma_buf'
   include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_excl.poll' not described in 'dma_buf'
   include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_excl.active' not described in 'dma_buf'
   include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_shared.cb' not described in 'dma_buf'
   include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_shared.poll' not described in 'dma_buf'
   include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_shared.active' not described in 'dma_buf'
   include/linux/dma-fence-array.h:54: warning: Function parameter or member 'work' not described in 'dma_fence_array'
   include/linux/gpio/driver.h:142: warning: Function parameter or member 'request_key' not described in 'gpio_irq_chip'
   include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.sign' not described in 'iio_chan_spec'
   include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.realbits' not described in 'iio_chan_spec'
   include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.storagebits' not described in 'iio_chan_spec'
   include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.shift' not described in 'iio_chan_spec'
   include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.repeat' not described in 'iio_chan_spec'
   include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.endianness' not described in 'iio_chan_spec'
   include/linux/iio/hw-consumer.h:1: warning: no structured comments found
>> include/linux/input.h:192: warning: Function parameter or member 'debounce_key' not described in 'input_dev'
   include/linux/input/sparse-keymap.h:46: warning: Function parameter or member 'sw' not described in 'key_entry'
   include/linux/mtd/rawnand.h:752: warning: Function parameter or member 'timings.sdr' not described in 'nand_data_interface'
   include/linux/mtd/rawnand.h:817: warning: Function parameter or member 'buf' not described in 'nand_op_data_instr'
   include/linux/mtd/rawnand.h:817: warning: Function parameter or member 'buf.in' not described in 'nand_op_data_instr'
   include/linux/mtd/rawnand.h:817: warning: Function parameter or member 'buf.out' not described in 'nand_op_data_instr'
   include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx' not described in 'nand_op_instr'
   include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.cmd' not described in 'nand_op_instr'
   include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.addr' not described in 'nand_op_instr'
   include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.data' not described in 'nand_op_instr'
   include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.waitrdy' not described in 'nand_op_instr'
   include/linux/mtd/rawnand.h:1016: warning: Function parameter or member 'ctx' not described in 'nand_op_parser_pattern_elem'
   include/linux/mtd/rawnand.h:1016: warning: Function parameter or member 'ctx.addr' not described in 'nand_op_parser_pattern_elem'
   include/linux/mtd/rawnand.h:1016: warning: Function parameter or member 'ctx.data' not described in 'nand_op_parser_pattern_elem'
   include/linux/mtd/rawnand.h:1319: warning: Function parameter or member 'manufacturer.desc' not described in 'nand_chip'
   include/linux/mtd/rawnand.h:1319: warning: Function parameter or member 'manufacturer.priv' not described in 'nand_chip'
   include/linux/regulator/driver.h:222: warning: Function parameter or member 'resume_early' not described in 'regulator_ops'
   drivers/regulator/core.c:4306: warning: Excess function parameter 'state' description in 'regulator_suspend_late'
   arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw0' not described in 'irb'
   arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw1' not described in 'irb'
   arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw2' not described in 'irb'
   arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw3' not described in 'irb'
   arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.eadm' not described in 'irb'
   drivers/usb/typec/mux.c:186: warning: Function parameter or member 'mux' not described in 'typec_mux_unregister'
   drivers/usb/typec/mux.c:186: warning: Excess function parameter 'sw' description in 'typec_mux_unregister'
   include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_pin' not described in 'drm_driver'
   include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_unpin' not described in 'drm_driver'
   include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_res_obj' not described in 'drm_driver'
   include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_get_sg_table' not described in 'drm_driver'
   include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_import_sg_table' not described in 'drm_driver'
   include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_vmap' not described in 'drm_driver'
   include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_vunmap' not described in 'drm_driver'
   include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_mmap' not described in 'drm_driver'
   drivers/gpu/drm/drm_prime.c:342: warning: Function parameter or member 'attach' not described in 'drm_gem_unmap_dma_buf'
   drivers/gpu/drm/drm_prime.c:342: warning: Function parameter or member 'sgt' not described in 'drm_gem_unmap_dma_buf'
   drivers/gpu/drm/drm_prime.c:342: warning: Function parameter or member 'dir' not described in 'drm_gem_unmap_dma_buf'
   drivers/gpu/drm/drm_prime.c:438: warning: Function parameter or member 'dma_buf' not described in 'drm_gem_dmabuf_kmap_atomic'
   drivers/gpu/drm/drm_prime.c:438: warning: Function parameter or member 'page_num' not described in 'drm_gem_dmabuf_kmap_atomic'
   drivers/gpu/drm/drm_prime.c:450: warning: Function parameter or member 'dma_buf' not described in 'drm_gem_dmabuf_kunmap_atomic'
   drivers/gpu/drm/drm_prime.c:450: warning: Function parameter or member 'page_num' not described in 'drm_gem_dmabuf_kunmap_atomic'
   drivers/gpu/drm/drm_prime.c:450: warning: Function parameter or member 'addr' not described in 'drm_gem_dmabuf_kunmap_atomic'
   drivers/gpu/drm/drm_prime.c:461: warning: Function parameter or member 'dma_buf' not described in 'drm_gem_dmabuf_kmap'
   drivers/gpu/drm/drm_prime.c:461: warning: Function parameter or member 'page_num' not described in 'drm_gem_dmabuf_kmap'
   drivers/gpu/drm/drm_prime.c:473: warning: Function parameter or member 'dma_buf' not described in 'drm_gem_dmabuf_kunmap'
   drivers/gpu/drm/drm_prime.c:473: warning: Function parameter or member 'page_num' not described in 'drm_gem_dmabuf_kunmap'
   drivers/gpu/drm/drm_prime.c:473: warning: Function parameter or member 'addr' not described in 'drm_gem_dmabuf_kunmap'
   include/media/v4l2-dev.h:42: warning: Enum value 'VFL_TYPE_MAX' not described in enum 'vfl_devnode_type'
   include/linux/skbuff.h:850: warning: Function parameter or member 'dev_scratch' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'ip_defrag_offset' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'skb_mstamp' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member '__cloned_offset' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'head_frag' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member '__unused' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member '__pkt_type_offset' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'pfmemalloc' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'encapsulation' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'encap_hdr_csum' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'csum_valid' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'csum_complete_sw' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'csum_level' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'inner_protocol_type' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'remcsum_offload' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'offload_fwd_mark' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'offload_mr_fwd_mark' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'sender_cpu' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'reserved_tailroom' not described in 'sk_buff'
   include/linux/skbuff.h:850: warning: Function parameter or member 'inner_ipproto' not described in 'sk_buff'
   include/net/sock.h:234: warning: Function parameter or member 'skc_addrpair' not described in 'sock_common'
   include/net/sock.h:234: warning: Function parameter or member 'skc_portpair' not described in 'sock_common'
   include/net/sock.h:234: warning: Function parameter or member 'skc_ipv6only' not described in 'sock_common'
   include/net/sock.h:234: warning: Function parameter or member 'skc_net_refcnt' not described in 'sock_common'
   include/net/sock.h:234: warning: Function parameter or member 'skc_v6_daddr' not described in 'sock_common'
   include/net/sock.h:234: warning: Function parameter or member 'skc_v6_rcv_saddr' not described in 'sock_common'
   include/net/sock.h:234: warning: Function parameter or member 'skc_cookie' not described in 'sock_common'
   include/net/sock.h:234: warning: Function parameter or member 'skc_listener' not described in 'sock_common'
   include/net/sock.h:234: warning: Function parameter or member 'skc_tw_dr' not described in 'sock_common'
   include/net/sock.h:234: warning: Function parameter or member 'skc_rcv_wnd' not described in 'sock_common'
   include/net/sock.h:234: warning: Function parameter or member 'skc_tw_rcv_nxt' not described in 'sock_common'
   include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.rmem_alloc' not described in 'sock'
   include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.len' not described in 'sock'
   include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.head' not described in 'sock'
   include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.tail' not described in 'sock'
   include/net/sock.h:488: warning: Function parameter or member 'sk_wq_raw' not described in 'sock'
   include/net/sock.h:488: warning: Function parameter or member 'tcp_rtx_queue' not described in 'sock'
   include/net/sock.h:488: warning: Function parameter or member 'sk_route_forced_caps' not described in 'sock'
   include/linux/netdevice.h:1955: warning: Function parameter or member 'adj_list.upper' not described in 'net_device'
   include/linux/netdevice.h:1955: warning: Function parameter or member 'adj_list.lower' not described in 'net_device'
   include/linux/netdevice.h:1955: warning: Function parameter or member 'gso_partial_features' not described in 'net_device'
   include/linux/netdevice.h:1955: warning: Function parameter or member 'switchdev_ops' not described in 'net_device'
   include/linux/netdevice.h:1955: warning: Function parameter or member 'l3mdev_ops' not described in 'net_device'
   include/linux/netdevice.h:1955: warning: Function parameter or member 'xfrmdev_ops' not described in 'net_device'
   include/linux/netdevice.h:1955: warning: Function parameter or member 'name_assign_type' not described in 'net_device'
   include/linux/netdevice.h:1955: warning: Function parameter or member 'ieee802154_ptr' not described in 'net_device'
   include/linux/netdevice.h:1955: warning: Function parameter or member 'mpls_ptr' not described in 'net_device'
   include/linux/netdevice.h:1955: warning: Function parameter or member 'xdp_prog' not described in 'net_device'
   include/linux/netdevice.h:1955: warning: Function parameter or member 'gro_flush_timeout' not described in 'net_device'
   include/linux/netdevice.h:1955: warning: Function parameter or member 'nf_hooks_ingress' not described in 'net_device'
   include/linux/netdevice.h:1955: warning: Function parameter or member '____cacheline_aligned_in_smp' not described in 'net_device'
   include/linux/netdevice.h:1955: warning: Function parameter or member 'qdisc_hash' not described in 'net_device'
   include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(advertising' not described in 'phylink_link_state'
   include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(lp_advertising' not described in 'phylink_link_state'

vim +192 include/linux/input.h

4369c64c7 Henrik Rydberg        2012-09-15   38  
4369c64c7 Henrik Rydberg        2012-09-15   39  /**
8006479c9 Dmitry Torokhov       2007-08-30   40   * struct input_dev - represents an input device
8006479c9 Dmitry Torokhov       2007-08-30   41   * @name: name of the device
8006479c9 Dmitry Torokhov       2007-08-30   42   * @phys: physical path to the device in the system hierarchy
8006479c9 Dmitry Torokhov       2007-08-30   43   * @uniq: unique identification code for the device (if device has it)
8006479c9 Dmitry Torokhov       2007-08-30   44   * @id: id of the device (struct input_id)
85b772003 Henrik Rydberg        2010-12-18   45   * @propbit: bitmap of device properties and quirks
8006479c9 Dmitry Torokhov       2007-08-30   46   * @evbit: bitmap of types of events supported by the device (EV_KEY,
8006479c9 Dmitry Torokhov       2007-08-30   47   *	EV_REL, etc.)
8006479c9 Dmitry Torokhov       2007-08-30   48   * @keybit: bitmap of keys/buttons this device has
8006479c9 Dmitry Torokhov       2007-08-30   49   * @relbit: bitmap of relative axes for the device
8006479c9 Dmitry Torokhov       2007-08-30   50   * @absbit: bitmap of absolute axes for the device
8006479c9 Dmitry Torokhov       2007-08-30   51   * @mscbit: bitmap of miscellaneous events supported by the device
8006479c9 Dmitry Torokhov       2007-08-30   52   * @ledbit: bitmap of leds present on the device
8006479c9 Dmitry Torokhov       2007-08-30   53   * @sndbit: bitmap of sound effects supported by the device
8006479c9 Dmitry Torokhov       2007-08-30   54   * @ffbit: bitmap of force feedback effects supported by the device
8006479c9 Dmitry Torokhov       2007-08-30   55   * @swbit: bitmap of switches present on the device
63a6404d8 Henrik Rydberg        2010-06-10   56   * @hint_events_per_packet: average number of events generated by the
63a6404d8 Henrik Rydberg        2010-06-10   57   *	device in a packet (between EV_SYN/SYN_REPORT events). Used by
63a6404d8 Henrik Rydberg        2010-06-10   58   *	event handlers to estimate size of the buffer needed to hold
63a6404d8 Henrik Rydberg        2010-06-10   59   *	events.
8006479c9 Dmitry Torokhov       2007-08-30   60   * @keycodemax: size of keycode table
8006479c9 Dmitry Torokhov       2007-08-30   61   * @keycodesize: size of elements in keycode table
8006479c9 Dmitry Torokhov       2007-08-30   62   * @keycode: map of scancodes to keycodes for this device
8613e4c28 Mauro Carvalho Chehab 2010-09-09   63   * @getkeycode: optional legacy method to retrieve current keymap.
8006479c9 Dmitry Torokhov       2007-08-30   64   * @setkeycode: optional method to alter current keymap, used to implement
66d2a5952 Dmitry Torokhov       2009-12-01   65   *	sparse keymaps. If not supplied default mechanism will be used.
66d2a5952 Dmitry Torokhov       2009-12-01   66   *	The method is being called while holding event_lock and thus must
66d2a5952 Dmitry Torokhov       2009-12-01   67   *	not sleep
8006479c9 Dmitry Torokhov       2007-08-30   68   * @ff: force feedback structure associated with the device if device
8006479c9 Dmitry Torokhov       2007-08-30   69   *	supports force feedback effects
8006479c9 Dmitry Torokhov       2007-08-30   70   * @repeat_key: stores key code of the last key pressed; used to implement
8006479c9 Dmitry Torokhov       2007-08-30   71   *	software autorepeat
8006479c9 Dmitry Torokhov       2007-08-30   72   * @timer: timer for software autorepeat
8006479c9 Dmitry Torokhov       2007-08-30   73   * @rep: current values for autorepeat parameters (delay, rate)
8d18fba28 Henrik Rydberg        2012-09-15   74   * @mt: pointer to multitouch state
86b17f76f Dmitry Torokhov       2010-11-29   75   * @absinfo: array of &struct input_absinfo elements holding information
d31b2865a Daniel Mack           2010-08-02   76   *	about absolute axes (current value, min, max, flat, fuzz,
d31b2865a Daniel Mack           2010-08-02   77   *	resolution)
8006479c9 Dmitry Torokhov       2007-08-30   78   * @key: reflects current state of device's keys/buttons
8006479c9 Dmitry Torokhov       2007-08-30   79   * @led: reflects current state of device's LEDs
8006479c9 Dmitry Torokhov       2007-08-30   80   * @snd: reflects current state of sound effects
8006479c9 Dmitry Torokhov       2007-08-30   81   * @sw: reflects current state of device's switches
8006479c9 Dmitry Torokhov       2007-08-30   82   * @open: this method is called when the very first user calls
8006479c9 Dmitry Torokhov       2007-08-30   83   *	input_open_device(). The driver must prepare the device
8006479c9 Dmitry Torokhov       2007-08-30   84   *	to start generating events (start polling thread,
8006479c9 Dmitry Torokhov       2007-08-30   85   *	request an IRQ, submit URB, etc.)
8006479c9 Dmitry Torokhov       2007-08-30   86   * @close: this method is called when the very last user calls
8006479c9 Dmitry Torokhov       2007-08-30   87   *	input_close_device().
8006479c9 Dmitry Torokhov       2007-08-30   88   * @flush: purges the device. Most commonly used to get rid of force
8006479c9 Dmitry Torokhov       2007-08-30   89   *	feedback effects loaded into the device when disconnecting
8006479c9 Dmitry Torokhov       2007-08-30   90   *	from it
8006479c9 Dmitry Torokhov       2007-08-30   91   * @event: event handler for events sent _to_ the device, like EV_LED
8006479c9 Dmitry Torokhov       2007-08-30   92   *	or EV_SND. The device is expected to carry out the requested
8006479c9 Dmitry Torokhov       2007-08-30   93   *	action (turn on a LED, play sound, etc.) The call is protected
8006479c9 Dmitry Torokhov       2007-08-30   94   *	by @event_lock and must not sleep
8006479c9 Dmitry Torokhov       2007-08-30   95   * @grab: input handle that currently has the device grabbed (via
8006479c9 Dmitry Torokhov       2007-08-30   96   *	EVIOCGRAB ioctl). When a handle grabs a device it becomes sole
8006479c9 Dmitry Torokhov       2007-08-30   97   *	recipient for all input events coming from the device
83510e5f5 Masanari Iida         2016-07-13   98   * @event_lock: this spinlock is taken when input core receives
8006479c9 Dmitry Torokhov       2007-08-30   99   *	and processes a new event for the device (in input_event()).
8006479c9 Dmitry Torokhov       2007-08-30  100   *	Code that accesses and/or modifies parameters of a device
8006479c9 Dmitry Torokhov       2007-08-30  101   *	(such as keymap or absmin, absmax, absfuzz, etc.) after device
8006479c9 Dmitry Torokhov       2007-08-30  102   *	has been registered with input core must take this lock.
8006479c9 Dmitry Torokhov       2007-08-30  103   * @mutex: serializes calls to open(), close() and flush() methods
8006479c9 Dmitry Torokhov       2007-08-30  104   * @users: stores number of users (input handlers) that opened this
8006479c9 Dmitry Torokhov       2007-08-30  105   *	device. It is used by input_open_device() and input_close_device()
8006479c9 Dmitry Torokhov       2007-08-30  106   *	to make sure that dev->open() is only called when the first
8006479c9 Dmitry Torokhov       2007-08-30  107   *	user opens device and dev->close() is called when the very
8006479c9 Dmitry Torokhov       2007-08-30  108   *	last user closes the device
8006479c9 Dmitry Torokhov       2007-08-30  109   * @going_away: marks devices that are in a middle of unregistering and
8006479c9 Dmitry Torokhov       2007-08-30  110   *	causes input_open_device*() fail with -ENODEV.
8006479c9 Dmitry Torokhov       2007-08-30  111   * @dev: driver model's view of this device
8006479c9 Dmitry Torokhov       2007-08-30  112   * @h_list: list of input handles associated with the device. When
8006479c9 Dmitry Torokhov       2007-08-30  113   *	accessing the list dev->mutex must be held
8006479c9 Dmitry Torokhov       2007-08-30  114   * @node: used to place the device onto input_dev_list
800963fd5 Henrik Rydberg        2012-11-10  115   * @num_vals: number of values queued in the current frame
800963fd5 Henrik Rydberg        2012-11-10  116   * @max_vals: maximum number of values queued in a frame
800963fd5 Henrik Rydberg        2012-11-10  117   * @vals: array of values queued in the current frame
2be975c6d Dmitry Torokhov       2012-11-03  118   * @devres_managed: indicates that devices is managed with devres framework
2be975c6d Dmitry Torokhov       2012-11-03  119   *	and needs not be explicitly unregistered or freed.
8006479c9 Dmitry Torokhov       2007-08-30  120   */
^1da177e4 Linus Torvalds        2005-04-16  121  struct input_dev {
5b6271bda Dmitry Torokhov       2005-06-30  122  	const char *name;
5b6271bda Dmitry Torokhov       2005-06-30  123  	const char *phys;
5b6271bda Dmitry Torokhov       2005-06-30  124  	const char *uniq;
^1da177e4 Linus Torvalds        2005-04-16  125  	struct input_id id;
^1da177e4 Linus Torvalds        2005-04-16  126  
85b772003 Henrik Rydberg        2010-12-18  127  	unsigned long propbit[BITS_TO_LONGS(INPUT_PROP_CNT)];
85b772003 Henrik Rydberg        2010-12-18  128  
7b19ada2e Jiri Slaby            2007-10-18  129  	unsigned long evbit[BITS_TO_LONGS(EV_CNT)];
7b19ada2e Jiri Slaby            2007-10-18  130  	unsigned long keybit[BITS_TO_LONGS(KEY_CNT)];
7b19ada2e Jiri Slaby            2007-10-18  131  	unsigned long relbit[BITS_TO_LONGS(REL_CNT)];
7b19ada2e Jiri Slaby            2007-10-18  132  	unsigned long absbit[BITS_TO_LONGS(ABS_CNT)];
7b19ada2e Jiri Slaby            2007-10-18  133  	unsigned long mscbit[BITS_TO_LONGS(MSC_CNT)];
7b19ada2e Jiri Slaby            2007-10-18  134  	unsigned long ledbit[BITS_TO_LONGS(LED_CNT)];
7b19ada2e Jiri Slaby            2007-10-18  135  	unsigned long sndbit[BITS_TO_LONGS(SND_CNT)];
7b19ada2e Jiri Slaby            2007-10-18  136  	unsigned long ffbit[BITS_TO_LONGS(FF_CNT)];
7b19ada2e Jiri Slaby            2007-10-18  137  	unsigned long swbit[BITS_TO_LONGS(SW_CNT)];
^1da177e4 Linus Torvalds        2005-04-16  138  
63a6404d8 Henrik Rydberg        2010-06-10  139  	unsigned int hint_events_per_packet;
63a6404d8 Henrik Rydberg        2010-06-10  140  
^1da177e4 Linus Torvalds        2005-04-16  141  	unsigned int keycodemax;
^1da177e4 Linus Torvalds        2005-04-16  142  	unsigned int keycodesize;
^1da177e4 Linus Torvalds        2005-04-16  143  	void *keycode;
8613e4c28 Mauro Carvalho Chehab 2010-09-09  144  
58b939959 Dmitry Torokhov       2010-03-08  145  	int (*setkeycode)(struct input_dev *dev,
8613e4c28 Mauro Carvalho Chehab 2010-09-09  146  			  const struct input_keymap_entry *ke,
8613e4c28 Mauro Carvalho Chehab 2010-09-09  147  			  unsigned int *old_keycode);
aebd636bd Dmitry Torokhov       2011-01-31  148  	int (*getkeycode)(struct input_dev *dev,
8613e4c28 Mauro Carvalho Chehab 2010-09-09  149  			  struct input_keymap_entry *ke);
^1da177e4 Linus Torvalds        2005-04-16  150  
509ca1a93 Anssi Hannula         2006-07-19  151  	struct ff_device *ff;
509ca1a93 Anssi Hannula         2006-07-19  152  
507fbe1d7 Pavel Machek          2018-12-15  153  	int debounce_key;
^1da177e4 Linus Torvalds        2005-04-16  154  	unsigned int repeat_key;
^1da177e4 Linus Torvalds        2005-04-16  155  	struct timer_list timer;
^1da177e4 Linus Torvalds        2005-04-16  156  
d31b2865a Daniel Mack           2010-08-02  157  	int rep[REP_CNT];
^1da177e4 Linus Torvalds        2005-04-16  158  
8d18fba28 Henrik Rydberg        2012-09-15  159  	struct input_mt *mt;
40d007e7d Henrik Rydberg        2010-07-15  160  
d31b2865a Daniel Mack           2010-08-02  161  	struct input_absinfo *absinfo;
d31b2865a Daniel Mack           2010-08-02  162  
7b19ada2e Jiri Slaby            2007-10-18  163  	unsigned long key[BITS_TO_LONGS(KEY_CNT)];
7b19ada2e Jiri Slaby            2007-10-18  164  	unsigned long led[BITS_TO_LONGS(LED_CNT)];
7b19ada2e Jiri Slaby            2007-10-18  165  	unsigned long snd[BITS_TO_LONGS(SND_CNT)];
7b19ada2e Jiri Slaby            2007-10-18  166  	unsigned long sw[BITS_TO_LONGS(SW_CNT)];
^1da177e4 Linus Torvalds        2005-04-16  167  
^1da177e4 Linus Torvalds        2005-04-16  168  	int (*open)(struct input_dev *dev);
^1da177e4 Linus Torvalds        2005-04-16  169  	void (*close)(struct input_dev *dev);
^1da177e4 Linus Torvalds        2005-04-16  170  	int (*flush)(struct input_dev *dev, struct file *file);
^1da177e4 Linus Torvalds        2005-04-16  171  	int (*event)(struct input_dev *dev, unsigned int type, unsigned int code, int value);
^1da177e4 Linus Torvalds        2005-04-16  172  
2be852792 Arnd Bergmann         2010-03-04  173  	struct input_handle __rcu *grab;
0fbf87caf Dmitry Torokhov       2005-05-29  174  
8006479c9 Dmitry Torokhov       2007-08-30  175  	spinlock_t event_lock;
8006479c9 Dmitry Torokhov       2007-08-30  176  	struct mutex mutex;
8006479c9 Dmitry Torokhov       2007-08-30  177  
0fbf87caf Dmitry Torokhov       2005-05-29  178  	unsigned int users;
ffd0db971 Dmitry Torokhov       2009-09-16  179  	bool going_away;
0fbf87caf Dmitry Torokhov       2005-05-29  180  
9657d75c5 Dmitry Torokhov       2007-06-14  181  	struct device dev;
^1da177e4 Linus Torvalds        2005-04-16  182  
^1da177e4 Linus Torvalds        2005-04-16  183  	struct list_head	h_list;
^1da177e4 Linus Torvalds        2005-04-16  184  	struct list_head	node;
4369c64c7 Henrik Rydberg        2012-09-15  185  
4369c64c7 Henrik Rydberg        2012-09-15  186  	unsigned int num_vals;
4369c64c7 Henrik Rydberg        2012-09-15  187  	unsigned int max_vals;
4369c64c7 Henrik Rydberg        2012-09-15  188  	struct input_value *vals;
2be975c6d Dmitry Torokhov       2012-11-03  189  
2be975c6d Dmitry Torokhov       2012-11-03  190  	bool devres_managed;
^1da177e4 Linus Torvalds        2005-04-16  191  };
9657d75c5 Dmitry Torokhov       2007-06-14 @192  #define to_input_dev(d) container_of(d, struct input_dev, dev)
^1da177e4 Linus Torvalds        2005-04-16  193  

:::::: The code at line 192 was first introduced by commit
:::::: 9657d75c5f0f7d0a9cb507521d3ad1436aea28c9 Input: convert from class devices to standard devices

:::::: TO: Dmitry Torokhov <dtor@insightbb.com>
:::::: CC: Dmitry Torokhov <dtor@insightbb.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 6359 bytes --]

^ permalink raw reply

* Re: [PATCH] Documentation: hid: fix wrong data structure reference for UHID_OUTPUT
From: Jiri Kosina @ 2018-12-18 13:55 UTC (permalink / raw)
  To: Peter Hutterer; +Cc: Benjamin Tissoires, linux-input, linux-kernel
In-Reply-To: <20181213012851.GA25516@jelly>

On Thu, 13 Dec 2018, Peter Hutterer wrote:

> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
> ---
>  Documentation/hid/uhid.txt | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/Documentation/hid/uhid.txt b/Documentation/hid/uhid.txt
> index c8656dd029a9..958fff945304 100644
> --- a/Documentation/hid/uhid.txt
> +++ b/Documentation/hid/uhid.txt
> @@ -160,7 +160,7 @@ them but you should handle them according to your needs.
>    UHID_OUTPUT:
>    This is sent if the HID device driver wants to send raw data to the I/O
>    device on the interrupt channel. You should read the payload and forward it to
> -  the device. The payload is of type "struct uhid_data_req".
> +  the device. The payload is of type "struct uhid_output_req".
>    This may be received even though you haven't received UHID_OPEN, yet.

Applied, thanks Peter.

-- 
Jiri Kosina
SUSE Labs

^ permalink raw reply

* Re: [PATCH 6/7] HID: logitech-hidpp: support the G700 over wireless
From: Benjamin Tissoires @ 2018-12-18 10:11 UTC (permalink / raw)
  To: hcutts
  Cc: Jiri Kosina, Nestor Lopez Casado, Simon Wood, Olivier Gay,
	open list:HID CORE LAYER, lkml
In-Reply-To: <CA+jURct6zJoxqqu7KeOW+MEuR-Voa79=ONQJDqypEx+_BrO47w@mail.gmail.com>

Hi Harry,

[now that the series has been reverted and re-inserted, I am starting
to have a look at this again]

On Fri, Sep 7, 2018 at 7:33 PM Harry Cutts <hcutts@chromium.org> wrote:
>
> Hi Benjamin,
>
> On Fri, 7 Sep 2018 at 03:35, Benjamin Tissoires
> <benjamin.tissoires@redhat.com> wrote:
> >
> > The G700 is using a non unifying receiver, so it's easy to add its support
> > in hid-logitech-hidpp now.
> > [snip]
> > @@ -3671,6 +3671,9 @@ static const struct hid_device_id hidpp_devices[] = {
> >         { /* Solar Keyboard Logitech K750 */
> >           LDJ_DEVICE(0x4002),
> >           .driver_data = HIDPP_QUIRK_CLASS_K750 },
> > +       { /* G700 over Wireless */
> > +         HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G700_RECEIVER),
> > +         .driver_data = HIDPP_QUIRK_RECEIVER | HIDPP_QUIRK_UNIFYING },
>
> As someone who's new to the codebase, it seems rather confusing to me
> that HIDPP_QUIRK_UNIFYING would be present here for a device that
> doesn't use a Unifying receiver. Am I misunderstanding, or should we
> consider renaming the quirk or adding some clarifying comment?
> (Similarly for the G900 in the next patch.)

The initial reason is that the gaming receivers are Unifying but that
are not normally allowed to connect to more that one device at a time.
The reason is that those receiver are using a higher frequency and
need all of the bandwidth to operate (so they can't multiplex the
devices).

But as I re-read the series, it is clear that HIDPP_QUIRK_RECEIVER and
HIDPP_QUIRK_UNIFYING are never used separately, so it doesn't make
sense to have 2 quirks. We should probably rename UNIFYING into
RECEIVER for consistency and we will be good.

Cheers,
Benjamin

>
> >
> >         { LDJ_DEVICE(HID_ANY_ID) },
> >
> > --
> > 2.14.3
> >
>
> Thanks,
>
> Harry Cutts
> Chrome OS Touch/Input team

^ permalink raw reply

* [RESEND PATCH v2 8/8] Input: sx8654 - convert #defined flags to BIT(x)
From: Richard Leitner @ 2018-12-18  8:40 UTC (permalink / raw)
  To: dmitry.torokhov, mark.rutland
  Cc: robh+dt, linux-input, devicetree, linux-kernel, richard.leitner
In-Reply-To: <20181218083606.25795-1-richard.leitner@skidata.com>

Some of the #defined register values are one-bit flags. Convert them to
use the BIT(x) macro instead of 1 byte hexadecimal values. This improves
readability and clarifies the intent.

Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
---
 drivers/input/touchscreen/sx8654.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/input/touchscreen/sx8654.c b/drivers/input/touchscreen/sx8654.c
index b7b263ed52af..3746ea855f94 100644
--- a/drivers/input/touchscreen/sx8654.c
+++ b/drivers/input/touchscreen/sx8654.c
@@ -36,6 +36,7 @@
 #include <linux/gpio/consumer.h>
 #include <linux/delay.h>
 #include <linux/input/touchscreen.h>
+#include <linux/bitops.h>
 
 /* register addresses */
 #define I2C_REG_TOUCH0			0x00
@@ -46,7 +47,7 @@
 #define I2C_REG_SOFTRESET		0x3f
 
 #define I2C_REG_SX8650_STAT		0x05
-#define SX8650_STAT_CONVIRQ		0x80
+#define SX8650_STAT_CONVIRQ		BIT(7)
 
 /* commands */
 #define CMD_READ_REGISTER		0x40
@@ -56,8 +57,8 @@
 #define SOFTRESET_VALUE			0xde
 
 /* bits for I2C_REG_IRQSRC */
-#define IRQ_PENTOUCH_TOUCHCONVDONE	0x08
-#define IRQ_PENRELEASE			0x04
+#define IRQ_PENTOUCH_TOUCHCONVDONE	BIT(7)
+#define IRQ_PENRELEASE			BIT(6)
 
 /* bits for RegTouch1 */
 #define CONDIRQ				0x20
@@ -65,8 +66,8 @@
 #define FILT_7SA			0x03
 
 /* bits for I2C_REG_CHANMASK */
-#define CONV_X				0x80
-#define CONV_Y				0x40
+#define CONV_X				BIT(7)
+#define CONV_Y				BIT(6)
 
 /* coordinates rate: higher nibble of CTRL0 register */
 #define RATE_MANUAL			0x00
-- 
2.11.0

^ permalink raw reply related

* [RESEND PATCH v2 7/8] Input: sx8654 - use common of_touchscreen functions
From: Richard Leitner @ 2018-12-18  8:39 UTC (permalink / raw)
  To: dmitry.torokhov, mark.rutland
  Cc: robh+dt, linux-input, devicetree, linux-kernel, richard.leitner
In-Reply-To: <20181218083606.25795-1-richard.leitner@skidata.com>

of_touchscreen.c provides a common interface for a axis invertion and
swapping of touchscreens. Therefore use it in the sx8654 driver.

Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
---
 drivers/input/touchscreen/sx8654.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/input/touchscreen/sx8654.c b/drivers/input/touchscreen/sx8654.c
index 4939863efbef..b7b263ed52af 100644
--- a/drivers/input/touchscreen/sx8654.c
+++ b/drivers/input/touchscreen/sx8654.c
@@ -35,6 +35,7 @@
 #include <linux/irq.h>
 #include <linux/gpio/consumer.h>
 #include <linux/delay.h>
+#include <linux/input/touchscreen.h>
 
 /* register addresses */
 #define I2C_REG_TOUCH0			0x00
@@ -101,6 +102,7 @@ struct sx8654 {
 
 	spinlock_t		lock; /* for input reporting from irq/timer */
 	struct timer_list	timer;
+	struct touchscreen_properties props;
 
 	const struct sx865x_data *data;
 };
@@ -178,8 +180,7 @@ static irqreturn_t sx8650_irq(int irq, void *handle)
 				 chdata);
 	}
 
-	input_report_abs(ts->input, ABS_X, x);
-	input_report_abs(ts->input, ABS_Y, y);
+	touchscreen_report_pos(ts->input, &ts->props, x, y, false);
 	input_report_key(ts->input, BTN_TOUCH, 1);
 	input_sync(ts->input);
 	dev_dbg(dev, "point(%4d,%4d)\n", x, y);
@@ -226,8 +227,8 @@ static irqreturn_t sx8654_irq(int irq, void *handle)
 		x = ((data[0] & 0xf) << 8) | (data[1]);
 		y = ((data[2] & 0xf) << 8) | (data[3]);
 
-		input_report_abs(sx8654->input, ABS_X, x);
-		input_report_abs(sx8654->input, ABS_Y, y);
+		touchscreen_report_pos(sx8654->input, &sx8654->props, x, y,
+				       false);
 		input_report_key(sx8654->input, BTN_TOUCH, 1);
 		input_sync(sx8654->input);
 
@@ -377,6 +378,8 @@ static int sx8654_probe(struct i2c_client *client,
 	input_set_abs_params(input, ABS_X, 0, MAX_12BIT, 0, 0);
 	input_set_abs_params(input, ABS_Y, 0, MAX_12BIT, 0, 0);
 
+	touchscreen_parse_properties(input, false, &sx8654->props);
+
 	sx8654->client = client;
 	sx8654->input = input;
 
-- 
2.11.0

^ permalink raw reply related

* [RESEND PATCH v2 6/8] Input: sx8654 - add sx8650 support
From: Richard Leitner @ 2018-12-18  8:39 UTC (permalink / raw)
  To: dmitry.torokhov, mark.rutland
  Cc: robh+dt, linux-input, devicetree, linux-kernel, richard.leitner
In-Reply-To: <20181218083606.25795-1-richard.leitner@skidata.com>

The sx8654 and sx8650 are quite similar, therefore add support for the
sx8650 within the sx8654 driver.

Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
---
 drivers/input/touchscreen/sx8654.c | 193 +++++++++++++++++++++++++++++++++----
 1 file changed, 173 insertions(+), 20 deletions(-)

diff --git a/drivers/input/touchscreen/sx8654.c b/drivers/input/touchscreen/sx8654.c
index afa4da138fe9..4939863efbef 100644
--- a/drivers/input/touchscreen/sx8654.c
+++ b/drivers/input/touchscreen/sx8654.c
@@ -29,7 +29,7 @@
 
 #include <linux/input.h>
 #include <linux/module.h>
-#include <linux/of.h>
+#include <linux/of_device.h>
 #include <linux/i2c.h>
 #include <linux/interrupt.h>
 #include <linux/irq.h>
@@ -44,9 +44,11 @@
 #define I2C_REG_IRQSRC			0x23
 #define I2C_REG_SOFTRESET		0x3f
 
+#define I2C_REG_SX8650_STAT		0x05
+#define SX8650_STAT_CONVIRQ		0x80
+
 /* commands */
 #define CMD_READ_REGISTER		0x40
-#define CMD_MANUAL			0xc0
 #define CMD_PENTRG			0xe0
 
 /* value for I2C_REG_SOFTRESET */
@@ -58,6 +60,7 @@
 
 /* bits for RegTouch1 */
 #define CONDIRQ				0x20
+#define RPDNT_100K			0x00
 #define FILT_7SA			0x03
 
 /* bits for I2C_REG_CHANMASK */
@@ -71,14 +74,122 @@
 /* power delay: lower nibble of CTRL0 register */
 #define POWDLY_1_1MS			0x0b
 
+/* for sx8650, as we have no pen release IRQ there: timeout in ns following the
+ * last PENIRQ after which we assume the pen is lifted.
+ */
+#define SX8650_PENIRQ_TIMEOUT		msecs_to_jiffies(10)
+
 #define MAX_12BIT			((1 << 12) - 1)
+#define MAX_I2C_READ_LEN		10 /* see datasheet section 5.1.5 */
+
+/* channel definition */
+#define CH_X				0x00
+#define CH_Y				0x01
+
+struct sx865x_data {
+	u8 cmd_manual;
+	u8 chan_mask;
+	u8 has_irq_penrelease;
+	u8 has_reg_irqmask;
+	irq_handler_t irqh;
+};
 
 struct sx8654 {
 	struct input_dev *input;
 	struct i2c_client *client;
 	struct gpio_desc *gpio_reset;
+
+	spinlock_t		lock; /* for input reporting from irq/timer */
+	struct timer_list	timer;
+
+	const struct sx865x_data *data;
 };
 
+static inline void sx865x_penrelease(struct sx8654 *ts)
+{
+	struct input_dev *input_dev = ts->input;
+
+	input_report_key(input_dev, BTN_TOUCH, 0);
+	input_sync(input_dev);
+}
+
+static void sx865x_penrelease_timer_handler(struct timer_list *t)
+{
+	struct sx8654 *ts = from_timer(ts, t, timer);
+	unsigned long flags;
+
+	spin_lock_irqsave(&ts->lock, flags);
+	sx865x_penrelease(ts);
+	spin_unlock_irqrestore(&ts->lock, flags);
+	dev_dbg(&ts->client->dev, "penrelease by timer\n");
+}
+
+static irqreturn_t sx8650_irq(int irq, void *handle)
+{
+	struct sx8654 *ts = handle;
+	struct device *dev = &ts->client->dev;
+	int len, i;
+	unsigned long flags;
+	u8 stat;
+	u16 x, y;
+	u8 data[MAX_I2C_READ_LEN];
+	u16 ch;
+	u16 chdata;
+	u8 readlen = hweight32(ts->data->chan_mask) * 2;
+
+	stat = i2c_smbus_read_byte_data(ts->client, CMD_READ_REGISTER
+						    | I2C_REG_SX8650_STAT);
+
+	if (!(stat & SX8650_STAT_CONVIRQ)) {
+		dev_dbg(dev, "%s ignore stat [0x%02x]", __func__, stat);
+		return IRQ_HANDLED;
+	}
+
+	len = i2c_master_recv(ts->client, data, readlen);
+	if (len != readlen) {
+		dev_dbg(dev, "ignore short recv (%d)\n", len);
+		return IRQ_HANDLED;
+	}
+
+	spin_lock_irqsave(&ts->lock, flags);
+
+	x = 0;
+	y = 0;
+	for (i = 0; (i + 1) < len; i++) {
+		chdata = data[i] << 8;
+		i++;
+		chdata += data[i];
+
+		if (unlikely(chdata == 0xFFFF)) {
+			dev_dbg(dev, "invalid qualified data @ %d\n", i);
+			continue;
+		} else if (unlikely(chdata & 0x8000)) {
+			dev_warn(dev, "hibit @ %d [0x%04x]\n", i, chdata);
+			continue;
+		}
+
+		ch = chdata >> 12;
+		if      (ch == CH_X)
+			x = chdata & MAX_12BIT;
+		else if (ch == CH_Y)
+			y = chdata & MAX_12BIT;
+		else
+			dev_warn(dev, "unknown channel %d [0x%04x]\n", ch,
+				 chdata);
+	}
+
+	input_report_abs(ts->input, ABS_X, x);
+	input_report_abs(ts->input, ABS_Y, y);
+	input_report_key(ts->input, BTN_TOUCH, 1);
+	input_sync(ts->input);
+	dev_dbg(dev, "point(%4d,%4d)\n", x, y);
+
+	mod_timer(&ts->timer, jiffies + SX8650_PENIRQ_TIMEOUT);
+	spin_unlock_irqrestore(&ts->lock, flags);
+
+	return IRQ_HANDLED;
+}
+
 static irqreturn_t sx8654_irq(int irq, void *handle)
 {
 	struct sx8654 *sx8654 = handle;
@@ -127,6 +238,22 @@ static irqreturn_t sx8654_irq(int irq, void *handle)
 	return IRQ_HANDLED;
 }
 
+static const struct sx865x_data sx8650_data = {
+	.cmd_manual = 0xb0,
+	.has_irq_penrelease = 0,
+	.has_reg_irqmask = 0,
+	.chan_mask = (CONV_X | CONV_Y),
+	.irqh = sx8650_irq,
+};
+
+static const struct sx865x_data sx8654_data = {
+	.cmd_manual = 0xc0,
+	.has_irq_penrelease = 1,
+	.has_reg_irqmask = 1,
+	.chan_mask = (CONV_X | CONV_Y),
+	.irqh = sx8654_irq,
+};
+
 static int sx8654_reset(struct sx8654 *ts)
 {
 	int err;
@@ -182,13 +309,13 @@ static void sx8654_close(struct input_dev *dev)
 	disable_irq(client->irq);
 
 	/* enable manual mode mode */
-	error = i2c_smbus_write_byte(client, CMD_MANUAL);
+	error = i2c_smbus_write_byte(client, sx8654->data->cmd_manual);
 	if (error) {
 		dev_err(&client->dev, "writing command CMD_MANUAL failed");
 		return;
 	}
 
-	error = i2c_smbus_write_byte_data(client, I2C_REG_TOUCH0, 0);
+	error = i2c_smbus_write_byte_data(client, I2C_REG_TOUCH0, RATE_MANUAL);
 	if (error) {
 		dev_err(&client->dev, "writing to I2C_REG_TOUCH0 failed");
 		return;
@@ -221,6 +348,20 @@ static int sx8654_probe(struct i2c_client *client,
 	}
 	dev_dbg(&client->dev, "got GPIO reset pin\n");
 
+	sx8654->data = of_device_get_match_data(&client->dev);
+	if (!sx8654->data)
+		sx8654->data = (const struct sx865x_data *)id->driver_data;
+	if (!sx8654->data) {
+		dev_err(&client->dev, "invalid or missing device data\n");
+		return -EINVAL;
+	}
+
+	if (!sx8654->data->has_irq_penrelease) {
+		dev_dbg(&client->dev, "use timer for penrelease\n");
+		timer_setup(&sx8654->timer, sx865x_penrelease_timer_handler, 0);
+		spin_lock_init(&sx8654->lock);
+	}
+
 	input = devm_input_allocate_device(&client->dev);
 	if (!input)
 		return -ENOMEM;
@@ -248,29 +389,31 @@ static int sx8654_probe(struct i2c_client *client,
 	}
 
 	error = i2c_smbus_write_byte_data(client, I2C_REG_CHANMASK,
-					  CONV_X | CONV_Y);
+					  sx8654->data->chan_mask);
 	if (error) {
 		dev_err(&client->dev, "writing to I2C_REG_CHANMASK failed");
 		return error;
 	}
 
-	error = i2c_smbus_write_byte_data(client, I2C_REG_IRQMASK,
-					  IRQ_PENTOUCH_TOUCHCONVDONE |
-						IRQ_PENRELEASE);
-	if (error) {
-		dev_err(&client->dev, "writing to I2C_REG_IRQMASK failed");
-		return error;
+	if (sx8654->data->has_reg_irqmask) {
+		error = i2c_smbus_write_byte_data(client, I2C_REG_IRQMASK,
+						  IRQ_PENTOUCH_TOUCHCONVDONE |
+							IRQ_PENRELEASE);
+		if (error) {
+			dev_err(&client->dev, "writing I2C_REG_IRQMASK failed");
+			return error;
+		}
 	}
 
 	error = i2c_smbus_write_byte_data(client, I2C_REG_TOUCH1,
-					  CONDIRQ | FILT_7SA);
+					  CONDIRQ | RPDNT_100K | FILT_7SA);
 	if (error) {
 		dev_err(&client->dev, "writing to I2C_REG_TOUCH1 failed");
 		return error;
 	}
 
 	error = devm_request_threaded_irq(&client->dev, client->irq,
-					  NULL, sx8654_irq,
+					  NULL, sx8654->data->irqh,
 					  IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
 					  client->name, sx8654);
 	if (error) {
@@ -292,18 +435,28 @@ static int sx8654_probe(struct i2c_client *client,
 
 #ifdef CONFIG_OF
 static const struct of_device_id sx8654_of_match[] = {
-	{ .compatible = "semtech,sx8654", },
-	{ .compatible = "semtech,sx8655", },
-	{ .compatible = "semtech,sx8656", },
-	{ },
+	{
+		.compatible = "semtech,sx8650",
+		.data = &sx8650_data,
+	}, {
+		.compatible = "semtech,sx8654",
+		.data = &sx8654_data,
+	}, {
+		.compatible = "semtech,sx8655",
+		.data = &sx8654_data,
+	}, {
+		.compatible = "semtech,sx8656",
+		.data = &sx8654_data,
+	}, {},
 };
 MODULE_DEVICE_TABLE(of, sx8654_of_match);
 #endif
 
 static const struct i2c_device_id sx8654_id_table[] = {
-	{ "semtech_sx8654", 0 },
-	{ "semtech_sx8655", 0 },
-	{ "semtech_sx8656", 0 },
+	{ .name = "semtech_sx8650", .driver_data = (long)&sx8650_data },
+	{ .name = "semtech_sx8654", .driver_data = (long)&sx8654_data },
+	{ .name = "semtech_sx8655", .driver_data = (long)&sx8654_data },
+	{ .name = "semtech_sx8656", .driver_data = (long)&sx8654_data },
 	{ },
 };
 MODULE_DEVICE_TABLE(i2c, sx8654_id_table);
-- 
2.11.0

^ permalink raw reply related

* [RESEND PATCH v2 5/8] dt-bindings: input: touchscreen: sx8654: add sx8650 to comatibles
From: Richard Leitner @ 2018-12-18  8:39 UTC (permalink / raw)
  To: dmitry.torokhov, mark.rutland
  Cc: robh+dt, linux-input, devicetree, linux-kernel, richard.leitner
In-Reply-To: <20181218083606.25795-1-richard.leitner@skidata.com>

As the sx8650 is quite similar to the sx8654 support for it will be
added in the driver. Therefore add it to the compatibles.

Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
Reviewed-by: Rob Herring <robh@kernel.org>
---
 Documentation/devicetree/bindings/input/touchscreen/sx8654.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/input/touchscreen/sx8654.txt b/Documentation/devicetree/bindings/input/touchscreen/sx8654.txt
index a538678424dd..0ebe6dd043c7 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/sx8654.txt
+++ b/Documentation/devicetree/bindings/input/touchscreen/sx8654.txt
@@ -2,6 +2,7 @@
 
 Required properties:
 - compatible: must be one of the following, depending on the model:
+	"semtech,sx8650"
 	"semtech,sx8654"
 	"semtech,sx8655"
 	"semtech,sx8656"
-- 
2.11.0

^ permalink raw reply related

* [RESEND PATCH v2 4/8] Input: sx8654 - add sx8655 and sx8656 to compatibles
From: Richard Leitner @ 2018-12-18  8:36 UTC (permalink / raw)
  To: dmitry.torokhov, mark.rutland
  Cc: robh+dt, linux-input, devicetree, linux-kernel, richard.leitner
In-Reply-To: <20181218083606.25795-1-richard.leitner@skidata.com>

As the sx865[456] share the same datasheet and differ only in the
presence of a "capacitive proximity detection circuit" and a "haptics
motor driver for LRA/ERM" add them to the compatbiles. As the driver
doesn't implement these features it should be no problem.

Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
---
 drivers/input/touchscreen/sx8654.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/input/touchscreen/sx8654.c b/drivers/input/touchscreen/sx8654.c
index 238f56b1581b..afa4da138fe9 100644
--- a/drivers/input/touchscreen/sx8654.c
+++ b/drivers/input/touchscreen/sx8654.c
@@ -293,6 +293,8 @@ static int sx8654_probe(struct i2c_client *client,
 #ifdef CONFIG_OF
 static const struct of_device_id sx8654_of_match[] = {
 	{ .compatible = "semtech,sx8654", },
+	{ .compatible = "semtech,sx8655", },
+	{ .compatible = "semtech,sx8656", },
 	{ },
 };
 MODULE_DEVICE_TABLE(of, sx8654_of_match);
@@ -300,6 +302,8 @@ MODULE_DEVICE_TABLE(of, sx8654_of_match);
 
 static const struct i2c_device_id sx8654_id_table[] = {
 	{ "semtech_sx8654", 0 },
+	{ "semtech_sx8655", 0 },
+	{ "semtech_sx8656", 0 },
 	{ },
 };
 MODULE_DEVICE_TABLE(i2c, sx8654_id_table);
-- 
2.11.0

^ permalink raw reply related

* [RESEND PATCH v2 3/8] dt-bindings: input: touchscreen: sx8654: add compatible models
From: Richard Leitner @ 2018-12-18  8:36 UTC (permalink / raw)
  To: dmitry.torokhov, mark.rutland
  Cc: robh+dt, linux-input, devicetree, linux-kernel, richard.leitner
In-Reply-To: <20181218083606.25795-1-richard.leitner@skidata.com>

As the sx865[456] share the same datasheet and differ only in the
presence of a "capacitive proximity detection circuit" and a "haptics
motor driver for LRA/ERM" add them to the compatbiles. As the driver
doesn't implement these features it should be no problem.

Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
Reviewed-by: Rob Herring <robh@kernel.org>
---
 Documentation/devicetree/bindings/input/touchscreen/sx8654.txt | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/input/touchscreen/sx8654.txt b/Documentation/devicetree/bindings/input/touchscreen/sx8654.txt
index ca521d8f7d65..a538678424dd 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/sx8654.txt
+++ b/Documentation/devicetree/bindings/input/touchscreen/sx8654.txt
@@ -1,7 +1,10 @@
 * Semtech SX8654 I2C Touchscreen Controller
 
 Required properties:
-- compatible: must be "semtech,sx8654"
+- compatible: must be one of the following, depending on the model:
+	"semtech,sx8654"
+	"semtech,sx8655"
+	"semtech,sx8656"
 - reg: i2c slave address
 - interrupts: touch controller interrupt
 
-- 
2.11.0

^ permalink raw reply related

* [RESEND PATCH v2 2/8] Input: sx8654 - add reset-gpio support
From: Richard Leitner @ 2018-12-18  8:36 UTC (permalink / raw)
  To: dmitry.torokhov, mark.rutland
  Cc: robh+dt, linux-input, devicetree, linux-kernel, richard.leitner
In-Reply-To: <20181218083606.25795-1-richard.leitner@skidata.com>

The sx8654 features a NRST input which may be connected to a GPIO.
Therefore add support for hard-resetting the sx8654 via this NRST.

If the reset-gpio property is provided the sx8654 is resetted via NRST
instead of the soft-reset via I2C.

Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
---
 drivers/input/touchscreen/sx8654.c | 40 +++++++++++++++++++++++++++++++++++---
 1 file changed, 37 insertions(+), 3 deletions(-)

diff --git a/drivers/input/touchscreen/sx8654.c b/drivers/input/touchscreen/sx8654.c
index ed29db3ec731..238f56b1581b 100644
--- a/drivers/input/touchscreen/sx8654.c
+++ b/drivers/input/touchscreen/sx8654.c
@@ -33,6 +33,8 @@
 #include <linux/i2c.h>
 #include <linux/interrupt.h>
 #include <linux/irq.h>
+#include <linux/gpio/consumer.h>
+#include <linux/delay.h>
 
 /* register addresses */
 #define I2C_REG_TOUCH0			0x00
@@ -74,6 +76,7 @@
 struct sx8654 {
 	struct input_dev *input;
 	struct i2c_client *client;
+	struct gpio_desc *gpio_reset;
 };
 
 static irqreturn_t sx8654_irq(int irq, void *handle)
@@ -124,6 +127,27 @@ static irqreturn_t sx8654_irq(int irq, void *handle)
 	return IRQ_HANDLED;
 }
 
+static int sx8654_reset(struct sx8654 *ts)
+{
+	int err;
+
+	if (ts->gpio_reset) {
+		gpiod_set_value_cansleep(ts->gpio_reset, 1);
+		udelay(2); /* Tpulse > 1µs */
+		gpiod_set_value_cansleep(ts->gpio_reset, 0);
+
+		return 0;
+	}
+
+	dev_dbg(&ts->client->dev, "NRST unavailable, try softreset\n");
+	err = i2c_smbus_write_byte_data(ts->client, I2C_REG_SOFTRESET,
+					SOFTRESET_VALUE);
+	if (err)
+		return err;
+	else
+		return 0;
+}
+
 static int sx8654_open(struct input_dev *dev)
 {
 	struct sx8654 *sx8654 = input_get_drvdata(dev);
@@ -186,6 +210,17 @@ static int sx8654_probe(struct i2c_client *client,
 	if (!sx8654)
 		return -ENOMEM;
 
+	sx8654->gpio_reset = devm_gpiod_get_optional(&client->dev, "reset",
+						     GPIOD_OUT_HIGH);
+	if (IS_ERR(sx8654->gpio_reset)) {
+		error = PTR_ERR(sx8654->gpio_reset);
+		if (error != -EPROBE_DEFER)
+			dev_err(&client->dev, "unable to get reset-gpio: %d\n",
+				error);
+		return error;
+	}
+	dev_dbg(&client->dev, "got GPIO reset pin\n");
+
 	input = devm_input_allocate_device(&client->dev);
 	if (!input)
 		return -ENOMEM;
@@ -206,10 +241,9 @@ static int sx8654_probe(struct i2c_client *client,
 
 	input_set_drvdata(sx8654->input, sx8654);
 
-	error = i2c_smbus_write_byte_data(client, I2C_REG_SOFTRESET,
-					  SOFTRESET_VALUE);
+	error = sx8654_reset(sx8654);
 	if (error) {
-		dev_err(&client->dev, "writing softreset value failed");
+		dev_err(&client->dev, "reset failed");
 		return error;
 	}
 
-- 
2.11.0

^ permalink raw reply related

* [RESEND PATCH v2 1/8] dt-bindings: input: touchscreen: sx8654: add reset-gpio property
From: Richard Leitner @ 2018-12-18  8:35 UTC (permalink / raw)
  To: dmitry.torokhov, mark.rutland
  Cc: robh+dt, linux-input, devicetree, linux-kernel, richard.leitner
In-Reply-To: <20181218083606.25795-1-richard.leitner@skidata.com>

Document the reset-gpio property for the sx8654 touchscreen controller
driver.

Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
Reviewed-by: Rob Herring <robh@kernel.org>
---
 Documentation/devicetree/bindings/input/touchscreen/sx8654.txt | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Documentation/devicetree/bindings/input/touchscreen/sx8654.txt b/Documentation/devicetree/bindings/input/touchscreen/sx8654.txt
index 4886c4aa2906..ca521d8f7d65 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/sx8654.txt
+++ b/Documentation/devicetree/bindings/input/touchscreen/sx8654.txt
@@ -5,6 +5,9 @@ Required properties:
 - reg: i2c slave address
 - interrupts: touch controller interrupt
 
+Optional properties:
+ - reset-gpios: GPIO specification for the NRST input
+
 Example:
 
 	sx8654@48 {
@@ -12,4 +15,5 @@ Example:
 		reg = <0x48>;
 		interrupt-parent = <&gpio6>;
 		interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
+		reset-gpios = <&gpio4 2 GPIO_ACTIVE_LOW>;
 	};
-- 
2.11.0

^ permalink raw reply related

* [RESEND PATCH v2 0/8] Input: sx8654 - reset-gpio, sx865[056] support, etc.
From: Richard Leitner @ 2018-12-18  8:35 UTC (permalink / raw)
  To: dmitry.torokhov, mark.rutland
  Cc: robh+dt, linux-input, devicetree, linux-kernel, richard.leitner

Add reset-gpio, sx8654[056] and common of_touchscreen functions support
for the sx8654 driver.

Changes RESEND v2:
	- added "Reviewed-by: Rob Herring <robh@kernel.org>" tags

Changes v2:
	- use devm_gpiod_get_optional in probe instead of in #ifdef CONFIG_OF
	- convert flags to BIT() in a separate patch
	- replace hrtimer with "regular" timer
	- use of_device_get_match_data instead of of_match_device
	- add driver data to i2c_device_id table for non-DT fallback
	- fix sequence of common touchscreen initialization
	- div. minor stlye changes

Richard Leitner (8):
  dt-bindings: input: touchscreen: sx8654: add reset-gpio property
  Input: sx8654 - add reset-gpio support
  dt-bindings: input: touchscreen: sx8654: add compatible models
  Input: sx8654 - add sx8655 and sx8656 to compatibles
  dt-bindings: input: touchscreen: sx8654: add sx8650 to comatibles
  Input: sx8654 - add sx8650 support
  Input: sx8654 - use common of_touchscreen functions
  Input: sx8654 - convert #defined flags to BIT(x)

 .../bindings/input/touchscreen/sx8654.txt          |  10 +-
 drivers/input/touchscreen/sx8654.c                 | 245 ++++++++++++++++++---
 2 files changed, 229 insertions(+), 26 deletions(-)

-- 
2.11.0

^ permalink raw reply

* Re: [PATCH] Input: elantech - Disable elan-i2c for P52 and P72
From: Peter Hutterer @ 2018-12-18  8:13 UTC (permalink / raw)
  To: Benjamin Tissoires
  Cc: Dmitry Torokhov, kt.liao, Aaron Ma, Kai Heng Feng, linux-input,
	linux-kernel, stable
In-Reply-To: <20181212154205.24025-1-benjamin.tissoires@redhat.com>

On Wed, Dec 12, 2018 at 04:42:05PM +0100, Benjamin Tissoires wrote:
> The current implementation of elan_i2c is known to not support those
> 2 laptops.
> 
> A proper fix is to tweak both elantech and elan_i2c to transmit the
> correct information from PS/2, which would make a bad candidate for
> stable.
> 
> So to give us some time for fixing the root of the problem, disable
> elan_i2c for the devices we know are not behaving properly.
> 
> Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1803600
> Link: https://bugs.archlinux.org/task/59714
> Fixes: df077237cf55 Input: elantech - detect new ICs and setup Host Notify for them
> 
> Cc: stable@vger.kernel.org  # v4.18+
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>

Acked-by: Peter Hutterer <peter.hutterer@who-t.net>

Cheers,
   Peter

> ---
>  drivers/input/mouse/elantech.c | 18 ++++++++++++++++--
>  1 file changed, 16 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
> index 2d95e8d93cc7..830ae9f07045 100644
> --- a/drivers/input/mouse/elantech.c
> +++ b/drivers/input/mouse/elantech.c
> @@ -1767,6 +1767,18 @@ static int elantech_smbus = IS_ENABLED(CONFIG_MOUSE_ELAN_I2C_SMBUS) ?
>  module_param_named(elantech_smbus, elantech_smbus, int, 0644);
>  MODULE_PARM_DESC(elantech_smbus, "Use a secondary bus for the Elantech device.");
>  
> +static const char * const i2c_blacklist_pnp_ids[] = {
> +	/*
> +	 * these are known to not be working properly as bits are missing
> +	 * in elan_i2c
> +	 */
> +	"LEN2131", /* ThinkPad P52 w/ NFC */
> +	"LEN2132", /* ThinkPad P52 */
> +	"LEN2133", /* ThinkPad P72 w/ NFC */
> +	"LEN2134", /* ThinkPad P72 */
> +	NULL
> +};
> +
>  static int elantech_create_smbus(struct psmouse *psmouse,
>  				 struct elantech_device_info *info,
>  				 bool leave_breadcrumbs)
> @@ -1802,10 +1814,12 @@ static int elantech_setup_smbus(struct psmouse *psmouse,
>  
>  	if (elantech_smbus == ELANTECH_SMBUS_NOT_SET) {
>  		/*
> -		 * New ICs are enabled by default.
> +		 * New ICs are enabled by default, unless mentioned in
> +		 * i2c_blacklist_pnp_ids.
>  		 * Old ICs are up to the user to decide.
>  		 */
> -		if (!ETP_NEW_IC_SMBUS_HOST_NOTIFY(info->fw_version))
> +		if (!ETP_NEW_IC_SMBUS_HOST_NOTIFY(info->fw_version) ||
> +		    psmouse_matches_pnp_id(psmouse, i2c_blacklist_pnp_ids))
>  			return -ENXIO;
>  	}
>  
> -- 
> 2.19.2
> 

^ permalink raw reply

* Re: [regression, bisected] Keyboard not responding after resuming from suspend/hibernate
From: Numan Demirdöğen @ 2018-12-18  7:23 UTC (permalink / raw)
  To: Pavel Machek
  Cc: jason.low2, Waiman.Long, paulmck, tglx, dmitry.torokhov, peterz,
	mingo, linux-kernel, linux-input
In-Reply-To: <20181202222809.GA29467@amd>

[-- Attachment #1: Type: text/plain, Size: 2660 bytes --]

Sun, 2 Dec 2018 23:28:09 +0100 tarihinde
Pavel Machek <pavel@ucw.cz> yazdı:

>On Fri 2018-11-30 15:44:55, Numan Demirdöğen wrote:
>> Sun, 28 Oct 2018 22:06:54 +0300 tarihinde
>> Numan Demirdöğen <if.gnu.linux@gmail.com> yazdı:
>>   
>> >Thu, 25 Oct 2018 09:49:03 +0200 tarihinde
>> >Pavel Machek <pavel@ucw.cz> yazdı:
>> >  
>> >> Hi!
>> >> 
>> >> Here's problem bisected down to:
>> >> 
>> >> commit 9d659ae14b545c4296e812c70493bfdc999b5c1c
>> >> Author: Peter Zijlstra <peterz@infradead.org>
>> >> Date:   Tue Aug 23 14:40:16 2016 +0200
>> >> 
>> >>     locking/mutex: Add lock handoff to avoid starvation
>> >> 
>> >>     Implement lock handoff to avoid lock starvation.
>> >> 
>> >> Numan, I assume revert of that patch on the 4.18 kernel still
>> >> makes it work?
>> >>     
>> >
>> >Unfortunately, I could not revert
>> >9d659ae14b545c4296e812c70493bfdc999b5c1c on kernels from 4.18.16 to
>> >4.10-rc1 because there were too much conflicts, which I could not
>> >solve as an "average Joe". I tried
>> >a3ea3d9b865c2a8f7fe455c7fa26db4b6fd066e3 which is parent of
>> >9d659ae14b545c4296e812c70493bfdc999b5c1c and succeeded to compile
>> >kernel.
>> >
>> >git checkout a3ea3d9b865c2a8f7fe455c7fa26db4b6fd066e3
>> >
>> >Then, I compiled kernel and rebooted with it. I tried a couples of
>> >times suspending and resuming, all of the time keyboard worked as
>> >expected.
>> >  
>> 
>> With this one line patch from Takashi Iwai, keyboard is working as
>> expected after resuming from suspend/hibernate.
>> 
>> --- a/kernel/locking/mutex.c
>> +++ b/kernel/locking/mutex.c
>> @@ -59,7 +59,7 @@ EXPORT_SYMBOL(__mutex_init);
>>   * Bit2 indicates handoff has been done and we're waiting for
>> pickup. */
>>  #define MUTEX_FLAG_WAITERS	0x01
>> -#define MUTEX_FLAG_HANDOFF	0x02
>> +#define MUTEX_FLAG_HANDOFF	0x00
>>  #define MUTEX_FLAG_PICKUP	0x04
>>  
>>  #define MUTEX_FLAGS		0x07
>> 
>> 
>> Thanks in advance and regards,  
>
>Ok. So it is a regression, and you can ask Linus to apply this
>.. but... that's kind of heavy solution. Peter, do you have any other
>ideas?
>
>									Pavel

Hi,

I did not mention the one line patch from Takashi Iwai as a means of fix
but as a hint. Sorry for misunderstanding.

Here is a another hint from another user:

I found that passing the options i8042.reset=1 i8042.dumbkbd=1 i8042.direct=1
results in the keyboard functioning after resume. However, there is a
long delay before the keyboard or mouse will respond to input on the
lock screen.[1]

[1] https://bugzilla.kernel.org/show_bug.cgi?id=195471#c39

-- 
Numan Demirdöğen

[-- Attachment #2: Dijital OpenPGP imzası --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply


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