* [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 = <®_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
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox