Linux Input/HID development
 help / color / mirror / Atom feed
* [PATCH] Input: gpio_keys: Make sure wake-up buttons work.
From: NeilBrown @ 2014-11-07 23:37 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, linux-kernel, GTA04 owners

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



If a key is to be used for wake-up, we must not disable
the interrupt during suspend.

Signed-off-by: NeilBrown <neilb@suse.de>

diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c
index 8c98e97f8e41..0b5e54ae343e 100644
--- a/drivers/input/keyboard/gpio_keys.c
+++ b/drivers/input/keyboard/gpio_keys.c
@@ -526,6 +526,8 @@ static int gpio_keys_setup_key(struct platform_device *pdev,
 	 */
 	if (!button->can_disable)
 		irqflags |= IRQF_SHARED;
+	if (button->wakeup)
+		irqflags |= IRQF_NO_SUSPEND;
 
 	error = devm_request_any_context_irq(&pdev->dev, bdata->irq,
 					     isr, irqflags, desc, bdata);

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 811 bytes --]

^ permalink raw reply related

* [PATCH] Input: twl4030-pwrbutton: ensure a wakeup event is recorded.
From: NeilBrown @ 2014-11-07 23:40 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, linux-kernel, GTA04 owners

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



This button is treated as a wakeup source, so we need to initialise it
correctly.

Without the device_init_wakeup() call, dev->power.wakeup will
be NULL, and pm_wakeup_event() will do nothing.

Signed-off-by: NeilBrown <neilb@suse.de>

diff --git a/drivers/input/misc/twl4030-pwrbutton.c b/drivers/input/misc/twl4030-pwrbutton.c
index fb3b63b2f85c..8400a1a34d87 100644
--- a/drivers/input/misc/twl4030-pwrbutton.c
+++ b/drivers/input/misc/twl4030-pwrbutton.c
@@ -85,6 +85,7 @@ static int twl4030_pwrbutton_probe(struct platform_device *pdev)
 	}
 
 	platform_set_drvdata(pdev, pwr);
+	device_init_wakeup(&pdev->dev, true);
 
 	return 0;
 }

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 811 bytes --]

^ permalink raw reply related

* Re: [PATCH] Input: gpio_keys: Make sure wake-up buttons work.
From: Dmitry Torokhov @ 2014-11-07 23:45 UTC (permalink / raw)
  To: NeilBrown; +Cc: linux-input, linux-kernel, GTA04 owners, Rafael J. Wysocki
In-Reply-To: <20141108103707.45bcc7e3@notabene.brown>

Hi Neil,

On Sat, Nov 08, 2014 at 10:37:07AM +1100, NeilBrown wrote:
> 
> 
> If a key is to be used for wake-up, we must not disable
> the interrupt during suspend.
> 
> Signed-off-by: NeilBrown <neilb@suse.de>
> 
> diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c
> index 8c98e97f8e41..0b5e54ae343e 100644
> --- a/drivers/input/keyboard/gpio_keys.c
> +++ b/drivers/input/keyboard/gpio_keys.c
> @@ -526,6 +526,8 @@ static int gpio_keys_setup_key(struct platform_device *pdev,
>  	 */
>  	if (!button->can_disable)
>  		irqflags |= IRQF_SHARED;
> +	if (button->wakeup)
> +		irqflags |= IRQF_NO_SUSPEND;

No, enable_irq_wake() should be enough. I believe Rafael has fixed that
in the core, right?

>  
>  	error = devm_request_any_context_irq(&pdev->dev, bdata->irq,
>  					     isr, irqflags, desc, bdata);

Thanks.

-- 
Dmitry

^ permalink raw reply

* Re: [PATCH] Input: gpio_keys: Make sure wake-up buttons work.
From: NeilBrown @ 2014-11-08  0:00 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: linux-input, linux-kernel, GTA04 owners, Rafael J. Wysocki
In-Reply-To: <20141107234507.GB4439@dtor-ws>

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

On Fri, 7 Nov 2014 15:45:07 -0800 Dmitry Torokhov <dmitry.torokhov@gmail.com>
wrote:

> Hi Neil,
> 
> On Sat, Nov 08, 2014 at 10:37:07AM +1100, NeilBrown wrote:
> > 
> > 
> > If a key is to be used for wake-up, we must not disable
> > the interrupt during suspend.
> > 
> > Signed-off-by: NeilBrown <neilb@suse.de>
> > 
> > diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c
> > index 8c98e97f8e41..0b5e54ae343e 100644
> > --- a/drivers/input/keyboard/gpio_keys.c
> > +++ b/drivers/input/keyboard/gpio_keys.c
> > @@ -526,6 +526,8 @@ static int gpio_keys_setup_key(struct platform_device *pdev,
> >  	 */
> >  	if (!button->can_disable)
> >  		irqflags |= IRQF_SHARED;
> > +	if (button->wakeup)
> > +		irqflags |= IRQF_NO_SUSPEND;
> 
> No, enable_irq_wake() should be enough. I believe Rafael has fixed that
> in the core, right?
> 

Interesting...  you seem to be right, but I was having wakeup problems until
I added that patch.
I didn't test exhaustively, but the first time my device entered suspend, the
gpio-key didn't wake it up.  Subsequent suspends did...

After I applied this patch, it would reliably wake up even on the first
suspend.

So there seems to be something wrong, but maybe it is more subtle.

Is there a good reason why enable_irq_wake() is only called just as the
device is being suspended, and why disable_irq_wake() is called on resume?
To me it would make more sense to just enable it once (if required) and leave
it enabled....

I'll see what I can find.

Thanks,
NeilBrown

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 811 bytes --]

^ permalink raw reply

* Re: [PATCH] Input: gpio_keys: Make sure wake-up buttons work.
From: Rafael J. Wysocki @ 2014-11-08  0:49 UTC (permalink / raw)
  To: NeilBrown; +Cc: Dmitry Torokhov, linux-input, linux-kernel, GTA04 owners
In-Reply-To: <20141108110058.6c5217e3@notabene.brown>

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

On Saturday, November 08, 2014 11:00:58 AM NeilBrown wrote:
> On Fri, 7 Nov 2014 15:45:07 -0800 Dmitry Torokhov <dmitry.torokhov@gmail.com>
> wrote:
> 
> > Hi Neil,
> > 
> > On Sat, Nov 08, 2014 at 10:37:07AM +1100, NeilBrown wrote:
> > > 
> > > 
> > > If a key is to be used for wake-up, we must not disable
> > > the interrupt during suspend.
> > > 
> > > Signed-off-by: NeilBrown <neilb@suse.de>
> > > 
> > > diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c
> > > index 8c98e97f8e41..0b5e54ae343e 100644
> > > --- a/drivers/input/keyboard/gpio_keys.c
> > > +++ b/drivers/input/keyboard/gpio_keys.c
> > > @@ -526,6 +526,8 @@ static int gpio_keys_setup_key(struct platform_device *pdev,
> > >  	 */
> > >  	if (!button->can_disable)
> > >  		irqflags |= IRQF_SHARED;
> > > +	if (button->wakeup)
> > > +		irqflags |= IRQF_NO_SUSPEND;
> > 
> > No, enable_irq_wake() should be enough. I believe Rafael has fixed that
> > in the core, right?
> > 
> 
> Interesting...  you seem to be right, but I was having wakeup problems until
> I added that patch.

This was a fairly recent change made in 3.18-rc1.

> I didn't test exhaustively, but the first time my device entered suspend, the
> gpio-key didn't wake it up.  Subsequent suspends did...
> 
> After I applied this patch, it would reliably wake up even on the first
> suspend.
> 
> So there seems to be something wrong, but maybe it is more subtle.
> 
> Is there a good reason why enable_irq_wake() is only called just as the
> device is being suspended, and why disable_irq_wake() is called on resume?
> To me it would make more sense to just enable it once (if required) and leave
> it enabled....

On some platforms it actually changes the configuration of interrupt
controllers in to a "suspend mode" which is not appropriate for run time
AFAICS.

> I'll see what I can find.

Yes, please.

Rafael

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

^ permalink raw reply

* Re: [PATCH 1/5] Input: elantech - use elantech_report_trackpoint for hardware v4 too
From: Dmitry Torokhov @ 2014-11-08  8:21 UTC (permalink / raw)
  To: Ulrik De Bie; +Cc: linux-input, Hans de Goede, David Herrmann
In-Reply-To: <1409407846-15449-2-git-send-email-ulrik.debie-os@e2big.org>

On Sat, Aug 30, 2014 at 04:10:42PM +0200, Ulrik De Bie wrote:
> The Fujitsu H730 has hardware v4 with a trackpoint. This enables
> the elantech_report_trackpoint for v4.
> 
> Reported-by: Stefan Valouch <stefan@valouch.com>
> Tested-by: Stefan Valouch <stefan@valouch.com>
> Tested-by: Alfredo Gemma <alfredo.gemma@gmail.com>
> Signed-off-by: Ulrik De Bie <ulrik.debie-os@e2big.org>

Applied, thank you.

> ---
>  drivers/input/mouse/elantech.c | 16 ++++++++++++++--
>  1 file changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
> index da51738..f0a55b4d 100644
> --- a/drivers/input/mouse/elantech.c
> +++ b/drivers/input/mouse/elantech.c
> @@ -792,6 +792,9 @@ static int elantech_packet_check_v4(struct psmouse *psmouse)
>  	unsigned char packet_type = packet[3] & 0x03;
>  	bool sanity_check;
>  
> +	if ((packet[3]&0x0f) == 0x06)
> +		return PACKET_TRACKPOINT;
> +
>  	/*
>  	 * Sanity check based on the constant bits of a packet.
>  	 * The constant bits change depending on the value of
> @@ -877,10 +880,19 @@ static psmouse_ret_t elantech_process_byte(struct psmouse *psmouse)
>  
>  	case 4:
>  		packet_type = elantech_packet_check_v4(psmouse);
> -		if (packet_type == PACKET_UNKNOWN)
> +		switch (packet_type) {
> +		case PACKET_UNKNOWN:
>  			return PSMOUSE_BAD_DATA;
>  
> -		elantech_report_absolute_v4(psmouse, packet_type);
> +		case PACKET_TRACKPOINT:
> +			elantech_report_trackpoint(psmouse, packet_type);
> +			break;
> +
> +		default:
> +			elantech_report_absolute_v4(psmouse, packet_type);
> +			break;
> +		}
> +
>  		break;
>  	}
>  
> -- 
> 2.1.0
> 

-- 
Dmitry

^ permalink raw reply

* Re: [PATCH 2/5] Input: elantech - Fix crc_enabled for Fujitsu H730
From: Dmitry Torokhov @ 2014-11-08  8:22 UTC (permalink / raw)
  To: Ulrik De Bie; +Cc: linux-input, Hans de Goede, David Herrmann
In-Reply-To: <1409407846-15449-3-git-send-email-ulrik.debie-os@e2big.org>

On Sat, Aug 30, 2014 at 04:10:43PM +0200, Ulrik De Bie wrote:
> The Fujitsu H730 does not work with crc_enabled = 0, even though the
> crc_enabled bit in the firmware version indicated it would. When switching
> this value to crc_enabled to 1, the touchpad works. This patch uses
> DMI to detect H730.
> 
> Reported-by: Stefan Valouch <stefan@valouch.com>
> Tested-by: Stefan Valouch <stefan@valouch.com>
> Tested-by: Alfredo Gemma <alfredo.gemma@gmail.com>
> Signed-off-by: Ulrik De Bie <ulrik.debie-os@e2big.org>

Applied with some edits to minimize patch size, thank you.

> ---
>  drivers/input/mouse/elantech.c | 65 ++++++++++++++++++++++++++++++------------
>  drivers/input/mouse/elantech.h |  2 +-
>  2 files changed, 48 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
> index f0a55b4d..67d56c0 100644
> --- a/drivers/input/mouse/elantech.c
> +++ b/drivers/input/mouse/elantech.c
> @@ -1235,6 +1235,52 @@ static int elantech_set_input_params(struct psmouse *psmouse)
>  	return 0;
>  }
>  
> +/*
> + * Some hw_version 3 models go into error state when we try to set
> + * bit 3 and/or bit 1 of r10.
> + */
> +static const struct dmi_system_id no_hw_res_dmi_table[] = {
> +#if defined(CONFIG_DMI) && defined(CONFIG_X86)
> +	{
> +		/* Gigabyte U2442 */
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "U2442"),
> +		},
> +	},
> +#endif
> +	{ }
> +};
> +
> +/*
> + * Some hw_version 4 models do not work with crc_disabled
> + */
> +static const struct dmi_system_id elantech_dmi_crc_enabled[] = {
> +#if defined(CONFIG_DMI) && defined(CONFIG_X86)
> +	{
> +		/* Fujitsu H730 does not work with crc_enabled == 0 */
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "CELSIUS H730"),
> +		},
> +	},
> +#endif
> +	{ }
> +};
> +
> +/*
> + * Autodetect crc_enabled and verify override DMI table
> + */
> +static unsigned char elantech_detect_crc_enabled(struct elantech_data *etd)
> +{
> +
> +#if defined(CONFIG_DMI) && defined(CONFIG_X86)
> +	if (dmi_check_system(elantech_dmi_crc_enabled))
> +		return 1;
> +#endif /* CONFIG_X86 */
> +
> +	return ((etd->fw_version & 0x4000) == 0x4000);
> +}
>  struct elantech_attr_data {
>  	size_t		field_offset;
>  	unsigned char	reg;
> @@ -1444,23 +1490,6 @@ static int elantech_reconnect(struct psmouse *psmouse)
>  }
>  
>  /*
> - * Some hw_version 3 models go into error state when we try to set
> - * bit 3 and/or bit 1 of r10.
> - */
> -static const struct dmi_system_id no_hw_res_dmi_table[] = {
> -#if defined(CONFIG_DMI) && defined(CONFIG_X86)
> -	{
> -		/* Gigabyte U2442 */
> -		.matches = {
> -			DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
> -			DMI_MATCH(DMI_PRODUCT_NAME, "U2442"),
> -		},
> -	},
> -#endif
> -	{ }
> -};
> -
> -/*
>   * determine hardware version and set some properties according to it.
>   */
>  static int elantech_set_properties(struct elantech_data *etd)
> @@ -1518,7 +1547,7 @@ static int elantech_set_properties(struct elantech_data *etd)
>  	 * The signatures of v3 and v4 packets change depending on the
>  	 * value of this hardware flag.
>  	 */
> -	etd->crc_enabled = ((etd->fw_version & 0x4000) == 0x4000);
> +	etd->crc_enabled = elantech_detect_crc_enabled(etd);
>  
>  	/* Enable real hardware resolution on hw_version 3 ? */
>  	etd->set_hw_resolution = !dmi_check_system(no_hw_res_dmi_table);
> diff --git a/drivers/input/mouse/elantech.h b/drivers/input/mouse/elantech.h
> index 6f3afec..c25127a 100644
> --- a/drivers/input/mouse/elantech.h
> +++ b/drivers/input/mouse/elantech.h
> @@ -128,11 +128,11 @@ struct elantech_data {
>  	unsigned char reg_25;
>  	unsigned char reg_26;
>  	unsigned char debug;
> +	unsigned char crc_enabled;
>  	unsigned char capabilities[3];
>  	bool paritycheck;
>  	bool jumpy_cursor;
>  	bool reports_pressure;
> -	bool crc_enabled;
>  	bool set_hw_resolution;
>  	unsigned char hw_version;
>  	unsigned int fw_version;
> -- 
> 2.1.0
> 

-- 
Dmitry

^ permalink raw reply

* Re: [PATCH 3/5] Input: elantech - report the middle button of the touchpad
From: Dmitry Torokhov @ 2014-11-08  8:23 UTC (permalink / raw)
  To: Ulrik De Bie; +Cc: linux-input, Hans de Goede, David Herrmann
In-Reply-To: <1409407846-15449-4-git-send-email-ulrik.debie-os@e2big.org>

On Sat, Aug 30, 2014 at 04:10:44PM +0200, Ulrik De Bie wrote:
> In the past, no elantech was known with 3 touchpad mouse buttons.
> Fujitsu H730 is the first known elantech with a middle button. This commit
> enables this middle button.
> 
> Reported-by: Stefan Valouch <stefan@valouch.com>
> Tested-by: Stefan Valouch <stefan@valouch.com>
> Tested-by: Alfredo Gemma <alfredo.gemma@gmail.com>
> Signed-off-by: Ulrik De Bie <ulrik.debie-os@e2big.org>
> ---
>  drivers/input/mouse/elantech.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
> index 67d56c0..e86bbd7 100644
> --- a/drivers/input/mouse/elantech.c
> +++ b/drivers/input/mouse/elantech.c
> @@ -563,6 +563,7 @@ static void elantech_input_sync_v4(struct psmouse *psmouse)
>  	} else {
>  		input_report_key(dev, BTN_LEFT, packet[0] & 0x01);
>  		input_report_key(dev, BTN_RIGHT, packet[0] & 0x02);
> +		input_report_key(dev, BTN_MIDDLE, packet[0] & 0x04);
>  	}
>  
>  	input_mt_report_pointer_emulation(dev, true);
> @@ -1150,6 +1151,7 @@ static int elantech_set_input_params(struct psmouse *psmouse)
>  	__clear_bit(EV_REL, dev->evbit);
>  
>  	__set_bit(BTN_LEFT, dev->keybit);
> +	__set_bit(BTN_MIDDLE, dev->keybit);

No, we should not advertise presence of middle button unconditionally. I
guess we need another DMI, at least for now.

>  	__set_bit(BTN_RIGHT, dev->keybit);
>  
>  	__set_bit(BTN_TOUCH, dev->keybit);
> -- 
> 2.1.0
> 

Thanks.

-- 
Dmitry

^ permalink raw reply

* Re: [PATCH 4/5] Input: elantech - provide a sysfs knob for crc_enabled
From: Dmitry Torokhov @ 2014-11-08  8:25 UTC (permalink / raw)
  To: Ulrik De Bie; +Cc: linux-input, Hans de Goede, David Herrmann
In-Reply-To: <1409407846-15449-5-git-send-email-ulrik.debie-os@e2big.org>

On Sat, Aug 30, 2014 at 04:10:45PM +0200, Ulrik De Bie wrote:
> The detection of crc_enabled is known to fail for Fujitsu H730. A DMI
> blacklist is added for that, but it can be expected that other laptops
> will pop up with this.
> 
> Here a sysfs knob is provided to alter the behaviour of crc_enabled.
> Writing 0 or 1 to it sets the variable to 0 or 1.
> Writing 2 to it will perform the detection and set the variable to 0
> or 1 according to the result of the detection.
> Reading it will show the crc_enabled variable (0 or 1).
> 

This is over-complicated, please make it straight bool (0/1). If one
wants to redetect it can be done by unbinding and rebinding driver
through sysfs (either at driver level or serio - drvctl attribute -
level).

Thanks.

-- 
Dmitry

^ permalink raw reply

* Re: Aorus X3+ touchpad not working
From: Dmitry Torokhov @ 2014-11-08  8:41 UTC (permalink / raw)
  To: Hans de Goede; +Cc: Maximilien Levesque, Benjamin Tissoires, linux-input
In-Reply-To: <545B8B04.8070706@redhat.com>

On Thu, Nov 06, 2014 at 03:51:48PM +0100, Hans de Goede wrote:
> Hi,
> 
> On 11/06/2014 03:13 PM, Maximilien Levesque wrote:
> > Hi,
> > Thanks for your time!
> > Below is the output of dmesg with kernel boot parameter i8042.debug=1
> > All the best,
> 
> Thanks, I'm afraid reading raw i8042 is not my forte though, Dmitry, can
> you take a look, and do you see why no ps/2 mouse (or touchpad) is seen ?

...

> > [    1.901600] input: AT Translated Set 2 keyboard as
> > /devices/platform/i8042/serio0/input/input4
> > [    1.901749] i8042: [3] d4 -> i8042 (command)
> > [    1.901809] i8042: [3] f2 -> i8042 (parameter)

...
No ACK to GET_ID

> > [    2.101556] i8042: [53] d4 -> i8042 (command)
> > [    2.101622] i8042: [53] ed -> i8042 (parameter)

Trying LEDs - no response - not a keyboard, atkbd signs out

> > [    2.165646] usb 1-2: new low-speed USB device number 2 using xhci_hcd
> > [    2.185660] usb 3-1: new high-speed USB device number 2 using ehci-pci
> > [    2.205674] usb 4-1: new high-speed USB device number 2 using ehci-pci
> > [    2.301725] i8042: [103] 60 -> i8042 (command)
> > [    2.301796] i8042: [103] 45 -> i8042 (parameter)

Close AUX port

> > [    2.301911] i8042: [103] 60 -> i8042 (command)
> > [    2.302025] i8042: [103] 47 -> i8042 (parameter)

Enables AUX port again (to clear state - needed on some boxes)

> > [    2.302094] i8042: [103] d4 -> i8042 (command)
> > [    2.302212] i8042: [103] f2 -> i8042 (parameter)

psmouse - GET_ID - silence. So we decide there is no mouse.

Have we tried i8042.reset?

Thanks.

-- 
Dmitry

^ permalink raw reply

* Re: Aorus X3+ touchpad not working
From: Hans de Goede @ 2014-11-08 10:12 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: Maximilien Levesque, Benjamin Tissoires, linux-input
In-Reply-To: <20141108084125.GF21475@dtor-ws>

Hi,

On 11/08/2014 09:41 AM, Dmitry Torokhov wrote:
> On Thu, Nov 06, 2014 at 03:51:48PM +0100, Hans de Goede wrote:
>> Hi,
>>
>> On 11/06/2014 03:13 PM, Maximilien Levesque wrote:
>>> Hi,
>>> Thanks for your time!
>>> Below is the output of dmesg with kernel boot parameter i8042.debug=1
>>> All the best,
>>
>> Thanks, I'm afraid reading raw i8042 is not my forte though, Dmitry, can
>> you take a look, and do you see why no ps/2 mouse (or touchpad) is seen ?
> 
> ...
> 
>>> [    1.901600] input: AT Translated Set 2 keyboard as
>>> /devices/platform/i8042/serio0/input/input4
>>> [    1.901749] i8042: [3] d4 -> i8042 (command)
>>> [    1.901809] i8042: [3] f2 -> i8042 (parameter)
> 
> ...
> No ACK to GET_ID
> 
>>> [    2.101556] i8042: [53] d4 -> i8042 (command)
>>> [    2.101622] i8042: [53] ed -> i8042 (parameter)
> 
> Trying LEDs - no response - not a keyboard, atkbd signs out
> 
>>> [    2.165646] usb 1-2: new low-speed USB device number 2 using xhci_hcd
>>> [    2.185660] usb 3-1: new high-speed USB device number 2 using ehci-pci
>>> [    2.205674] usb 4-1: new high-speed USB device number 2 using ehci-pci
>>> [    2.301725] i8042: [103] 60 -> i8042 (command)
>>> [    2.301796] i8042: [103] 45 -> i8042 (parameter)
> 
> Close AUX port
> 
>>> [    2.301911] i8042: [103] 60 -> i8042 (command)
>>> [    2.302025] i8042: [103] 47 -> i8042 (parameter)
> 
> Enables AUX port again (to clear state - needed on some boxes)
> 
>>> [    2.302094] i8042: [103] d4 -> i8042 (command)
>>> [    2.302212] i8042: [103] f2 -> i8042 (parameter)
> 
> psmouse - GET_ID - silence. So we decide there is no mouse.

Dmitry, thanks for the analysis.

So if I understand things correctly, then the aux port also gets
probed for it having a second keyboard attached ? I did not know
that, could it be that this confuses the touchpad?

> Have we tried i8042.reset?

No not yet. Maximilien, can you try booting with
i8042.reset=1 on the kernel commandline ?

Regards,

Hans

^ permalink raw reply

* Re: [PATCH 1/5] input: touchscreen: ti_am335x_tsc Interchange touchscreen and ADC steps
From: Jonathan Cameron @ 2014-11-08 12:29 UTC (permalink / raw)
  To: Vignesh R, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell,
	Kumar Gala, Benoit Cousson, Tony Lindgren, Russell King,
	Hartmut Knaack, Dmitry Torokhov, Lee Jones,
	Sebastian Andrzej Siewior
  Cc: Lars-Peter Clausen, Peter Meerwald, Samuel Ortiz, Felipe Balbi,
	Brad Griffis, Sanjeev Sharma, Paul Gortmaker, Jan Kardell,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-omap-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-iio-u79uwXL29TY76Z2rM5mHXA,
	linux-input-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1415339350-17679-2-git-send-email-vigneshr-l0cyMroinI0@public.gmane.org>

On 07/11/14 05:49, Vignesh R wrote:
> From: Brad Griffis <bgriffis-l0cyMroinI0@public.gmane.org>
> 
> This patch makes the initial changes required to workaround TSC-false
> pen-up interrupts. It is required to implement these changes in order to
> remove udelay in the TSC interrupt handler and false pen-up events.
> The charge step is to be executed immediately after sampling X+. Hence
> TSC is made to use higher numbered steps (steps 5 to 16 for 5 co-ordinate
> readouts, 4 wire TSC configuration) and ADC to use lower ones. Further
> X co-ordinate readouts must be the last to be sampled, thus co-ordinates
> are sampled in the order Y-Z-X.
> 
> Signed-off-by: Brad Griffis <bgriffis-l0cyMroinI0@public.gmane.org>
> [vigneshr-l0cyMroinI0@public.gmane.org: Ported the patch from v3.12 to v3.18rc2]
> 
> Signed-off-by: Vignesh R <vigneshr-l0cyMroinI0@public.gmane.org>
For the tiny bit in IIO
Acked-by: Jonathan Cameron <jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>

All yours Lee/Dmitry.

Jonathan
> ---
>  drivers/iio/adc/ti_am335x_adc.c           |  5 ++--
>  drivers/input/touchscreen/ti_am335x_tsc.c | 42 ++++++++++++++++++-------------
>  2 files changed, 26 insertions(+), 21 deletions(-)
> 
> diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c
> index b730864731e8..adba23246474 100644
> --- a/drivers/iio/adc/ti_am335x_adc.c
> +++ b/drivers/iio/adc/ti_am335x_adc.c
> @@ -86,19 +86,18 @@ static void tiadc_step_config(struct iio_dev *indio_dev)
>  {
>  	struct tiadc_device *adc_dev = iio_priv(indio_dev);
>  	unsigned int stepconfig;
> -	int i, steps;
> +	int i, steps = 0;
>  
>  	/*
>  	 * There are 16 configurable steps and 8 analog input
>  	 * lines available which are shared between Touchscreen and ADC.
>  	 *
> -	 * Steps backwards i.e. from 16 towards 0 are used by ADC
> +	 * Steps forwards i.e. from 0 towards 16 are used by ADC
>  	 * depending on number of input lines needed.
>  	 * Channel would represent which analog input
>  	 * needs to be given to ADC to digitalize data.
>  	 */
>  
> -	steps = TOTAL_STEPS - adc_dev->channels;
>  	if (iio_buffer_enabled(indio_dev))
>  		stepconfig = STEPCONFIG_AVG_16 | STEPCONFIG_FIFO1
>  					| STEPCONFIG_MODE_SWCNT;
> diff --git a/drivers/input/touchscreen/ti_am335x_tsc.c b/drivers/input/touchscreen/ti_am335x_tsc.c
> index 2ce649520fe0..1aeac9675fe7 100644
> --- a/drivers/input/touchscreen/ti_am335x_tsc.c
> +++ b/drivers/input/touchscreen/ti_am335x_tsc.c
> @@ -121,7 +121,7 @@ static void titsc_step_config(struct titsc *ts_dev)
>  {
>  	unsigned int	config;
>  	int i;
> -	int end_step;
> +	int end_step, first_step, tsc_steps;
>  	u32 stepenable;
>  
>  	config = STEPCONFIG_MODE_HWSYNC |
> @@ -140,9 +140,11 @@ static void titsc_step_config(struct titsc *ts_dev)
>  		break;
>  	}
>  
> -	/* 1 … coordinate_readouts is for X */
> -	end_step = ts_dev->coordinate_readouts;
> -	for (i = 0; i < end_step; i++) {
> +	tsc_steps = ts_dev->coordinate_readouts * 2 + 2;
> +	first_step = TOTAL_STEPS - tsc_steps;
> +	/* Steps 16 to 16-coordinate_readouts is for X */
> +	end_step = first_step + tsc_steps;
> +	for (i = end_step - ts_dev->coordinate_readouts; i < end_step; i++) {
>  		titsc_writel(ts_dev, REG_STEPCONFIG(i), config);
>  		titsc_writel(ts_dev, REG_STEPDELAY(i), STEPCONFIG_OPENDLY);
>  	}
> @@ -164,9 +166,9 @@ static void titsc_step_config(struct titsc *ts_dev)
>  		break;
>  	}
>  
> -	/* coordinate_readouts … coordinate_readouts * 2 is for Y */
> -	end_step = ts_dev->coordinate_readouts * 2;
> -	for (i = ts_dev->coordinate_readouts; i < end_step; i++) {
> +	/* 1 ... coordinate_readouts is for Y */
> +	end_step = first_step + ts_dev->coordinate_readouts;
> +	for (i = first_step; i < end_step; i++) {
>  		titsc_writel(ts_dev, REG_STEPCONFIG(i), config);
>  		titsc_writel(ts_dev, REG_STEPDELAY(i), STEPCONFIG_OPENDLY);
>  	}
> @@ -179,7 +181,7 @@ static void titsc_step_config(struct titsc *ts_dev)
>  	titsc_writel(ts_dev, REG_CHARGECONFIG, config);
>  	titsc_writel(ts_dev, REG_CHARGEDELAY, CHARGEDLY_OPENDLY);
>  
> -	/* coordinate_readouts * 2 … coordinate_readouts * 2 + 2 is for Z */
> +	/* coordinate_readouts + 1 ... coordinate_readouts + 2 is for Z */
>  	config = STEPCONFIG_MODE_HWSYNC |
>  			STEPCONFIG_AVG_16 | ts_dev->bit_yp |
>  			ts_dev->bit_xn | STEPCONFIG_INM_ADCREFM |
> @@ -194,8 +196,11 @@ static void titsc_step_config(struct titsc *ts_dev)
>  	titsc_writel(ts_dev, REG_STEPDELAY(end_step),
>  			STEPCONFIG_OPENDLY);
>  
> -	/* The steps1 … end and bit 0 for TS_Charge */
> -	stepenable = (1 << (end_step + 2)) - 1;
> +	/* The steps end ... end - readouts * 2 + 2 and bit 0 for TS_Charge */
> +	stepenable = 1;
> +	for (i = 0; i < tsc_steps; i++)
> +		stepenable |= 1 << (first_step + i + 1);
> +
>  	ts_dev->step_mask = stepenable;
>  	am335x_tsc_se_set_cache(ts_dev->mfd_tscadc, ts_dev->step_mask);
>  }
> @@ -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;
>  			}
>  			prev_val_y = read;
> -
> -		} else if (channel < creads * 2 + 1) {
> -			*z1 = read;
> -
> -		} else if (channel < creads * 2 + 2) {
> -			*z2 = read;
>  		}
>  	}
>  }
> 

^ permalink raw reply

* Re: Aorus X3+ touchpad not working
From: Maximilien Levesque @ 2014-11-08 13:55 UTC (permalink / raw)
  To: Hans de Goede; +Cc: Dmitry Torokhov, Benjamin Tissoires, linux-input
In-Reply-To: <545DEC92.10903@redhat.com>

Hi,

Thanks for the analysis and the advice.
I tested i8042.reset=1 and touchpad's still dead.

Best,
Max

On Sat, Nov 8, 2014 at 11:12 AM, Hans de Goede <hdegoede@redhat.com> wrote:
> Hi,
>
> On 11/08/2014 09:41 AM, Dmitry Torokhov wrote:
>> On Thu, Nov 06, 2014 at 03:51:48PM +0100, Hans de Goede wrote:
>>> Hi,
>>>
>>> On 11/06/2014 03:13 PM, Maximilien Levesque wrote:
>>>> Hi,
>>>> Thanks for your time!
>>>> Below is the output of dmesg with kernel boot parameter i8042.debug=1
>>>> All the best,
>>>
>>> Thanks, I'm afraid reading raw i8042 is not my forte though, Dmitry, can
>>> you take a look, and do you see why no ps/2 mouse (or touchpad) is seen ?
>>
>> ...
>>
>>>> [    1.901600] input: AT Translated Set 2 keyboard as
>>>> /devices/platform/i8042/serio0/input/input4
>>>> [    1.901749] i8042: [3] d4 -> i8042 (command)
>>>> [    1.901809] i8042: [3] f2 -> i8042 (parameter)
>>
>> ...
>> No ACK to GET_ID
>>
>>>> [    2.101556] i8042: [53] d4 -> i8042 (command)
>>>> [    2.101622] i8042: [53] ed -> i8042 (parameter)
>>
>> Trying LEDs - no response - not a keyboard, atkbd signs out
>>
>>>> [    2.165646] usb 1-2: new low-speed USB device number 2 using xhci_hcd
>>>> [    2.185660] usb 3-1: new high-speed USB device number 2 using ehci-pci
>>>> [    2.205674] usb 4-1: new high-speed USB device number 2 using ehci-pci
>>>> [    2.301725] i8042: [103] 60 -> i8042 (command)
>>>> [    2.301796] i8042: [103] 45 -> i8042 (parameter)
>>
>> Close AUX port
>>
>>>> [    2.301911] i8042: [103] 60 -> i8042 (command)
>>>> [    2.302025] i8042: [103] 47 -> i8042 (parameter)
>>
>> Enables AUX port again (to clear state - needed on some boxes)
>>
>>>> [    2.302094] i8042: [103] d4 -> i8042 (command)
>>>> [    2.302212] i8042: [103] f2 -> i8042 (parameter)
>>
>> psmouse - GET_ID - silence. So we decide there is no mouse.
>
> Dmitry, thanks for the analysis.
>
> So if I understand things correctly, then the aux port also gets
> probed for it having a second keyboard attached ? I did not know
> that, could it be that this confuses the touchpad?
>
>> Have we tried i8042.reset?
>
> No not yet. Maximilien, can you try booting with
> i8042.reset=1 on the kernel commandline ?
>
> Regards,
>
> Hans

^ permalink raw reply

* Re: Aorus X3+ touchpad not working
From: Dmitry Torokhov @ 2014-11-08 20:35 UTC (permalink / raw)
  To: Hans de Goede; +Cc: Maximilien Levesque, Benjamin Tissoires, linux-input
In-Reply-To: <545DEC92.10903@redhat.com>

On Sat, Nov 08, 2014 at 11:12:34AM +0100, Hans de Goede wrote:
> Hi,
> 
> On 11/08/2014 09:41 AM, Dmitry Torokhov wrote:
> > On Thu, Nov 06, 2014 at 03:51:48PM +0100, Hans de Goede wrote:
> >> Hi,
> >>
> >> On 11/06/2014 03:13 PM, Maximilien Levesque wrote:
> >>> Hi,
> >>> Thanks for your time!
> >>> Below is the output of dmesg with kernel boot parameter i8042.debug=1
> >>> All the best,
> >>
> >> Thanks, I'm afraid reading raw i8042 is not my forte though, Dmitry, can
> >> you take a look, and do you see why no ps/2 mouse (or touchpad) is seen ?
> > 
> > ...
> > 
> >>> [    1.901600] input: AT Translated Set 2 keyboard as
> >>> /devices/platform/i8042/serio0/input/input4
> >>> [    1.901749] i8042: [3] d4 -> i8042 (command)
> >>> [    1.901809] i8042: [3] f2 -> i8042 (parameter)
> > 
> > ...
> > No ACK to GET_ID
> > 
> >>> [    2.101556] i8042: [53] d4 -> i8042 (command)
> >>> [    2.101622] i8042: [53] ed -> i8042 (parameter)
> > 
> > Trying LEDs - no response - not a keyboard, atkbd signs out
> > 
> >>> [    2.165646] usb 1-2: new low-speed USB device number 2 using xhci_hcd
> >>> [    2.185660] usb 3-1: new high-speed USB device number 2 using ehci-pci
> >>> [    2.205674] usb 4-1: new high-speed USB device number 2 using ehci-pci
> >>> [    2.301725] i8042: [103] 60 -> i8042 (command)
> >>> [    2.301796] i8042: [103] 45 -> i8042 (parameter)
> > 
> > Close AUX port
> > 
> >>> [    2.301911] i8042: [103] 60 -> i8042 (command)
> >>> [    2.302025] i8042: [103] 47 -> i8042 (parameter)
> > 
> > Enables AUX port again (to clear state - needed on some boxes)
> > 
> >>> [    2.302094] i8042: [103] d4 -> i8042 (command)
> >>> [    2.302212] i8042: [103] f2 -> i8042 (parameter)
> > 
> > psmouse - GET_ID - silence. So we decide there is no mouse.
> 
> Dmitry, thanks for the analysis.
> 
> So if I understand things correctly, then the aux port also gets
> probed for it having a second keyboard attached ?

Basically every "free" serio port is tried by every serio driver, so, depending
on link order and other factors psmouse driver can try both KBD and AUX port
and atkbd can do the same.

> I did not know
> that, could it be that this confuses the touchpad?

It should not as the first thing we try is GET_ID command which is the same for
keyboard and mouse and we did not get any response.

> 
> > Have we tried i8042.reset?
> 
> No not yet. Maximilien, can you try booting with
> i8042.reset=1 on the kernel commandline ?

OK, so it looks like it did not work. I wonder if we could try resetting the
mouse by sticking psmouse_reset before trying to isse the GETID command.

Thanks.

-- 
Dmitry

^ permalink raw reply

* Re: [PATCH] Input: twl4030-pwrbutton: ensure a wakeup event is recorded.
From: Dmitry Torokhov @ 2014-11-08 20:36 UTC (permalink / raw)
  To: NeilBrown; +Cc: linux-input, linux-kernel, GTA04 owners
In-Reply-To: <20141108104015.635a7388@notabene.brown>

On Sat, Nov 08, 2014 at 10:40:15AM +1100, NeilBrown wrote:
> 
> 
> This button is treated as a wakeup source, so we need to initialise it
> correctly.
> 
> Without the device_init_wakeup() call, dev->power.wakeup will
> be NULL, and pm_wakeup_event() will do nothing.
> 
> Signed-off-by: NeilBrown <neilb@suse.de>

Applied, thank you.

> 
> diff --git a/drivers/input/misc/twl4030-pwrbutton.c b/drivers/input/misc/twl4030-pwrbutton.c
> index fb3b63b2f85c..8400a1a34d87 100644
> --- a/drivers/input/misc/twl4030-pwrbutton.c
> +++ b/drivers/input/misc/twl4030-pwrbutton.c
> @@ -85,6 +85,7 @@ static int twl4030_pwrbutton_probe(struct platform_device *pdev)
>  	}
>  
>  	platform_set_drvdata(pdev, pwr);
> +	device_init_wakeup(&pdev->dev, true);
>  
>  	return 0;
>  }



-- 
Dmitry

^ permalink raw reply

* Re: [PATCH v3 1/4] input: alps: Do not try to parse data as 3 bytes packet when driver is out of sync
From: Dmitry Torokhov @ 2014-11-08 20:52 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input,
	linux-kernel
In-Reply-To: <1414884310-19842-2-git-send-email-pali.rohar@gmail.com>

On Sun, Nov 02, 2014 at 12:25:07AM +0100, Pali Rohár wrote:
> 5th and 6th byte of ALPS trackstick V3 protocol match condition for first byte
> of PS/2 3 bytes packet. When driver enters out of sync state and ALPS trackstick
> is sending data then driver match 5th, 6th and next 1st bytes as PS/2.
> 
> It basically means if user is using trackstick when driver is in out of sync
> state driver will never resync. Processing these bytes as 3 bytes PS/2 data
> cause total mess (random cursor movements, random clicks) and make trackstick
> unusable until psmouse driver decide to do full device reset.
> 
> Lot of users reported problems with ALPS devices on Dell Latitude E6440, E6540
> and E7440 laptops. ALPS device or Dell EC for unknown reason send some invalid
> ALPS PS/2 bytes which cause driver out of sync. It looks like that i8042 and
> psmouse/alps driver always receive group of 6 bytes packets so there are no
> missing bytes and no bytes were inserted between valid once.
> 
> This patch does not fix root of problem with ALPS devices found in Dell Latitude
> laptops but it does not allow to process some (invalid) subsequence of 6 bytes
> ALPS packets as 3 bytes PS/2 when driver is out of sync.
> 
> So with this patch trackstick input device does not report bogus data when
> also driver is out of sync, so trackstick should be usable on those machines.
> 
> Unknown is also information which ALPS devices send 3 bytes packets and why
> ALPS driver needs to handle also bare PS/2 packets. According to git (and plus
> historic tree from bitkeeper) code for processing 3 bytes bare PS/2 packets
> is there since first version of alps.c existence (since 2.6.9-rc2).

I believe it was to handle external devices plugged into PS/2 ports on
Dell laptops (maybe?). Dell laptops do not use active multiplexing
controller so everything comes mixed into single data stream.

> 
> We do not want to break some older ALPS devices. And disabling processing bare
> PS/2 packets when driver is out of sync should not break it.
> 
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> Tested-by: Pali Rohár <pali.rohar@gmail.com>
> Cc: stable@vger.kernel.org

Applied, thank you.

> ---
>  drivers/input/mouse/alps.c |    4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
> index 2b0ae8c..a772745 100644
> --- a/drivers/input/mouse/alps.c
> +++ b/drivers/input/mouse/alps.c
> @@ -1156,7 +1156,9 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
>  {
>  	struct alps_data *priv = psmouse->private;
>  
> -	if ((psmouse->packet[0] & 0xc8) == 0x08) { /* PS/2 packet */
> +	/* FIXME: Could we receive bare PS/2 packets from DualPoint devices?? */
> +	if (!psmouse->out_of_sync_cnt &&
> +	    (psmouse->packet[0] & 0xc8) == 0x08) { /* PS/2 packet */
>  		if (psmouse->pktcnt == 3) {
>  			alps_report_bare_ps2_packet(psmouse, psmouse->packet,
>  						    true);
> -- 
> 1.7.9.5
> 

-- 
Dmitry
--
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

* Re: [PATCH v3 2/4] input: alps: Allow 2 invalid packets without resetting device
From: Dmitry Torokhov @ 2014-11-08 21:00 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input,
	linux-kernel
In-Reply-To: <1414884310-19842-3-git-send-email-pali.rohar@gmail.com>

On Sun, Nov 02, 2014 at 12:25:08AM +0100, Pali Rohár wrote:
> On some Dell Latitude laptops ALPS device or Dell EC send one invalid byte in
> 6 bytes ALPS packet. In this case psmouse driver enter out of sync state. It
> looks like that all other bytes in packets are valid and also device working
> properly. So there is no need to do full device reset, just need to wait
> for byte which match condition for first byte (start of packet). Because ALPS
> packets are bigger (6 or 8 bytes) default limit is small.
> 
> This patch increase number of invalid bytes to size of 2 ALPS packets which
> psmouse driver can drop before do full reset.
> 
> Resetting ALPS devices take some time and when doing reset on some Dell laptops
> touchpad, trackstick and also keyboard do not respond. So it is better to do it
> only if really necessary.
> 
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> Tested-by: Pali Rohár <pali.rohar@gmail.com>
> Cc: stable@vger.kernel.org

Applied, thank you.

> ---
>  drivers/input/mouse/alps.c |    3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
> index a772745..7c47e97 100644
> --- a/drivers/input/mouse/alps.c
> +++ b/drivers/input/mouse/alps.c
> @@ -2391,6 +2391,9 @@ int alps_init(struct psmouse *psmouse)
>  	/* We are having trouble resyncing ALPS touchpads so disable it for now */
>  	psmouse->resync_time = 0;
>  
> +	/* Allow 2 invalid packets without resetting device */
> +	psmouse->resetafter = psmouse->pktsize * 2;
> +
>  	return 0;
>  
>  init_fail:
> -- 
> 1.7.9.5
> 

-- 
Dmitry
--
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

* [Gigabyte M1405] Touchpad not detected
From: Adam Chrimes @ 2014-11-09  0:33 UTC (permalink / raw)
  To: linux-input

[1.] One line summary of the problem:
[Gigabyte M1405] Touchpad not detected

[2.] Full description of the problem/report:
The touchpad does not appear in the list when I run "cat
/proc/bus/input/devices". The touchpad and its buttons are
unresponsive. This is a brand new installation of XBMCbuntu.

[3.] Keywords (i.e., modules, networking, kernel):

[4.] Kernel version (from /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.] Output of Oops.. message (if applicable) with symbolic
information resolved (see Documentation/oops-tracing.txt)
N/A

[6.] A small shell script or example program which triggers the
problem (if possible)
N/A

[7.] Environment
Description:    Ubuntu 14.04.1 LTS
Release:        14.04

[7.1.] Software (add the output of the ver_linux script here)
If some fields are empty or look unusual you may have an old version.
Compare to the current minimal requirements in Documentation/Changes.

Linux redServer 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.8
Gnu make               3.81
binutils               2.24
util-linux             2.20.1
mount                  support
module-init-tools      15
e2fsprogs              1.42.9
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.21
wireless-tools         30
Modules Loaded         ctr ccm lirc_dev rc_core autofs4 gpio_ich
sparse_keymap dm_multipath scsi_dh kvm_intel kvm snd_hda_codec_hdmi
snd_hda_codec_realtek snd_hda_codec_generic arc4 snd_hda_intel ath9k
ath9k_common snd_hda_controller ath9k_hw snd_hda_codec ath joydev
snd_hwdep mac80211 snd_pcm snd_seq_midi snd_seq_midi_event cfg80211
snd_rawmidi snd_seq snd_seq_device snd_timer serio_raw snd soundcore
lpc_ich wmi nfsd mac_hid auth_rpcgss nfs_acl nfs lp lockd grace
parport sunrpc coretemp fscache btrfs xor raid6_pq dm_mirror
dm_region_hash dm_log ums_realtek uas usb_storage hid_generic usbhid
hid ahci libahci i915 r8169 mii i2c_algo_bit drm_kms_helper video drm

[7.2.] Processor information (from /proc/cpuinfo):
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 23
model name      : Genuine Intel(R) CPU           U7300  @ 1.30GHz
stepping        : 10
microcode       : 0xa07
cpu MHz         : 1066.000
cache size      : 3072 KB
physical id     : 0
siblings        : 2
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 lm constant_tsc arch_perfmon pebs bts rep_good nopl
aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm
sse4_1 xsave lahf_lm dtherm tpr_shadow vnmi flexpriority
bugs            :
bogomips        : 3466.60
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 23
model name      : Genuine Intel(R) CPU           U7300  @ 1.30GHz
stepping        : 10
microcode       : 0xa07
cpu MHz         : 1066.000
cache size      : 3072 KB
physical id     : 0
siblings        : 2
core id         : 1
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 lm constant_tsc arch_perfmon pebs bts rep_good nopl
aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm
sse4_1 xsave lahf_lm dtherm tpr_shadow vnmi flexpriority
bugs            :
bogomips        : 3466.60
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

[7.3.] Module information (from /proc/modules):
ctr 13193 2 - Live 0x0000000000000000
ccm 17856 2 - Live 0x0000000000000000
lirc_dev 20018 0 - Live 0x0000000000000000
rc_core 27515 1 lirc_dev, Live 0x0000000000000000
autofs4 39306 1 - Live 0x0000000000000000
gpio_ich 13636 0 - Live 0x0000000000000000
sparse_keymap 13890 0 - Live 0x0000000000000000
dm_multipath 23188 0 - Live 0x0000000000000000
scsi_dh 14873 1 dm_multipath, Live 0x0000000000000000
kvm_intel 149984 0 - Live 0x0000000000000000
kvm 475233 1 kvm_intel, Live 0x0000000000000000
snd_hda_codec_hdmi 52670 1 - Live 0x0000000000000000
snd_hda_codec_realtek 76099 1 - Live 0x0000000000000000
snd_hda_codec_generic 69995 1 snd_hda_codec_realtek, Live 0x0000000000000000
arc4 12573 2 - Live 0x0000000000000000
snd_hda_intel 30783 0 - Live 0x0000000000000000
ath9k 162133 0 - Live 0x0000000000000000
ath9k_common 25638 1 ath9k, Live 0x0000000000000000
snd_hda_controller 32234 1 snd_hda_intel, Live 0x0000000000000000
ath9k_hw 460416 2 ath9k,ath9k_common, Live 0x0000000000000000
snd_hda_codec 144641 5
snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel,snd_hda_controller,
Live 0x0000000000000000
ath 29397 3 ath9k,ath9k_common,ath9k_hw, Live 0x0000000000000000
joydev 17587 0 - Live 0x0000000000000000
snd_hwdep 17709 1 snd_hda_codec, Live 0x0000000000000000
mac80211 697143 1 ath9k, Live 0x0000000000000000
snd_pcm 106273 4
snd_hda_codec_hdmi,snd_hda_intel,snd_hda_controller,snd_hda_codec,
Live 0x0000000000000000
snd_seq_midi 13564 0 - Live 0x0000000000000000
snd_seq_midi_event 14899 1 snd_seq_midi, Live 0x0000000000000000
cfg80211 520257 4 ath9k,ath9k_common,ath,mac80211, Live 0x0000000000000000
snd_rawmidi 31197 1 snd_seq_midi, Live 0x0000000000000000
snd_seq 63540 2 snd_seq_midi,snd_seq_midi_event, Live 0x0000000000000000
snd_seq_device 14497 3 snd_seq_midi,snd_rawmidi,snd_seq, Live 0x0000000000000000
snd_timer 30118 2 snd_pcm,snd_seq, Live 0x0000000000000000
serio_raw 13483 0 - Live 0x0000000000000000
snd 84025 11 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_seq_device,snd_timer,
Live 0x0000000000000000
soundcore 15091 2 snd_hda_codec,snd, Live 0x0000000000000000
lpc_ich 21176 0 - Live 0x0000000000000000
wmi 19379 0 - Live 0x0000000000000000
nfsd 302377 2 - Live 0x0000000000000000
mac_hid 13275 0 - Live 0x0000000000000000
auth_rpcgss 60078 1 nfsd, Live 0x0000000000000000
nfs_acl 12883 1 nfsd, Live 0x0000000000000000
nfs 249589 0 - Live 0x0000000000000000
lp 17799 0 - Live 0x0000000000000000
lockd 94786 2 nfsd,nfs, Live 0x0000000000000000
grace 13295 2 nfsd,lockd, Live 0x0000000000000000
parport 42481 1 lp, Live 0x0000000000000000
sunrpc 302693 6 nfsd,auth_rpcgss,nfs_acl,nfs,lockd, Live 0x0000000000000000
coretemp 13638 0 - Live 0x0000000000000000
fscache 64236 1 nfs, Live 0x0000000000000000
btrfs 945983 0 - Live 0x0000000000000000
xor 21411 1 btrfs, Live 0x0000000000000000
raid6_pq 97812 1 btrfs, Live 0x0000000000000000
dm_mirror 22356 0 - Live 0x0000000000000000
dm_region_hash 21010 1 dm_mirror, Live 0x0000000000000000
dm_log 18527 2 dm_mirror,dm_region_hash, Live 0x0000000000000000
ums_realtek 18352 0 - Live 0x0000000000000000
uas 22673 0 - Live 0x0000000000000000
usb_storage 67010 5 ums_realtek,uas, Live 0x0000000000000000
hid_generic 12559 0 - Live 0x0000000000000000
usbhid 53155 0 - Live 0x0000000000000000
hid 110572 2 hid_generic,usbhid, Live 0x0000000000000000
ahci 34220 2 - Live 0x0000000000000000
libahci 32446 1 ahci, Live 0x0000000000000000
i915 1031913 4 - Live 0x0000000000000000
r8169 86907 0 - Live 0x0000000000000000
mii 13981 1 r8169, Live 0x0000000000000000
i2c_algo_bit 13564 1 i915, Live 0x0000000000000000
drm_kms_helper 99802 1 i915, Live 0x0000000000000000
video 20649 1 i915, Live 0x0000000000000000
drm 323675 6 i915,drm_kms_helper, Live 0x0000000000000000

[7.4.] Loaded driver and hardware information (/proc/ioports, /proc/iomem)
adam@redServer:/$ cat /proc/ioports
0000-0cf7 : PCI Bus 0000:00
  0000-001f : dma1
  0020-0021 : pic1
  0040-0043 : timer0
  0050-0053 : timer1
  0060-0060 : keyboard
  0062-0062 : PNP0C09:00
    0062-0062 : EC data
  0064-0064 : keyboard
  0066-0066 : PNP0C09:00
    0066-0066 : EC cmd
  0070-0077 : rtc0
  0080-008f : dma page reg
  00a0-00a1 : pic2
  00c0-00df : dma2
  00f0-00ff : fpu
    00f0-00f0 : PNP0C04:00
  03c0-03df : vesafb
  0400-0403 : ACPI PM1a_EVT_BLK
  0404-0405 : ACPI PM1a_CNT_BLK
  0408-040b : ACPI PM_TMR
  0410-0415 : ACPI CPU throttle
  0420-042f : ACPI GPE0_BLK
  0430-0433 : iTCO_wdt
  0450-0450 : ACPI PM2_CNT_BLK
  0460-047f : iTCO_wdt
  0500-053f : gpio_ich
    0500-053f : pnp 00:00
      0500-052f : gpio_ich
  0600-060f : pnp 00:00
  0610-0610 : pnp 00:00
  0800-080f : pnp 00:00
  0810-0817 : pnp 00:00
  0820-0823 : pnp 00:00
0cf8-0cff : PCI conf1
0d00-ffff : PCI Bus 0000:00
  164e-164f : pnp 00:00
  2000-2fff : PCI Bus 0000:07
  3000-3fff : PCI Bus 0000:04
    3000-30ff : 0000:04:00.0
      3000-30ff : r8169
  4000-4fff : PCI Bus 0000:01
  5000-501f : 0000:00:1f.3
  5020-503f : 0000:00:1f.2
    5020-503f : ahci
  5040-505f : 0000:00:1d.3
    5040-505f : uhci_hcd
  5060-507f : 0000:00:1d.2
    5060-507f : uhci_hcd
  5080-509f : 0000:00:1d.1
    5080-509f : uhci_hcd
  50a0-50bf : 0000:00:1d.0
    50a0-50bf : uhci_hcd
  50c0-50df : 0000:00:1a.1
    50c0-50df : uhci_hcd
  50e0-50ff : 0000:00:1a.0
    50e0-50ff : uhci_hcd
  5100-5107 : 0000:00:1f.2
    5100-5107 : ahci
  5108-510f : 0000:00:1f.2
    5108-510f : ahci
  5110-5117 : 0000:00:02.0
  5118-511b : 0000:00:1f.2
    5118-511b : ahci
  511c-511f : 0000:00:1f.2
    511c-511f : ahci

adam@redServer:/$ cat /proc/iomem
00000000-00000fff : reserved
00001000-0009dfff : System RAM
0009e000-0009ffff : reserved
000a0000-000bffff : PCI Bus 0000:00
000c0000-000c7fff : Video ROM
000e0000-000fffff : reserved
  000f0000-000fffff : System ROM
00100000-b9f00fff : System RAM
  01000000-017ae357 : Kernel code
  017ae358-01d1997f : Kernel data
  01e80000-01fc8fff : Kernel bss
b9f01000-b9f3efff : ACPI Non-volatile Storage
b9f3f000-b9f6bfff : System RAM
b9f6c000-b9fbefff : reserved
b9fbf000-b9fe2fff : System RAM
b9fe3000-b9ff6fff : ACPI Tables
b9ff7000-b9ffffff : System RAM
ba000000-bfffffff : reserved
  bc000000-bfffffff : Graphics Stolen Memory
c0000000-febfffff : PCI Bus 0000:00
  c0000000-d1ffffff : PCI Bus 0000:01
  d2000000-d2000fff : Intel Flush Page
  e0000000-efffffff : 0000:00:02.0
  f0000000-f1ffffff : PCI Bus 0000:01
  f2000000-f23fffff : 0000:00:02.0
  f2400000-f33fffff : PCI Bus 0000:04
    f2400000-f2403fff : 0000:04:00.0
      f2400000-f2403fff : r8169
    f2404000-f2404fff : 0000:04:00.0
      f2404000-f2404fff : r8169
  f3400000-f43fffff : PCI Bus 0000:07
  f4400000-f44fffff : 0000:00:02.1
  f4500000-f54fffff : PCI Bus 0000:07
    f4500000-f450ffff : 0000:07:00.0
      f4500000-f450ffff : ath9k
  f5500000-f64fffff : PCI Bus 0000:04
    f5500000-f551ffff : 0000:04:00.0
  f6500000-f6503fff : 0000:00:1b.0
    f6500000-f6503fff : ICH HD audio
  f6504000-f6504fff : 0000:00:1f.6
  f6505000-f65057ff : 0000:00:1f.2
    f6505000-f65057ff : ahci
  f6505800-f6505bff : 0000:00:1d.7
    f6505800-f6505bff : ehci_hcd
  f6505c00-f6505fff : 0000:00:1a.7
    f6505c00-f6505fff : ehci_hcd
  f6506000-f65060ff : 0000:00:1f.3
  f8000000-fbffffff : PCI MMCONFIG 0000 [bus 00-3f]
    f8000000-fbffffff : reserved
fec00000-fec00fff : reserved
  fec00000-fec003ff : IOAPIC 0
fed00000-fed003ff : HPET 0
  fed00000-fed003ff : PNP0103:00
fed10000-fed13fff : reserved
  fed10000-fed13fff : pnp 00:00
fed18000-fed19fff : reserved
  fed18000-fed18fff : pnp 00:00
  fed19000-fed19fff : pnp 00:00
fed1c000-fed1ffff : reserved
  fed1c000-fed1ffff : pnp 00:00
    fed1f410-fed1f414 : iTCO_wdt
fed20000-fed3ffff : pnp 00:00
fed40000-fed44fff : pnp 00:00
fed45000-fed8ffff : pnp 00:00
fee00000-fee00fff : Local APIC
  fee00000-fee00fff : reserved
    fee00000-fee00fff : pnp 00:00
ff800000-ffffffff : INT0800:00
  ffe00000-ffffffff : reserved
100000000-13fffffff : System RAM

[7.5.] PCI information ('lspci -vvv' as root)
00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory
Controller Hub (rev 07)
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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=0a <?>
        Kernel driver in use: agpgart-intel

00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series
Chipset Integrated Graphics Controller (rev 07) (prog-if 00 [VGA
controller])
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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 29
        Region 0: Memory at f2000000 (64-bit, non-prefetchable) [size=4M]
        Region 2: Memory at e0000000 (64-bit, prefetchable) [size=256M]
        Region 4: I/O ports at 5110 [size=8]
        Expansion ROM at <unassigned> [disabled]
        Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
                Address: fee0300c  Data: 41b2
        Capabilities: [d0] 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: i915

00:02.1 Display controller: Intel Corporation Mobile 4 Series Chipset
Integrated Graphics Controller (rev 07)
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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
        Region 0: Memory at f4400000 (64-bit, non-prefetchable) [size=1M]
        Capabilities: [d0] 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-

00:1a.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB
UHCI Controller #4 (rev 03) (prog-if 00 [UHCI])
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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 16
        Region 4: I/O ports at 50e0 [size=32]
        Capabilities: [50] PCI Advanced Features
                AFCap: TP+ FLR+
                AFCtrl: FLR-
                AFStatus: TP-
        Kernel driver in use: uhci_hcd

00:1a.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB
UHCI Controller #5 (rev 03) (prog-if 00 [UHCI])
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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 21
        Region 4: I/O ports at 50c0 [size=32]
        Capabilities: [50] PCI Advanced Features
                AFCap: TP+ FLR+
                AFCtrl: FLR-
                AFStatus: TP-
        Kernel driver in use: uhci_hcd

00:1a.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2
EHCI Controller #2 (rev 03) (prog-if 20 [EHCI])
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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 D routed to IRQ 19
        Region 0: Memory at f6505c00 (32-bit, non-prefetchable) [size=1K]
        Capabilities: [50] 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: [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:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio
Controller (rev 03)
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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 30
        Region 0: Memory at f6500000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: [50] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
                Address: 00000000fee0300c  Data: 41d2
        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=7f
                        Status: NegoPending- InProgress-
                VC1:    Caps:   PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
                        Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
                        Ctrl:   Enable+ ID=1 ArbSelect=Fixed TC/VC=80
                        Status: NegoPending- InProgress-
        Capabilities: [130 v1] Root Complex Link
                Desc:   PortNumber=0f ComponentID=02 EltType=Config
                Link0:  Desc:   TargetPort=00 TargetComponent=02
AssocRCRB- LinkType=MemMapped LinkValid+
                        Addr:   00000000fed1c000
        Kernel driver in use: snd_hda_intel

00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express
Port 1 (rev 03) (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=01, subordinate=03, sec-latency=0
        I/O behind bridge: 00004000-00004fff
        Memory behind bridge: f0000000-f1ffffff
        Prefetchable memory behind bridge: 00000000c0000000-00000000d1ffffff
        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 (v1) 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 #1, Speed 2.5GT/s, Width x4, ASPM L0s L1,
Exit Latency L0s <1us, L1 <4us
                        ClockPM- Surprise- LLActRep+ BwNot-
                LnkCtl: ASPM Disabled; 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 6.500W; 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-
        Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
                Address: fee0300c  Data: 41d1
        Capabilities: [90] Subsystem: Gigabyte Technology Co., Ltd Device 1405
        Capabilities: [a0] 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: [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-
        Capabilities: [180 v1] Root Complex Link
                Desc:   PortNumber=01 ComponentID=02 EltType=Config
                Link0:  Desc:   TargetPort=00 TargetComponent=02
AssocRCRB- LinkType=MemMapped LinkValid+
                        Addr:   00000000fed1c000
        Kernel driver in use: pcieport

00:1c.4 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express
Port 5 (rev 03) (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=04, subordinate=06, sec-latency=0
        I/O behind bridge: 00003000-00003fff
        Memory behind bridge: f5500000-f64fffff
        Prefetchable memory behind bridge: 00000000f2400000-00000000f33fffff
        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 (v1) 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 #5, Speed 2.5GT/s, Width x1, ASPM L0s L1,
Exit Latency L0s <256ns, L1 <4us
                        ClockPM- Surprise- LLActRep+ BwNot-
                LnkCtl: ASPM L0s 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 #4, PowerLimit 6.500W; 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-
        Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
                Address: fee0300c  Data: 41e1
        Capabilities: [90] Subsystem: Gigabyte Technology Co., Ltd Device 1405
        Capabilities: [a0] 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: [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-
        Capabilities: [180 v1] Root Complex Link
                Desc:   PortNumber=05 ComponentID=02 EltType=Config
                Link0:  Desc:   TargetPort=00 TargetComponent=02
AssocRCRB- LinkType=MemMapped LinkValid+
                        Addr:   00000000fed1c000
        Kernel driver in use: pcieport

00:1c.5 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express
Port 6 (rev 03) (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=07, subordinate=07, sec-latency=0
        I/O behind bridge: 00002000-00002fff
        Memory behind bridge: f4500000-f54fffff
        Prefetchable memory behind bridge: 00000000f3400000-00000000f43fffff
        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 (v1) 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 2.5GT/s, Width x1, ASPM L0s L1,
Exit Latency L0s <256ns, 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 x1, TrErr- Train-
SlotClk+ DLActive+ BWMgmt- ABWMgmt-
                SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd-
HotPlug+ Surprise+
                        Slot #5, PowerLimit 6.500W; 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-
        Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
                Address: fee0300c  Data: 4142
        Capabilities: [90] Subsystem: Gigabyte Technology Co., Ltd Device 1405
        Capabilities: [a0] 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: [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-
        Capabilities: [180 v1] Root Complex Link
                Desc:   PortNumber=06 ComponentID=02 EltType=Config
                Link0:  Desc:   TargetPort=00 TargetComponent=02
AssocRCRB- LinkType=MemMapped LinkValid+
                        Addr:   00000000fed1c000
        Kernel driver in use: pcieport

00:1d.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB
UHCI Controller #1 (rev 03) (prog-if 00 [UHCI])
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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 4: I/O ports at 50a0 [size=32]
        Capabilities: [50] PCI Advanced Features
                AFCap: TP+ FLR+
                AFCtrl: FLR-
                AFStatus: TP-
        Kernel driver in use: uhci_hcd

00:1d.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB
UHCI Controller #2 (rev 03) (prog-if 00 [UHCI])
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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 19
        Region 4: I/O ports at 5080 [size=32]
        Capabilities: [50] PCI Advanced Features
                AFCap: TP+ FLR+
                AFCtrl: FLR-
                AFStatus: TP-
        Kernel driver in use: uhci_hcd

00:1d.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB
UHCI Controller #3 (rev 03) (prog-if 00 [UHCI])
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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 D routed to IRQ 16
        Region 4: I/O ports at 5060 [size=32]
        Capabilities: [50] PCI Advanced Features
                AFCap: TP+ FLR+
                AFCtrl: FLR-
                AFStatus: TP-
        Kernel driver in use: uhci_hcd

00:1d.3 USB controller: Intel Corporation 82801I (ICH9 Family) USB
UHCI Controller #6 (rev 03) (prog-if 00 [UHCI])
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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 C routed to IRQ 18
        Region 4: I/O ports at 5040 [size=32]
        Capabilities: [50] PCI Advanced Features
                AFCap: TP+ FLR+
                AFCtrl: FLR-
                AFStatus: TP-
        Kernel driver in use: uhci_hcd

00:1d.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2
EHCI Controller #1 (rev 03) (prog-if 20 [EHCI])
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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 f6505800 (32-bit, non-prefetchable) [size=1K]
        Capabilities: [50] 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: [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:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 93)
(prog-if 01 [Subtractive 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
        Bus: primary=00, secondary=08, subordinate=08, sec-latency=32
        I/O behind bridge: 0000f000-00000fff
        Memory behind bridge: fff00000-000fffff
        Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
        Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort+ <SERR- <PERR-
        BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
                PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
        Capabilities: [50] Subsystem: Gigabyte Technology Co., Ltd Device 1405

00:1f.0 ISA bridge: Intel Corporation ICH9M-E LPC Interface Controller (rev 03)
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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 82801IBM/IEM
(ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode] (rev 03) (prog-if
01 [AHCI 1.0])
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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 28
        Region 0: I/O ports at 5108 [size=8]
        Region 1: I/O ports at 511c [size=4]
        Region 2: I/O ports at 5100 [size=8]
        Region 3: I/O ports at 5118 [size=4]
        Region 4: I/O ports at 5020 [size=32]
        Region 5: Memory at f6505000 (32-bit, non-prefetchable) [size=2K]
        Capabilities: [80] MSI: Enable+ Count=1/16 Maskable- 64bit-
                Address: fee0300c  Data: 41a2
        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
        Capabilities: [b0] PCI Advanced Features
                AFCap: TP+ FLR+
                AFCtrl: FLR-
                AFStatus: TP-
        Kernel driver in use: ahci

00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 03)
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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 11
        Region 0: Memory at f6506000 (64-bit, non-prefetchable) [size=256]
        Region 4: I/O ports at 5000 [size=32]

00:1f.6 Signal processing controller: Intel Corporation 82801I (ICH9
Family) Thermal Subsystem (rev 03)
        Subsystem: Gigabyte Technology Co., Ltd Device 1405
        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 C routed to IRQ 11
        Region 0: Memory at f6504000 (64-bit, non-prefetchable) [size=4K]
        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-

04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd.
RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 03)
        Subsystem: Gigabyte Technology Co., Ltd Device 1458
        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 27
        Region 0: I/O ports at 3000 [size=256]
        Region 2: Memory at f2404000 (64-bit, prefetchable) [size=4K]
        Region 4: Memory at f2400000 (64-bit, prefetchable) [size=16K]
        Expansion ROM at f5500000 [disabled] [size=128K]
        Capabilities: [40] 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: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
                Address: 00000000fee0300c  Data: 4192
        Capabilities: [70] Express (v2) Endpoint, MSI 01
                DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s
<512ns, L1 <64us
                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
Unsupported-
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
                        MaxPayload 128 bytes, MaxReadReq 4096 bytes
                DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+
AuxPwr+ TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1,
Exit Latency L0s <512ns, L1 <64us
                        ClockPM+ Surprise- LLActRep- BwNot-
                LnkCtl: ASPM L0s 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: Not Supported,
TimeoutDis+, LTR-, OBFF Not Supported
                DevCtl2: Completion Timeout: 50us to 50ms,
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: -6dB,
EqualizationComplete-, EqualizationPhase1-
                         EqualizationPhase2-, EqualizationPhase3-,
LinkEqualizationRequest-
        Capabilities: [ac] MSI-X: Enable- Count=4 Masked-
                Vector table: BAR=4 offset=00000000
                PBA: BAR=4 offset=00000800
        Capabilities: [cc] Vital Product Data
                Unknown small resource type 00, will not decode more.
        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] 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-
        Capabilities: [160 v1] Device Serial Number 04-00-00-00-68-4c-e0-00
        Kernel driver in use: r8169

07:00.0 Network controller: Qualcomm Atheros AR9285 Wireless Network
Adapter (PCI-Express) (rev 01)
        Subsystem: AzureWave AW-NE785 / AW-NE785H 802.11bgn Wireless
Full or Half-size Mini PCIe Card
        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 17
        Region 0: Memory at f4500000 (64-bit, non-prefetchable) [size=64K]
        Capabilities: [40] 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: [50] MSI: Enable- Count=1/1 Maskable- 64bit-
                Address: 00000000  Data: 0000
        Capabilities: [60] Express (v2) Legacy Endpoint, MSI 00
                DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
<512ns, L1 <64us
                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
Unsupported-
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
                        MaxPayload 128 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+
AuxPwr+ TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1,
Exit Latency L0s <512ns, L1 <64us
                        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: Not Supported,
TimeoutDis+, LTR-, OBFF Not Supported
                DevCtl2: Completion Timeout: 50us to 50ms,
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: -6dB,
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] 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-
        Capabilities: [160 v1] Device Serial Number 00-15-17-ff-ff-24-14-12
        Capabilities: [170 v1] Power Budgeting <?>
        Kernel driver in use: ath9k

[7.6.] SCSI information (from /proc/scsi/scsi)
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: TOSHIBA MK3265GS Rev: 3A
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi6 Channel: 00 Id: 00 Lun: 00
  Vendor: Generic- Model: Multi-Card       Rev: 1.00
  Type:   Direct-Access                    ANSI  SCSI revision: 00
Host: scsi7 Channel: 00 Id: 00 Lun: 00
  Vendor: Generic  Model: External         Rev: 1.03
  Type:   Direct-Access                    ANSI  SCSI revision: 04
Host: scsi8 Channel: 00 Id: 00 Lun: 00
  Vendor: WDC WD10 Model: EAVS-00D7B1      Rev:
  Type:   Direct-Access                    ANSI  SCSI revision: 02
Host: scsi9 Channel: 00 Id: 00 Lun: 00
  Vendor: SAMSUNG  Model: HM500JI          Rev:
  Type:   Direct-Access                    ANSI  SCSI revision: 02

[7.7.] Other information that might be relevant to the problem (please
look in /proc and include all information that you think to be
relevant):
adam@redServer:/$ ls /proc
1     13    1421  1629  179   1949  262   34   576  845
consoles     kallsyms    net            timer_list
10    131   1424  1640  18    1987  27    38   59   857        cpuinfo
     kcore       pagetypeinfo   timer_stats
1002  1315  1425  165   180   1988  2741  382  591  9          crypto
     keys        partitions     tty
1035  1318  1429  166   181   2     28    39   595  945        devices
     key-users   sched_debug    uptime
1039  133   1438  167   185   20    2847  40   606  960
diskstats    kmsg        schedstat      version
1068  1331  144   17    186   21    29    409  614  987        dma
     kpagecount  scsi           vmallocinfo
11    1341  147   170   187   22    3     5    615  988        driver
     kpageflags  self           vmstat
1104  1345  149   171   1894  23    30    502  645  998
execdomains  loadavg     slabinfo       zoneinfo
1154  135   15    172   1895  24    3072  505  646  999        fb
     locks       softirqs
1156  1354  1503  173   19    2408  31    508  7    acpi
filesystems  mdstat      stat
1182  1357  152   174   1902  25    3113  52   778  asound     fs
     meminfo     swaps
1199  138   153   175   1907  252   32    525  79   buddyinfo
interrupts   misc        sys
12    14    154   176   1911  2573  3299  53   790  bus        iomem
     modules     sysrq-trigger
1213  140   1576  177   193   26    33    558  8    cgroups    ioports
     mounts      sysvipc
1215  141   158   178   194   261   3312  560  80   cmdline    irq
     mtrr        thread-self

adam@redServer:/$ cat /proc/bus/input/devices
I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=PNP0C0C/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
U: Uniq=
H: Handlers=kbd event0
B: PROP=0
B: EV=3
B: KEY=10000000000000 0

I: Bus=0019 Vendor=0000 Product=0003 Version=0000
N: Name="Sleep Button"
P: Phys=PNP0C0E/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input1
U: Uniq=
H: Handlers=kbd event1
B: PROP=0
B: EV=3
B: KEY=4000 0 0

I: Bus=0019 Vendor=0000 Product=0005 Version=0000
N: Name="Lid Switch"
P: Phys=PNP0C0D/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input2
U: Uniq=
H: Handlers=event2
B: PROP=0
B: EV=21
B: SW=1

I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=LNXPWRBN/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3
U: Uniq=
H: Handlers=kbd event3
B: PROP=0
B: EV=3
B: KEY=10000000000000 0

I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input4
U: Uniq=
H: Handlers=sysrq kbd event4
B: PROP=0
B: EV=120013
B: KEY=402000000 3803078f800d001 feffffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=7

I: Bus=0019 Vendor=0000 Product=0006 Version=0000
N: Name="Video Bus"
P: Phys=LNXVIDEO/video/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input5
U: Uniq=
H: Handlers=kbd event5
B: PROP=0
B: EV=3
B: KEY=3e000b00000000 0 0 0

I: Bus=0003 Vendor=04d9 Product=2519 Version=0100
N: Name="Shenzhen LogoTech  2.4GHz receiver "
P: Phys=usb-0000:00:1d.0-1/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb5/5-1/5-1:1.0/0003:04D9:2519.0001/input/input6
U: Uniq=
H: Handlers=sysrq kbd event6
B: PROP=0
B: EV=120013
B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=7

I: Bus=0003 Vendor=04d9 Product=2519 Version=0100
N: Name="Shenzhen LogoTech  2.4GHz receiver "
P: Phys=usb-0000:00:1d.0-1/input1
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb5/5-1/5-1:1.1/0003:04D9:2519.0002/input/input7
U: Uniq=
H: Handlers=kbd mouse0 event7
B: PROP=0
B: EV=1f
B: KEY=3f0003007f 0 0 483ffff17aff32d bf54444600000000 1f0001
120f938b17c000 677bfad941dfed 9ed68000004400 10000002
B: REL=143
B: ABS=100000000
B: MSC=10

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="HDA Intel Front Mic"
P: Phys=ALSA
S: Sysfs=/devices/pci0000:00/0000:00:1b.0/sound/card0/input8
U: Uniq=
H: Handlers=event8
B: PROP=0
B: EV=21
B: SW=10

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="HDA Intel Rear Mic"
P: Phys=ALSA
S: Sysfs=/devices/pci0000:00/0000:00:1b.0/sound/card0/input9
U: Uniq=
H: Handlers=event9
B: PROP=0
B: EV=21
B: SW=10

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="HDA Intel Headphone"
P: Phys=ALSA
S: Sysfs=/devices/pci0000:00/0000:00:1b.0/sound/card0/input10
U: Uniq=
H: Handlers=event10
B: PROP=0
B: EV=21
B: SW=4

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="HDA Intel Front Headphone"
P: Phys=ALSA
S: Sysfs=/devices/pci0000:00/0000:00:1b.0/sound/card0/input11
U: Uniq=
H: Handlers=event11
B: PROP=0
B: EV=21
B: SW=4

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="HDA Intel HDMI/DP,pcm=3"
P: Phys=ALSA
S: Sysfs=/devices/pci0000:00/0000:00:1b.0/sound/card0/input12
U: Uniq=
H: Handlers=event12
B: PROP=0
B: EV=21
B: SW=140

[X.] Other notes, patches, fixes, workarounds:
An external USB mouse works when it is connected (and is visible in
proc/input/devices as the 2.4GHz receiver). The touchpad remains
dead.The touchpad works in windows 7 (dual boot system) so I am sure
it is not a hardware issue.

Please provide a link to your Launchpad bug report.
https://bugs.launchpad.net/bugs/1388335

^ permalink raw reply

* Re: [PATCH v3 3/4] input: alps: For protocol V3, do not process data when last packet's bit7 is set
From: Dmitry Torokhov @ 2014-11-09  7:50 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input,
	linux-kernel
In-Reply-To: <1414884310-19842-4-git-send-email-pali.rohar@gmail.com>

Hi Pali,

On Sun, Nov 02, 2014 at 12:25:09AM +0100, Pali Rohár wrote:
> Sometimes on Dell Latitude laptops psmouse/alps driver receive invalid ALPS
> protocol V3 packets with bit7 set in last byte. More often it can be reproduced
> on Dell Latitude E6440 or E7440 with closed lid and pushing cover above touchpad.
> 
> If bit7 in last packet byte is set then it is not valid ALPS packet. I was told
> that ALPS devices never send these packets. It is not know yet who send those
> packets, it could be Dell EC, bug in BIOS and also bug in touchpad firmware...
> 
> With this patch alps driver does not process those invalid packets and drops it
> with PSMOUSE_FULL_PACKET so psmouse driver does not enter to out of sync state.
> 
> This patch fix problem when psmouse driver still resetting ALPS device when
> laptop lid is closed because of receiving invalid packets in out of sync state.
> 
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> Tested-by: Pali Rohár <pali.rohar@gmail.com>
> Cc: stable@vger.kernel.org
> ---
>  drivers/input/mouse/alps.c |   10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
> index 7c47e97..e802d28 100644
> --- a/drivers/input/mouse/alps.c
> +++ b/drivers/input/mouse/alps.c
> @@ -1181,6 +1181,16 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
>  		return PSMOUSE_BAD_DATA;
>  	}
>  
> +	if (priv->proto_version == ALPS_PROTO_V3 && psmouse->pktcnt == psmouse->pktsize) {
> +		// For protocol V3, do not process data when last packet's bit7 is set
> +		if (psmouse->packet[psmouse->pktcnt - 1] & 0x80) {
> +			psmouse_dbg(psmouse, "v3 discard packet[%i] = %x\n",
> +				    psmouse->pktcnt - 1,
> +				    psmouse->packet[psmouse->pktcnt - 1]);
> +			return PSMOUSE_FULL_PACKET;
> +		}
> +	}

I wanted to apply it, but I would like some more data. Could you please
send me the dmesg with i8042.debug wit this patch in place?

Thanks!

-- 
Dmitry
--
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 0/2] HID: lenovo: Small fixups for compact keyboards
From: Jamie Lentin @ 2014-11-09  7:54 UTC (permalink / raw)
  To: Jiri Kosina, Antonio Ospite; +Cc: linux-input, linux-kernel, Jamie Lentin

Some small problems that have since been picked up since my patchset that
introduced support for the Thinkpad Compact Keyboards[0]. Both have been tested
on 3.18-rc1.

There are other outstanding problems that will require less trivial patches:

* The USB keyboard needs a patch to the HID descriptor table for the horizontal
scroll wheel events to be recognised.

* There is potentially a sensitivity control to expose via. sysfs, but needs
more investigation.

* The bluetooth keyboard mouse buttons still autorepeat. Since they are part of
the same input device as the keys I'm not sure this is currently solvable.

The first 2 I will sort out once enough free time appears, if you would prefer
a single large patchset, feel free to ignore this and wait for a bigger
patchset.

Many thanks,

[0] https://lkml.org/lkml/2014/7/23/702

Jamie Lentin (2):
  HID: lenovo: Move USB KEY_FILE to 0x00f9 to prevent scancode clash
  HID: lenovo: Don't set EV_REP to avoid repeating mice buttons

 drivers/hid/hid-lenovo.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

-- 
2.1.0

^ permalink raw reply

* [PATCH 2/2] HID: lenovo: Don't set EV_REP to avoid repeating mice buttons
From: Jamie Lentin @ 2014-11-09  7:54 UTC (permalink / raw)
  To: Jiri Kosina, Antonio Ospite; +Cc: linux-input, linux-kernel, Jamie Lentin
In-Reply-To: <1415519670-24449-1-git-send-email-jm@lentin.co.uk>

On the USB keyboard, the VENDOR hotkeys share the same device as the
mouse. Setting EV_REP also affects mouse buttons, so leave it off.

The bluetooth keyboard still has autorepeating mouse buttons, as it
only has one device and is set by the KEYBOARD pages.

Signed-off-by: Jamie Lentin <jm@lentin.co.uk>
---
 drivers/hid/hid-lenovo.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/hid/hid-lenovo.c b/drivers/hid/hid-lenovo.c
index 4716f1e..4c55f4d 100644
--- a/drivers/hid/hid-lenovo.c
+++ b/drivers/hid/hid-lenovo.c
@@ -62,7 +62,6 @@ static int lenovo_input_mapping_cptkbd(struct hid_device *hdev,
 	/* HID_UP_LNVENDOR = USB, HID_UP_MSVENDOR = BT */
 	if ((usage->hid & HID_USAGE_PAGE) == HID_UP_MSVENDOR ||
 	    (usage->hid & HID_USAGE_PAGE) == HID_UP_LNVENDOR) {
-		set_bit(EV_REP, hi->input->evbit);
 		switch (usage->hid & HID_USAGE) {
 		case 0x00f1: /* Fn-F4: Mic mute */
 			map_key_clear(KEY_MICMUTE);
-- 
2.1.0

^ permalink raw reply related

* Re: [PATCH v3 4/4] input: alps: Fix trackstick detection
From: Dmitry Torokhov @ 2014-11-09  8:05 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Hans de Goede, Yunkang Tang, Tommy Will, linux-input,
	linux-kernel
In-Reply-To: <1414884310-19842-5-git-send-email-pali.rohar@gmail.com>

Hi Pali,

On Sun, Nov 02, 2014 at 12:25:10AM +0100, Pali Rohár wrote:
>  int alps_detect(struct psmouse *psmouse, bool set_properties)
>  {
> -	struct alps_data dummy;
> +	unsigned char e6[4];
>  
> -	if (alps_identify(psmouse, &dummy) < 0)
> -		return -1;
> +	/*
> +	 * Try "E6 report".
> +	 * ALPS should return 0,0,10 or 0,0,100 if no buttons are pressed.
> +	 * The bits 0-2 of the first byte will be 1s if some buttons are
> +	 * pressed.
> +	 */
> +	if (alps_rpt_cmd(psmouse, PSMOUSE_CMD_SETRES,
> +			 PSMOUSE_CMD_SETSCALE11, e6))
> +		return -EIO;
> +
> +	if ((e6[0] & 0xf8) != 0 || e6[1] != 0 || (e6[2] != 10 && e6[2] != 100))
> +		return -EINVAL;
>  
>  	if (set_properties) {
> +		/*
> +		 * NOTE: To detect model and trackstick presence we need to do
> +		 *       full device reset. To speed up detection and prevent
> +		 *       calling duplicate initialization sequence (both in
> +		 *       alps_detect() and alps_init()) we set model/protocol
> +		 *       version and correct name in alps_init() (which will
> +		 *       do full device reset). For now set name to DualPoint.
> +		 */
>  		psmouse->vendor = "ALPS";
> -		psmouse->name = dummy.flags & ALPS_DUALPOINT ?
> -				"DualPoint TouchPad" : "GlidePoint";
> -		psmouse->model = dummy.proto_version << 8;
> +		psmouse->name = "DualPoint TouchPad";
>  	}
> +
>  	return 0;

We can't do this; going by e6 only will give us false positives and
alps_detect is supposed to be authoritative.

Thanks.

-- 
Dmitry

^ permalink raw reply

* [PATCH 1/2] HID: lenovo: Move USB KEY_FILE to 0x00f9 to prevent scancode clash
From: Jamie Lentin @ 2014-11-09  7:54 UTC (permalink / raw)
  To: Jiri Kosina, Antonio Ospite; +Cc: linux-input, linux-kernel, Jamie Lentin
In-Reply-To: <1415519670-24449-1-git-send-email-jm@lentin.co.uk>

The bluetooth keyboard also generates 0x00fa when the middle button is
pressed. Move the made-up report out of the way so we don't trigger
KEY_FILE when middle button is pressed

Signed-off-by: Jamie Lentin <jm@lentin.co.uk>
---
 drivers/hid/hid-lenovo.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/hid/hid-lenovo.c b/drivers/hid/hid-lenovo.c
index bf227f7..4716f1e 100644
--- a/drivers/hid/hid-lenovo.c
+++ b/drivers/hid/hid-lenovo.c
@@ -85,13 +85,13 @@ static int lenovo_input_mapping_cptkbd(struct hid_device *hdev,
 		case 0x00f8: /* Fn-F11: View open applications (3 boxes) */
 			map_key_clear(KEY_SCALE);
 			return 1;
-		case 0x00fa: /* Fn-Esc: Fn-lock toggle */
-			map_key_clear(KEY_FN_ESC);
-			return 1;
-		case 0x00fb: /* Fn-F12: Open My computer (6 boxes) USB-only */
+		case 0x00f9: /* Fn-F12: Open My computer (6 boxes) USB-only */
 			/* NB: This mapping is invented in raw_event below */
 			map_key_clear(KEY_FILE);
 			return 1;
+		case 0x00fa: /* Fn-Esc: Fn-lock toggle */
+			map_key_clear(KEY_FN_ESC);
+			return 1;
 		}
 	}
 
@@ -207,8 +207,8 @@ static int lenovo_raw_event(struct hid_device *hdev,
 			&& data[0] == 0x15
 			&& data[1] == 0x94
 			&& data[2] == 0x01)) {
-		data[1] = 0x0;
-		data[2] = 0x4;
+		data[1] = 0x00;
+		data[2] = 0x01;
 	}
 
 	return 0;
-- 
2.1.0


^ permalink raw reply related

* [PATCH] drivers: input: mouse: Use "static inline" instead of "inline" in "lifebook.h"
From: Chen Gang @ 2014-11-09 10:46 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, linux-kernel@vger.kernel.org

For inline function in header file, better to be "static inline", or may
cause building break under the latest upstream gcc (although, probably,
it should be the gcc's issue).

The related error (with allmodconfig under tile):

    MODPOST 4002 modules
  ERROR: "lifebook_detect" [drivers/input/mouse/psmouse.ko] undefined!

Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com>
---
 drivers/input/mouse/lifebook.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/input/mouse/lifebook.h b/drivers/input/mouse/lifebook.h
index 4c4326c..0baf02a 100644
--- a/drivers/input/mouse/lifebook.h
+++ b/drivers/input/mouse/lifebook.h
@@ -16,14 +16,14 @@ void lifebook_module_init(void);
 int lifebook_detect(struct psmouse *psmouse, bool set_properties);
 int lifebook_init(struct psmouse *psmouse);
 #else
-inline void lifebook_module_init(void)
+static inline void lifebook_module_init(void)
 {
 }
-inline int lifebook_detect(struct psmouse *psmouse, bool set_properties)
+static inline int lifebook_detect(struct psmouse *psmouse, bool set_properties)
 {
 	return -ENOSYS;
 }
-inline int lifebook_init(struct psmouse *psmouse)
+static inline int lifebook_init(struct psmouse *psmouse)
 {
 	return -ENOSYS;
 }
-- 
1.9.3

^ permalink raw reply related

* Re: [PATCH] drivers: input: mouse: Use "static inline" instead of "inline" in "lifebook.h"
From: Chen Gang @ 2014-11-09 10:49 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: linux-input, linux-kernel@vger.kernel.org, cmetcalf@tilera.com
In-Reply-To: <545F4602.10101@gmail.com>


After this patch, our tile can pass allmodconfig building. :-)

Thanks.

On 11/09/2014 06:46 PM, Chen Gang wrote:
> For inline function in header file, better to be "static inline", or may
> cause building break under the latest upstream gcc (although, probably,
> it should be the gcc's issue).
> 
> The related error (with allmodconfig under tile):
> 
>     MODPOST 4002 modules
>   ERROR: "lifebook_detect" [drivers/input/mouse/psmouse.ko] undefined!
> 
> Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com>
> ---
>  drivers/input/mouse/lifebook.h | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/input/mouse/lifebook.h b/drivers/input/mouse/lifebook.h
> index 4c4326c..0baf02a 100644
> --- a/drivers/input/mouse/lifebook.h
> +++ b/drivers/input/mouse/lifebook.h
> @@ -16,14 +16,14 @@ void lifebook_module_init(void);
>  int lifebook_detect(struct psmouse *psmouse, bool set_properties);
>  int lifebook_init(struct psmouse *psmouse);
>  #else
> -inline void lifebook_module_init(void)
> +static inline void lifebook_module_init(void)
>  {
>  }
> -inline int lifebook_detect(struct psmouse *psmouse, bool set_properties)
> +static inline int lifebook_detect(struct psmouse *psmouse, bool set_properties)
>  {
>  	return -ENOSYS;
>  }
> -inline int lifebook_init(struct psmouse *psmouse)
> +static inline int lifebook_init(struct psmouse *psmouse)
>  {
>  	return -ENOSYS;
>  }
> 


-- 
Chen Gang

Open share and attitude like air water and life which God blessed

^ permalink raw reply


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