* Re: [PATCH 2/3] input: touchscreen: of: Register multitouch axes
From: Dmitry Torokhov @ 2014-11-05 17:56 UTC (permalink / raw)
To: Maxime Ripard
Cc: Lothar Waßmann, Henrik Rydberg, linux-input, linux-kernel
In-Reply-To: <1415200070-19346-3-git-send-email-maxime.ripard@free-electrons.com>
On Wed, Nov 05, 2014 at 04:07:49PM +0100, Maxime Ripard wrote:
> So far, the DT parsing code was only setting up the regular input axes,
> completely ignoring their multitouch counter parts.
>
> Fill them with the same parameters than the regular axes.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
> drivers/input/touchscreen/of_touchscreen.c | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/input/touchscreen/of_touchscreen.c b/drivers/input/touchscreen/of_touchscreen.c
> index 74d6b0eb50ac..cf2a753edd96 100644
> --- a/drivers/input/touchscreen/of_touchscreen.c
> +++ b/drivers/input/touchscreen/of_touchscreen.c
> @@ -42,17 +42,23 @@ void touchscreen_parse_of_params(struct input_dev *dev)
>
> maximum = of_get_optional_u32(np, "touchscreen-size-x");
> fuzz = of_get_optional_u32(np, "touchscreen-fuzz-x");
> - if (maximum || fuzz)
> + if (maximum || fuzz) {
> input_set_abs_params(dev, ABS_X, 0, maximum, fuzz, 0);
> + input_set_abs_params(dev, ABS_MT_POSITION_X, 0, maximum, fuzz, 0);
Not all devices are multitouch so you shoudl not be setting multitouch
bits unconditionally.
In I think we should rely on driver to set capability bits properly and
then here test them and apply the readings. Probably also issue a
warning if we see max/fuzz setting but neither ABS_<N>/ABS_MT_<N>
capabilities.
Thanks.
> + }
>
> maximum = of_get_optional_u32(np, "touchscreen-size-y");
> fuzz = of_get_optional_u32(np, "touchscreen-fuzz-y");
> - if (maximum || fuzz)
> + if (maximum || fuzz) {
> input_set_abs_params(dev, ABS_Y, 0, maximum, fuzz, 0);
> + input_set_abs_params(dev, ABS_MT_POSITION_Y, 0, maximum, fuzz, 0);
> + }
>
> maximum = of_get_optional_u32(np, "touchscreen-max-pressure");
> fuzz = of_get_optional_u32(np, "touchscreen-fuzz-pressure");
> - if (maximum || fuzz)
> + if (maximum || fuzz) {
> input_set_abs_params(dev, ABS_PRESSURE, 0, maximum, fuzz, 0);
> + input_set_abs_params(dev, ABS_MT_PRESSURE, 0, maximum, fuzz, 0);
> + }
> }
> EXPORT_SYMBOL(touchscreen_parse_of_params);
> --
> 2.1.1
>
--
Dmitry
^ permalink raw reply
* Re: [PATCH 01/15] mfd: add new driver for Sharp LoCoMo
From: Dmitry Eremin-Solenikov @ 2014-11-05 20:02 UTC (permalink / raw)
To: Linus Walleij
Cc: linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org,
Linux Input, linux-leds@vger.kernel.org,
linux-spi@vger.kernel.org, linux-fbdev@vger.kernel.org,
alsa-devel@alsa-project.org, Andrea Adami, Russell King,
Daniel Mack, Haojian Zhuang, Robert Jarzmik, Alexandre Courbot,
Dmitry Torokhov, Bryan Wu, Richard Purdie, Samuel Ortiz,
Lee Jones, Mark Brown, Jingoo
In-Reply-To: <CACRpkdaKUZjbSEH75M9xudTF9HefwOCVEe5otv9-9f2UG8=hVg@mail.gmail.com>
2014-11-03 16:41 GMT+03:00 Linus Walleij <linus.walleij@linaro.org>:
> On Fri, Oct 31, 2014 at 10:54 AM, Dmitry Eremin-Solenikov
> <dbaryshkov@gmail.com> wrote:
>> 2014-10-31 10:42 GMT+03:00 Linus Walleij <linus.walleij@linaro.org>:
>
>>> It seems some DAC handling is part of the MFD driver, and we recently
>>> discussed that MFD should not be doing misc stuff but mainly act as
>>> arbiter and switching station.
>>>
>>> Can you please move the DAC parts of the driver to
>>> drivers/iio/dac?
>>>
>>> The IIO DAC subsystem will likely add other goodies to
>>> the driver for free and give a nice API to consumers.
>>
>> I wanted this part to be as simple as possible. I will look into IIO
>> DAC subsystem.
>> The DAC is as simple 2 channel 8-bit i2c device connected to a separate i2c bus
>> controlled through a register in LoCoMo device. One channel is used
>> for backlight,
>> other will be used for volume control. So (in theory) I can add the
>> following device
>> chain: locomo -> i2c-locomo -> m62332 -> IIO DAC client. However isn't that
>> quite an overkill for just backlight & volume control? Please advice me on this.
>
> The point is still the same: no unrelated code in drivers/mfd,
> then either use IIO DAC as a middle layer or sink the DAC handling
> into respective subdriver, i.e. push it into the backlight or
> volume directly then.
The problem is that the DAC is equally used by backlight and by sound
device (WIP).
What about true i2c device driver sitting in drivers/misc and exporting a regmap
of 2 8-bit registers?
--
With best wishes
Dmitry
^ permalink raw reply
* Re: [PATCH 01/15] mfd: add new driver for Sharp LoCoMo
From: Mark Brown @ 2014-11-05 20:24 UTC (permalink / raw)
To: Dmitry Eremin-Solenikov
Cc: Linus Walleij, linux-arm-kernel@lists.infradead.org,
linux-gpio@vger.kernel.org, Linux Input,
linux-leds@vger.kernel.org, linux-spi@vger.kernel.org,
linux-fbdev@vger.kernel.org, alsa-devel@alsa-project.org,
Andrea Adami, Russell King, Daniel Mack, Haojian Zhuang,
Robert Jarzmik, Alexandre Courbot, Dmitry Torokhov, Bryan Wu,
Richard Purdie, Samuel Ortiz, Lee Jones
In-Reply-To: <CALT56yM8B3ffYb0=EZVbRRGDZSxMci2sRp9XVtjQuLa5abN+cg@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 720 bytes --]
On Thu, Nov 06, 2014 at 12:02:49AM +0400, Dmitry Eremin-Solenikov wrote:
> 2014-11-03 16:41 GMT+03:00 Linus Walleij <linus.walleij@linaro.org>:
> > The point is still the same: no unrelated code in drivers/mfd,
> > then either use IIO DAC as a middle layer or sink the DAC handling
> > into respective subdriver, i.e. push it into the backlight or
> > volume directly then.
> The problem is that the DAC is equally used by backlight and by sound
> device (WIP).
> What about true i2c device driver sitting in drivers/misc and exporting a regmap
> of 2 8-bit registers?
If it can just export registers that sounds like a MFD. If it needs to
export functionality then like Linus says the IIO subsystem abstracts
DACs.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]
^ permalink raw reply
* Re: [PATCH 01/15] mfd: add new driver for Sharp LoCoMo
From: Lars-Peter Clausen @ 2014-11-05 20:32 UTC (permalink / raw)
To: Dmitry Eremin-Solenikov, Linus Walleij
Cc: Alexandre Courbot, linux-fbdev@vger.kernel.org, Bryan Wu,
Russell King, Samuel Ortiz, Liam Girdwood, Lee Jones,
Dmitry Torokhov, alsa-devel@alsa-project.org, Haojian Zhuang,
linux-spi@vger.kernel.org, linux-gpio@vger.kernel.org, Mark Brown,
Andrea Adami, linux-arm-kernel@lists.infradead.org, Linux Input,
Jingoo Han, Daniel Mack, Robert Jarzmik, Richard Purdie
In-Reply-To: <CALT56yM8B3ffYb0=EZVbRRGDZSxMci2sRp9XVtjQuLa5abN+cg@mail.gmail.com>
On 11/05/2014 09:02 PM, Dmitry Eremin-Solenikov wrote:
> 2014-11-03 16:41 GMT+03:00 Linus Walleij <linus.walleij@linaro.org>:
>> On Fri, Oct 31, 2014 at 10:54 AM, Dmitry Eremin-Solenikov
>> <dbaryshkov@gmail.com> wrote:
>>> 2014-10-31 10:42 GMT+03:00 Linus Walleij <linus.walleij@linaro.org>:
>>
>>>> It seems some DAC handling is part of the MFD driver, and we recently
>>>> discussed that MFD should not be doing misc stuff but mainly act as
>>>> arbiter and switching station.
>>>>
>>>> Can you please move the DAC parts of the driver to
>>>> drivers/iio/dac?
>>>>
>>>> The IIO DAC subsystem will likely add other goodies to
>>>> the driver for free and give a nice API to consumers.
>>>
>>> I wanted this part to be as simple as possible. I will look into IIO
>>> DAC subsystem.
>>> The DAC is as simple 2 channel 8-bit i2c device connected to a separate i2c bus
>>> controlled through a register in LoCoMo device. One channel is used
>>> for backlight,
>>> other will be used for volume control. So (in theory) I can add the
>>> following device
>>> chain: locomo -> i2c-locomo -> m62332 -> IIO DAC client. However isn't that
>>> quite an overkill for just backlight & volume control? Please advice me on this.
>>
>> The point is still the same: no unrelated code in drivers/mfd,
>> then either use IIO DAC as a middle layer or sink the DAC handling
>> into respective subdriver, i.e. push it into the backlight or
>> volume directly then.
>
> The problem is that the DAC is equally used by backlight and by sound
> device (WIP).
That shouldn't be a problem. The IIO API allows different consumers to
request different channels of a converter. You can write a generic IIO based
backlight driver and a generic IIO based volume control driver. This makes
it possible to re-use them in other circuits with other DACs but the same
application.
> What about true i2c device driver sitting in drivers/misc and exporting a regmap
> of 2 8-bit registers?
If it is a generic DAC it should go into drivers/iio/, this will allow code
sharing and code re-usability. Given the simplicity of the DAC there might
even be other existing drivers that can be used to control it.
- Lars
^ permalink raw reply
* Re: [PATCH 1/1] x86: Surface Pro 3 Type Cover 3
From: Jiri Kosina @ 2014-11-05 20:39 UTC (permalink / raw)
To: Alan Wu; +Cc: linux-input, linux-kernel, linux-usb, Jarrad Whitaker
In-Reply-To: <1415067972-3239-1-git-send-email-alan.c.wu@gmail.com>
On Mon, 3 Nov 2014, Alan Wu wrote:
> Surface Pro 3 Type Cover that works with Ubuntu (and possibly Arch) from this thread. Both trackpad and keyboard work after compiling my own kernel.
> http://ubuntuforums.org/showthread.php?t=2231207&page=2&s=44910e0c56047e4f93dfd9fea58121ef
>
> Also includes Jarrad Whitaker's message which sources
> http://winaero.com/blog/how-to-install-linux-on-surface-pro-3/
> which he says is sourced from a Russian site
>
> Signed-off-by: Alan Wu <alan.c.wu@gmail.com>
Adding Jarrad to CC so that he can test your patch as well.
Jarrad, if you could provide your Tested-by: to Alan's patch, I'd
appreciate it (that would mean that we've reached the right super-position
of both the patches you guys submitted).
I don't own the device, so I fully depend on what you guys submit and
test.
Thanks.
> ---
> drivers/hid/hid-core.c | 6 ++++++
> drivers/hid/hid-ids.h | 1 +
> drivers/hid/hid-microsoft.c | 2 ++
> drivers/hid/usbhid/hid-quirks.c | 1 +
> 4 files changed, 10 insertions(+)
>
> diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
> index 73bd9e2..e94afcc 100644
> --- a/drivers/hid/hid-core.c
> +++ b/drivers/hid/hid-core.c
> @@ -702,6 +702,11 @@ static void hid_scan_collection(struct hid_parser *parser, unsigned type)
> if (((parser->global.usage_page << 16) == HID_UP_SENSOR) &&
> type == HID_COLLECTION_PHYSICAL)
> hid->group = HID_GROUP_SENSOR_HUB;
> +
> + if (hid->vendor == USB_VENDOR_ID_MICROSOFT &&
> + hid->product == USB_DEVICE_ID_MS_TYPE_COVER_3 &&
> + hid->group == HID_GROUP_MULTITOUCH)
> + hid->group = HID_GROUP_GENERIC;
> }
>
> static int hid_scan_main(struct hid_parser *parser, struct hid_item *item)
> @@ -1861,6 +1866,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
> { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3K) },
> { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0) },
> { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_OFFICE_KB) },
> + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3) },
> { HID_USB_DEVICE(USB_VENDOR_ID_MONTEREY, USB_DEVICE_ID_GENIUS_KB29E) },
> { HID_USB_DEVICE(USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL) },
> { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN) },
> diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
> index e23ab8b..15f32c2 100644
> --- a/drivers/hid/hid-ids.h
> +++ b/drivers/hid/hid-ids.h
> @@ -648,6 +648,7 @@
> #define USB_DEVICE_ID_MS_SURFACE_PRO_2 0x0799
> #define USB_DEVICE_ID_MS_TOUCH_COVER_2 0x07a7
> #define USB_DEVICE_ID_MS_TYPE_COVER_2 0x07a9
> +#define USB_DEVICE_ID_MS_TYPE_COVER_3 0x07dc
>
> #define USB_VENDOR_ID_MOJO 0x8282
> #define USB_DEVICE_ID_RETRO_ADAPTER 0x3201
> diff --git a/drivers/hid/hid-microsoft.c b/drivers/hid/hid-microsoft.c
> index 8ba17a9..cacda43 100644
> --- a/drivers/hid/hid-microsoft.c
> +++ b/drivers/hid/hid-microsoft.c
> @@ -274,6 +274,8 @@ static const struct hid_device_id ms_devices[] = {
> .driver_data = MS_NOGET },
> { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_MOUSE_4500),
> .driver_data = MS_DUPLICATE_USAGES },
> + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3),
> + .driver_data = MS_HIDINPUT },
>
> { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_BT),
> .driver_data = MS_PRESENTER },
> diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
> index 5014bb5..cebfaf2 100644
> --- a/drivers/hid/usbhid/hid-quirks.c
> +++ b/drivers/hid/usbhid/hid-quirks.c
> @@ -77,6 +77,7 @@ static const struct hid_blacklist {
> { USB_VENDOR_ID_FORMOSA, USB_DEVICE_ID_FORMOSA_IR_RECEIVER, HID_QUIRK_NO_INIT_REPORTS },
> { USB_VENDOR_ID_FREESCALE, USB_DEVICE_ID_FREESCALE_MX28, HID_QUIRK_NOGET },
> { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_NOGET },
> + { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3, HID_QUIRK_NO_INIT_REPORTS },
> { USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL, HID_QUIRK_NO_INIT_REPORTS },
> { USB_VENDOR_ID_NEXIO, USB_DEVICE_ID_NEXIO_MULTITOUCH_PTI0750, HID_QUIRK_NO_INIT_REPORTS },
> { USB_VENDOR_ID_NOVATEK, USB_DEVICE_ID_NOVATEK_MOUSE, HID_QUIRK_NO_INIT_REPORTS },
> --
> 2.1.0
>
--
Jiri Kosina
SUSE Labs
^ permalink raw reply
* Re: [PATCH 01/15] mfd: add new driver for Sharp LoCoMo
From: Lars-Peter Clausen @ 2014-11-05 20:42 UTC (permalink / raw)
To: Dmitry Eremin-Solenikov, Linus Walleij
Cc: linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org,
Linux Input, linux-leds@vger.kernel.org,
linux-spi@vger.kernel.org, linux-fbdev@vger.kernel.org,
alsa-devel@alsa-project.org, Andrea Adami, Russell King,
Daniel Mack, Haojian Zhuang, Robert Jarzmik, Alexandre Courbot,
Dmitry Torokhov, Bryan Wu, Richard Purdie, Samuel Ortiz,
Lee Jones, Mark Brown, Jingoo
In-Reply-To: <545A8965.2010406@metafoo.de>
On 11/05/2014 09:32 PM, Lars-Peter Clausen wrote:
> If it is a generic DAC it should go into drivers/iio/, this will allow code
> sharing and code re-usability. Given the simplicity of the DAC there might
> even be other existing drivers that can be used to control it.
I just had a quick look and I think the M62332 will work out of the box with
the max517 driver.
- Lars
^ permalink raw reply
* Re: [PATCH 02/15] GPIO: port LoCoMo gpio support from old driver
From: Dmitry Eremin-Solenikov @ 2014-11-05 21:33 UTC (permalink / raw)
To: Linus Walleij
Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-gpio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Linux Input,
linux-leds-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-fbdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org, Andrea Adami,
Russell King, Daniel Mack, Haojian Zhuang, Robert Jarzmik,
Alexandre Courbot, Dmitry Torokhov, Bryan Wu, Richard Purdie,
Samuel Ortiz, Lee Jones, Mark Brown, Jingoo
In-Reply-To: <CACRpkdb7v3LmOhbhQ9TPk1_bnLnpwizawW6RQvhQRLSjRewAaQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-03 16:43 GMT+03:00 Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>:
> On Fri, Oct 31, 2014 at 10:39 AM, Dmitry Eremin-Solenikov
> <dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>> 2014-10-31 10:48 GMT+03:00 Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>:
>>> On Tue, Oct 28, 2014 at 1:01 AM, Dmitry Eremin-Solenikov
>>> <dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>>>
>>>> Add gpiolib driver for gpio pins placed on the LoCoMo GA.
>>>>
>>>> Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>>
>>
>> [skipped]
>>
>>> (etc, everywhere this pattern occurs).
>>>> +static void locomo_gpio_set(struct gpio_chip *chip,
>>>> + unsigned offset, int value)
>>>> +{
>>>> + struct locomo_gpio *lg = container_of(chip, struct locomo_gpio, gpio);
>>>> + unsigned long flags;
>>>> +
>>>> + spin_lock_irqsave(&lg->lock, flags);
>>>> +
>>>> + __locomo_gpio_set(chip, offset, value);
>>>> +
>>>> + spin_unlock_irqrestore(&lg->lock, flags);
>>>
>>> If you actually always have to be getting and releasing a spin lock around
>>> the register writes, contemplate using regmap-mmio because that
>>> is part of what it does.
>>>
>>> But is this locking really necessary?
>>
>> I have a custom of doing such locking and never having to think about
>> somebody breaking into RMW cycles.
>>
>> Also isn't regmap an overkill here? Wouldn't regmap also do a lock/unlock
>> around each register read/write/RMW?
>
> Yes that's the point: if you use regmap mmio you get the RMW-locking
> for free, with the regmap implementation.
Just to be more concrete. Currently locomo_gpio_ack_irq() function uses
one lock and one unlock for doing 3 consecutive RMW I I convert locomo
to regmap, will that be 3 lock/unlock calls or still one? (Or maybe I'm
trying to be over-protective here and adding more lock/unlock cycles
won't matter that much?)
Next question: if I have to export regmap to several subdrivers, is it better
to have one big regmap or to have one-map-per-driver approach?
--
With best wishes
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: About Dell Inspiron 3442 touchpad
From: Luiz Carlos Ramos @ 2014-11-05 23:09 UTC (permalink / raw)
To: Benjamin Tissoires; +Cc: linux-input, Andrew Duggan
In-Reply-To: <207925.414c2f6d6a6b514141412b5a5646704475414372344c6d7a386530@popretr.messagingengine.com>
Hi, Benjamin.
I'm just using vanilla 3.16.3, no patches, with .config built from the
one from Slackware stable (kernel 3.10.17). Anyway, I'll try to upgrade
it to the lastest 3.16.
As soon as I have something to inform, I'll keep you informed.
Let me ask you one thing. What exactly is the "g" number in the device
id? The comments at the file include/linux/hid.h suggest it is a kind of
"group", but this "group" seems to be a special word in HID world, with
a meaning different than the common sense.
Thanks again,
Luiz
On Wed, Nov 5, 2014, at 13:35, Benjamin Tissoires wrote:
> Hi Luiz,
>
> On Wed, Nov 5, 2014 at 3:09 AM, Luiz Carlos Ramos
> <lramos.prof@yahoo.com.br> wrote:
> > Hi, Benjamin,
> >
> > Thanks again!
> >
> > Here it is an excerpt from $(udevadm info --export-db), I think the
> > relevant one:
> >
> > P:
> > /devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00/0018:06CB:2985.0005
> > E:
> > DEVPATH=/devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00/0018:06CB:2985.0005
> > E: HID_ID=0018:000006CB:00002985
> > E: HID_NAME=DLL0652:00 06CB:2985
> > E: MODALIAS=hid:b0018g0000v000006CBp00002985
> > E: SUBSYSTEM=hid
> > E: UDEV_LOG=3
> >
> > Also, this is the same information, from
> > /sys/bus/hid/devices/0018:06CB:2985.0005/modalias:
> >
> > root@giustizia:/sys/bus/hid/devices/0018:06CB:2985.0005# cat modalias
> > hid:b0018g0000v000006CBp00002985
>
> So this is definitively wrong. g0000 means that your device has not
> been scanned for the reports. However, there is no way a vanilla
> kernel will not scan a Synaptics HID device.
> My guess is that your arch kernel has some crappy patches which
> prevent your touchpad to be bound to hid-rmi.
>
> Can you point out to the patches that has been added to the kernel
> tree by your distribution? (I never managed to find this information
> for arch)
>
> >
> > And, finally, the device descriptor:
> >
> > root@giustizia:/sys/kernel/debug/hid/0018:06CB:2985.0005# cat rdesc
> > 05 01 09 02 a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01
> > 95 02 81 02 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06
> > c0 c0 06 00 ff 09 01 a1 01 85 09 09 02 15 00 26 ff 00 75 08 95 14 91 02
> > 85 0a 09 03 15 00 26 ff 00 75 08 95 14 91 02 85 0b 09 04 15 00 26 ff 00
> > 75 08 95 1d 81 02 85 0c 09 05 15 00 26 ff 00 75 08 95 1d 81 02 85 0f 09
> > 06 15 00 26 ff 00 75 08 95 01 b1 02 c0
>
> Thanks. So after injecting this in my boxes, (which are currently a
> plain 3.16.3-200.fc20 from fedora 20, and a somewhat vanilla 3.18-rc3
> + Jiri's upstream hid patches for 3.19), hid-rmi picks up the device.
>
> Please try to use a vanilla kernel and see if things are better.
>
> >
> > Yesterday, after sending my reply, I figured out that vendor 06CB means
> > Synaptics; am I right?
>
> You are right.
>
> >
> > Also, again, if you'd like to me to code/patch/test anything, fell free
> > to ask me.
>
> Well, please try a vanilla kernel (3.16.7 if you want to keep your
> current config file, or a 3.17.2), and check if it does not magically
> works.
>
> Cheers,
> Benjamin
>
> >>
> >> On Tue, Nov 4, 2014 at 8:11 PM, Luiz Carlos Ramos
> >> <lramos.prof@yahoo.com.br> wrote:
> >> > Hi, Benjamin,
> >> >
> >> > I think I just wrote the email below in a way it suggests everything had
> >> > gone well and the issue was resolved... but unfortunately it's not the
> >> > case. In my reply, I wrote some remarks in the text body in that email,
> >> > but I think they weren't noticed at all given the first paragraph.
> >>
> >> Apologies for that. I read it, thought about it, and forgot it.
> >>
> >> >
> >> > Only to recall, the problem is with a Dell Inspiron 3442, that has a
> >> > touchpad which doesn't show up. It seems like it is a Synaptics I2C
> >> > device. Your last advice was to insmod hid-rmi, which would hopefully
> >> > make things go on after I2C basic device handshake. However, it didn't
> >> > happen.
> >>
> >> Yeah, so given the state of the 3.16 kernel and your tests, the group
> >> associated to the device is simply not the RMI one.
> >> Which is weird.
> >>
> >> >
> >> > I managed also to put some "printk" at the beginning and at the end of
> >> > the "probe" function of hid-rmi, and it seems both were not called. I
> >> > don't know if some kind of ioctl() should be issued, or if udevd should
> >> > be configured some special way, but my feeling is that I am missing
> >> > something really really important and obvious.
> >> >
> >>
> >> No, I think your device is in a black hole. If the device declares
> >> nothing special, it should be handled by hid-rmi. But given that it is
> >> not the case, it might declares itself as a multitouch capable, and
> >> should be handled by hid-multitouch. But if hid-multitouch does not
> >> drive it properly, that is weird.
> >>
> >> Can you provide the modalias of the HID device: in "udevadm info
> >> --export-db", look for the device attached to i2c_hid, and find its
> >> son which has a modalias in the form of
> >> MODALIAS=hid:b0018gXXXXv000006cbp00002985. I am interested in what is
> >> after the "g".
> >>
> >> Also, can you export the content of the report descriptor of your
> >> device. You can find it in
> >> /sys/kernel/debug/hid/0018\:06CB\:2985.*/rdesc assuming you have
> >> debugfs mounted under /sys/kernel/debug
> >>
> >> Cheers,
> >> Benjamin
> >>
> >> >
> >> >
> >> > On Thu, Oct 30, 2014, at 08:06, Luiz Carlos Ramos wrote:
> >> >> Hi Benjamin,
> >> >>
> >> >> Thanks for the assistance and quick reply.
> >> >>
> >> >> On Tue, Oct 28, 2014, at 23:40, Benjamin Tissoires wrote:
> >> >> > Hi Luiz,
> >> >> >
> >> >> > On Tue, Oct 28, 2014 at 9:00 PM, Luiz Carlos Ramos
> >> >> > <lramos.prof@yahoo.com.br> wrote:
> >> >> > > Hello,
> >> >> > >
> >> >> > > I'm trying to make a touchpad from a Dell Inspiron I14-3442 laptop work.
> >> >> > >
> >> >> > > Some details:
> >> >> > >
> >> >> > > - I'm using plain Slackware64 14.1, but raised the kernel to 3.16.3 for
> >> >> > > tests
> >> >> > >
> >> >> > > - xinput ignores the touchpad; it shows only a USB mouse/keyboard
> >> >> > > adapter and the laptop's keyboard:
> >> >> > >
> >> >> > > root@pace:/sys/bus/hid/devices# xinput
> >> >> > > Virtual core pointer id=2 [master pointer
> >> >> > > (3)]
> >> >> > > Virtual core XTEST pointer id=4 [slave
> >> >> > > pointer (2)]
> >> >> > > Generic USB K/B id=12 [slave
> >> >> > > pointer (2)]
> >> >> > > Virtual core keyboard id=3 [master
> >> >> > > keyboard (2)]
> >> >> > > Virtual core XTEST keyboard id=5 [slave
> >> >> > > keyboard (3)]
> >> >> > > Power Button id=6 [slave
> >> >> > > keyboard (3)]
> >> >> > > Video Bus id=7 [slave
> >> >> > > keyboard (3)]
> >> >> > > Power Button id=9 [slave
> >> >> > > keyboard (3)]
> >> >> > > Sleep Button id=10 [slave
> >> >> > > keyboard (3)]
> >> >> > > Integrated_Webcam_HD id=13 [slave
> >> >> > > keyboard (3)]
> >> >> > > AT Translated Set 2 keyboard id=14 [slave
> >> >> > > keyboard (3)]
> >> >> > > Dell WMI hotkeys id=15 [slave
> >> >> > > keyboard (3)]
> >> >> > > Video Bus id=8 [slave
> >> >> > > keyboard (3)]
> >> >> > > Generic USB K/B id=11 [slave
> >> >> > > keyboard (3)]
> >> >> > >
> >> >> > > - it seems Ubuntu certified this machine (check
> >> >> > > http://www.ubuntu.com/certification/hardware/201402-14674/components/),
> >> >> > > but it assumes the touchpad is PS/2. I haven't found it as a PS/2 thing,
> >> >> > > even loading psmouse.ko, or doing other tricks
> >> >> > >
> >> >> > > - some articles lists some tips for making it work (like
> >> >> > > http://askubuntu.com/questions/134627/how-do-i-get-the-touchpad-settings-working-on-a-dell-xps-13-ultrabook,
> >> >> > > or https://bugzilla.redhat.com/show_bug.cgi?id=1048314#c2), but I read
> >> >> > > them carefully, made some tests, and they didn't work. One article says
> >> >> > > I could blacklist i2c_hid or like in order to make the bring up the
> >> >> > > touchpad in PS/2 mode, but I couldn't succeed doing so
> >> >> > >
> >> >> > > - at Dell's site, it is offered a driver for Ubuntu 12.04, but it's
> >> >> > > almost obsolete. It seems to be just merged into the kernel
> >> >> > >
> >> >> > > - from Windows 8.1, which runs in the same machine (dual boot), I
> >> >> > > concluded the proper way of making it work is to use HID over I2C. It
> >> >> > > seems that there are two components loaded; one I2CHID, and a Synaptics
> >> >> > > HID. This makes me hint it may be a Synaptics device
> >> >> >
> >> >> > Well, if this is a Synaptics HID over I2C device, it should be handled
> >> >> > by hid-rmi in recent kernels (or hid-multitouch but I would say
> >> >> > hid-rmi in your case).
> >> >> > Is the hid-rmi module loaded? Can we get a dmesg output so we can see
> >> >> > if there is any problem?
> >> >> >
> >> >> > >
> >> >> > > - it seems there are two I2C busses in the machine. One is related to
> >> >> > > the Intel video graphics subsystem (i801). The other seems to be linked
> >> >> > > to the touchpad (i2c_designware_platform). I'm not sure that latest kmod
> >> >> > > (i2c_designware_platform) is the right one to be used in this case, but
> >> >> > > it appears to be working:
> >> >> >
> >> >> > Yeah, i2c_designware_platform is pretty common for Haswell processors.
> >> >> >
> >> >> > >
> >> >> > > root@pace:/sys/bus/i2c/devices# ls -l /sys/bus/i2c/devices
> >> >> > > total 0
> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-0 ->
> >> >> > > ../../../devices/pci0000:00/INT33C2:00/i2c-0
> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-1 ->
> >> >> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1
> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-2 ->
> >> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-2
> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-3 ->
> >> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-3
> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-4 ->
> >> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-4
> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-5 ->
> >> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-5
> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-6 ->
> >> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-6
> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-7 ->
> >> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-7
> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-8 ->
> >> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-8
> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-DLL0652:00 ->
> >> >> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00
> >> >> >
> >> >> > This one is the touchpad.
> >> >> >
> >> >> > >
> >> >> > > root@pace:/sys/bus/i2c/devices# lsmod | grep i2c
> >> >> > > i2c_hid 10682 0
> >> >> > > hid 94632 3 i2c_hid,hid_generic,usbhid
> >> >> > > i2c_dev 5739 0
> >> >> > > i2c_designware_platform 3189 0
> >> >> > > i2c_i801 13732 0
> >> >> > > i2c_designware_core 6045 1 i2c_designware_platform
> >> >> > > i2c_algo_bit 5351 1 i915
> >> >> > > i2c_core 35216 11
> >> >> > > drm,i915,i2c_i801,i2c_dev,i2c_hid,i2c_designware_platform,drm_kms_helper,i2c_algo_bit,v4l2_common,synaptics_i2c,videodev
> >> >> > >
> >> >> > > - in the HID /sys directory, there are three devices. Two are related to
> >> >> > > a keyboard/mouse USB adapter. The third seems to be the linked to the
> >> >> > > touchpad:
> >> >> > >
> >> >> > > root@pace:/sys/bus/hid/devices# ls -l /sys/bus/hid/devices
> >> >> > > total 0
> >> >> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0003:13BA:0017.004F ->
> >> >> > > ../../../devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1.3/3-1.3:1.0/0003:13BA:0017.004F
> >> >> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0003:13BA:0017.0050 ->
> >> >> > > ../../../devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1.3/3-1.3:1.1/0003:13BA:0017.0050
> >> >> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0018:06CB:2985.0052 ->
> >> >> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00/0018:06CB:2985.0052
> >> >> >
> >> >> > This is the HID over I2C touchpad.
> >> >> >
> >> >> > >
> >> >> > > - when I load the kernel module i2c-hid.ko (with debug=1), I read this
> >> >> > > in dmesg:
> >> >> > >
> >> >> > > [146172.568787] i2c_hid i2c-DLL0652:00: Fetching the HID descriptor
> >> >> > > [146172.568791] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=20 00
> >> >> > > [146172.574806] i2c_hid i2c-DLL0652:00: HID Descriptor: 1e 00 00 01 85
> >> >> > > 00 21 00 24 00 20 00 25 00 17 00 22 00 23 00 cb 06 85 29 00 00 00 00 00
> >> >> > > 00
> >> >> > > [146172.574845] i2c_hid i2c-DLL0652:00: entering i2c_hid_parse
> >> >> > > [146172.574847] i2c_hid i2c-DLL0652:00: i2c_hid_hwreset
> >> >> > > [146172.574849] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
> >> >> > > [146172.574850] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
> >> >> > > 08
> >> >> > > [146172.575436] i2c_hid i2c-DLL0652:00: resetting...
> >> >> > > [146172.575442] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
> >> >> > > 01
> >> >> > > [146172.576113] i2c_hid i2c-DLL0652:00: __i2c_hid_command: waiting...
> >> >> > > [146172.577414] i2c_hid i2c-DLL0652:00: __i2c_hid_command: finished.
> >> >> > > [146172.577417] i2c_hid i2c-DLL0652:00: asking HID report descriptor
> >> >> > > [146172.577419] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=21 00
> >> >> > > [146172.581072] i2c_hid i2c-DLL0652:00: Report Descriptor: 05 01 09 02
> >> >> > > a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02
> >> >> > > 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 c0 c0 06 00
> >> >> > > ff 09 01 a1 01 85 09 09 02 15 00 26
> >> >> > > [146172.581126] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
> >> >> > > [146172.581129] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 01
> >> >> > > 08
> >> >> >
> >> >> > Everything is fine, this is the normal behavior while connecting a
> >> >> > i2c_hid device.
> >> >> > Normally, we should have then hid-rmi asking for more things and then
> >> >> > it will eventually set up the input device.
> >> >> >
> >> >> > >
> >> >> > > I am aware this information probably is not sufficient to draw any
> >> >> > > conclusions, but I'd appreciate to hear from someone who knows i2c_hid
> >> >> > > in detail what steps I should take next. For me the last command timed
> >> >> > > out or got stuck, but I haven't checked the code to see if it's the
> >> >> > > case. Anyway, if it was a timeout case, it should have something logged
> >> >> > > after the time expired.
> >> >> >
> >> >> > There is no answer from the device when a SET_POWER is emitted. So
> >> >> > this is not a timeout problem.
> >> >> >
> >> >> > If hid-rmi is compiled and is not taking the device, we have a big
> >> >> > problem, but for now, the symptoms look like you do not have this
> >> >> > driver compiled and hid-generic does not bind the device because it
> >> >> > waits for hid-rmi to handle it.
> >> >> >
> >> >>
> >> >> Well, I tried to insmod hid-rmi, and nothing special happened. Here is a
> >> >> dmesg output (relevant lines):
> >> >>
> >> >> [158885.774386] i2c_hid i2c-DLL0652:00: Fetching the HID descriptor
> >> >> [158885.774391] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=20 00
> >> >> [158885.785853] i2c_hid i2c-DLL0652:00: HID Descriptor: 1e 00 00 01 85
> >> >> 00 21 00 24 00 20 00 25 00 17 00 22 00 23 00 cb 06 85 29 00 00 00 00 00
> >> >> 00
> >> >> [158885.785924] i2c_hid i2c-DLL0652:00: entering i2c_hid_parse
> >> >> [158885.785926] i2c_hid i2c-DLL0652:00: i2c_hid_hwreset
> >> >> [158885.785927] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
> >> >> [158885.785928] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
> >> >> 08
> >> >> [158885.786494] i2c_hid i2c-DLL0652:00: resetting...
> >> >> [158885.786497] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
> >> >> 01
> >> >> [158885.787285] i2c_hid i2c-DLL0652:00: __i2c_hid_command: waiting...
> >> >> [158885.788496] i2c_hid i2c-DLL0652:00: __i2c_hid_command: finished.
> >> >> [158885.788499] i2c_hid i2c-DLL0652:00: asking HID report descriptor
> >> >> [158885.788501] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=21 00
> >> >> [158885.792194] i2c_hid i2c-DLL0652:00: Report Descriptor: 05 01 09 02
> >> >> a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02
> >> >> 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 c0 c0 06 00
> >> >> ff 09 01 a1 01 85 09 09 02 15 00 26
> >> >> [158885.792252] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
> >> >> [158885.792254] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 01
> >> >> 08
> >> >>
> >> >> I included lines like:
> >> >>
> >> >> printk(KERN_ERR "hid_rmi_probe(): called\n");
> >> >> printk(KERN_ERR "hid_rmi_probe(): ret=0\n");
> >> >>
> >> >> in the beginning and at the end of the routine rmi_probe(). These lines
> >> >> didn't
> >> >> appear in dmesg (those pictured above). I don't know if "probe" is to be
> >> >> called
> >> >> in this case, or not. Is there any other condition to make hid-rmi be
> >> >> "instantiated",
> >> >> I mean, other kmod to be loaded, or a special ioctl() coming to the hid
> >> >> from userland,
> >> >> or even echoing something to the "bind" file at /sys/...?
> >> >>
> >> >> Well, here's the "directory" /sys/bus/hid/drivers/hid-rmi:
> >> >>
> >> >> root@pace:/sys/bus/hid/drivers/hid-rmi# ls -l
> >> >> /sys/bus/hid/drivers/hid-rmi/
> >> >> total 0
> >> >> --w------- 1 root root 4096 Out 30 08:03 bind
> >> >> lrwxrwxrwx 1 root root 0 Out 30 08:03 module ->
> >> >> ../../../../module/hid_rmi
> >> >> --w------- 1 root root 4096 Out 30 08:03 new_id
> >> >> --w------- 1 root root 4096 Out 30 07:48 uevent
> >> >> --w------- 1 root root 4096 Out 30 08:03 unbind
> >> >>
> >> >> One thing I didn't still did is to reboot the machine. I found it was
> >> >> not the case,
> >> >> but this type of action use to work a lot in IT/IS, right? :-)
> >> >>
> >> >> > >
> >> >> > > I have some programming skills, and so if it's the case of applying any
> >> >> > > patches, or recompiling the kernel or any subsystem to make tests, I'm
> >> >> > > up to.
> >> >> >
> >> >> > Cool, thanks.
> >> >> >
> >> >> > Cheers,
> >> >> > Benjamin
> >> >>
> >> >> Many thanks,
> >> >>
> >> >> Luiz
^ permalink raw reply
* Re: About Dell Inspiron 3442 touchpad
From: Andrew Duggan @ 2014-11-06 2:03 UTC (permalink / raw)
To: Luiz Carlos Ramos; +Cc: Benjamin Tissoires, linux-input
In-Reply-To: <1415228967.3766590.187585929.0E0F9559@webmail.messagingengine.com>
On Wed, Nov 5, 2014 at 3:09 PM, Luiz Carlos Ramos
<lramos.prof@yahoo.com.br> wrote:
> Hi, Benjamin.
>
> I'm just using vanilla 3.16.3, no patches, with .config built from the
> one from Slackware stable (kernel 3.10.17). Anyway, I'll try to upgrade
> it to the lastest 3.16.
>
I pulled 3.16.3 from linux-stable and tested with a similar touchpad.
Everything worked as expected and the touchpad was assigned to
HID_GROUP_RMI and hid-rmi bound to it. The touchpad in this Dell
system looks like it should be similar to the touchpads in other Dell
systems which we have tested with hid-rmi. Like those other systems it
does also have a PS/2 interface. But, I don't think that this is
significant because i2c_hid is talking to the touchpad and is
successfully reading the report descriptor. That would not interfere
with the group assignment.
The only thing that I can think of is either the hid module is being
loaded with the ignore_special_drivers parameter set, or somehow an
entry got added to the hid_have_special_driver list. I would guess the
ignore_special_drivers parameter is set since there would not be an
entry for our VID in hid_have_special_driver in a vanilla kernel.
> As soon as I have something to inform, I'll keep you informed.
>
> Let me ask you one thing. What exactly is the "g" number in the device
> id? The comments at the file include/linux/hid.h suggest it is a kind of
> "group", but this "group" seems to be a special word in HID world, with
> a meaning different than the common sense.
>
The hid-core driver parses the HID report descriptor and assigns the
device a group based on the fields in the descriptor. Later, hid-core
uses the group to determine which subdriver to bind to the device and
the group number is included in modalias. Since, your touchpad has the
Synaptics vendor id hid_scan_report should be assigning it the group
HID_GROUP_RMI (g0100 in modalias since HID_GROUP_RMI is defined as
0x0100 in include/linux/hid.h). But, according to your modalias no
group is being assigned.
> Thanks again,
>
> Luiz
>
>
> On Wed, Nov 5, 2014, at 13:35, Benjamin Tissoires wrote:
>> Hi Luiz,
>>
>> On Wed, Nov 5, 2014 at 3:09 AM, Luiz Carlos Ramos
>> <lramos.prof@yahoo.com.br> wrote:
>> > Hi, Benjamin,
>> >
>> > Thanks again!
>> >
>> > Here it is an excerpt from $(udevadm info --export-db), I think the
>> > relevant one:
>> >
>> > P:
>> > /devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00/0018:06CB:2985.0005
>> > E:
>> > DEVPATH=/devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00/0018:06CB:2985.0005
>> > E: HID_ID=0018:000006CB:00002985
>> > E: HID_NAME=DLL0652:00 06CB:2985
>> > E: MODALIAS=hid:b0018g0000v000006CBp00002985
>> > E: SUBSYSTEM=hid
>> > E: UDEV_LOG=3
>> >
>> > Also, this is the same information, from
>> > /sys/bus/hid/devices/0018:06CB:2985.0005/modalias:
>> >
>> > root@giustizia:/sys/bus/hid/devices/0018:06CB:2985.0005# cat modalias
>> > hid:b0018g0000v000006CBp00002985
>>
>> So this is definitively wrong. g0000 means that your device has not
>> been scanned for the reports. However, there is no way a vanilla
>> kernel will not scan a Synaptics HID device.
>> My guess is that your arch kernel has some crappy patches which
>> prevent your touchpad to be bound to hid-rmi.
>>
>> Can you point out to the patches that has been added to the kernel
>> tree by your distribution? (I never managed to find this information
>> for arch)
>>
>> >
>> > And, finally, the device descriptor:
>> >
>> > root@giustizia:/sys/kernel/debug/hid/0018:06CB:2985.0005# cat rdesc
>> > 05 01 09 02 a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01
>> > 95 02 81 02 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06
>> > c0 c0 06 00 ff 09 01 a1 01 85 09 09 02 15 00 26 ff 00 75 08 95 14 91 02
>> > 85 0a 09 03 15 00 26 ff 00 75 08 95 14 91 02 85 0b 09 04 15 00 26 ff 00
>> > 75 08 95 1d 81 02 85 0c 09 05 15 00 26 ff 00 75 08 95 1d 81 02 85 0f 09
>> > 06 15 00 26 ff 00 75 08 95 01 b1 02 c0
>>
>> Thanks. So after injecting this in my boxes, (which are currently a
>> plain 3.16.3-200.fc20 from fedora 20, and a somewhat vanilla 3.18-rc3
>> + Jiri's upstream hid patches for 3.19), hid-rmi picks up the device.
>>
>> Please try to use a vanilla kernel and see if things are better.
>>
>> >
>> > Yesterday, after sending my reply, I figured out that vendor 06CB means
>> > Synaptics; am I right?
>>
>> You are right.
>>
>> >
>> > Also, again, if you'd like to me to code/patch/test anything, fell free
>> > to ask me.
>>
>> Well, please try a vanilla kernel (3.16.7 if you want to keep your
>> current config file, or a 3.17.2), and check if it does not magically
>> works.
>>
>> Cheers,
>> Benjamin
>>
>> >>
>> >> On Tue, Nov 4, 2014 at 8:11 PM, Luiz Carlos Ramos
>> >> <lramos.prof@yahoo.com.br> wrote:
>> >> > Hi, Benjamin,
>> >> >
>> >> > I think I just wrote the email below in a way it suggests everything had
>> >> > gone well and the issue was resolved... but unfortunately it's not the
>> >> > case. In my reply, I wrote some remarks in the text body in that email,
>> >> > but I think they weren't noticed at all given the first paragraph.
>> >>
>> >> Apologies for that. I read it, thought about it, and forgot it.
>> >>
>> >> >
>> >> > Only to recall, the problem is with a Dell Inspiron 3442, that has a
>> >> > touchpad which doesn't show up. It seems like it is a Synaptics I2C
>> >> > device. Your last advice was to insmod hid-rmi, which would hopefully
>> >> > make things go on after I2C basic device handshake. However, it didn't
>> >> > happen.
>> >>
>> >> Yeah, so given the state of the 3.16 kernel and your tests, the group
>> >> associated to the device is simply not the RMI one.
>> >> Which is weird.
>> >>
>> >> >
>> >> > I managed also to put some "printk" at the beginning and at the end of
>> >> > the "probe" function of hid-rmi, and it seems both were not called. I
>> >> > don't know if some kind of ioctl() should be issued, or if udevd should
>> >> > be configured some special way, but my feeling is that I am missing
>> >> > something really really important and obvious.
>> >> >
>> >>
>> >> No, I think your device is in a black hole. If the device declares
>> >> nothing special, it should be handled by hid-rmi. But given that it is
>> >> not the case, it might declares itself as a multitouch capable, and
>> >> should be handled by hid-multitouch. But if hid-multitouch does not
>> >> drive it properly, that is weird.
>> >>
>> >> Can you provide the modalias of the HID device: in "udevadm info
>> >> --export-db", look for the device attached to i2c_hid, and find its
>> >> son which has a modalias in the form of
>> >> MODALIAS=hid:b0018gXXXXv000006cbp00002985. I am interested in what is
>> >> after the "g".
>> >>
>> >> Also, can you export the content of the report descriptor of your
>> >> device. You can find it in
>> >> /sys/kernel/debug/hid/0018\:06CB\:2985.*/rdesc assuming you have
>> >> debugfs mounted under /sys/kernel/debug
>> >>
>> >> Cheers,
>> >> Benjamin
>> >>
>> >> >
>> >> >
>> >> > On Thu, Oct 30, 2014, at 08:06, Luiz Carlos Ramos wrote:
>> >> >> Hi Benjamin,
>> >> >>
>> >> >> Thanks for the assistance and quick reply.
>> >> >>
>> >> >> On Tue, Oct 28, 2014, at 23:40, Benjamin Tissoires wrote:
>> >> >> > Hi Luiz,
>> >> >> >
>> >> >> > On Tue, Oct 28, 2014 at 9:00 PM, Luiz Carlos Ramos
>> >> >> > <lramos.prof@yahoo.com.br> wrote:
>> >> >> > > Hello,
>> >> >> > >
>> >> >> > > I'm trying to make a touchpad from a Dell Inspiron I14-3442 laptop work.
>> >> >> > >
>> >> >> > > Some details:
>> >> >> > >
>> >> >> > > - I'm using plain Slackware64 14.1, but raised the kernel to 3.16.3 for
>> >> >> > > tests
>> >> >> > >
>> >> >> > > - xinput ignores the touchpad; it shows only a USB mouse/keyboard
>> >> >> > > adapter and the laptop's keyboard:
>> >> >> > >
>> >> >> > > root@pace:/sys/bus/hid/devices# xinput
>> >> >> > > Virtual core pointer id=2 [master pointer
>> >> >> > > (3)]
>> >> >> > > Virtual core XTEST pointer id=4 [slave
>> >> >> > > pointer (2)]
>> >> >> > > Generic USB K/B id=12 [slave
>> >> >> > > pointer (2)]
>> >> >> > > Virtual core keyboard id=3 [master
>> >> >> > > keyboard (2)]
>> >> >> > > Virtual core XTEST keyboard id=5 [slave
>> >> >> > > keyboard (3)]
>> >> >> > > Power Button id=6 [slave
>> >> >> > > keyboard (3)]
>> >> >> > > Video Bus id=7 [slave
>> >> >> > > keyboard (3)]
>> >> >> > > Power Button id=9 [slave
>> >> >> > > keyboard (3)]
>> >> >> > > Sleep Button id=10 [slave
>> >> >> > > keyboard (3)]
>> >> >> > > Integrated_Webcam_HD id=13 [slave
>> >> >> > > keyboard (3)]
>> >> >> > > AT Translated Set 2 keyboard id=14 [slave
>> >> >> > > keyboard (3)]
>> >> >> > > Dell WMI hotkeys id=15 [slave
>> >> >> > > keyboard (3)]
>> >> >> > > Video Bus id=8 [slave
>> >> >> > > keyboard (3)]
>> >> >> > > Generic USB K/B id=11 [slave
>> >> >> > > keyboard (3)]
>> >> >> > >
>> >> >> > > - it seems Ubuntu certified this machine (check
>> >> >> > > http://www.ubuntu.com/certification/hardware/201402-14674/components/),
>> >> >> > > but it assumes the touchpad is PS/2. I haven't found it as a PS/2 thing,
>> >> >> > > even loading psmouse.ko, or doing other tricks
>> >> >> > >
>> >> >> > > - some articles lists some tips for making it work (like
>> >> >> > > http://askubuntu.com/questions/134627/how-do-i-get-the-touchpad-settings-working-on-a-dell-xps-13-ultrabook,
>> >> >> > > or https://bugzilla.redhat.com/show_bug.cgi?id=1048314#c2), but I read
>> >> >> > > them carefully, made some tests, and they didn't work. One article says
>> >> >> > > I could blacklist i2c_hid or like in order to make the bring up the
>> >> >> > > touchpad in PS/2 mode, but I couldn't succeed doing so
>> >> >> > >
>> >> >> > > - at Dell's site, it is offered a driver for Ubuntu 12.04, but it's
>> >> >> > > almost obsolete. It seems to be just merged into the kernel
>> >> >> > >
>> >> >> > > - from Windows 8.1, which runs in the same machine (dual boot), I
>> >> >> > > concluded the proper way of making it work is to use HID over I2C. It
>> >> >> > > seems that there are two components loaded; one I2CHID, and a Synaptics
>> >> >> > > HID. This makes me hint it may be a Synaptics device
>> >> >> >
>> >> >> > Well, if this is a Synaptics HID over I2C device, it should be handled
>> >> >> > by hid-rmi in recent kernels (or hid-multitouch but I would say
>> >> >> > hid-rmi in your case).
>> >> >> > Is the hid-rmi module loaded? Can we get a dmesg output so we can see
>> >> >> > if there is any problem?
>> >> >> >
>> >> >> > >
>> >> >> > > - it seems there are two I2C busses in the machine. One is related to
>> >> >> > > the Intel video graphics subsystem (i801). The other seems to be linked
>> >> >> > > to the touchpad (i2c_designware_platform). I'm not sure that latest kmod
>> >> >> > > (i2c_designware_platform) is the right one to be used in this case, but
>> >> >> > > it appears to be working:
>> >> >> >
>> >> >> > Yeah, i2c_designware_platform is pretty common for Haswell processors.
>> >> >> >
>> >> >> > >
>> >> >> > > root@pace:/sys/bus/i2c/devices# ls -l /sys/bus/i2c/devices
>> >> >> > > total 0
>> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-0 ->
>> >> >> > > ../../../devices/pci0000:00/INT33C2:00/i2c-0
>> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-1 ->
>> >> >> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1
>> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-2 ->
>> >> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-2
>> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-3 ->
>> >> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-3
>> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-4 ->
>> >> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-4
>> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-5 ->
>> >> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-5
>> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-6 ->
>> >> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-6
>> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-7 ->
>> >> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-7
>> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-8 ->
>> >> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-8
>> >> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-DLL0652:00 ->
>> >> >> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00
>> >> >> >
>> >> >> > This one is the touchpad.
>> >> >> >
>> >> >> > >
>> >> >> > > root@pace:/sys/bus/i2c/devices# lsmod | grep i2c
>> >> >> > > i2c_hid 10682 0
>> >> >> > > hid 94632 3 i2c_hid,hid_generic,usbhid
>> >> >> > > i2c_dev 5739 0
>> >> >> > > i2c_designware_platform 3189 0
>> >> >> > > i2c_i801 13732 0
>> >> >> > > i2c_designware_core 6045 1 i2c_designware_platform
>> >> >> > > i2c_algo_bit 5351 1 i915
>> >> >> > > i2c_core 35216 11
>> >> >> > > drm,i915,i2c_i801,i2c_dev,i2c_hid,i2c_designware_platform,drm_kms_helper,i2c_algo_bit,v4l2_common,synaptics_i2c,videodev
>> >> >> > >
>> >> >> > > - in the HID /sys directory, there are three devices. Two are related to
>> >> >> > > a keyboard/mouse USB adapter. The third seems to be the linked to the
>> >> >> > > touchpad:
>> >> >> > >
>> >> >> > > root@pace:/sys/bus/hid/devices# ls -l /sys/bus/hid/devices
>> >> >> > > total 0
>> >> >> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0003:13BA:0017.004F ->
>> >> >> > > ../../../devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1.3/3-1.3:1.0/0003:13BA:0017.004F
>> >> >> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0003:13BA:0017.0050 ->
>> >> >> > > ../../../devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1.3/3-1.3:1.1/0003:13BA:0017.0050
>> >> >> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0018:06CB:2985.0052 ->
>> >> >> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00/0018:06CB:2985.0052
>> >> >> >
>> >> >> > This is the HID over I2C touchpad.
>> >> >> >
>> >> >> > >
>> >> >> > > - when I load the kernel module i2c-hid.ko (with debug=1), I read this
>> >> >> > > in dmesg:
>> >> >> > >
>> >> >> > > [146172.568787] i2c_hid i2c-DLL0652:00: Fetching the HID descriptor
>> >> >> > > [146172.568791] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=20 00
>> >> >> > > [146172.574806] i2c_hid i2c-DLL0652:00: HID Descriptor: 1e 00 00 01 85
>> >> >> > > 00 21 00 24 00 20 00 25 00 17 00 22 00 23 00 cb 06 85 29 00 00 00 00 00
>> >> >> > > 00
>> >> >> > > [146172.574845] i2c_hid i2c-DLL0652:00: entering i2c_hid_parse
>> >> >> > > [146172.574847] i2c_hid i2c-DLL0652:00: i2c_hid_hwreset
>> >> >> > > [146172.574849] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
>> >> >> > > [146172.574850] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
>> >> >> > > 08
>> >> >> > > [146172.575436] i2c_hid i2c-DLL0652:00: resetting...
>> >> >> > > [146172.575442] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
>> >> >> > > 01
>> >> >> > > [146172.576113] i2c_hid i2c-DLL0652:00: __i2c_hid_command: waiting...
>> >> >> > > [146172.577414] i2c_hid i2c-DLL0652:00: __i2c_hid_command: finished.
>> >> >> > > [146172.577417] i2c_hid i2c-DLL0652:00: asking HID report descriptor
>> >> >> > > [146172.577419] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=21 00
>> >> >> > > [146172.581072] i2c_hid i2c-DLL0652:00: Report Descriptor: 05 01 09 02
>> >> >> > > a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02
>> >> >> > > 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 c0 c0 06 00
>> >> >> > > ff 09 01 a1 01 85 09 09 02 15 00 26
>> >> >> > > [146172.581126] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
>> >> >> > > [146172.581129] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 01
>> >> >> > > 08
>> >> >> >
>> >> >> > Everything is fine, this is the normal behavior while connecting a
>> >> >> > i2c_hid device.
>> >> >> > Normally, we should have then hid-rmi asking for more things and then
>> >> >> > it will eventually set up the input device.
>> >> >> >
>> >> >> > >
>> >> >> > > I am aware this information probably is not sufficient to draw any
>> >> >> > > conclusions, but I'd appreciate to hear from someone who knows i2c_hid
>> >> >> > > in detail what steps I should take next. For me the last command timed
>> >> >> > > out or got stuck, but I haven't checked the code to see if it's the
>> >> >> > > case. Anyway, if it was a timeout case, it should have something logged
>> >> >> > > after the time expired.
>> >> >> >
>> >> >> > There is no answer from the device when a SET_POWER is emitted. So
>> >> >> > this is not a timeout problem.
>> >> >> >
>> >> >> > If hid-rmi is compiled and is not taking the device, we have a big
>> >> >> > problem, but for now, the symptoms look like you do not have this
>> >> >> > driver compiled and hid-generic does not bind the device because it
>> >> >> > waits for hid-rmi to handle it.
>> >> >> >
>> >> >>
>> >> >> Well, I tried to insmod hid-rmi, and nothing special happened. Here is a
>> >> >> dmesg output (relevant lines):
>> >> >>
>> >> >> [158885.774386] i2c_hid i2c-DLL0652:00: Fetching the HID descriptor
>> >> >> [158885.774391] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=20 00
>> >> >> [158885.785853] i2c_hid i2c-DLL0652:00: HID Descriptor: 1e 00 00 01 85
>> >> >> 00 21 00 24 00 20 00 25 00 17 00 22 00 23 00 cb 06 85 29 00 00 00 00 00
>> >> >> 00
>> >> >> [158885.785924] i2c_hid i2c-DLL0652:00: entering i2c_hid_parse
>> >> >> [158885.785926] i2c_hid i2c-DLL0652:00: i2c_hid_hwreset
>> >> >> [158885.785927] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
>> >> >> [158885.785928] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
>> >> >> 08
>> >> >> [158885.786494] i2c_hid i2c-DLL0652:00: resetting...
>> >> >> [158885.786497] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
>> >> >> 01
>> >> >> [158885.787285] i2c_hid i2c-DLL0652:00: __i2c_hid_command: waiting...
>> >> >> [158885.788496] i2c_hid i2c-DLL0652:00: __i2c_hid_command: finished.
>> >> >> [158885.788499] i2c_hid i2c-DLL0652:00: asking HID report descriptor
>> >> >> [158885.788501] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=21 00
>> >> >> [158885.792194] i2c_hid i2c-DLL0652:00: Report Descriptor: 05 01 09 02
>> >> >> a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02
>> >> >> 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 c0 c0 06 00
>> >> >> ff 09 01 a1 01 85 09 09 02 15 00 26
>> >> >> [158885.792252] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
>> >> >> [158885.792254] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 01
>> >> >> 08
>> >> >>
>> >> >> I included lines like:
>> >> >>
>> >> >> printk(KERN_ERR "hid_rmi_probe(): called\n");
>> >> >> printk(KERN_ERR "hid_rmi_probe(): ret=0\n");
>> >> >>
>> >> >> in the beginning and at the end of the routine rmi_probe(). These lines
>> >> >> didn't
>> >> >> appear in dmesg (those pictured above). I don't know if "probe" is to be
>> >> >> called
>> >> >> in this case, or not. Is there any other condition to make hid-rmi be
>> >> >> "instantiated",
>> >> >> I mean, other kmod to be loaded, or a special ioctl() coming to the hid
>> >> >> from userland,
>> >> >> or even echoing something to the "bind" file at /sys/...?
>> >> >>
>> >> >> Well, here's the "directory" /sys/bus/hid/drivers/hid-rmi:
>> >> >>
>> >> >> root@pace:/sys/bus/hid/drivers/hid-rmi# ls -l
>> >> >> /sys/bus/hid/drivers/hid-rmi/
>> >> >> total 0
>> >> >> --w------- 1 root root 4096 Out 30 08:03 bind
>> >> >> lrwxrwxrwx 1 root root 0 Out 30 08:03 module ->
>> >> >> ../../../../module/hid_rmi
>> >> >> --w------- 1 root root 4096 Out 30 08:03 new_id
>> >> >> --w------- 1 root root 4096 Out 30 07:48 uevent
>> >> >> --w------- 1 root root 4096 Out 30 08:03 unbind
>> >> >>
>> >> >> One thing I didn't still did is to reboot the machine. I found it was
>> >> >> not the case,
>> >> >> but this type of action use to work a lot in IT/IS, right? :-)
>> >> >>
>> >> >> > >
>> >> >> > > I have some programming skills, and so if it's the case of applying any
>> >> >> > > patches, or recompiling the kernel or any subsystem to make tests, I'm
>> >> >> > > up to.
>> >> >> >
>> >> >> > Cool, thanks.
>> >> >> >
>> >> >> > Cheers,
>> >> >> > Benjamin
>> >> >>
>> >> >> Many thanks,
>> >> >>
>> >> >> Luiz
^ permalink raw reply
* Problems with Roccat Ryos in 3.16 & 3.17
From: Alexander Waldemar Ahjolinna @ 2014-11-06 2:51 UTC (permalink / raw)
To: linux-input@vger.kernel.org
In-Reply-To: <1415234084.964.YahooMailNeo@web141501.mail.bf1.yahoo.com>
Dear kernel input developers,
I noticed suddenly that I can't use my Roccat Ryos PRO MK on my
desktop, I mean nothing works. I notice that the problem is with USB3, there is no problem with USB2.
Ryos uses 2x usb2 not usb3.
I have been using 3.16.4 and I tired out 3.17.2.. on chakraOS but I still have the same problem.
I even tried out opensuse 13.2, same thing.
Motherboard is AsRock Z68 Extreme4 Gen3, with BIOS P1.20 12/06/2011
Best regards,
Alexander W. Ahjolinna
Some dmesg output : http://pastebin.com/HiVUgWfR (I switched from USB3 to USB2)
^ permalink raw reply
* Re: [PATCH 02/15] GPIO: port LoCoMo gpio support from old driver
From: Mark Brown @ 2014-11-06 6:03 UTC (permalink / raw)
To: Dmitry Eremin-Solenikov
Cc: Linus Walleij, linux-arm-kernel@lists.infradead.org,
linux-gpio@vger.kernel.org, Linux Input,
linux-leds@vger.kernel.org, linux-spi@vger.kernel.org,
linux-fbdev@vger.kernel.org, alsa-devel@alsa-project.org,
Andrea Adami, Russell King, Daniel Mack, Haojian Zhuang,
Robert Jarzmik, Alexandre Courbot, Dmitry Torokhov, Bryan Wu,
Richard Purdie, Samuel Ortiz, Lee Jones
In-Reply-To: <CALT56yO9f8wzaArnmfQSDzCM3S+2oT+62anH5kbFY3WdEt_HZg@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 927 bytes --]
On Thu, Nov 06, 2014 at 01:33:24AM +0400, Dmitry Eremin-Solenikov wrote:
> 2014-11-03 16:43 GMT+03:00 Linus Walleij <linus.walleij@linaro.org>:
> > Yes that's the point: if you use regmap mmio you get the RMW-locking
> > for free, with the regmap implementation.
> Just to be more concrete. Currently locomo_gpio_ack_irq() function uses
> one lock and one unlock for doing 3 consecutive RMW I I convert locomo
> to regmap, will that be 3 lock/unlock calls or still one? (Or maybe I'm
> trying to be over-protective here and adding more lock/unlock cycles
> won't matter that much?)
You'll get three lock/unlocks, we could add an interface for bulk
updates under one lock if it's important though.
> Next question: if I have to export regmap to several subdrivers, is it better
> to have one big regmap or to have one-map-per-driver approach?
One regmap for the physical register map which is shared between all the
users.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]
^ permalink raw reply
* Re: [PATCH 0/4] Touchscreen performance related fixes
From: Vignesh R @ 2014-11-06 7:42 UTC (permalink / raw)
To: Richard Cochran
Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
Benoit Cousson, Tony Lindgren, Russell King, Jonathan Cameron,
Dmitry Torokhov, devicetree-u79uwXL29TY76Z2rM5mHXA,
Lars-Peter Clausen, Samuel Ortiz, Jan Kardell,
linux-iio-u79uwXL29TY76Z2rM5mHXA, Sebastian Andrzej Siewior,
linux-input-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA, Felipe Balbi, Paul Gortmaker,
Peter Meerwald, Hartmut Knaack, linux-omap-u79uwXL29TY76Z2rM5mHXA,
Lee Jones
In-Reply-To: <20141103180920.GA20779-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
On Monday 03 November 2014 11:39 PM, Richard Cochran wrote:
> On Mon, Oct 27, 2014 at 04:38:27PM +0530, Vignesh R wrote:
>> This series of patches fix TSC defects related to lag in touchscreen
>> performance and cursor jump at touch release. The lag was result of
>> udelay in TSC interrupt handler. Cursor jump due to false pen-up event.
>> The patches implement Advisory 1.0.31 in silicon errata of am335x-evm
>> to avoid false pen-up events and remove udelay.
>
> That advisory has two workarounds. You have chosen the second one?
Work around one. Hence 5 wire design is not broken.
>
> The text of the second workaround says it only works on 4 wire setups,
> so I wonder how 5 wire designs will be affected.
>
>> The advisory says to use
>> steps 1 to 4 for ADC and 5 to 16 for TSC (assuming 4 wire TSC and 4 channel
>> ADC).
>
> No, it doesn't say that. (sprz360f.pdf)
The pen up event detection happens immediately after charge step. Hence,
interchanging ADC and TSC steps makes sure that sampling of touch
co-ordinates and pen events are done one after the other. This
workaround was suggested by internal hardware folks. Earlier ADC steps
intervened between sampling of co-ordinates and pen event detection
which is not desirable.
>
>> Further the X co-ordinate must be the last one to be sampled just
>> before charge step. The first two patches implement the required changes.
>
> FWIW, I implemented the first workaround and removed the udelay not
> too long ago. Like Sebastian, I saw the TSC unit hang after about
> 50000 interrupts when running with the workaround.
>
> Did you test you patch for very long?
Yes, I tested for about 200000 interrupts and I didn't see any hang.
This patch series does not just implement workaround but also does some
minor changes, such as interchanging ADC and TSC steps etc, which makes
TSC driver more robust. Let me know if you encounter any issues with my
patch series.
Regards
Vignesh
>
> Thanks,
> Richard
>
^ permalink raw reply
* Hello
From: mohdafattah1964001@hotmail.com @ 2014-11-06 8:49 UTC (permalink / raw)
Did you receive my email?
^ permalink raw reply
* PROBLEM: Lenovo ThinkPad X1 Carbon Wireless switch key doesn't work
From: Sergei Serdyuk @ 2014-11-06 13:07 UTC (permalink / raw)
To: linux-input
[1] [Lenovo ThinkPad X1 Carbon 20A8] Wireless switch key doesn't work
[2] On my X1 Carbon laptop the wireless switch key doesn't work. It
appears that the code in charge of handling the X1 Carbon adaptive
keyboard is here and rfkill handling is there:
https://kernel.googlesource.com/pub/scm/linux/kernel/git/jic23/iio/+/refs/heads/togreg/drivers/platform/x86/thinkpad_acpi.c
Pressing the key generates no events (see below) and thus has no
effect. So, it's either my stock kernel doesn't have it, or something
else is broken. Nothing ever fires when I press all extra buttons
including the wireless one.
This may be not specific to the adaptive keyboard too. While I was
googling for a solution, I saw similar complaints for other Thinkpad
models.
ls /dev/input/by-path/platform-thinkpad_acpi-event -lh
lrwxrwxrwx 1 root root 9 Nov 2 19:45
/dev/input/by-path/platform-thinkpad_acpi-event -> ../event7
input-events 7
/dev/input/event7
bustype : BUS_HOST
vendor : 0x17aa
product : 0x5054
version : 16641
name : "ThinkPad Extra Buttons"
phys : "thinkpad_acpi/input0"
bits ev : EV_SYN EV_KEY EV_MSC EV_SW
waiting for events
timeout, quitting
# acpi events fire for all extra buttons except the wireless one!
root@x1:~# acpi_listen -t 100
ibm/hotkey LEN0068:00 00000080 00001105
ibm/hotkey LEN0068:00 00000080 00001106
ibm/hotkey LEN0068:00 00000080 00001108
ibm/hotkey LEN0068:00 00000080 0000110a
ibm/hotkey LEN0068:00 00000080 00001101
ibm/hotkey LEN0068:00 00000080 00001101
ibm/hotkey LEN0068:00 00000080 00001101
video/switchmode VMOD 00000080 00000000
ibm/hotkey LEN0068:00 00000080 0000110e
So, since nothing fires on both channels, it seems I can't manually
bind the button to rfkill either.
[3]
[4] $cat /proc/version
Linux version 3.18.0-031800rc3-generic (apw@tangerine) (gcc version
4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #201411022335 SMP Sun Nov 2
23:36:52 UTC 2014
[5]
[6]
[7] $lsb_release -rd
Description: Ubuntu 14.10
Release: 14.10
[7.1] $/usr/src/linux-headers-3.18.0-031800rc3/scripts/ver_linux
If some fields are empty or look unusual you may have an old version.
Compare to the current minimal requirements in Documentation/Changes.
Linux x1 3.18.0-031800rc3-generic #201411022335 SMP Sun Nov 2 23:36:52
UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Gnu C 4.9.1
Gnu make 4.0
binutils 2.24.90.20141014
util-linux 2.25.1
mount debug
module-init-tools 18
e2fsprogs 1.42.10
pcmciautils 018
PPP 2.4.5
Linux C Library 2.19
Dynamic linker (ldd) 2.19
Procps 3.3.9
Net-tools 1.60
Kbd 1.15.5
Sh-utils 8.23
wireless-tools 30
Modules Loaded ctr ccm acpi_call uvcvideo videobuf2_vmalloc
videobuf2_memops videobuf2_core v4l2_common videodev media
hid_multitouch btusb arc4 iwlmvm mac80211 intel_rapl
x86_pkg_temp_thermal intel_powerclamp coretemp iwlwifi kvm rfcomm
joydev bnep serio_raw bluetooth cfg80211 snd_hda_codec_hdmi mei_me
lpc_ich snd_hda_codec_realtek snd_hda_codec_generic mei shpchp
thinkpad_acpi snd_hda_intel snd_hda_controller i2c_designware_platform
i2c_designware_core nvram snd_hda_codec snd_hwdep snd_pcm mac_hid
snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq snd_seq_device
snd_timer parport_pc snd ppdev soundcore nls_iso8859_1 lp parport
dm_crypt usbhid hid crct10dif_pclmul crc32_pclmul ghash_clmulni_intel
i915 aesni_intel aes_x86_64 lrw gf128mul e1000e glue_helper
i2c_algo_bit ablk_helper ahci cryptd libahci ptp pps_core psmouse
drm_kms_helper drm wmi video
[7.2] $cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 69
model name : Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
stepping : 1
microcode : 0x1c
cpu MHz : 1299.949
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs :
bogomips : 4589.44
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 69
model name : Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
stepping : 1
microcode : 0x1c
cpu MHz : 974.625
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs :
bogomips : 4589.44
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 69
model name : Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
stepping : 1
microcode : 0x1c
cpu MHz : 1299.769
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 2
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs :
bogomips : 4589.44
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 69
model name : Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
stepping : 1
microcode : 0x1c
cpu MHz : 1359.425
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 2
apicid : 3
initial apicid : 3
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs :
bogomips : 4589.44
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
[7.3] $cat /proc/modules
ctr 13193 3 - Live 0xffffffffc08b0000
ccm 17856 3 - Live 0xffffffffc08aa000
acpi_call 12714 0 - Live 0xffffffffc08a5000 (OE)
uvcvideo 86723 0 - Live 0xffffffffc0a4c000
videobuf2_vmalloc 13216 1 uvcvideo, Live 0xffffffffc0885000
videobuf2_memops 13362 1 videobuf2_vmalloc, Live 0xffffffffc088a000
videobuf2_core 51547 1 uvcvideo, Live 0xffffffffc0897000
v4l2_common 15715 1 videobuf2_core, Live 0xffffffffc086a000
videodev 163831 3 uvcvideo,videobuf2_core,v4l2_common, Live 0xffffffffc09e5000
media 22008 2 uvcvideo,videodev, Live 0xffffffffc087e000
hid_multitouch 17657 0 - Live 0xffffffffc0891000
btusb 32691 0 - Live 0xffffffffc0875000
arc4 12573 2 - Live 0xffffffffc07d3000
iwlmvm 254598 0 - Live 0xffffffffc09a5000
mac80211 697143 1 iwlmvm, Live 0xffffffffc0a84000
intel_rapl 19196 0 - Live 0xffffffffc086f000
x86_pkg_temp_thermal 14312 0 - Live 0xffffffffc07db000
intel_powerclamp 19099 0 - Live 0xffffffffc0864000
coretemp 13638 0 - Live 0xffffffffc0746000
iwlwifi 193774 1 iwlmvm, Live 0xffffffffc0a1b000
kvm 475233 0 - Live 0xffffffffc092f000
rfcomm 75066 0 - Live 0xffffffffc07bf000
joydev 17587 0 - Live 0xffffffffc07a9000
bnep 23980 2 - Live 0xffffffffc074b000
serio_raw 13483 0 - Live 0xffffffffc0729000
bluetooth 486890 11 btusb,rfcomm,bnep, Live 0xffffffffc08b7000
cfg80211 520257 3 iwlmvm,mac80211,iwlwifi, Live 0xffffffffc07e3000
snd_hda_codec_hdmi 52670 1 - Live 0xffffffffc07b1000
mei_me 19565 0 - Live 0xffffffffc0776000
lpc_ich 21176 0 - Live 0xffffffffc06d8000
snd_hda_codec_realtek 76099 1 - Live 0xffffffffc0791000
snd_hda_codec_generic 69995 1 snd_hda_codec_realtek, Live 0xffffffffc077e000
mei 88473 1 mei_me, Live 0xffffffffc075f000
shpchp 37216 0 - Live 0xffffffffc0754000
thinkpad_acpi 82101 1 - Live 0xffffffffc0730000
snd_hda_intel 30783 5 - Live 0xffffffffc0720000
snd_hda_controller 32234 1 snd_hda_intel, Live 0xffffffffc070f000
i2c_designware_platform 13025 0 - Live 0xffffffffc070a000
i2c_designware_core 14990 1 i2c_designware_platform, Live 0xffffffffc071b000
nvram 14462 1 thinkpad_acpi, Live 0xffffffffc06d3000
snd_hda_codec 144641 5
snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel,snd_hda_controller,
Live 0xffffffffc06e5000
snd_hwdep 17709 1 snd_hda_codec, Live 0xffffffffc06df000
snd_pcm 106273 4
snd_hda_codec_hdmi,snd_hda_intel,snd_hda_controller,snd_hda_codec,
Live 0xffffffffc06b8000
mac_hid 13275 0 - Live 0xffffffffc05b5000
snd_seq_midi 13564 0 - Live 0xffffffffc05b0000
snd_seq_midi_event 14899 1 snd_seq_midi, Live 0xffffffffc059f000
snd_rawmidi 31197 1 snd_seq_midi, Live 0xffffffffc05a7000
snd_seq 63540 2 snd_seq_midi,snd_seq_midi_event, Live 0xffffffffc058e000
snd_seq_device 14497 3 snd_seq_midi,snd_rawmidi,snd_seq, Live 0xffffffffc048d000
snd_timer 30118 2 snd_pcm,snd_seq, Live 0xffffffffc057a000
parport_pc 32909 0 - Live 0xffffffffc0584000
snd 84025 22 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,thinkpad_acpi,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_seq_device,snd_timer,
Live 0xffffffffc0564000
ppdev 17711 0 - Live 0xffffffffc055e000
soundcore 15091 2 snd_hda_codec,snd, Live 0xffffffffc0528000
nls_iso8859_1 12713 1 - Live 0xffffffffc04e8000
lp 17799 0 - Live 0xffffffffc0522000
parport 42481 3 parport_pc,ppdev,lp, Live 0xffffffffc054e000
dm_crypt 23456 1 - Live 0xffffffffc0486000
usbhid 53155 0 - Live 0xffffffffc04da000
hid 110572 2 hid_multitouch,usbhid, Live 0xffffffffc0532000
crct10dif_pclmul 14268 0 - Live 0xffffffffc051d000
crc32_pclmul 13180 0 - Live 0xffffffffc052d000
ghash_clmulni_intel 13230 0 - Live 0xffffffffc0433000
i915 1031913 6 - Live 0xffffffffc05bb000
aesni_intel 169686 8 - Live 0xffffffffc04ef000
aes_x86_64 17131 1 aesni_intel, Live 0xffffffffc0497000
lrw 13323 1 aesni_intel, Live 0xffffffffc042e000
gf128mul 14951 1 lrw, Live 0xffffffffc0481000
e1000e 230020 0 - Live 0xffffffffc04a0000
glue_helper 14095 1 aesni_intel, Live 0xffffffffc03cf000
i2c_algo_bit 13564 1 i915, Live 0xffffffffc0492000
ablk_helper 13597 1 aesni_intel, Live 0xffffffffc03b6000
ahci 34220 3 - Live 0xffffffffc0439000
cryptd 20531 4 ghash_clmulni_intel,aesni_intel,ablk_helper, Live
0xffffffffc03c8000
libahci 32446 1 ahci, Live 0xffffffffc0425000
ptp 19534 1 e1000e, Live 0xffffffffc03c2000
pps_core 19381 1 ptp, Live 0xffffffffc0443000
psmouse 118117 0 - Live 0xffffffffc0463000
drm_kms_helper 99802 1 i915, Live 0xffffffffc0449000
drm 323675 5 i915,drm_kms_helper, Live 0xffffffffc03d4000
wmi 19379 0 - Live 0xffffffffc03bc000
video 20649 1 i915, Live 0xffffffffc03af000
[7.4] $cat /proc/ioports
0000-0cf7 : PCI Bus 0000:00
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-0060 : keyboard
0061-0061 : PNP0800:00
0062-0062 : PNP0C09:00
0062-0062 : EC data
0064-0064 : keyboard
0066-0066 : PNP0C09:00
0066-0066 : EC cmd
0070-0071 : rtc0
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
00f0-00f0 : PNP0C04:00
0800-087f : pnp 00:01
0880-08ff : pnp 00:01
0900-097f : pnp 00:01
0980-09ff : pnp 00:01
0a00-0a7f : pnp 00:01
0a80-0aff : pnp 00:01
0b00-0b7f : pnp 00:01
0b80-0bff : pnp 00:01
0cf8-0cff : PCI conf1
0d00-ffff : PCI Bus 0000:00
15e0-15ef : pnp 00:01
1600-167f : pnp 00:01
1640-165f : pnp 00:01
1800-1803 : ACPI PM1a_EVT_BLK
1804-1805 : ACPI PM1a_CNT_BLK
1808-180b : ACPI PM_TMR
1810-1815 : ACPI CPU throttle
1830-1833 : iTCO_wdt
1850-1850 : ACPI PM2_CNT_BLK
1860-187f : iTCO_wdt
1880-189f : ACPI GPE0_BLK
2000-2fff : PCI Bus 0000:02
3000-303f : 0000:00:02.0
3060-307f : 0000:00:1f.2
3060-307f : ahci
3080-309f : 0000:00:19.0
30a0-30a7 : 0000:00:1f.2
30a0-30a7 : ahci
30a8-30af : 0000:00:1f.2
30a8-30af : ahci
30b0-30b3 : 0000:00:1f.2
30b0-30b3 : ahci
30b4-30b7 : 0000:00:1f.2
30b4-30b7 : ahci
efa0-efbf : 0000:00:1f.3
$cat /proc/iomem
00000000-00000fff : reserved
00001000-00057fff : System RAM
00058000-00058fff : reserved
00059000-0009bfff : System RAM
0009c000-0009cfff : reserved
0009d000-0009dfff : System RAM
0009e000-000bffff : reserved
000a0000-000bffff : PCI Bus 0000:00
000c0000-000c3fff : PCI Bus 0000:00
000c4000-000c7fff : PCI Bus 0000:00
000c8000-000cbfff : PCI Bus 0000:00
000cc000-000cffff : PCI Bus 0000:00
000d0000-000d3fff : PCI Bus 0000:00
000d4000-000d7fff : PCI Bus 0000:00
000d8000-000dbfff : PCI Bus 0000:00
000dc000-000dffff : PCI Bus 0000:00
000e0000-000e3fff : PCI Bus 0000:00
000e4000-000e7fff : PCI Bus 0000:00
000e8000-000ebfff : PCI Bus 0000:00
000ec000-000effff : PCI Bus 0000:00
000f0000-000fffff : System ROM
00100000-b1851fff : System RAM
02000000-027ae357 : Kernel code
027ae358-02d1997f : Kernel data
02e80000-02fc8fff : Kernel bss
b1852000-b1a53fff : reserved
b1a54000-bbf6cfff : System RAM
bbf6d000-bc16cfff : reserved
bc16d000-bcd3efff : reserved
bcd3f000-bce7efff : ACPI Non-volatile Storage
bce7f000-bcefefff : ACPI Tables
bceff000-bcefffff : System RAM
bcf00000-febfffff : reserved
bda00000-bf9fffff : Graphics Stolen Memory
bfa00000-febfffff : PCI Bus 0000:00
bfb00000-bfcfffff : PCI Bus 0000:02
bfd00000-bfefffff : PCI Bus 0000:02
c0000000-dfffffff : 0000:00:02.0
e0000000-e03fffff : 0000:00:02.0
e0400000-e04fffff : PCI Bus 0000:03
e0400000-e0401fff : 0000:03:00.0
e0400000-e0401fff : iwlwifi
e0500000-e051ffff : 0000:00:19.0
e0500000-e051ffff : e1000e
e0520000-e052ffff : 0000:00:14.0
e0520000-e052ffff : xhci-hcd
e0530000-e0533fff : 0000:00:03.0
e0530000-e0533fff : ICH HD audio
e0534000-e0537fff : 0000:00:1b.0
e0534000-e0537fff : ICH HD audio
e0538000-e05380ff : 0000:00:1f.3
e0539000-e053901f : 0000:00:16.0
e0539000-e053901f : mei_me
e053c000-e053c7ff : 0000:00:1f.2
e053c000-e053c7ff : ahci
e053d000-e053d3ff : 0000:00:1d.0
e053d000-e053d3ff : ehci_hcd
e053e000-e053efff : 0000:00:19.0
e053e000-e053efff : e1000e
f8000000-fbffffff : PCI MMCONFIG 0000 [bus 00-3f]
f80f8000-f80f8fff : reserved
fe101000-fe112fff : reserved
fe105000-fe105fff : INT33C3:00
fe105000-fe105fff : INT33C3:00
fec00000-fec003ff : IOAPIC 0
fed00000-fed003ff : HPET 0
fed00000-fed003ff : PNP0103:00
fed10000-fed13fff : pnp 00:01
fed18000-fed18fff : pnp 00:01
fed19000-fed19fff : pnp 00:01
fed1c000-fed1ffff : reserved
fed1c000-fed1ffff : pnp 00:01
fed1f410-fed1f414 : iTCO_wdt
fed40000-fed4bfff : PCI Bus 0000:00
fed45000-fed4bfff : pnp 00:01
fed4c000-ffffffff : pnp 00:00
fee00000-fee00fff : Local APIC
100000000-23f5fffff : System RAM
23f600000-23fffffff : RAM buffer
[7.5] $lspci -vvv
00:00.0 Host bridge: Intel Corporation Haswell-ULT DRAM Controller (rev 09)
Subsystem: Lenovo Device 2218
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort+ >SERR- <PERR- INTx-
Latency: 0
Capabilities: [e0] Vendor Specific Information: Len=0c <?>
00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT
Integrated Graphics Controller (rev 09) (prog-if 00 [VGA controller])
Subsystem: Lenovo Device 2218
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 43
Region 0: Memory at e0000000 (64-bit, non-prefetchable) [size=4M]
Region 2: Memory at c0000000 (64-bit, prefetchable) [size=512M]
Region 4: I/O ports at 3000 [size=64]
Expansion ROM at <unassigned> [disabled]
Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee0f00c Data: 4122
Capabilities: [d0] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [a4] PCI Advanced Features
AFCap: TP+ FLR+
AFCtrl: FLR-
AFStatus: TP-
Kernel driver in use: i915
00:03.0 Audio device: Intel Corporation Haswell-ULT HD Audio Controller (rev 09)
Subsystem: Lenovo Device 2218
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 45
Region 0: Memory at e0530000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D3 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee0f00c Data: 4172
Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
Kernel driver in use: snd_hda_intel
00:14.0 USB controller: Intel Corporation 8 Series USB xHCI HC (rev
04) (prog-if 30 [XHCI])
Subsystem: Lenovo Device 2218
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 40
Region 0: Memory at e0520000 (64-bit, non-prefetchable) [size=64K]
Capabilities: [70] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
Address: 00000000fee0f00c Data: 4191
Kernel driver in use: xhci_hcd
00:16.0 Communication controller: Intel Corporation 8 Series HECI #0 (rev 04)
Subsystem: Lenovo Device 2218
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 46
Region 0: Memory at e0539000 (64-bit, non-prefetchable) [size=32]
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [8c] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0f00c Data: 4182
Kernel driver in use: mei_me
00:19.0 Ethernet controller: Intel Corporation Ethernet Connection
I218-V (rev 04)
Subsystem: Lenovo Device 2214
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 42
Region 0: Memory at e0500000 (32-bit, non-prefetchable) [disabled] [size=128K]
Region 1: Memory at e053e000 (32-bit, non-prefetchable) [disabled] [size=4K]
Region 2: I/O ports at 3080 [disabled] [size=32]
Capabilities: [c8] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D3 NoSoftRst- PME-Enable+ DSel=0 DScale=1 PME-
Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0f00c Data: 41b2
Capabilities: [e0] PCI Advanced Features
AFCap: TP+ FLR+
AFCtrl: FLR-
AFStatus: TP-
Kernel driver in use: e1000e
00:1b.0 Audio device: Intel Corporation 8 Series HD Audio Controller (rev 04)
Subsystem: Lenovo Device 2218
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 44
Region 0: Memory at e0534000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D3 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0f00c Data: 4162
Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
Capabilities: [100 v1] Virtual Channel
Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
Arb: Fixed- WRR32- WRR64- WRR128-
Ctrl: ArbSelect=Fixed
Status: InProgress-
VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=01
Status: NegoPending- InProgress-
VC1: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable- ID=2 ArbSelect=Fixed TC/VC=04
Status: NegoPending- InProgress-
Kernel driver in use: snd_hda_intel
00:1c.0 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 6
(rev e4) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
I/O behind bridge: 00002000-00002fff
Memory behind bridge: bfb00000-bfcfffff
Prefetchable memory behind bridge: 00000000bfd00000-00000000bfefffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort+ <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #6, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
<1us, L1 <4us
ClockPM- Surprise- LLActRep+ BwNot+
LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk-
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive-
BWMgmt- ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+
Slot #0, PowerLimit 0.000W; Interlock- NoCompl+
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-
Changed: MRL- PresDet- LinkState-
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
RootCap: CRSVisible-
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Via
WAKE# ARIFwd-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
Disabled ARIFwd-
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
Address: 00000000 Data: 0000
Capabilities: [90] Subsystem: Lenovo Device 2218
Capabilities: [a0] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: pcieport
00:1c.1 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 3
(rev e4) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
I/O behind bridge: 0000f000-00000fff
Memory behind bridge: e0400000-e04fffff
Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #3, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
<512ns, L1 <16us
ClockPM- Surprise- LLActRep+ BwNot+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+
BWMgmt+ ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
Slot #2, PowerLimit 10.000W; Interlock- NoCompl+
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
Changed: MRL- PresDet- LinkState+
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
RootCap: CRSVisible-
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not
Supported ARIFwd-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
Disabled ARIFwd-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
Address: 00000000 Data: 0000
Capabilities: [90] Subsystem: Lenovo Device 2218
Capabilities: [a0] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [100 v0] #00
Capabilities: [200 v1] L1 PM Substates
L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
PortCommonModeRestoreTime=40us PortTPowerOnTime=10us
Kernel driver in use: pcieport
00:1d.0 USB controller: Intel Corporation 8 Series USB EHCI #1 (rev
04) (prog-if 20 [EHCI])
Subsystem: Lenovo Device 2218
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 23
Region 0: Memory at e053d000 (32-bit, non-prefetchable) [size=1K]
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [58] Debug port: BAR=1 offset=00a0
Capabilities: [98] PCI Advanced Features
AFCap: TP+ FLR+
AFCtrl: FLR-
AFStatus: TP-
Kernel driver in use: ehci-pci
00:1f.0 ISA bridge: Intel Corporation 8 Series LPC Controller (rev 04)
Subsystem: Lenovo Device 2218
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Capabilities: [e0] Vendor Specific Information: Len=0c <?>
Kernel driver in use: lpc_ich
00:1f.2 SATA controller: Intel Corporation 8 Series SATA Controller 1
[AHCI mode] (rev 04) (prog-if 01 [AHCI 1.0])
Subsystem: Lenovo Device 2218
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin B routed to IRQ 41
Region 0: I/O ports at 30a8 [size=8]
Region 1: I/O ports at 30b4 [size=4]
Region 2: I/O ports at 30a0 [size=8]
Region 3: I/O ports at 30b0 [size=4]
Region 4: I/O ports at 3060 [size=32]
Region 5: Memory at e053c000 (32-bit, non-prefetchable) [size=2K]
Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee0c00c Data: 41c1
Capabilities: [70] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [a8] SATA HBA v1.0 BAR4 Offset=00000004
Kernel driver in use: ahci
00:1f.3 SMBus: Intel Corporation 8 Series SMBus Controller (rev 04)
Subsystem: Lenovo Device 2218
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin C routed to IRQ 255
Region 0: Memory at e0538000 (64-bit, non-prefetchable) [size=256]
Region 4: I/O ports at efa0 [size=32]
03:00.0 Network controller: Intel Corporation Wireless 7260 (rev 83)
Subsystem: Intel Corporation Dual Band Wireless-N 7260
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 47
Region 0: Memory at e0400000 (64-bit, non-prefetchable) [size=8K]
Capabilities: [c8] Power Management version 3
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0100c Data: 4192
Capabilities: [40] Express (v2) Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 unlimited
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr+ NoSnoop+ FLReset-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
L0s <4us, L1 <32us
ClockPM+ Surprise- LLActRep- BwNot-
LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive-
BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Via WAKE#
DevCtl2: Completion Timeout: 16ms to 55ms, TimeoutDis-, LTR+, OBFF Disabled
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [100 v1] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP+ BadDLLP- Rollover- Timeout- NonFatalErr+
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
Capabilities: [140 v1] Device Serial Number e8-b1-fc-ff-ff-16-c7-59
Capabilities: [14c v1] Latency Tolerance Reporting
Max snoop latency: 3145728ns
Max no snoop latency: 3145728ns
Capabilities: [154 v1] Vendor Specific Information: ID=cafe Rev=1 Len=014 <?>
Kernel driver in use: iwlwifi
[7.6] $cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: LITEONIT LGT-128 Rev: 201
Type: Direct-Access ANSI SCSI revision: 05
[7.7] $ls /proc
1 1672 264 282 3039 3423 4096 669 cmdline modules
10 1676 265 2825 3049 3442 41 67 consoles mounts
1020 169 266 2827 3074 3456 4134 68 cpuinfo mtrr
1065 17 267 2830 3089 3457 4135 69 crypto net
1079 1708 2670 2836 3093 3462 42 695 devices pagetypeinfo
11 1793 2672 2843 3099 3468 422 7 diskstats partitions
137 1795 2731 2863 31 3484 4225 701 dma sched_debug
14 18 2741 2864 3103 3499 43 704 driver schedstat
1404 1847 2742 2866 3147 35 4343 715 execdomains scsi
1409 19 2755 2867 3173 3544 4347 716 fb self
1410 1926 2762 2871 3181 3591 438 742 filesystems slabinfo
1416 1931 2763 2873 3182 3599 44 749 fs softirqs
1417 2 2764 2874 3184 36 45 751 interrupts stat
1422 2051 2767 2875 3185 3665 46 752 iomem swaps
1430 21 2769 2889 3189 37 460 756 ioports sys
1458 2170 2775 29 3190 3716 47 8 irq sysrq-trigger
1462 2173 2779 2924 3192 38 479 88 kallsyms sysvipc
15 22 278 2928 32 3830 48 886 kcore thread-self
155 2323 2781 2954 3231 3834 492 89 keys timer_list
158 2362 2789 2971 3242 3835 5 9 key-users timer_stats
159 24 279 2974 3258 3885 50 939 kmsg tty
160 25 28 2989 3285 3886 503 970 kpagecount uptime
1601 2567 2806 2990 3296 39 53 999 kpageflags version
161 2571 281 2992 33 390 54 acpi loadavg vmallocinfo
1620 2572 2810 2993 3323 3902 55 asound locks vmstat
163 2573 2813 3 3355 391 597 buddyinfo mdstat zoneinfo
164 26 2817 302 34 4 643 bus meminfo
1656 263 2819 303 3415 40 650 cgroups misc
[X.] Launchpad report
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1389268
^ permalink raw reply
* Re: Aorus X3+ touchpad not working
From: Hans de Goede @ 2014-11-06 13:47 UTC (permalink / raw)
To: Benjamin Tissoires, Maximilien Levesque; +Cc: linux-input
In-Reply-To: <CAN+gG=F7d+37kKF=s-_jLVd+=oqCjaNNQW084eKnYBREEZF14w@mail.gmail.com>
Hi,
On 11/05/2014 04:47 PM, Benjamin Tissoires wrote:
> Hi Maximilien,
>
> [Adding Hans in CC, I am pretty sure he might be helpful]
I can certainly try (to be helpful) looking at the dmesg, and the ubuntu
bug I see:
1) ps2 aux port getting properly detected, so this is not a case i8042.noloop
may fix
2) not working with older kernels either so likely not a problem with the
recent nomux dance
3) [ 0.834549] pnp 00:06: Plug and Play ACPI device, IDs ETD0a00 ETD0000 PNP0f13 (active)
Looks like you've a ps/2 attached elantech touchpad.
But I don't see any ps/2 mouse / touchpad probing messages in your dmesg
despite the kernel seeing the aux port:
[ 1.865847] serio: i8042 AUX port at 0x60,0x64 irq 12
Which is weird, can you try booting with i8042.debug=1 on the kernel commandline,
and then collect a new dmesg ?
Thanks & Regards,
Hans
^ permalink raw reply
* Re: [PATCH 1/4] input: touchscreen: ti_am335x_tsc Interchange touchscreen and ADC steps
From: Richard Cochran @ 2014-11-06 14:19 UTC (permalink / raw)
To: Vignesh R
Cc: Mark Rutland, Tony Lindgren, Sebastian Andrzej Siewior,
Paul Gortmaker, Peter Meerwald, Lee Jones, Lars-Peter Clausen,
Russell King, Samuel Ortiz, linux-iio, linux-input, devicetree,
Brad Griffis, Pawel Moll, Ian Campbell, Hartmut Knaack,
Rob Herring, linux-omap, linux-arm-kernel, Jan Kardell,
Dmitry Torokhov, linux-kernel, Felipe Balbi, Benoit Cousson,
Kumar Gala <galak@
In-Reply-To: <1414408111-2631-2-git-send-email-vigneshr@ti.com>
On Mon, Oct 27, 2014 at 04:38:28PM +0530, Vignesh R wrote:
...
> @@ -209,6 +214,7 @@ static void titsc_read_coordinates(struct titsc *ts_dev,
> unsigned int read, diff;
> unsigned int i, channel;
> unsigned int creads = ts_dev->coordinate_readouts;
> + unsigned int first_step = TOTAL_STEPS - (creads * 2 + 2);
>
> *z1 = *z2 = 0;
> if (fifocount % (creads * 2 + 2))
> @@ -226,7 +232,7 @@ static void titsc_read_coordinates(struct titsc *ts_dev,
>
> channel = (read & 0xf0000) >> 16;
> read &= 0xfff;
> - if (channel < creads) {
> + if (channel > first_step + creads + 2) {
> diff = abs(read - prev_val_x);
> if (diff < prev_diff_x) {
> prev_diff_x = diff;
> @@ -234,19 +240,19 @@ static void titsc_read_coordinates(struct titsc *ts_dev,
> }
> prev_val_x = read;
>
> - } else if (channel < creads * 2) {
> + } else if (channel == first_step + creads + 1) {
> + *z1 = read;
> +
> + } else if (channel == first_step + creads + 2) {
> + *z2 = read;
> +
> + } else if (channel > first_step) {
> diff = abs(read - prev_val_y);
> if (diff < prev_diff_y) {
> prev_diff_y = diff;
> *y = read;
While you are at it, please get rid of the this "delta filter"
nonsense.
Thanks,
Richard
> }
> prev_val_y = read;
> -
> - } else if (channel < creads * 2 + 1) {
> - *z1 = read;
> -
> - } else if (channel < creads * 2 + 2) {
> - *z2 = read;
> }
> }
> }
> --
> 1.9.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply
* Re: PROBLEM: Lenovo ThinkPad X1 Carbon Wireless switch key doesn't work
From: Benjamin Tissoires @ 2014-11-06 15:17 UTC (permalink / raw)
To: Sergei Serdyuk, platform-driver-x86; +Cc: linux-input
In-Reply-To: <CABb-vWFL53HrL8uwJcCEnCN25OuY7URFaK9-nF8Ypf4CcH0j_g@mail.gmail.com>
Hi,
not that we can not help here on linux-input, but this file is managed
by the platform tree.
Adding them in CC in case somebody already fixed the problem.
Cheers,
Benjamin
On Thu, Nov 6, 2014 at 8:07 AM, Sergei Serdyuk <sergei@redleafsoft.com> wrote:
> [1] [Lenovo ThinkPad X1 Carbon 20A8] Wireless switch key doesn't work
>
> [2] On my X1 Carbon laptop the wireless switch key doesn't work. It
> appears that the code in charge of handling the X1 Carbon adaptive
> keyboard is here and rfkill handling is there:
> https://kernel.googlesource.com/pub/scm/linux/kernel/git/jic23/iio/+/refs/heads/togreg/drivers/platform/x86/thinkpad_acpi.c
>
> Pressing the key generates no events (see below) and thus has no
> effect. So, it's either my stock kernel doesn't have it, or something
> else is broken. Nothing ever fires when I press all extra buttons
> including the wireless one.
>
> This may be not specific to the adaptive keyboard too. While I was
> googling for a solution, I saw similar complaints for other Thinkpad
> models.
>
> ls /dev/input/by-path/platform-thinkpad_acpi-event -lh
> lrwxrwxrwx 1 root root 9 Nov 2 19:45
> /dev/input/by-path/platform-thinkpad_acpi-event -> ../event7
>
> input-events 7
> /dev/input/event7
> bustype : BUS_HOST
> vendor : 0x17aa
> product : 0x5054
> version : 16641
> name : "ThinkPad Extra Buttons"
> phys : "thinkpad_acpi/input0"
> bits ev : EV_SYN EV_KEY EV_MSC EV_SW
>
> waiting for events
> timeout, quitting
>
> # acpi events fire for all extra buttons except the wireless one!
>
> root@x1:~# acpi_listen -t 100
> ibm/hotkey LEN0068:00 00000080 00001105
> ibm/hotkey LEN0068:00 00000080 00001106
> ibm/hotkey LEN0068:00 00000080 00001108
> ibm/hotkey LEN0068:00 00000080 0000110a
> ibm/hotkey LEN0068:00 00000080 00001101
> ibm/hotkey LEN0068:00 00000080 00001101
> ibm/hotkey LEN0068:00 00000080 00001101
> video/switchmode VMOD 00000080 00000000
> ibm/hotkey LEN0068:00 00000080 0000110e
>
> So, since nothing fires on both channels, it seems I can't manually
> bind the button to rfkill either.
>
> [3]
>
> [4] $cat /proc/version
>
> Linux version 3.18.0-031800rc3-generic (apw@tangerine) (gcc version
> 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #201411022335 SMP Sun Nov 2
> 23:36:52 UTC 2014
>
> [5]
>
> [6]
>
> [7] $lsb_release -rd
>
> Description: Ubuntu 14.10
> Release: 14.10
>
> [7.1] $/usr/src/linux-headers-3.18.0-031800rc3/scripts/ver_linux
>
> If some fields are empty or look unusual you may have an old version.
> Compare to the current minimal requirements in Documentation/Changes.
>
> Linux x1 3.18.0-031800rc3-generic #201411022335 SMP Sun Nov 2 23:36:52
> UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
>
> Gnu C 4.9.1
> Gnu make 4.0
> binutils 2.24.90.20141014
> util-linux 2.25.1
> mount debug
> module-init-tools 18
> e2fsprogs 1.42.10
> pcmciautils 018
> PPP 2.4.5
> Linux C Library 2.19
> Dynamic linker (ldd) 2.19
> Procps 3.3.9
> Net-tools 1.60
> Kbd 1.15.5
> Sh-utils 8.23
> wireless-tools 30
> Modules Loaded ctr ccm acpi_call uvcvideo videobuf2_vmalloc
> videobuf2_memops videobuf2_core v4l2_common videodev media
> hid_multitouch btusb arc4 iwlmvm mac80211 intel_rapl
> x86_pkg_temp_thermal intel_powerclamp coretemp iwlwifi kvm rfcomm
> joydev bnep serio_raw bluetooth cfg80211 snd_hda_codec_hdmi mei_me
> lpc_ich snd_hda_codec_realtek snd_hda_codec_generic mei shpchp
> thinkpad_acpi snd_hda_intel snd_hda_controller i2c_designware_platform
> i2c_designware_core nvram snd_hda_codec snd_hwdep snd_pcm mac_hid
> snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq snd_seq_device
> snd_timer parport_pc snd ppdev soundcore nls_iso8859_1 lp parport
> dm_crypt usbhid hid crct10dif_pclmul crc32_pclmul ghash_clmulni_intel
> i915 aesni_intel aes_x86_64 lrw gf128mul e1000e glue_helper
> i2c_algo_bit ablk_helper ahci cryptd libahci ptp pps_core psmouse
> drm_kms_helper drm wmi video
>
> [7.2] $cat /proc/cpuinfo
>
> processor : 0
> vendor_id : GenuineIntel
> cpu family : 6
> model : 69
> model name : Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
> stepping : 1
> microcode : 0x1c
> cpu MHz : 1299.949
> cache size : 3072 KB
> physical id : 0
> siblings : 4
> core id : 0
> cpu cores : 2
> apicid : 0
> initial apicid : 0
> fpu : yes
> fpu_exception : yes
> cpuid level : 13
> wp : yes
> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
> pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
> pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
> xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
> ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
> popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
> arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
> tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
> bugs :
> bogomips : 4589.44
> clflush size : 64
> cache_alignment : 64
> address sizes : 39 bits physical, 48 bits virtual
> power management:
>
> processor : 1
> vendor_id : GenuineIntel
> cpu family : 6
> model : 69
> model name : Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
> stepping : 1
> microcode : 0x1c
> cpu MHz : 974.625
> cache size : 3072 KB
> physical id : 0
> siblings : 4
> core id : 0
> cpu cores : 2
> apicid : 1
> initial apicid : 1
> fpu : yes
> fpu_exception : yes
> cpuid level : 13
> wp : yes
> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
> pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
> pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
> xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
> ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
> popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
> arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
> tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
> bugs :
> bogomips : 4589.44
> clflush size : 64
> cache_alignment : 64
> address sizes : 39 bits physical, 48 bits virtual
> power management:
>
> processor : 2
> vendor_id : GenuineIntel
> cpu family : 6
> model : 69
> model name : Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
> stepping : 1
> microcode : 0x1c
> cpu MHz : 1299.769
> cache size : 3072 KB
> physical id : 0
> siblings : 4
> core id : 1
> cpu cores : 2
> apicid : 2
> initial apicid : 2
> fpu : yes
> fpu_exception : yes
> cpuid level : 13
> wp : yes
> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
> pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
> pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
> xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
> ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
> popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
> arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
> tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
> bugs :
> bogomips : 4589.44
> clflush size : 64
> cache_alignment : 64
> address sizes : 39 bits physical, 48 bits virtual
> power management:
>
> processor : 3
> vendor_id : GenuineIntel
> cpu family : 6
> model : 69
> model name : Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
> stepping : 1
> microcode : 0x1c
> cpu MHz : 1359.425
> cache size : 3072 KB
> physical id : 0
> siblings : 4
> core id : 1
> cpu cores : 2
> apicid : 3
> initial apicid : 3
> fpu : yes
> fpu_exception : yes
> cpuid level : 13
> wp : yes
> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
> pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
> pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
> xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
> ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
> popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida
> arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase
> tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
> bugs :
> bogomips : 4589.44
> clflush size : 64
> cache_alignment : 64
> address sizes : 39 bits physical, 48 bits virtual
> power management:
>
> [7.3] $cat /proc/modules
>
> ctr 13193 3 - Live 0xffffffffc08b0000
> ccm 17856 3 - Live 0xffffffffc08aa000
> acpi_call 12714 0 - Live 0xffffffffc08a5000 (OE)
> uvcvideo 86723 0 - Live 0xffffffffc0a4c000
> videobuf2_vmalloc 13216 1 uvcvideo, Live 0xffffffffc0885000
> videobuf2_memops 13362 1 videobuf2_vmalloc, Live 0xffffffffc088a000
> videobuf2_core 51547 1 uvcvideo, Live 0xffffffffc0897000
> v4l2_common 15715 1 videobuf2_core, Live 0xffffffffc086a000
> videodev 163831 3 uvcvideo,videobuf2_core,v4l2_common, Live 0xffffffffc09e5000
> media 22008 2 uvcvideo,videodev, Live 0xffffffffc087e000
> hid_multitouch 17657 0 - Live 0xffffffffc0891000
> btusb 32691 0 - Live 0xffffffffc0875000
> arc4 12573 2 - Live 0xffffffffc07d3000
> iwlmvm 254598 0 - Live 0xffffffffc09a5000
> mac80211 697143 1 iwlmvm, Live 0xffffffffc0a84000
> intel_rapl 19196 0 - Live 0xffffffffc086f000
> x86_pkg_temp_thermal 14312 0 - Live 0xffffffffc07db000
> intel_powerclamp 19099 0 - Live 0xffffffffc0864000
> coretemp 13638 0 - Live 0xffffffffc0746000
> iwlwifi 193774 1 iwlmvm, Live 0xffffffffc0a1b000
> kvm 475233 0 - Live 0xffffffffc092f000
> rfcomm 75066 0 - Live 0xffffffffc07bf000
> joydev 17587 0 - Live 0xffffffffc07a9000
> bnep 23980 2 - Live 0xffffffffc074b000
> serio_raw 13483 0 - Live 0xffffffffc0729000
> bluetooth 486890 11 btusb,rfcomm,bnep, Live 0xffffffffc08b7000
> cfg80211 520257 3 iwlmvm,mac80211,iwlwifi, Live 0xffffffffc07e3000
> snd_hda_codec_hdmi 52670 1 - Live 0xffffffffc07b1000
> mei_me 19565 0 - Live 0xffffffffc0776000
> lpc_ich 21176 0 - Live 0xffffffffc06d8000
> snd_hda_codec_realtek 76099 1 - Live 0xffffffffc0791000
> snd_hda_codec_generic 69995 1 snd_hda_codec_realtek, Live 0xffffffffc077e000
> mei 88473 1 mei_me, Live 0xffffffffc075f000
> shpchp 37216 0 - Live 0xffffffffc0754000
> thinkpad_acpi 82101 1 - Live 0xffffffffc0730000
> snd_hda_intel 30783 5 - Live 0xffffffffc0720000
> snd_hda_controller 32234 1 snd_hda_intel, Live 0xffffffffc070f000
> i2c_designware_platform 13025 0 - Live 0xffffffffc070a000
> i2c_designware_core 14990 1 i2c_designware_platform, Live 0xffffffffc071b000
> nvram 14462 1 thinkpad_acpi, Live 0xffffffffc06d3000
> snd_hda_codec 144641 5
> snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel,snd_hda_controller,
> Live 0xffffffffc06e5000
> snd_hwdep 17709 1 snd_hda_codec, Live 0xffffffffc06df000
> snd_pcm 106273 4
> snd_hda_codec_hdmi,snd_hda_intel,snd_hda_controller,snd_hda_codec,
> Live 0xffffffffc06b8000
> mac_hid 13275 0 - Live 0xffffffffc05b5000
> snd_seq_midi 13564 0 - Live 0xffffffffc05b0000
> snd_seq_midi_event 14899 1 snd_seq_midi, Live 0xffffffffc059f000
> snd_rawmidi 31197 1 snd_seq_midi, Live 0xffffffffc05a7000
> snd_seq 63540 2 snd_seq_midi,snd_seq_midi_event, Live 0xffffffffc058e000
> snd_seq_device 14497 3 snd_seq_midi,snd_rawmidi,snd_seq, Live 0xffffffffc048d000
> snd_timer 30118 2 snd_pcm,snd_seq, Live 0xffffffffc057a000
> parport_pc 32909 0 - Live 0xffffffffc0584000
> snd 84025 22 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,thinkpad_acpi,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_seq_device,snd_timer,
> Live 0xffffffffc0564000
> ppdev 17711 0 - Live 0xffffffffc055e000
> soundcore 15091 2 snd_hda_codec,snd, Live 0xffffffffc0528000
> nls_iso8859_1 12713 1 - Live 0xffffffffc04e8000
> lp 17799 0 - Live 0xffffffffc0522000
> parport 42481 3 parport_pc,ppdev,lp, Live 0xffffffffc054e000
> dm_crypt 23456 1 - Live 0xffffffffc0486000
> usbhid 53155 0 - Live 0xffffffffc04da000
> hid 110572 2 hid_multitouch,usbhid, Live 0xffffffffc0532000
> crct10dif_pclmul 14268 0 - Live 0xffffffffc051d000
> crc32_pclmul 13180 0 - Live 0xffffffffc052d000
> ghash_clmulni_intel 13230 0 - Live 0xffffffffc0433000
> i915 1031913 6 - Live 0xffffffffc05bb000
> aesni_intel 169686 8 - Live 0xffffffffc04ef000
> aes_x86_64 17131 1 aesni_intel, Live 0xffffffffc0497000
> lrw 13323 1 aesni_intel, Live 0xffffffffc042e000
> gf128mul 14951 1 lrw, Live 0xffffffffc0481000
> e1000e 230020 0 - Live 0xffffffffc04a0000
> glue_helper 14095 1 aesni_intel, Live 0xffffffffc03cf000
> i2c_algo_bit 13564 1 i915, Live 0xffffffffc0492000
> ablk_helper 13597 1 aesni_intel, Live 0xffffffffc03b6000
> ahci 34220 3 - Live 0xffffffffc0439000
> cryptd 20531 4 ghash_clmulni_intel,aesni_intel,ablk_helper, Live
> 0xffffffffc03c8000
> libahci 32446 1 ahci, Live 0xffffffffc0425000
> ptp 19534 1 e1000e, Live 0xffffffffc03c2000
> pps_core 19381 1 ptp, Live 0xffffffffc0443000
> psmouse 118117 0 - Live 0xffffffffc0463000
> drm_kms_helper 99802 1 i915, Live 0xffffffffc0449000
> drm 323675 5 i915,drm_kms_helper, Live 0xffffffffc03d4000
> wmi 19379 0 - Live 0xffffffffc03bc000
> video 20649 1 i915, Live 0xffffffffc03af000
>
> [7.4] $cat /proc/ioports
>
> 0000-0cf7 : PCI Bus 0000:00
> 0000-001f : dma1
> 0020-0021 : pic1
> 0040-0043 : timer0
> 0050-0053 : timer1
> 0060-0060 : keyboard
> 0061-0061 : PNP0800:00
> 0062-0062 : PNP0C09:00
> 0062-0062 : EC data
> 0064-0064 : keyboard
> 0066-0066 : PNP0C09:00
> 0066-0066 : EC cmd
> 0070-0071 : rtc0
> 0080-008f : dma page reg
> 00a0-00a1 : pic2
> 00c0-00df : dma2
> 00f0-00ff : fpu
> 00f0-00f0 : PNP0C04:00
> 0800-087f : pnp 00:01
> 0880-08ff : pnp 00:01
> 0900-097f : pnp 00:01
> 0980-09ff : pnp 00:01
> 0a00-0a7f : pnp 00:01
> 0a80-0aff : pnp 00:01
> 0b00-0b7f : pnp 00:01
> 0b80-0bff : pnp 00:01
> 0cf8-0cff : PCI conf1
> 0d00-ffff : PCI Bus 0000:00
> 15e0-15ef : pnp 00:01
> 1600-167f : pnp 00:01
> 1640-165f : pnp 00:01
> 1800-1803 : ACPI PM1a_EVT_BLK
> 1804-1805 : ACPI PM1a_CNT_BLK
> 1808-180b : ACPI PM_TMR
> 1810-1815 : ACPI CPU throttle
> 1830-1833 : iTCO_wdt
> 1850-1850 : ACPI PM2_CNT_BLK
> 1860-187f : iTCO_wdt
> 1880-189f : ACPI GPE0_BLK
> 2000-2fff : PCI Bus 0000:02
> 3000-303f : 0000:00:02.0
> 3060-307f : 0000:00:1f.2
> 3060-307f : ahci
> 3080-309f : 0000:00:19.0
> 30a0-30a7 : 0000:00:1f.2
> 30a0-30a7 : ahci
> 30a8-30af : 0000:00:1f.2
> 30a8-30af : ahci
> 30b0-30b3 : 0000:00:1f.2
> 30b0-30b3 : ahci
> 30b4-30b7 : 0000:00:1f.2
> 30b4-30b7 : ahci
> efa0-efbf : 0000:00:1f.3
>
> $cat /proc/iomem
>
> 00000000-00000fff : reserved
> 00001000-00057fff : System RAM
> 00058000-00058fff : reserved
> 00059000-0009bfff : System RAM
> 0009c000-0009cfff : reserved
> 0009d000-0009dfff : System RAM
> 0009e000-000bffff : reserved
> 000a0000-000bffff : PCI Bus 0000:00
> 000c0000-000c3fff : PCI Bus 0000:00
> 000c4000-000c7fff : PCI Bus 0000:00
> 000c8000-000cbfff : PCI Bus 0000:00
> 000cc000-000cffff : PCI Bus 0000:00
> 000d0000-000d3fff : PCI Bus 0000:00
> 000d4000-000d7fff : PCI Bus 0000:00
> 000d8000-000dbfff : PCI Bus 0000:00
> 000dc000-000dffff : PCI Bus 0000:00
> 000e0000-000e3fff : PCI Bus 0000:00
> 000e4000-000e7fff : PCI Bus 0000:00
> 000e8000-000ebfff : PCI Bus 0000:00
> 000ec000-000effff : PCI Bus 0000:00
> 000f0000-000fffff : System ROM
> 00100000-b1851fff : System RAM
> 02000000-027ae357 : Kernel code
> 027ae358-02d1997f : Kernel data
> 02e80000-02fc8fff : Kernel bss
> b1852000-b1a53fff : reserved
> b1a54000-bbf6cfff : System RAM
> bbf6d000-bc16cfff : reserved
> bc16d000-bcd3efff : reserved
> bcd3f000-bce7efff : ACPI Non-volatile Storage
> bce7f000-bcefefff : ACPI Tables
> bceff000-bcefffff : System RAM
> bcf00000-febfffff : reserved
> bda00000-bf9fffff : Graphics Stolen Memory
> bfa00000-febfffff : PCI Bus 0000:00
> bfb00000-bfcfffff : PCI Bus 0000:02
> bfd00000-bfefffff : PCI Bus 0000:02
> c0000000-dfffffff : 0000:00:02.0
> e0000000-e03fffff : 0000:00:02.0
> e0400000-e04fffff : PCI Bus 0000:03
> e0400000-e0401fff : 0000:03:00.0
> e0400000-e0401fff : iwlwifi
> e0500000-e051ffff : 0000:00:19.0
> e0500000-e051ffff : e1000e
> e0520000-e052ffff : 0000:00:14.0
> e0520000-e052ffff : xhci-hcd
> e0530000-e0533fff : 0000:00:03.0
> e0530000-e0533fff : ICH HD audio
> e0534000-e0537fff : 0000:00:1b.0
> e0534000-e0537fff : ICH HD audio
> e0538000-e05380ff : 0000:00:1f.3
> e0539000-e053901f : 0000:00:16.0
> e0539000-e053901f : mei_me
> e053c000-e053c7ff : 0000:00:1f.2
> e053c000-e053c7ff : ahci
> e053d000-e053d3ff : 0000:00:1d.0
> e053d000-e053d3ff : ehci_hcd
> e053e000-e053efff : 0000:00:19.0
> e053e000-e053efff : e1000e
> f8000000-fbffffff : PCI MMCONFIG 0000 [bus 00-3f]
> f80f8000-f80f8fff : reserved
> fe101000-fe112fff : reserved
> fe105000-fe105fff : INT33C3:00
> fe105000-fe105fff : INT33C3:00
> fec00000-fec003ff : IOAPIC 0
> fed00000-fed003ff : HPET 0
> fed00000-fed003ff : PNP0103:00
> fed10000-fed13fff : pnp 00:01
> fed18000-fed18fff : pnp 00:01
> fed19000-fed19fff : pnp 00:01
> fed1c000-fed1ffff : reserved
> fed1c000-fed1ffff : pnp 00:01
> fed1f410-fed1f414 : iTCO_wdt
> fed40000-fed4bfff : PCI Bus 0000:00
> fed45000-fed4bfff : pnp 00:01
> fed4c000-ffffffff : pnp 00:00
> fee00000-fee00fff : Local APIC
> 100000000-23f5fffff : System RAM
> 23f600000-23fffffff : RAM buffer
>
> [7.5] $lspci -vvv
>
> 00:00.0 Host bridge: Intel Corporation Haswell-ULT DRAM Controller (rev 09)
> Subsystem: Lenovo Device 2218
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort+ >SERR- <PERR- INTx-
> Latency: 0
> Capabilities: [e0] Vendor Specific Information: Len=0c <?>
>
> 00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT
> Integrated Graphics Controller (rev 09) (prog-if 00 [VGA controller])
> Subsystem: Lenovo Device 2218
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Interrupt: pin A routed to IRQ 43
> Region 0: Memory at e0000000 (64-bit, non-prefetchable) [size=4M]
> Region 2: Memory at c0000000 (64-bit, prefetchable) [size=512M]
> Region 4: I/O ports at 3000 [size=64]
> Expansion ROM at <unassigned> [disabled]
> Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
> Address: fee0f00c Data: 4122
> Capabilities: [d0] Power Management version 2
> Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [a4] PCI Advanced Features
> AFCap: TP+ FLR+
> AFCtrl: FLR-
> AFStatus: TP-
> Kernel driver in use: i915
>
> 00:03.0 Audio device: Intel Corporation Haswell-ULT HD Audio Controller (rev 09)
> Subsystem: Lenovo Device 2218
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Interrupt: pin A routed to IRQ 45
> Region 0: Memory at e0530000 (64-bit, non-prefetchable) [size=16K]
> Capabilities: [50] Power Management version 2
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> Status: D3 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit-
> Address: fee0f00c Data: 4172
> Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE-
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> Kernel driver in use: snd_hda_intel
>
> 00:14.0 USB controller: Intel Corporation 8 Series USB xHCI HC (rev
> 04) (prog-if 30 [XHCI])
> Subsystem: Lenovo Device 2218
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Interrupt: pin A routed to IRQ 40
> Region 0: Memory at e0520000 (64-bit, non-prefetchable) [size=64K]
> Capabilities: [70] Power Management version 2
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
> Address: 00000000fee0f00c Data: 4191
> Kernel driver in use: xhci_hcd
>
> 00:16.0 Communication controller: Intel Corporation 8 Series HECI #0 (rev 04)
> Subsystem: Lenovo Device 2218
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Interrupt: pin A routed to IRQ 46
> Region 0: Memory at e0539000 (64-bit, non-prefetchable) [size=32]
> Capabilities: [50] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [8c] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Address: 00000000fee0f00c Data: 4182
> Kernel driver in use: mei_me
>
> 00:19.0 Ethernet controller: Intel Corporation Ethernet Connection
> I218-V (rev 04)
> Subsystem: Lenovo Device 2214
> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Interrupt: pin A routed to IRQ 42
> Region 0: Memory at e0500000 (32-bit, non-prefetchable) [disabled] [size=128K]
> Region 1: Memory at e053e000 (32-bit, non-prefetchable) [disabled] [size=4K]
> Region 2: I/O ports at 3080 [disabled] [size=32]
> Capabilities: [c8] Power Management version 2
> Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D3 NoSoftRst- PME-Enable+ DSel=0 DScale=1 PME-
> Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Address: 00000000fee0f00c Data: 41b2
> Capabilities: [e0] PCI Advanced Features
> AFCap: TP+ FLR+
> AFCtrl: FLR-
> AFStatus: TP-
> Kernel driver in use: e1000e
>
> 00:1b.0 Audio device: Intel Corporation 8 Series HD Audio Controller (rev 04)
> Subsystem: Lenovo Device 2218
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Interrupt: pin A routed to IRQ 44
> Region 0: Memory at e0534000 (64-bit, non-prefetchable) [size=16K]
> Capabilities: [50] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D3 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Address: 00000000fee0f00c Data: 4162
> Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE-
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> Capabilities: [100 v1] Virtual Channel
> Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
> Arb: Fixed- WRR32- WRR64- WRR128-
> Ctrl: ArbSelect=Fixed
> Status: InProgress-
> VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
> Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=01
> Status: NegoPending- InProgress-
> VC1: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
> Ctrl: Enable- ID=2 ArbSelect=Fixed TC/VC=04
> Status: NegoPending- InProgress-
> Kernel driver in use: snd_hda_intel
>
> 00:1c.0 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 6
> (rev e4) (prog-if 00 [Normal decode])
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
> I/O behind bridge: 00002000-00002fff
> Memory behind bridge: bfb00000-bfcfffff
> Prefetchable memory behind bridge: 00000000bfd00000-00000000bfefffff
> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort+ <SERR- <PERR-
> BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE+
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> LnkCap: Port #6, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
> <1us, L1 <4us
> ClockPM- Surprise- LLActRep+ BwNot+
> LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk-
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive-
> BWMgmt- ABWMgmt-
> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+
> Slot #0, PowerLimit 0.000W; Interlock- NoCompl+
> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-
> Changed: MRL- PresDet- LinkState-
> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> RootCap: CRSVisible-
> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Via
> WAKE# ARIFwd-
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
> Disabled ARIFwd-
> LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
> EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
> Address: 00000000 Data: 0000
> Capabilities: [90] Subsystem: Lenovo Device 2218
> Capabilities: [a0] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Kernel driver in use: pcieport
>
> 00:1c.1 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 3
> (rev e4) (prog-if 00 [Normal decode])
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
> I/O behind bridge: 0000f000-00000fff
> Memory behind bridge: e0400000-e04fffff
> Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- <SERR- <PERR-
> BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE+
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> LnkCap: Port #3, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
> <512ns, L1 <16us
> ClockPM- Surprise- LLActRep+ BwNot+
> LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+
> BWMgmt+ ABWMgmt-
> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> Slot #2, PowerLimit 10.000W; Interlock- NoCompl+
> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> Changed: MRL- PresDet- LinkState+
> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> RootCap: CRSVisible-
> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF Not
> Supported ARIFwd-
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF
> Disabled ARIFwd-
> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
> EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
> Address: 00000000 Data: 0000
> Capabilities: [90] Subsystem: Lenovo Device 2218
> Capabilities: [a0] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [100 v0] #00
> Capabilities: [200 v1] L1 PM Substates
> L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
> PortCommonModeRestoreTime=40us PortTPowerOnTime=10us
> Kernel driver in use: pcieport
>
> 00:1d.0 USB controller: Intel Corporation 8 Series USB EHCI #1 (rev
> 04) (prog-if 20 [EHCI])
> Subsystem: Lenovo Device 2218
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Interrupt: pin A routed to IRQ 23
> Region 0: Memory at e053d000 (32-bit, non-prefetchable) [size=1K]
> Capabilities: [50] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [58] Debug port: BAR=1 offset=00a0
> Capabilities: [98] PCI Advanced Features
> AFCap: TP+ FLR+
> AFCtrl: FLR-
> AFStatus: TP-
> Kernel driver in use: ehci-pci
>
> 00:1f.0 ISA bridge: Intel Corporation 8 Series LPC Controller (rev 04)
> Subsystem: Lenovo Device 2218
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Capabilities: [e0] Vendor Specific Information: Len=0c <?>
> Kernel driver in use: lpc_ich
>
> 00:1f.2 SATA controller: Intel Corporation 8 Series SATA Controller 1
> [AHCI mode] (rev 04) (prog-if 01 [AHCI 1.0])
> Subsystem: Lenovo Device 2218
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Interrupt: pin B routed to IRQ 41
> Region 0: I/O ports at 30a8 [size=8]
> Region 1: I/O ports at 30b4 [size=4]
> Region 2: I/O ports at 30a0 [size=8]
> Region 3: I/O ports at 30b0 [size=4]
> Region 4: I/O ports at 3060 [size=32]
> Region 5: Memory at e053c000 (32-bit, non-prefetchable) [size=2K]
> Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
> Address: fee0c00c Data: 41c1
> Capabilities: [70] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [a8] SATA HBA v1.0 BAR4 Offset=00000004
> Kernel driver in use: ahci
>
> 00:1f.3 SMBus: Intel Corporation 8 Series SMBus Controller (rev 04)
> Subsystem: Lenovo Device 2218
> Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Interrupt: pin C routed to IRQ 255
> Region 0: Memory at e0538000 (64-bit, non-prefetchable) [size=256]
> Region 4: I/O ports at efa0 [size=32]
>
> 03:00.0 Network controller: Intel Corporation Wireless 7260 (rev 83)
> Subsystem: Intel Corporation Dual Band Wireless-N 7260
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Interrupt: pin A routed to IRQ 47
> Region 0: Memory at e0400000 (64-bit, non-prefetchable) [size=8K]
> Capabilities: [c8] Power Management version 3
> Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Address: 00000000fee0100c Data: 4192
> Capabilities: [40] Express (v2) Endpoint, MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 unlimited
> ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd+ ExtTag- PhantFunc- AuxPwr+ NoSnoop+ FLReset-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
> L0s <4us, L1 <32us
> ClockPM+ Surprise- LLActRep- BwNot-
> LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
> ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive-
> BWMgmt- ABWMgmt-
> DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Via WAKE#
> DevCtl2: Completion Timeout: 16ms to 55ms, TimeoutDis-, LTR+, OBFF Disabled
> LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
> EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [100 v1] Advanced Error Reporting
> UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
> MalfTLP- ECRC- UnsupReq- ACSViol-
> UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
> MalfTLP- ECRC- UnsupReq- ACSViol-
> UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
> MalfTLP+ ECRC- UnsupReq- ACSViol-
> CESta: RxErr- BadTLP+ BadDLLP- Rollover- Timeout- NonFatalErr+
> CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
> AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
> Capabilities: [140 v1] Device Serial Number e8-b1-fc-ff-ff-16-c7-59
> Capabilities: [14c v1] Latency Tolerance Reporting
> Max snoop latency: 3145728ns
> Max no snoop latency: 3145728ns
> Capabilities: [154 v1] Vendor Specific Information: ID=cafe Rev=1 Len=014 <?>
> Kernel driver in use: iwlwifi
>
> [7.6] $cat /proc/scsi/scsi
>
> Attached devices:
> Host: scsi0 Channel: 00 Id: 00 Lun: 00
> Vendor: ATA Model: LITEONIT LGT-128 Rev: 201
> Type: Direct-Access ANSI SCSI revision: 05
>
> [7.7] $ls /proc
>
> 1 1672 264 282 3039 3423 4096 669 cmdline modules
> 10 1676 265 2825 3049 3442 41 67 consoles mounts
> 1020 169 266 2827 3074 3456 4134 68 cpuinfo mtrr
> 1065 17 267 2830 3089 3457 4135 69 crypto net
> 1079 1708 2670 2836 3093 3462 42 695 devices pagetypeinfo
> 11 1793 2672 2843 3099 3468 422 7 diskstats partitions
> 137 1795 2731 2863 31 3484 4225 701 dma sched_debug
> 14 18 2741 2864 3103 3499 43 704 driver schedstat
> 1404 1847 2742 2866 3147 35 4343 715 execdomains scsi
> 1409 19 2755 2867 3173 3544 4347 716 fb self
> 1410 1926 2762 2871 3181 3591 438 742 filesystems slabinfo
> 1416 1931 2763 2873 3182 3599 44 749 fs softirqs
> 1417 2 2764 2874 3184 36 45 751 interrupts stat
> 1422 2051 2767 2875 3185 3665 46 752 iomem swaps
> 1430 21 2769 2889 3189 37 460 756 ioports sys
> 1458 2170 2775 29 3190 3716 47 8 irq sysrq-trigger
> 1462 2173 2779 2924 3192 38 479 88 kallsyms sysvipc
> 15 22 278 2928 32 3830 48 886 kcore thread-self
> 155 2323 2781 2954 3231 3834 492 89 keys timer_list
> 158 2362 2789 2971 3242 3835 5 9 key-users timer_stats
> 159 24 279 2974 3258 3885 50 939 kmsg tty
> 160 25 28 2989 3285 3886 503 970 kpagecount uptime
> 1601 2567 2806 2990 3296 39 53 999 kpageflags version
> 161 2571 281 2992 33 390 54 acpi loadavg vmallocinfo
> 1620 2572 2810 2993 3323 3902 55 asound locks vmstat
> 163 2573 2813 3 3355 391 597 buddyinfo mdstat zoneinfo
> 164 26 2817 302 34 4 643 bus meminfo
> 1656 263 2819 303 3415 40 650 cgroups misc
>
> [X.] Launchpad report
> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1389268
> --
> To unsubscribe from this list: send the line "unsubscribe linux-input" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* [PATCH] Input: synaptics - add min/max quirk for Lenovo T440s
From: Takashi Iwai @ 2014-11-06 15:48 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: linux-input
The new Lenovo T440s laptop has a different PnP ID "LEN0039", and it
needs the similar min/max quirk to make its clickpad working.
BugLink: https://bugzilla.opensuse.org/show_bug.cgi?id=903748
Reported-and-tested-by: Joschi Brauchle <joschibrauchle@gmx.de>
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
drivers/input/mouse/synaptics.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
index 9031a0a28ea4..2a7a9174c702 100644
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c
@@ -135,8 +135,8 @@ static const struct min_max_quirk min_max_pnpid_table[] = {
1232, 5710, 1156, 4696
},
{
- (const char * const []){"LEN0034", "LEN0036", "LEN2002",
- "LEN2004", NULL},
+ (const char * const []){"LEN0034", "LEN0036", "LEN0039",
+ "LEN2002", "LEN2004", NULL},
1024, 5112, 2024, 4832
},
{
@@ -163,6 +163,7 @@ static const char * const topbuttonpad_pnp_ids[] = {
"LEN0036", /* T440 */
"LEN0037",
"LEN0038",
+ "LEN0039", /* T440s */
"LEN0041",
"LEN0042", /* Yoga */
"LEN0045",
--
2.1.3
^ permalink raw reply related
* Re: [PATCH 2/3] input: touchscreen: of: Register multitouch axes
From: Maxime Ripard @ 2014-11-06 16:06 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Lothar Waßmann, Henrik Rydberg, linux-input, linux-kernel
In-Reply-To: <20141105175635.GA22754@dtor-ws>
[-- Attachment #1: Type: text/plain, Size: 2212 bytes --]
Hi,
On Wed, Nov 05, 2014 at 09:56:35AM -0800, Dmitry Torokhov wrote:
> On Wed, Nov 05, 2014 at 04:07:49PM +0100, Maxime Ripard wrote:
> > So far, the DT parsing code was only setting up the regular input axes,
> > completely ignoring their multitouch counter parts.
> >
> > Fill them with the same parameters than the regular axes.
> >
> > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> > ---
> > drivers/input/touchscreen/of_touchscreen.c | 12 +++++++++---
> > 1 file changed, 9 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/input/touchscreen/of_touchscreen.c b/drivers/input/touchscreen/of_touchscreen.c
> > index 74d6b0eb50ac..cf2a753edd96 100644
> > --- a/drivers/input/touchscreen/of_touchscreen.c
> > +++ b/drivers/input/touchscreen/of_touchscreen.c
> > @@ -42,17 +42,23 @@ void touchscreen_parse_of_params(struct input_dev *dev)
> >
> > maximum = of_get_optional_u32(np, "touchscreen-size-x");
> > fuzz = of_get_optional_u32(np, "touchscreen-fuzz-x");
> > - if (maximum || fuzz)
> > + if (maximum || fuzz) {
> > input_set_abs_params(dev, ABS_X, 0, maximum, fuzz, 0);
> > + input_set_abs_params(dev, ABS_MT_POSITION_X, 0, maximum, fuzz, 0);
>
> Not all devices are multitouch so you shoudl not be setting multitouch
> bits unconditionally.
Hmmm, right.
> In I think we should rely on driver to set capability bits properly and
> then here test them and apply the readings. Probably also issue a
> warning if we see max/fuzz setting but neither ABS_<N>/ABS_MT_<N>
> capabilities.
What I was aiming at was to avoid DT parsing duplication for the
!multitouch and multitouch axis. I don't think there's a way to copy
the parameters.
The mt_init_slots might be a solution, but it does the copy the other
way around: from the multitouch to the !multitouch axis, and without
enabling it, which renders using both input_mt_init_slots and the
of_touchscreen code together impossible.
Is there a way to just enable an axis without calling
input_set_abs_params? Is __set_bit enough?
Thanks,
Maxime
--
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 2/3] input: touchscreen: of: Register multitouch axes
From: Dmitry Torokhov @ 2014-11-06 17:14 UTC (permalink / raw)
To: Maxime Ripard
Cc: Lothar Waßmann, Henrik Rydberg, linux-input, linux-kernel
In-Reply-To: <20141106160621.GM2989@lukather>
On Thu, Nov 06, 2014 at 05:06:21PM +0100, Maxime Ripard wrote:
> Hi,
>
> On Wed, Nov 05, 2014 at 09:56:35AM -0800, Dmitry Torokhov wrote:
> > On Wed, Nov 05, 2014 at 04:07:49PM +0100, Maxime Ripard wrote:
> > > So far, the DT parsing code was only setting up the regular input axes,
> > > completely ignoring their multitouch counter parts.
> > >
> > > Fill them with the same parameters than the regular axes.
> > >
> > > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> > > ---
> > > drivers/input/touchscreen/of_touchscreen.c | 12 +++++++++---
> > > 1 file changed, 9 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/drivers/input/touchscreen/of_touchscreen.c b/drivers/input/touchscreen/of_touchscreen.c
> > > index 74d6b0eb50ac..cf2a753edd96 100644
> > > --- a/drivers/input/touchscreen/of_touchscreen.c
> > > +++ b/drivers/input/touchscreen/of_touchscreen.c
> > > @@ -42,17 +42,23 @@ void touchscreen_parse_of_params(struct input_dev *dev)
> > >
> > > maximum = of_get_optional_u32(np, "touchscreen-size-x");
> > > fuzz = of_get_optional_u32(np, "touchscreen-fuzz-x");
> > > - if (maximum || fuzz)
> > > + if (maximum || fuzz) {
> > > input_set_abs_params(dev, ABS_X, 0, maximum, fuzz, 0);
> > > + input_set_abs_params(dev, ABS_MT_POSITION_X, 0, maximum, fuzz, 0);
> >
> > Not all devices are multitouch so you shoudl not be setting multitouch
> > bits unconditionally.
>
> Hmmm, right.
>
> > In I think we should rely on driver to set capability bits properly and
> > then here test them and apply the readings. Probably also issue a
> > warning if we see max/fuzz setting but neither ABS_<N>/ABS_MT_<N>
> > capabilities.
>
> What I was aiming at was to avoid DT parsing duplication for the
> !multitouch and multitouch axis. I don't think there's a way to copy
> the parameters.
>
> The mt_init_slots might be a solution, but it does the copy the other
> way around: from the multitouch to the !multitouch axis, and without
> enabling it, which renders using both input_mt_init_slots and the
> of_touchscreen code together impossible.
>
> Is there a way to just enable an axis without calling
> input_set_abs_params? Is __set_bit enough?
Hmm, not anymore I'm afraid as you still need absinfo being allocated,
but there is input_set_capability() that is basically a fancy
__set_bit(). If you set ABS_* with it that would mean that the device
has unspecified min/max/fuzz.
And then, in DT parsing code, I'd do:
...read max and fuzz for an axis...
if (max || fuzz) {
if (!test_bit(ABS_N, dev->absbit) &&
!test_bit(ABS_MT_N, dev->absbit)) {
dev_warn("... have parameters but axis not set up...");
} else {
if (test_bit(ABS_N...)
input_set_abs_params(dev, ABS_N...);
if (test_bit(ABS_MT_N...)
input_set_abs_params(dev, ABS_MT_N...);
}
Thanks.
--
Dmitry
^ permalink raw reply
* Re: [PATCH] Input: synaptics - add min/max quirk for Lenovo T440s
From: Dmitry Torokhov @ 2014-11-06 17:27 UTC (permalink / raw)
To: Takashi Iwai; +Cc: linux-input
In-Reply-To: <1415288902-11140-1-git-send-email-tiwai@suse.de>
On Thu, Nov 06, 2014 at 04:48:22PM +0100, Takashi Iwai wrote:
> The new Lenovo T440s laptop has a different PnP ID "LEN0039", and it
> needs the similar min/max quirk to make its clickpad working.
>
> BugLink: https://bugzilla.opensuse.org/show_bug.cgi?id=903748
> Reported-and-tested-by: Joschi Brauchle <joschibrauchle@gmx.de>
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Applied, thank you.
> ---
> drivers/input/mouse/synaptics.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
> index 9031a0a28ea4..2a7a9174c702 100644
> --- a/drivers/input/mouse/synaptics.c
> +++ b/drivers/input/mouse/synaptics.c
> @@ -135,8 +135,8 @@ static const struct min_max_quirk min_max_pnpid_table[] = {
> 1232, 5710, 1156, 4696
> },
> {
> - (const char * const []){"LEN0034", "LEN0036", "LEN2002",
> - "LEN2004", NULL},
> + (const char * const []){"LEN0034", "LEN0036", "LEN0039",
> + "LEN2002", "LEN2004", NULL},
> 1024, 5112, 2024, 4832
> },
> {
> @@ -163,6 +163,7 @@ static const char * const topbuttonpad_pnp_ids[] = {
> "LEN0036", /* T440 */
> "LEN0037",
> "LEN0038",
> + "LEN0039", /* T440s */
> "LEN0041",
> "LEN0042", /* Yoga */
> "LEN0045",
> --
> 2.1.3
>
--
Dmitry
^ permalink raw reply
* Re: [PATCH v3 0/4] Fixes for ALPS driver
From: Pali Rohár @ 2014-11-06 17:46 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input,
linux-kernel
In-Reply-To: <54563C5F.10702@redhat.com>
[-- Attachment #1: Type: Text/Plain, Size: 1585 bytes --]
On Sunday 02 November 2014 15:14:55 Hans de Goede wrote:
> Hi,
>
> On 11/02/2014 12:25 AM, Pali Rohár wrote:
> > This patch series tries to fix problems with ALPS dualpoint
> > devices on Dell Latitude laptops which are probably caused
> > by bugs in Dell BIOS, Dell EC or in ALPS touchpad firmware
> > itself.
> >
> > Root of problems is yet unknown but at least this patch
> > series could eliminate reporting bogus data to userspace.
> >
> > Reported bugs:
> > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1258837
> > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1320022
> > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1272624
> > https://bugzilla.redhat.com/show_bug.cgi?id=1145954
> >
> > Pali Rohár (4):
> > input: alps: Do not try to parse data as 3 bytes packet
> > when driver
> >
> > is out of sync
> >
> > input: alps: Allow 2 invalid packets without resetting
> > device input: alps: For protocol V3, do not process data
> > when last packet's
> >
> > bit7 is set
> >
> > input: alps: Fix trackstick detection
> >
> > drivers/input/mouse/alps.c | 113
> > +++++++++++++++++++++++++++++++------------- 1 file
> > changed, 80 insertions(+), 33 deletions(-)
>
> Thanks for working on this, patches 1-3 are:
>
> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
>
> Patch 4 is too much work to review on a Sunday :), so I'll
> leave reviewing it to Dmitry.
>
> Regards,
>
> Hans
Dmitry, can you review v3 patches?
--
Pali Rohár
pali.rohar@gmail.com
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply
* Help writing a custom HID driver
From: Jose Diez @ 2014-11-06 18:33 UTC (permalink / raw)
To: linux-input
Hello linux-input,
I'm trying to write a custom HID driver. It works fine, and I can send
reports just fine, but one of the requirements of this device is that I
have to reply to reports with code 62 with another report with code 62,
which resets a watchdog in the device.
This is my code so far: http://codepad.org/m4QiWhDt
The problem is in line 40. It seems like I'm not allowed to call
hid_hw_output_report from the raw_event callback handler. I've tried
surrounding the call with spin_locks, but I still get the "scheduling
while atomic" error.
I'm not sure how to approach this - can someone help? It would be much
appreciated. Thanks.
^ permalink raw reply
* Re: Help writing a custom HID driver
From: Benjamin Tissoires @ 2014-11-06 18:57 UTC (permalink / raw)
To: Jose Diez; +Cc: linux-input
In-Reply-To: <545BBF05.9030203@mediacru.sh>
Hi Jose,
On Thu, Nov 6, 2014 at 1:33 PM, Jose Diez <jose@mediacru.sh> wrote:
> Hello linux-input,
>
> I'm trying to write a custom HID driver. It works fine, and I can send
> reports just fine, but one of the requirements of this device is that I have
> to reply to reports with code 62 with another report with code 62, which
> resets a watchdog in the device.
>
> This is my code so far: http://codepad.org/m4QiWhDt
>
> The problem is in line 40. It seems like I'm not allowed to call
> hid_hw_output_report from the raw_event callback handler. I've tried
> surrounding the call with spin_locks, but I still get the "scheduling while
> atomic" error.
Yeah, when you are in the .event callback, you are basically called by
an IRQ, so you can not schedule a potentially blocking operation.
>
> I'm not sure how to approach this - can someone help? It would be much
> appreciated. Thanks.
I would use a worker to do what you are trying to do. You can have a
look at the reset_worker we have in drivers/hid/hid-rmi.c.
When the event is not one we expected, we schedule a worker thread
which then sends an output report to the device. This way, the
blocking operation is sent from a different thread than the IRQ one.
It is kind of what you are willing to do.
There are many other examples of workers in the hid subtree, or you
can refer to the doc to find out more.
Cheers,
Benjamin
^ permalink raw reply
* Re: [PATCH 0/5] Input: elantech - support the Fujitsu H730 laptop
From: ulrik.debie-os @ 2014-11-06 19:20 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: Jan Kiszka, Hans de Goede, linux-input, David Herrmann
In-Reply-To: <2794823.jCt3gL1uac@dtor-glaptop>
Ping.
I hope the mux regression problem has settled down a bit in the mean time.
On Thu, Oct 23, 2014 at 11:39:43AM -0700, Dmitry Torokhov wrote:
> Date: Thu, 23 Oct 2014 11:39:43 -0700
> From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> To: ulrik.debie-os@e2big.org
> Cc: Jan Kiszka <jan.kiszka@web.de>, Hans de Goede <hdegoede@redhat.com>,
> linux-input@vger.kernel.org, David Herrmann <dh.herrmann@gmail.com>
> Subject: Re: [PATCH 0/5] Input: elantech - support the Fujitsu H730 laptop
>
> On Thursday, October 23, 2014 08:36:19 PM ulrik.debie-os@e2big.org wrote:
> > Hi Dmitry,
> >
> > On Sat, Oct 04, 2014 at 11:36:26AM +0200, Hans de Goede wrote:
> > > Hi,
> > >
> > > On 10/04/2014 11:33 AM, Jan Kiszka wrote:
> > > > On 2014-08-30 16:10, Ulrik De Bie wrote:
> > > >> This patch set makes the elantech driver work for the Fujitsu H730
> > > >> laptop. It also adds a sysfs knob to allow other laptops that are
> > > >> facing similar problems as the Fujitsu H730 to have working touchpad.
> > > >>
> > > >> I'm considering adding a WARN_ONCE when the crc_enabled signature check
> > > >> fails. The message would then point the user to the crc_enabled sysfs
> > > >> knob,
> > > >> and kindly ask the user to report the laptop to linux-input mailinglist
> > > >> ?
> > > >> Any suggestions ?
> > > >>
> > > >> Two users have tested the combination of this patchset and confirmed
> > > >> that
> > > >> it makes the H730 touchpad/trackpoint work.
> > > >>
> > > >> Here an overview of the patchset:
> > > >>
> > > >> Patch 1/ : Input: elantech - use elantech_report_trackpoint for
> > > >> hardware v4 too The Fujitsu H730 is the first v4 hardware identified
> > > >> that also sends the trackpoint packets. This patch enables the
> > > >> trackpoint on v4 hardware. With this patch the trackpoint will work.
> > > >>
> > > >> Patch 2/ : Input: elantech - Fix crc_enabled for Fujitsu H730
> > > >> Uses DMI to detect the H730 and ,if detected, will set crc_enabled to
> > > >> 1.
> > > >> With this patch the touchpad and left/right button will start to work.
> > > >>
> > > >> Patch 3/ : Input: elantech - report the middle button of the touchpad
> > > >> The Fujitsu H730 is the first laptop listed in the elantech.c file with
> > > >> 3 touchpad buttons. This patch enables the middle button for all
> > > >> elantech
> > > >> hardware and enables the reporting for v4 hardware.
> > > >> I want to hear feedback here on what preferences exist for the
> > > >> conditions
> > > >> to enable the middle button:
> > > >> - DMI
> > > >> - enable only for v4
> > > >> - enable for all/report for v3+v4
> > > >> ...
> > > >>
> > > >> Patch 4/ : Input: Elantech - provide a sysfs knob for crc_enabled
> > > >> Probably H730 will not remain the only elantech laptop that has this
> > > >> failing detection for the crc_enabled. This provides users with a
> > > >> workaround when the crc_enabled detection fails.
> > > >>
> > > >> Patch 5/ : Elantech - Update the documentation:
> > > >> trackpoint,v3/v4,crc_enabled This provides an update of the elantech
> > > >> documentation.
> > > >>
> > > >> Patch 4 depends on patch 2, and for consistency, patch 5 depends on
> > > >> patch 1-2-4.> >>
> > > >> Ulrik De Bie (5):
> > > >> Input: elantech - use elantech_report_trackpoint for hardware v4 too
> > > >> Input: elantech - Fix crc_enabled for Fujitsu H730
> > > >> Input: elantech - report the middle button of the touchpad
> > > >> Input: elantech - provide a sysfs knob for crc_enabled
> > > >>
> > > >> Input: elantech - Update the documentation:
> > > >> trackpoint,v3/v4,crc_enabled
> > > >>
> > > >> Documentation/input/elantech.txt | 85 ++++++++++++++++++++++++++--
> > > >> drivers/input/mouse/elantech.c | 119
> > > >> ++++++++++++++++++++++++++++++++-------
> > > >> drivers/input/mouse/elantech.h | 2 +-
> > > >> 3 files changed, 179 insertions(+), 27 deletions(-)
> > > >>
> > > >> Best regards,
> > > >> Ulrik De Bie
> > > >
> > > > What's the status of this series? Is it queued for 3.18 already?
> > >
> > > I don't see them in next yet:
> > >
> > > http://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/log/driver
> > > s/input/mouse/elantech.c
> > >
> > > I agree it would be nice to get these into 3.18.
> > >
> > > Dmitry, what is the plan here ?
> >
> > Ping Dmitry ?
> >
> > Do you want me to resend the patch ?
>
> Hi Ulrik,
>
> No, I have it, didn't have a chance to look at it though. Give me a day or so
> please.
>
> Thanks.
>
> --
> Dmitry
^ 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