* [MailServer Notification]Attachment Blocking Notification
From: ExchangeNTTrendMicro @ 2013-12-07 17:53 UTC (permalink / raw)
To: linux-input; +Cc: ospite
The des.bin has been blocked,
and Replace has been taken on 12/7/2013 9:52:56 AM.
Message details:
Server:WACOM-NT10
Sender: simon@mungewell.org;
Recipient:linux-input@vger.kernel.org;ospite@studenti.unina.it;
Subject:Sony DualShock4 - basic functions work, but looking to improve support
Attachment name:des.bin
^ permalink raw reply
* Re: Sony DualShock4 - basic functions work, but looking to improve support
From: simon @ 2013-12-07 20:43 UTC (permalink / raw)
Cc: Linux Input, Antonio Ospite
In-Reply-To: <61a33717137a02a1d0eac5a2d1cb257e.squirrel@mungewell.org>
[-- Attachment #1: Type: text/plain, Size: 262 bytes --]
> Anyone here want to collaborate?
I've decoded the majority of the HID stream including the multi-touch.
Also some good teardown info/pictures here:
http://mygaming.co.za/news/ps4/60397-cost-of-building-a-ps4.html
fccid = AK8CUHZCT1
ic = 409B-CUHZCT1
Simon.
[-- Attachment #2: hidraw.txt --]
[-- Type: text/plain, Size: 5235 bytes --]
01 7e 7c 80 7f 08 00 04 00 00 6f 35 0d 06 00 03 00 01 00 69 04 ff 1e 9d f8 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 08 00 00 53 38 0d 01 00 f9 ff 02 00 8d 04 e5 1e b5 f8 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 0c 00 00 40 3b 0d 00 00 04 00 04 00 7d 04 eb 1e a9 f8 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 10 00 00 81 76 0d f7 ff 00 00 00 00 5d 04 f7 1e b2 f8 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 14 00 00 67 79 0d f1 ff 00 00 f2 ff dd 04 bb 1f 55 f9 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 18 00 00 56 7c 0d 16 00 fc ff ff ff 75 04 db 1f 9d f9 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 1c 00 00 3f 7f 0d 3a 00 f3 ff 12 00 c5 03 9f 1f b9 f9 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 20 00 00 2b 82 0d 4f 00 fa ff 10 00 e7 03 75 1f c8 f8 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 24 00 00 27 85 0d 5d 00 fe ff 12 00 f9 03 43 1f a1 f8 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 28 00 00 04 88 0d 61 00 f9 ff 18 00 55 04 c7 1e c5 f8 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 2c 00 00 f1 8a 0d 53 00 fc ff 1a 00 b1 04 57 1e 75 f8 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 30 00 00 de 8d 0d 49 00 fd ff 14 00 b1 04 53 1e 19 f8 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 34 00 00 cc 90 0d 35 00 fd ff 0d 00 b9 04 1b 1e d5 f7 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 38 00 00 bf 93 0d 10 00 fb ff 09 00 99 04 23 1e e5 f7 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 3c 00 00 a5 96 0d fc ff 01 00 fe ff 6a 04 35 1e eb f7 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 40 00 00 94 99 0d dc ff 06 00 f9 ff 71 04 57 1e 31 f8 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 44 00 00 81 9c 0d d1 ff ff ff f8 ff 55 04 83 1e 7d f8 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
01 7e 7c 80 7f 08 00 48 00 00 69 9f 0d ce ff 05 00 f6 ff 4d 04 fb 1e c9 f8 00 00 00 00 00 1b 00 00 01 79 96 8e 85 01 8b 20 21 24 00 80 00 00 00 80 00 00 00 00 80 00 00 00 80 00 00 00 00 80 00
|| || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || ||
|| || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || || ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ touch pad (see below)
|| || || || || || || || || || || || || || || || || || || || || || || || || ++ ++ ++ ++ ++ ++ ++ ++ fixed?
|| || || || || || || || || || || || || || || || || || || ++ ++ ++ ++ ++ ++ Accelerometers X, Y, Z (lsb, msb)
|| || || || || || || || || || || || || ++ ++ ++ ++ ++ ++ Gyros pitch, roll, yaw (lsb, msb)
|| || || || || || || || || || || || ++ fixed or slowly changing?
|| || || || || || || || || || ++ ++ always changing = time stamp ?
|| || || || || || || || || ++ R-Trigger
|| || || || || || || || ++ L-Trigger
|| || || || || || || ++ Count by 0x04?
|| || || || || ++ ++ Button bit field
|| || || || ++ R-Thumb Y
|| || || ++ R-Thumb X
|| || ++ L-Thumb Y
|| ++ L-Thumb X
++ alway 01
Multitouch section, allows for 2 simulataneous fingers
--
01 9f bc a9 d4 1c bd 0e f7 0d 00 80 00 00 00 80 00 00 00
|| || || || || || || || || || ++ ++ ++ ++ ++ ++ ++ ++ ++ only present while swiping, last position format as below
|| || || || || || || || +| ++ 2nd Y location
|| || || || || || || ++ |+ 2nd X location
|| || || || || || ++ 2nd event number
|| || || || +| ++ current Y location (lsb + msb, top = 0)
|| || || ++ |+ current X location (lsb + msb, left = 0)? note nibble order!!
|| || ++ event number, remains constant during press, counts up each time press starts, high bit set on release (ie 43->c3)
|| ++ presure/size? changes with both 1st of 2nd finger
++ type of data packets (1=static or 2=motion)
^ permalink raw reply
* Re: [PATCH] Input: serio - fix sysfs layout
From: Thomas Hellstrom @ 2013-12-07 20:51 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: linux-input, Greg Kroah-Hartman, linux-kernel
In-Reply-To: <20131207154116.GA9902@core.coreip.homeip.net>
On 12/07/2013 04:41 PM, Dmitry Torokhov wrote:
> Restore previous layout of sysfs attributes that was broken by commit
> 3778a2129bcce84f684cc0017ed20d2524afd289 (input: serio: remove bus usage of
> dev_attrs) which moved all serio device attributes into 'id' group, when
> only 'type', 'proto', 'id', and 'extra' should be in 'id' group and the
> rest of attributes should be attached directly to the device.
Thanks for doing this. Makes vmmouse work again.
>
> Reported-by: Thomas Hellstrom <thellstrom@vmware.com>
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Tested-by: Thomas Hellstrom <thellstrom@vmware.com>
> ---
> drivers/input/serio/serio.c | 24 +++++++++++++++++-------
> 1 file changed, 17 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/input/serio/serio.c b/drivers/input/serio/serio.c
> index 98707fb..8f4c4ab 100644
> --- a/drivers/input/serio/serio.c
> +++ b/drivers/input/serio/serio.c
> @@ -455,16 +455,26 @@ static DEVICE_ATTR_RO(type);
> static DEVICE_ATTR_RO(proto);
> static DEVICE_ATTR_RO(id);
> static DEVICE_ATTR_RO(extra);
> -static DEVICE_ATTR_RO(modalias);
> -static DEVICE_ATTR_WO(drvctl);
> -static DEVICE_ATTR(description, S_IRUGO, serio_show_description, NULL);
> -static DEVICE_ATTR(bind_mode, S_IWUSR | S_IRUGO, serio_show_bind_mode, serio_set_bind_mode);
>
> static struct attribute *serio_device_id_attrs[] = {
> &dev_attr_type.attr,
> &dev_attr_proto.attr,
> &dev_attr_id.attr,
> &dev_attr_extra.attr,
> + NULL
> +};
> +
> +static struct attribute_group serio_id_attr_group = {
> + .name = "id",
> + .attrs = serio_device_id_attrs,
> +};
> +
> +static DEVICE_ATTR_RO(modalias);
> +static DEVICE_ATTR_WO(drvctl);
> +static DEVICE_ATTR(description, S_IRUGO, serio_show_description, NULL);
> +static DEVICE_ATTR(bind_mode, S_IWUSR | S_IRUGO, serio_show_bind_mode, serio_set_bind_mode);
> +
> +static struct attribute *serio_device_attrs[] = {
> &dev_attr_modalias.attr,
> &dev_attr_description.attr,
> &dev_attr_drvctl.attr,
> @@ -472,13 +482,13 @@ static struct attribute *serio_device_id_attrs[] = {
> NULL
> };
>
> -static struct attribute_group serio_id_attr_group = {
> - .name = "id",
> - .attrs = serio_device_id_attrs,
> +static struct attribute_group serio_device_attr_group = {
> + .attrs = serio_device_attrs,
> };
>
> static const struct attribute_group *serio_device_attr_groups[] = {
> &serio_id_attr_group,
> + &serio_device_attr_group,
> NULL
> };
>
^ permalink raw reply
* Xpad Driver Replacement
From: Zachary Lund @ 2013-12-08 6:18 UTC (permalink / raw)
To: linux-input
I created a new driver to hopefully eventually replace xpad. The driver
in its current form can be found on github. Things it provides is
cleaner module unload/load, possibly cleaner/more efficient code, and
better LED support. There are caveats that I'd like to iron out before I
submit a patch though.
For one, I do not have the original Xbox controller. I've only tested
the official Xbox 360 Wired and Wireless controllers. So support for
that is unfortunately missing. I'm not sure how I feel about ripping it
out of xpad. What am I supposed to do about devices that I don't own?
Secondly, the Xbox 360 controllers claim to be HID compliant... this is
not an HID driver. That's because the report descriptor is missing and
I, unfortunately, do not know what to do about that. Some drivers like
XBCD and the driver found at tattiebogle.net both provide their own
report descriptor and work from there. While I'd like to do the same
eventually, it will take me longer than a week to do that as I'd have to
educate myself on HID and figure out what to do about the missing
descriptors.
Thirdly, I have had no other testers outside of myself. And the only
products I've tested are the only items in the device_id list. So, if
anyone can test, that would amazing. I've posted on several forums and
IRC channels for help testing or new products with unfortunately zero
results. Anyone who is able to test and just use it extensively, that
would be much appreciated.
The code in its current form is found on github:
https://github.com/computerquip/xpad360wr
Any advice or feedback would be much appreciated.
^ permalink raw reply
* Re: Xpad Driver Replacement
From: David Herrmann @ 2013-12-08 14:38 UTC (permalink / raw)
To: Zachary Lund; +Cc: open list:HID CORE LAYER
In-Reply-To: <52A40F19.3020109@computerquip.com>
Hi
On Sun, Dec 8, 2013 at 7:18 AM, Zachary Lund <admin@computerquip.com> wrote:
> I created a new driver to hopefully eventually replace xpad. The driver in
> its current form can be found on github. Things it provides is cleaner
> module unload/load, possibly cleaner/more efficient code, and better LED
> support. There are caveats that I'd like to iron out before I submit a patch
> though.
Please submit the patch right away. No-one minds commenting on
preliminary ideas. On the contrary, we can tell you whether the basic
idea makes sense right from the beginning.
> For one, I do not have the original Xbox controller. I've only tested the
> official Xbox 360 Wired and Wireless controllers. So support for that is
> unfortunately missing. I'm not sure how I feel about ripping it out of xpad.
> What am I supposed to do about devices that I don't own?
The old controllers are incompatible with the 360, so I'd keep the old
driver around with only the old VID/PID combinations. Btw., if you
live in the US, you can order one used from amazon for <10$.
Unfortunately, they only ship to the US so I haven't gotten my hands
on one of these.. Maybe you can find someone else if you don't
can/want to buy it?
> Secondly, the Xbox 360 controllers claim to be HID compliant... this is not
> an HID driver. That's because the report descriptor is missing and I,
> unfortunately, do not know what to do about that. Some drivers like XBCD and
> the driver found at tattiebogle.net both provide their own report descriptor
> and work from there. While I'd like to do the same eventually, it will take
> me longer than a week to do that as I'd have to educate myself on HID and
> figure out what to do about the missing descriptors.
>
> Thirdly, I have had no other testers outside of myself. And the only
> products I've tested are the only items in the device_id list. So, if anyone
> can test, that would amazing. I've posted on several forums and IRC channels
> for help testing or new products with unfortunately zero results. Anyone who
> is able to test and just use it extensively, that would be much appreciated.
>
> The code in its current form is found on github:
> https://github.com/computerquip/xpad360wr
>
> Any advice or feedback would be much appreciated.
Please post it to the list, there's a bunch of stuff that needs to be
changed. And please turn it into an HID driver. You don't need to use
HID reports at all! The hid-wiimote driver for instance just uses raw
I/O on HID without dealing with HID report descriptors at all (just
like hidraw).
For raw HID drivers, you simply use the ->raw_event callback to parse
incoming data and dev->output_raw_report() to send raw data.
Thanks for the work! I will gladly test it with the 360 controller
once you send a proper upstream patch.
Thanks
David
^ permalink raw reply
* Re: Sony DualShock4 - basic functions work, but looking to improve support
From: David Herrmann @ 2013-12-08 14:41 UTC (permalink / raw)
To: Simon Wood; +Cc: Linux Input, Antonio Ospite, Jiri Kosina
In-Reply-To: <10aade622f5593ec49af0256e3c60d83.squirrel@mungewell.org>
Hi
On Sat, Dec 7, 2013 at 9:43 PM, <simon@mungewell.org> wrote:
>> Anyone here want to collaborate?
>
> I've decoded the majority of the HID stream including the multi-touch.
Nice! I already got my hands on one but will probably not find time
for it until February. However, I will gladly test any patches!
Also, could you write your findings down and maybe put it into
./Documentation/hid/? I'm not sure whether we put protocol data there
(Jiri?) but at least you could share the information on the list or
github. I would appreciate that a lot!
Thanks
David
^ permalink raw reply
* Re: synaptics: PS/2 touchpad isn't detected if a keyboard key is held down on boot
From: Andrey Moiseev @ 2013-12-08 15:57 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: linux-input, linux-kernel, linux-hotplug
In-Reply-To: <52A351A7.5050407@gmail.com>
With i8042.reset=1, it works properly. Maybe this should be made the
default option? AFAIK, 8042 chip is not guaranteed to be sane and
clean on boot, even provided there's no messing with keyboard on boot.
Though, I don't understand why it flushes one byte on flush() (isn't
it thorough enough?) and then scancodes come and come from time to
time.
On Sat, Dec 7, 2013 at 8:49 PM, Andrey Moiseev <o2g.org.ru@gmail.com> wrote:
> Here is my dmesg. At boot 'H' key was held down.
>
> [ 0.000000] Initializing cgroup subsys cpuset
> [ 0.000000] Initializing cgroup subsys cpu
> [ 0.000000] Initializing cgroup subsys cpuacct
> [ 0.000000] Linux version 3.13.0-rc3-ARCH-dirty (o2genum@o2pc) (gcc version 4.8.2 (GCC) ) #10 SMP PREEMPT Sat Dec 7 20:25:41 MSK 2013
> [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-mainline i8042.debug=1 root=UUID=747f676b-e21a-443a-ac61-3f6c4aebb73d rw quiet
> [ 0.000000] e820: BIOS-provided physical RAM map:
> [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009cfff] usable
> [ 0.000000] BIOS-e820: [mem 0x000000000009d000-0x000000000009ffff] reserved
> [ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
> [ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007b680fff] usable
> [ 0.000000] BIOS-e820: [mem 0x000000007b681000-0x000000007b6befff] reserved
> [ 0.000000] BIOS-e820: [mem 0x000000007b6bf000-0x000000007b757fff] usable
> [ 0.000000] BIOS-e820: [mem 0x000000007b758000-0x000000007b7befff] ACPI NVS
> [ 0.000000] BIOS-e820: [mem 0x000000007b7bf000-0x000000007b7e2fff] usable
> [ 0.000000] BIOS-e820: [mem 0x000000007b7e3000-0x000000007b7fefff] ACPI data
> [ 0.000000] BIOS-e820: [mem 0x000000007b7ff000-0x000000007b7fffff] usable
> [ 0.000000] BIOS-e820: [mem 0x000000007b800000-0x000000007bffffff] reserved
> [ 0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved
> [ 0.000000] BIOS-e820: [mem 0x00000000feb00000-0x00000000feb03fff] reserved
> [ 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
> [ 0.000000] BIOS-e820: [mem 0x00000000fed10000-0x00000000fed13fff] reserved
> [ 0.000000] BIOS-e820: [mem 0x00000000fed18000-0x00000000fed19fff] reserved
> [ 0.000000] BIOS-e820: [mem 0x00000000fed1b000-0x00000000fed1ffff] reserved
> [ 0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
> [ 0.000000] BIOS-e820: [mem 0x00000000ffe00000-0x00000000ffffffff] reserved
> [ 0.000000] NX (Execute Disable) protection: active
> [ 0.000000] SMBIOS 2.6 present.
> [ 0.000000] DMI: LENOVO 20035 /Base Board Product Name, BIOS 1ECN33WW(V5.07) 03/17/2010
> [ 0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
> [ 0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
> [ 0.000000] No AGP bridge found
> [ 0.000000] e820: last_pfn = 0x7b800 max_arch_pfn = 0x400000000
> [ 0.000000] MTRR default type: uncachable
> [ 0.000000] MTRR fixed ranges enabled:
> [ 0.000000] 00000-9FFFF write-back
> [ 0.000000] A0000-BFFFF uncachable
> [ 0.000000] C0000-EFFFF write-through
> [ 0.000000] F0000-FFFFF write-combining
> [ 0.000000] MTRR variable ranges enabled:
> [ 0.000000] 0 base 000000000 mask FC0000000 write-back
> [ 0.000000] 1 base 0FFE00000 mask FFFE00000 write-protect
> [ 0.000000] 2 base 040000000 mask FC0000000 write-back
> [ 0.000000] 3 base 07C000000 mask FFC000000 uncachable
> [ 0.000000] 4 base 07B800000 mask FFF800000 uncachable
> [ 0.000000] 5 disabled
> [ 0.000000] 6 disabled
> [ 0.000000] 7 disabled
> [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
> [ 0.000000] Scanning 1 areas for low memory corruption
> [ 0.000000] Base memory trampoline at [ffff880000097000] 97000 size 24576
> [ 0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
> [ 0.000000] [mem 0x00000000-0x000fffff] page 4k
> [ 0.000000] BRK [0x01b3c000, 0x01b3cfff] PGTABLE
> [ 0.000000] BRK [0x01b3d000, 0x01b3dfff] PGTABLE
> [ 0.000000] BRK [0x01b3e000, 0x01b3efff] PGTABLE
> [ 0.000000] init_memory_mapping: [mem 0x7b400000-0x7b5fffff]
> [ 0.000000] [mem 0x7b400000-0x7b5fffff] page 2M
> [ 0.000000] BRK [0x01b3f000, 0x01b3ffff] PGTABLE
> [ 0.000000] init_memory_mapping: [mem 0x78000000-0x7b3fffff]
> [ 0.000000] [mem 0x78000000-0x7b3fffff] page 2M
> [ 0.000000] init_memory_mapping: [mem 0x00100000-0x77ffffff]
> [ 0.000000] [mem 0x00100000-0x001fffff] page 4k
> [ 0.000000] [mem 0x00200000-0x77ffffff] page 2M
> [ 0.000000] init_memory_mapping: [mem 0x7b600000-0x7b680fff]
> [ 0.000000] [mem 0x7b600000-0x7b680fff] page 4k
> [ 0.000000] BRK [0x01b40000, 0x01b40fff] PGTABLE
> [ 0.000000] init_memory_mapping: [mem 0x7b6bf000-0x7b757fff]
> [ 0.000000] [mem 0x7b6bf000-0x7b757fff] page 4k
> [ 0.000000] init_memory_mapping: [mem 0x7b7bf000-0x7b7e2fff]
> [ 0.000000] [mem 0x7b7bf000-0x7b7e2fff] page 4k
> [ 0.000000] init_memory_mapping: [mem 0x7b7ff000-0x7b7fffff]
> [ 0.000000] [mem 0x7b7ff000-0x7b7fffff] page 4k
> [ 0.000000] RAMDISK: [mem 0x378d4000-0x37c61fff]
> [ 0.000000] ACPI: RSDP 00000000000fe020 000024 (v02 LENOVO)
> [ 0.000000] ACPI: XSDT 000000007b7fe120 000084 (v01 LENOVO CB-01 00000001 01000013)
> [ 0.000000] ACPI: FACP 000000007b7fc000 0000F4 (v04 LENOVO CB-01 00000001 MSFT 01000013)
> [ 0.000000] ACPI: DSDT 000000007b7ef000 00992C (v02 LENOVO CB-01 00000001 MSFT 01000013)
> [ 0.000000] ACPI: FACS 000000007b76a000 000040
> [ 0.000000] ACPI: ASF! 000000007b7fd000 0000A5 (v32 INTEL Calpella 00000001 MSFT 01000013)
> [ 0.000000] ACPI: HPET 000000007b7fb000 000038 (v01 LENOVO CB-01 00000001 MSFT 01000013)
> [ 0.000000] ACPI: APIC 000000007b7fa000 00008C (v02 INTEL Calpella 00000001 MSFT 01000013)
> [ 0.000000] ACPI: MCFG 000000007b7f9000 00003C (v01 LENOVO CB-01 00000001 MSFT 01000013)
> [ 0.000000] ACPI: SLIX 000000007b7ee000 000176 (v01 LENOVO CB-01 00000001 MSFT 01000013)
> [ 0.000000] ACPI: BOOT 000000007b7eb000 000028 (v01 INTEL Calpella 00000001 MSFT 01000013)
> [ 0.000000] ACPI: ASPT 000000007b7e7000 000034 (v04 INTEL Calpella 00000001 MSFT 01000013)
> [ 0.000000] ACPI: WDRT 000000007b7e6000 000047 (v01 INTEL Calpella 00000000 MSFT 01000013)
> [ 0.000000] ACPI: SSDT 000000007b7e5000 0009F1 (v01 PmRef CpuPm 00003000 INTL 20051117)
> [ 0.000000] ACPI: SSDT 000000007b7e4000 000259 (v01 PmRef Cpu0Tst 00003000 INTL 20051117)
> [ 0.000000] ACPI: SSDT 000000007b7e3000 00049F (v01 PmRef ApTst 00003000 INTL 20051117)
> [ 0.000000] ACPI: Local APIC address 0xfee00000
> [ 0.000000] No NUMA configuration found
> [ 0.000000] Faking a node at [mem 0x0000000000000000-0x000000007b7fffff]
> [ 0.000000] Initmem setup node 0 [mem 0x00000000-0x7b7fffff]
> [ 0.000000] NODE_DATA [mem 0x7b7de000-0x7b7e2fff]
> [ 0.000000] [ffffea0000000000-ffffea0001ffffff] PMD -> [ffff880078e00000-ffff88007adfffff] on node 0
> [ 0.000000] Zone ranges:
> [ 0.000000] DMA [mem 0x00001000-0x00ffffff]
> [ 0.000000] DMA32 [mem 0x01000000-0xffffffff]
> [ 0.000000] Normal empty
> [ 0.000000] Movable zone start for each node
> [ 0.000000] Early memory node ranges
> [ 0.000000] node 0: [mem 0x00001000-0x0009cfff]
> [ 0.000000] node 0: [mem 0x00100000-0x7b680fff]
> [ 0.000000] node 0: [mem 0x7b6bf000-0x7b757fff]
> [ 0.000000] node 0: [mem 0x7b7bf000-0x7b7e2fff]
> [ 0.000000] node 0: [mem 0x7b7ff000-0x7b7fffff]
> [ 0.000000] On node 0 totalpages: 505563
> [ 0.000000] DMA zone: 64 pages used for memmap
> [ 0.000000] DMA zone: 21 pages reserved
> [ 0.000000] DMA zone: 3996 pages, LIFO batch:0
> [ 0.000000] DMA32 zone: 7840 pages used for memmap
> [ 0.000000] DMA32 zone: 501567 pages, LIFO batch:31
> [ 0.000000] ACPI: PM-Timer IO Port: 0x408
> [ 0.000000] ACPI: Local APIC address 0xfee00000
> [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
> [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
> [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x04] enabled)
> [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x05] enabled)
> [ 0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x00] disabled)
> [ 0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x00] disabled)
> [ 0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x00] disabled)
> [ 0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x00] disabled)
> [ 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
> [ 0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23
> [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
> [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
> [ 0.000000] ACPI: IRQ0 used by override.
> [ 0.000000] ACPI: IRQ2 used by override.
> [ 0.000000] ACPI: IRQ9 used by override.
> [ 0.000000] Using ACPI (MADT) for SMP configuration information
> [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
> [ 0.000000] smpboot: Allowing 8 CPUs, 4 hotplug CPUs
> [ 0.000000] nr_irqs_gsi: 40
> [ 0.000000] PM: Registered nosave memory: [mem 0x0009d000-0x0009ffff]
> [ 0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000dffff]
> [ 0.000000] PM: Registered nosave memory: [mem 0x000e0000-0x000fffff]
> [ 0.000000] PM: Registered nosave memory: [mem 0x7b681000-0x7b6befff]
> [ 0.000000] PM: Registered nosave memory: [mem 0x7b758000-0x7b7befff]
> [ 0.000000] PM: Registered nosave memory: [mem 0x7b7e3000-0x7b7fefff]
> [ 0.000000] e820: [mem 0x7c000000-0xdfffffff] available for PCI devices
> [ 0.000000] Booting paravirtualized kernel on bare hardware
> [ 0.000000] setup_percpu: NR_CPUS:128 nr_cpumask_bits:128 nr_cpu_ids:8 nr_node_ids:1
> [ 0.000000] PERCPU: Embedded 29 pages/cpu @ffff88007b400000 s86272 r8192 d24320 u262144
> [ 0.000000] pcpu-alloc: s86272 r8192 d24320 u262144 alloc=1*2097152
> [ 0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7
> [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 497638
> [ 0.000000] Policy zone: DMA32
> [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-mainline i8042.debug=1 root=UUID=747f676b-e21a-443a-ac61-3f6c4aebb73d rw quiet
> [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
> [ 0.000000] Checking aperture...
> [ 0.000000] No AGP bridge found
> [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area
> [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
> [ 0.000000] Memory: 1973032K/2022252K available (5151K kernel code, 815K rwdata, 1728K rodata, 1160K init, 1304K bss, 49220K reserved)
> [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
> [ 0.000000] Preemptible hierarchical RCU implementation.
> [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled.
> [ 0.000000] Dump stacks of tasks blocking RCU-preempt GP.
> [ 0.000000] RCU restricting CPUs from NR_CPUS=128 to nr_cpu_ids=8.
> [ 0.000000] NR_IRQS:8448 nr_irqs:744 16
> [ 0.000000] Console: colour dummy device 80x25
> [ 0.000000] console [tty0] enabled
> [ 0.000000] allocated 8388608 bytes of page_cgroup
> [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
> [ 0.000000] hpet clockevent registered
> [ 0.000000] tsc: Fast TSC calibration using PIT
> [ 0.003333] tsc: Detected 2127.841 MHz processor
> [ 0.000004] Calibrating delay loop (skipped), value calculated using timer frequency.. 4257.00 BogoMIPS (lpj=7092803)
> [ 0.000007] pid_max: default: 32768 minimum: 301
> [ 0.000040] Security Framework initialized
> [ 0.000052] AppArmor: AppArmor disabled by boot time parameter
> [ 0.000053] Yama: becoming mindful.
> [ 0.000227] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
> [ 0.000932] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
> [ 0.001223] Mount-cache hash table entries: 256
> [ 0.001448] Initializing cgroup subsys memory
> [ 0.001456] Initializing cgroup subsys devices
> [ 0.001459] Initializing cgroup subsys freezer
> [ 0.001461] Initializing cgroup subsys net_cls
> [ 0.001462] Initializing cgroup subsys blkio
> [ 0.001486] CPU: Physical Processor ID: 0
> [ 0.001488] CPU: Processor Core ID: 0
> [ 0.001494] mce: CPU supports 9 MCE banks
> [ 0.001505] CPU0: Thermal monitoring enabled (TM1)
> [ 0.001516] Last level iTLB entries: 4KB 512, 2MB 7, 4MB 7
> Last level dTLB entries: 4KB 512, 2MB 32, 4MB 32
> tlb_flushall_shift: 6
> [ 0.001606] Freeing SMP alternatives memory: 20K (ffffffff819ef000 - ffffffff819f4000)
> [ 0.002796] ACPI: Core revision 20131115
> [ 0.012879] ACPI: All ACPI Tables successfully acquired
> [ 0.179442] ftrace: allocating 20458 entries in 80 pages
> [ 0.191816] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
> [ 0.224806] smpboot: CPU0: Intel(R) Core(TM) i3 CPU M 330 @ 2.13GHz (fam: 06, model: 25, stepping: 02)
> [ 0.330332] Performance Events: PEBS fmt1+, 16-deep LBR, Westmere events, Intel PMU driver.
> [ 0.330340] perf_event_intel: CPUID marked event: 'bus cycles' unavailable
> [ 0.330343] ... version: 3
> [ 0.330344] ... bit width: 48
> [ 0.330345] ... generic registers: 4
> [ 0.330346] ... value mask: 0000ffffffffffff
> [ 0.330347] ... max period: 000000007fffffff
> [ 0.330348] ... fixed-purpose events: 3
> [ 0.330349] ... event mask: 000000070000000f
> [ 0.357070] x86: Booting SMP configuration:
> [ 0.370446] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
> [ 0.357072] .... node #0, CPUs: #1 #2 #3
> [ 0.410323] x86: Booted up 1 node, 4 CPUs
> [ 0.410328] smpboot: Total of 4 processors activated (17029.00 BogoMIPS)
> [ 0.412942] devtmpfs: initialized
> [ 0.416343] PM: Registering ACPI NVS region [mem 0x7b758000-0x7b7befff] (421888 bytes)
> [ 0.417415] RTC time: 16:39:27, date: 12/07/13
> [ 0.417460] NET: Registered protocol family 16
> [ 0.417574] cpuidle: using governor ladder
> [ 0.417576] cpuidle: using governor menu
> [ 0.417592] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
> [ 0.417594] ACPI: bus type PCI registered
> [ 0.417596] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
> [ 0.417675] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000)
> [ 0.417678] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820
> [ 0.438612] PCI: Using configuration type 1 for base access
> [ 0.438752] mtrr: your CPUs had inconsistent variable MTRR settings
> [ 0.438753] mtrr: probably your BIOS does not setup all CPUs.
> [ 0.438754] mtrr: corrected configuration.
> [ 0.439244] bio: create slab <bio-0> at 0
> [ 0.439371] ACPI: Added _OSI(Module Device)
> [ 0.439374] ACPI: Added _OSI(Processor Device)
> [ 0.439375] ACPI: Added _OSI(3.0 _SCP Extensions)
> [ 0.439377] ACPI: Added _OSI(Processor Aggregator Device)
> [ 0.443160] ACPI: Executed 1 blocks of module-level executable AML code
> [ 0.470309] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
> [ 0.470733] ACPI: SSDT 000000007b691c18 0003A0 (v01 PmRef Cpu0Ist 00003000 INTL 20051117)
> [ 0.471190] ACPI: Dynamic OEM Table Load:
> [ 0.471192] ACPI: SSDT (null) 0003A0 (v01 PmRef Cpu0Ist 00003000 INTL 20051117)
> [ 0.471342] ACPI: SSDT 000000007b68f618 0005CD (v01 PmRef Cpu0Cst 00003001 INTL 20051117)
> [ 0.471783] ACPI: Dynamic OEM Table Load:
> [ 0.471785] ACPI: SSDT (null) 0005CD (v01 PmRef Cpu0Cst 00003001 INTL 20051117)
> [ 0.497221] ACPI: SSDT 000000007b690a98 000303 (v01 PmRef ApIst 00003000 INTL 20051117)
> [ 0.497727] ACPI: Dynamic OEM Table Load:
> [ 0.497729] ACPI: SSDT (null) 000303 (v01 PmRef ApIst 00003000 INTL 20051117)
> [ 0.510396] ACPI: SSDT 000000007b68ed98 000119 (v01 PmRef ApCst 00003000 INTL 20051117)
> [ 0.510866] ACPI: Dynamic OEM Table Load:
> [ 0.510868] ACPI: SSDT (null) 000119 (v01 PmRef ApCst 00003000 INTL 20051117)
> [ 0.535990] ACPI: Interpreter enabled
> [ 0.536002] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20131115/hwxface-580)
> [ 0.536009] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20131115/hwxface-580)
> [ 0.536033] ACPI: (supports S0 S3 S4 S5)
> [ 0.536035] ACPI: Using IOAPIC for interrupt routing
> [ 0.536076] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
> [ 0.536263] ACPI: No dock devices found.
> [ 0.621788] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe])
> [ 0.621795] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
> [ 0.621831] \_SB_.PCI0:_OSC invalid UUID
> [ 0.621833] _OSC request data:1 1f 0
> [ 0.621837] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM
> [ 0.622688] ACPI: \_SB_.PCI0.PDRC: can't evaluate _ADR (0x5)
> [ 0.622691] ACPI: \_SB_.PCI0.MIR_: can't evaluate _ADR (0x5)
> [ 0.622703] PCI host bridge to bus 0000:00
> [ 0.622705] pci_bus 0000:00: root bus resource [bus 00-fe]
> [ 0.622708] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7]
> [ 0.622710] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff]
> [ 0.622712] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
> [ 0.622714] pci_bus 0000:00: root bus resource [mem 0x7c000000-0xfeafffff]
> [ 0.622722] pci 0000:00:00.0: [8086:0044] type 00 class 0x060000
> [ 0.622742] DMAR: BIOS has allocated no shadow GTT; disabling IOMMU for graphics
> [ 0.622827] pci 0000:00:01.0: [8086:0045] type 01 class 0x060400
> [ 0.622864] pci 0000:00:01.0: PME# supported from D0 D3hot D3cold
> [ 0.622916] pci 0000:00:01.0: System wakeup disabled by ACPI
> [ 0.622993] pci 0000:00:1a.0: [8086:3b3c] type 00 class 0x0c0320
> [ 0.623376] pci 0000:00:1a.0: reg 0x10: [mem 0x99105c00-0x99105fff]
> [ 0.625583] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold
> [ 0.625668] pci 0000:00:1a.0: System wakeup disabled by ACPI
> [ 0.625718] pci 0000:00:1b.0: [8086:3b56] type 00 class 0x040300
> [ 0.625742] pci 0000:00:1b.0: reg 0x10: [mem 0x99100000-0x99103fff 64bit]
> [ 0.625842] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
> [ 0.625905] pci 0000:00:1b.0: System wakeup disabled by ACPI
> [ 0.625946] pci 0000:00:1c.0: [8086:3b42] type 01 class 0x060400
> [ 0.626048] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
> [ 0.626112] pci 0000:00:1c.0: System wakeup disabled by ACPI
> [ 0.626151] pci 0000:00:1c.1: [8086:3b44] type 01 class 0x060400
> [ 0.626253] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold
> [ 0.626351] pci 0000:00:1c.2: [8086:3b46] type 01 class 0x060400
> [ 0.626454] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold
> [ 0.626562] pci 0000:00:1d.0: [8086:3b34] type 00 class 0x0c0320
> [ 0.626942] pci 0000:00:1d.0: reg 0x10: [mem 0x99105800-0x99105bff]
> [ 0.629155] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
> [ 0.629238] pci 0000:00:1d.0: System wakeup disabled by ACPI
> [ 0.629284] pci 0000:00:1e.0: [8086:2448] type 01 class 0x060401
> [ 0.629410] pci 0000:00:1e.0: System wakeup disabled by ACPI
> [ 0.629448] pci 0000:00:1f.0: [8086:3b09] type 00 class 0x060100
> [ 0.629647] pci 0000:00:1f.2: [8086:3b29] type 00 class 0x010601
> [ 0.629675] pci 0000:00:1f.2: reg 0x10: [io 0x5048-0x504f]
> [ 0.629687] pci 0000:00:1f.2: reg 0x14: [io 0x5054-0x5057]
> [ 0.629699] pci 0000:00:1f.2: reg 0x18: [io 0x5040-0x5047]
> [ 0.629710] pci 0000:00:1f.2: reg 0x1c: [io 0x5050-0x5053]
> [ 0.629722] pci 0000:00:1f.2: reg 0x20: [io 0x5020-0x503f]
> [ 0.629734] pci 0000:00:1f.2: reg 0x24: [mem 0x99105000-0x991057ff]
> [ 0.629802] pci 0000:00:1f.2: PME# supported from D3hot
> [ 0.629893] pci 0000:00:1f.3: [8086:3b30] type 00 class 0x0c0500
> [ 0.629915] pci 0000:00:1f.3: reg 0x10: [mem 0x99106000-0x991060ff 64bit]
> [ 0.629946] pci 0000:00:1f.3: reg 0x20: [io 0x5000-0x501f]
> [ 0.630105] pci 0000:01:00.0: [10de:0a34] type 00 class 0x030000
> [ 0.630120] pci 0000:01:00.0: reg 0x10: [mem 0x92000000-0x92ffffff]
> [ 0.630134] pci 0000:01:00.0: reg 0x14: [mem 0x80000000-0x8fffffff 64bit pref]
> [ 0.630148] pci 0000:01:00.0: reg 0x1c: [mem 0x90000000-0x91ffffff 64bit pref]
> [ 0.630158] pci 0000:01:00.0: reg 0x24: [io 0x4000-0x407f]
> [ 0.630168] pci 0000:01:00.0: reg 0x30: [mem 0xfff80000-0xffffffff pref]
> [ 0.630280] pci 0000:01:00.1: [10de:0be2] type 00 class 0x040300
> [ 0.630294] pci 0000:01:00.1: reg 0x10: [mem 0x93000000-0x93003fff]
> [ 0.630446] pci 0000:00:01.0: PCI bridge to [bus 01]
> [ 0.630449] pci 0000:00:01.0: bridge window [io 0x4000-0x4fff]
> [ 0.630452] pci 0000:00:01.0: bridge window [mem 0x92000000-0x930fffff]
> [ 0.630456] pci 0000:00:01.0: bridge window [mem 0x80000000-0x91ffffff 64bit pref]
> [ 0.630544] acpiphp: Slot [1] registered
> [ 0.630551] pci 0000:00:1c.0: PCI bridge to [bus 02-05]
> [ 0.630556] pci 0000:00:1c.0: bridge window [io 0x3000-0x3fff]
> [ 0.630562] pci 0000:00:1c.0: bridge window [mem 0x98100000-0x990fffff]
> [ 0.630569] pci 0000:00:1c.0: bridge window [mem 0x93100000-0x940fffff 64bit pref]
> [ 0.630690] pci 0000:06:00.0: [168c:002b] type 00 class 0x028000
> [ 0.630722] pci 0000:06:00.0: reg 0x10: [mem 0x97100000-0x9710ffff 64bit]
> [ 0.630868] pci 0000:06:00.0: supports D1
> [ 0.630870] pci 0000:06:00.0: PME# supported from D0 D1 D3hot
> [ 0.640219] pci 0000:00:1c.1: PCI bridge to [bus 06]
> [ 0.640230] pci 0000:00:1c.1: bridge window [io 0x2000-0x2fff]
> [ 0.640239] pci 0000:00:1c.1: bridge window [mem 0x97100000-0x980fffff]
> [ 0.640252] pci 0000:00:1c.1: bridge window [mem 0x94100000-0x950fffff 64bit pref]
> [ 0.640408] pci 0000:07:00.0: [14e4:1692] type 00 class 0x020000
> [ 0.640452] pci 0000:07:00.0: reg 0x10: [mem 0x96100000-0x9610ffff 64bit]
> [ 0.640680] pci 0000:07:00.0: PME# supported from D3hot D3cold
> [ 0.640737] pci 0000:07:00.0: System wakeup disabled by ACPI
> [ 0.650242] pci 0000:00:1c.2: PCI bridge to [bus 07]
> [ 0.650254] pci 0000:00:1c.2: bridge window [io 0x1000-0x1fff]
> [ 0.650259] pci 0000:00:1c.2: bridge window [mem 0x96100000-0x970fffff]
> [ 0.650267] pci 0000:00:1c.2: bridge window [mem 0x95100000-0x960fffff 64bit pref]
> [ 0.650353] pci 0000:00:1e.0: PCI bridge to [bus 08] (subtractive decode)
> [ 0.650366] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode)
> [ 0.650369] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode)
> [ 0.650371] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode)
> [ 0.650373] pci 0000:00:1e.0: bridge window [mem 0x7c000000-0xfeafffff] (subtractive decode)
> [ 0.677353] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 *5 6 7 10 12 14 15)
> [ 0.677413] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 11 12 14 15) *10
> [ 0.677471] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 10 12 14 15) *11
> [ 0.677528] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 11 12 14 15) *10
> [ 0.677585] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled.
> [ 0.677642] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 *11 12 14 15)
> [ 0.677699] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 10 12 14 15) *11
> [ 0.677756] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 *5 6 7 11 12 14 15)
> [ 0.677805] ACPI: PCI Root Bridge [CPBG] (domain 0000 [bus ff])
> [ 0.677809] acpi PNP0A03:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
> [ 0.677814] acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM
> [ 0.677888] PCI host bridge to bus 0000:ff
> [ 0.677891] pci_bus 0000:ff: root bus resource [bus ff]
> [ 0.677897] pci 0000:ff:00.0: [8086:2c62] type 00 class 0x060000
> [ 0.677943] pci 0000:ff:00.1: [8086:2d01] type 00 class 0x060000
> [ 0.677991] pci 0000:ff:02.0: [8086:2d10] type 00 class 0x060000
> [ 0.678037] pci 0000:ff:02.1: [8086:2d11] type 00 class 0x060000
> [ 0.678080] pci 0000:ff:02.2: [8086:2d12] type 00 class 0x060000
> [ 0.678122] pci 0000:ff:02.3: [8086:2d13] type 00 class 0x060000
> [ 0.678493] ACPI: Enabled 6 GPEs in block 00 to 3F
> [ 0.678501] ACPI: \_SB_.PCI0: notify handler is installed
> [ 0.678560] ACPI: \_SB_.CPBG: notify handler is installed
> [ 0.678571] Found 2 acpi root devices
> [ 0.678604] ACPI : EC: GPE = 0x17, I/O: command/status = 0x66, data = 0x62
> [ 0.678714] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none
> [ 0.678717] vgaarb: loaded
> [ 0.678718] vgaarb: bridge control possible 0000:01:00.0
> [ 0.678760] PCI: Using ACPI for IRQ routing
> [ 0.688654] PCI: pci_cache_line_size set to 64 bytes
> [ 0.688788] e820: reserve RAM buffer [mem 0x0009d000-0x0009ffff]
> [ 0.688790] e820: reserve RAM buffer [mem 0x7b681000-0x7bffffff]
> [ 0.688792] e820: reserve RAM buffer [mem 0x7b758000-0x7bffffff]
> [ 0.688794] e820: reserve RAM buffer [mem 0x7b7e3000-0x7bffffff]
> [ 0.688795] e820: reserve RAM buffer [mem 0x7b800000-0x7bffffff]
> [ 0.688898] NetLabel: Initializing
> [ 0.688899] NetLabel: domain hash size = 128
> [ 0.688900] NetLabel: protocols = UNLABELED CIPSOv4
> [ 0.688919] NetLabel: unlabeled traffic allowed by default
> [ 0.688949] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
> [ 0.688954] hpet0: 8 comparators, 64-bit 14.318180 MHz counter
> [ 0.690986] Switched to clocksource hpet
> [ 0.695899] pnp: PnP ACPI init
> [ 0.695917] ACPI: bus type PNP registered
> [ 0.717714] pnp 00:00: [dma 4]
> [ 0.717752] pnp 00:00: Plug and Play ACPI device, IDs PNP0200 (active)
> [ 0.717778] pnp 00:01: Plug and Play ACPI device, IDs INT0800 (active)
> [ 0.717900] pnp 00:02: Plug and Play ACPI device, IDs PNP0103 (active)
> [ 0.717939] pnp 00:03: Plug and Play ACPI device, IDs PNP0c04 (active)
> [ 0.717963] pnp 00:04: disabling [io 0x164e-0x164f] because it overlaps 0000:00:1c.2 BAR 13 [io 0x1000-0x1fff]
> [ 0.718003] system 00:04: [io 0x0680-0x069f] has been reserved
> [ 0.718006] system 00:04: [io 0x0800-0x080f] has been reserved
> [ 0.718008] system 00:04: [io 0xffff] has been reserved
> [ 0.718010] system 00:04: [io 0xffff] has been reserved
> [ 0.718013] system 00:04: [io 0x0400-0x047f] could not be reserved
> [ 0.718015] system 00:04: [io 0x0500-0x057f] has been reserved
> [ 0.718019] system 00:04: Plug and Play ACPI device, IDs PNP0c02 (active)
> [ 0.718051] pnp 00:05: Plug and Play ACPI device, IDs PNP0b00 (active)
> [ 0.718083] pnp 00:06: Plug and Play ACPI device, IDs SYN0716 SYN0700 SYN0002 PNP0f13 (active)
> [ 0.718113] pnp 00:07: Plug and Play ACPI device, IDs PNP0303 (active)
> [ 0.718606] pnp 00:08: disabling [mem 0xfffff000-0xffffffff] because it overlaps 0000:01:00.0 BAR 6 [mem 0xfff80000-0xffffffff pref]
> [ 0.718638] system 00:08: [mem 0xfed1c000-0xfed1ffff] has been reserved
> [ 0.718641] system 00:08: [mem 0xfed10000-0xfed13fff] has been reserved
> [ 0.718643] system 00:08: [mem 0xfed18000-0xfed18fff] has been reserved
> [ 0.718645] system 00:08: [mem 0xfed19000-0xfed19fff] has been reserved
> [ 0.718648] system 00:08: [mem 0xe0000000-0xefffffff] has been reserved
> [ 0.718650] system 00:08: [mem 0xfed20000-0xfed3ffff] has been reserved
> [ 0.718652] system 00:08: [mem 0xfed45000-0xfed8ffff] has been reserved
> [ 0.718654] system 00:08: [mem 0xff000000-0xffffffff] could not be reserved
> [ 0.718657] system 00:08: [mem 0xfee00000-0xfeefffff] could not be reserved
> [ 0.718660] system 00:08: Plug and Play ACPI device, IDs PNP0c02 (active)
> [ 0.718708] pnp 00:09: Plug and Play ACPI device, IDs ENE0201 (active)
> [ 0.718831] pnp: PnP ACPI: found 10 devices
> [ 0.718833] ACPI: bus type PNP unregistered
> [ 0.725668] pci 0000:01:00.0: no compatible bridge window for [mem 0xfff80000-0xffffffff pref]
> [ 0.725719] pci 0000:01:00.0: BAR 6: assigned [mem 0x93080000-0x930fffff pref]
> [ 0.725723] pci 0000:00:01.0: PCI bridge to [bus 01]
> [ 0.725725] pci 0000:00:01.0: bridge window [io 0x4000-0x4fff]
> [ 0.725729] pci 0000:00:01.0: bridge window [mem 0x92000000-0x930fffff]
> [ 0.725732] pci 0000:00:01.0: bridge window [mem 0x80000000-0x91ffffff 64bit pref]
> [ 0.725736] pci 0000:00:1c.0: PCI bridge to [bus 02-05]
> [ 0.725739] pci 0000:00:1c.0: bridge window [io 0x3000-0x3fff]
> [ 0.725746] pci 0000:00:1c.0: bridge window [mem 0x98100000-0x990fffff]
> [ 0.725751] pci 0000:00:1c.0: bridge window [mem 0x93100000-0x940fffff 64bit pref]
> [ 0.725759] pci 0000:00:1c.1: PCI bridge to [bus 06]
> [ 0.725762] pci 0000:00:1c.1: bridge window [io 0x2000-0x2fff]
> [ 0.725769] pci 0000:00:1c.1: bridge window [mem 0x97100000-0x980fffff]
> [ 0.725774] pci 0000:00:1c.1: bridge window [mem 0x94100000-0x950fffff 64bit pref]
> [ 0.725782] pci 0000:00:1c.2: PCI bridge to [bus 07]
> [ 0.725785] pci 0000:00:1c.2: bridge window [io 0x1000-0x1fff]
> [ 0.725792] pci 0000:00:1c.2: bridge window [mem 0x96100000-0x970fffff]
> [ 0.725797] pci 0000:00:1c.2: bridge window [mem 0x95100000-0x960fffff 64bit pref]
> [ 0.725805] pci 0000:00:1e.0: PCI bridge to [bus 08]
> [ 0.725821] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7]
> [ 0.725823] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff]
> [ 0.725825] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff]
> [ 0.725827] pci_bus 0000:00: resource 7 [mem 0x7c000000-0xfeafffff]
> [ 0.725829] pci_bus 0000:01: resource 0 [io 0x4000-0x4fff]
> [ 0.725831] pci_bus 0000:01: resource 1 [mem 0x92000000-0x930fffff]
> [ 0.725833] pci_bus 0000:01: resource 2 [mem 0x80000000-0x91ffffff 64bit pref]
> [ 0.725835] pci_bus 0000:02: resource 0 [io 0x3000-0x3fff]
> [ 0.725837] pci_bus 0000:02: resource 1 [mem 0x98100000-0x990fffff]
> [ 0.725839] pci_bus 0000:02: resource 2 [mem 0x93100000-0x940fffff 64bit pref]
> [ 0.725841] pci_bus 0000:06: resource 0 [io 0x2000-0x2fff]
> [ 0.725843] pci_bus 0000:06: resource 1 [mem 0x97100000-0x980fffff]
> [ 0.725845] pci_bus 0000:06: resource 2 [mem 0x94100000-0x950fffff 64bit pref]
> [ 0.725847] pci_bus 0000:07: resource 0 [io 0x1000-0x1fff]
> [ 0.725849] pci_bus 0000:07: resource 1 [mem 0x96100000-0x970fffff]
> [ 0.725851] pci_bus 0000:07: resource 2 [mem 0x95100000-0x960fffff 64bit pref]
> [ 0.725854] pci_bus 0000:08: resource 4 [io 0x0000-0x0cf7]
> [ 0.725856] pci_bus 0000:08: resource 5 [io 0x0d00-0xffff]
> [ 0.725858] pci_bus 0000:08: resource 6 [mem 0x000a0000-0x000bffff]
> [ 0.725860] pci_bus 0000:08: resource 7 [mem 0x7c000000-0xfeafffff]
> [ 0.725898] NET: Registered protocol family 2
> [ 0.726091] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
> [ 0.726161] TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
> [ 0.726250] TCP: Hash tables configured (established 16384 bind 16384)
> [ 0.726281] TCP: reno registered
> [ 0.726287] UDP hash table entries: 1024 (order: 3, 32768 bytes)
> [ 0.726307] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes)
> [ 0.726387] NET: Registered protocol family 1
> [ 0.751130] pci 0000:01:00.0: Boot video device
> [ 0.751191] PCI: CLS 64 bytes, default 64
> [ 0.751240] Unpacking initramfs...
> [ 0.830311] Freeing initrd memory: 3640K (ffff8800378d4000 - ffff880037c62000)
> [ 0.830354] Simple Boot Flag at 0x44 set to 0x1
> [ 0.830570] Scanning for low memory corruption every 60 seconds
> [ 0.830914] audit: initializing netlink socket (disabled)
> [ 0.830954] type=2000 audit(1386434366.563:1): initialized
> [ 0.844182] HugeTLB registered 2 MB page size, pre-allocated 0 pages
> [ 0.845481] zbud: loaded
> [ 0.845672] VFS: Disk quotas dquot_6.5.2
> [ 0.845718] Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
> [ 0.845899] msgmni has been set to 3860
> [ 0.846287] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
> [ 0.846349] io scheduler noop registered
> [ 0.846351] io scheduler deadline registered
> [ 0.846381] io scheduler cfq registered (default)
> [ 0.846596] pcieport 0000:00:01.0: irq 40 for MSI/MSI-X
> [ 0.847065] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
> [ 0.847080] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
> [ 0.847127] vesafb: mode is 640x480x32, linelength=2560, pages=0
> [ 0.847128] vesafb: scrolling: redraw
> [ 0.847130] vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0
> [ 0.847251] vesafb: framebuffer at 0x91000000, mapped to 0xffffc90010400000, using 1216k, total 1216k
> [ 0.888867] Console: switching to colour frame buffer device 80x30
> [ 0.929312] fb0: VESA VGA frame buffer device
> [ 0.929324] intel_idle: MWAIT substates: 0x1120
> [ 0.929326] intel_idle: v0.4 model 0x25
> [ 0.929327] intel_idle: lapic_timer_reliable_states 0xffffffff
> [ 0.929481] GHES: HEST is not enabled!
> [ 0.929543] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
> [ 0.930041] Linux agpgart interface v0.103
> [ 0.930113] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:MSS0] at 0x60,0x64 irq 1,12
> [ 0.930126] i8042: [0] d1 -> i8042 (command)
> [ 0.930132] i8042: [0] df -> i8042 (parameter)
> [ 0.930138] i8042: [0] ff -> i8042 (command)
> [ 0.930198] i8042: [0] 23 <- i8042 (flush, kbd)
> [ 0.930222] i8042: [0] 20 -> i8042 (command)
> [ 0.930231] i8042: [0] 67 <- i8042 (return)
> [ 0.930285] i8042: [0] 20 -> i8042 (command)
> [ 0.930293] i8042: [0] 67 <- i8042 (return)
> [ 0.930300] i8042: [0] 60 -> i8042 (command)
> [ 0.932731] i8042: [0] 76 -> i8042 (parameter)
> [ 0.935388] i8042: [1] d3 -> i8042 (command)
> [ 0.938557] i8042: [1] 5a -> i8042 (parameter)
> [ 0.938565] i8042: [1] -- i8042 (auxerr)
> [ 0.940211] i8042: [3] a9 -> i8042 (command)
> [ 0.940219] i8042: [3] 23 <- i8042 (return)
> [ 0.940239] i8042: [3] Interrupt 1, without any data
> [ 0.943719] i8042: [4] 60 -> i8042 (command)
> [ 0.946731] i8042: [4] 67 -> i8042 (parameter)
> [ 0.946743] serio: i8042 KBD port at 0x60,0x64 irq 1
> [ 0.946867] mousedev: PS/2 mouse device common for all mice
> [ 0.948785] i8042: [6] f2 -> i8042 (kbd-data)
> [ 0.948796] i8042: [6] 00 <- i8042 (interrupt, 0, 1)
> [ 0.948854] rtc_cmos 00:05: RTC can wake from S4
> [ 0.949019] rtc_cmos 00:05: rtc core: registered rtc_cmos as rtc0
> [ 0.949053] rtc_cmos 00:05: alarms up to one year, y3k, 242 bytes nvram, hpet irqs
> [ 0.949134] drop_monitor: Initializing network drop monitor service
> [ 0.949204] TCP: cubic registered
> [ 0.949326] NET: Registered protocol family 10
> [ 0.949533] NET: Registered protocol family 17
> [ 0.949546] Key type dns_resolver registered
> [ 0.949901] registered taskstats version 1
> [ 0.950565] Magic number: 9:392:691
> [ 0.957376] i8042: [7] 60 -> i8042 (command)
> [ 0.960548] i8042: [9] 66 -> i8042 (parameter)
> [ 0.960567] rtc_cmos 00:05: setting system clock to 2013-12-07 16:39:27 UTC (1386434367)
> [ 0.960628] PM: Hibernation image not present or could not be loaded.
> [ 0.962636] i8042: [9] 60 -> i8042 (command)
> [ 0.965649] i8042: [11] 67 -> i8042 (parameter)
> [ 0.965670] i8042: [11] 5a <- i8042 (interrupt, 1, 0)
> [ 0.966669] Freeing unused kernel memory: 1160K (ffffffff818cd000 - ffffffff819ef000)
> [ 0.966672] Write protecting the kernel read-only data: 8192k
> [ 0.967662] i8042: [12] fa <- i8042 (interrupt, 0, 1)
> [ 0.968027] i8042: [12] f2 -> i8042 (kbd-data)
> [ 0.968249] i8042: [12] ab <- i8042 (interrupt, 0, 1)
> [ 0.969630] Freeing unused kernel memory: 980K (ffff88000150b000 - ffff880001600000)
> [ 0.970570] Freeing unused kernel memory: 320K (ffff8800017b0000 - ffff880001800000)
> [ 0.976683] i8042: [14] fa <- i8042 (interrupt, 0, 1)
> [ 0.978343] i8042: [15] ab <- i8042 (interrupt, 0, 1)
> [ 0.978930] systemd-udevd[57]: starting version 208
> [ 0.980041] i8042: [15] 41 <- i8042 (interrupt, 0, 1)
> [ 0.980057] i8042: [15] f5 -> i8042 (kbd-data)
> [ 0.981681] i8042: [16] 23 <- i8042 (interrupt, 0, 1)
> [ 0.982631] [drm] Initialized drm 1.1.0 20060810
> [ 0.983985] wmi: Mapper loaded
> [ 0.984709] i8042: [17] fa <- i8042 (interrupt, 0, 1)
> [ 0.984736] i8042: [17] ed -> i8042 (kbd-data)
> [ 0.984739] ACPI: Video Device [VGA] (multi-head: yes rom: no post: no)
> [ 0.986132] i8042: [17] 23 <- i8042 (interrupt, 0, 1)
> [ 0.989692] i8042: [18] fa <- i8042 (interrupt, 0, 1)
> [ 0.989721] i8042: [18] 00 -> i8042 (kbd-data)
> [ 0.994055] i8042: [19] fa <- i8042 (interrupt, 0, 1)
> [ 0.994079] i8042: [19] f3 -> i8042 (kbd-data)
> [ 1.000465] i8042: [21] fa <- i8042 (interrupt, 0, 1)
> [ 1.000485] i8042: [21] 00 -> i8042 (kbd-data)
> [ 1.006166] i8042: [23] fa <- i8042 (interrupt, 0, 1)
> [ 1.006204] i8042: [23] f4 -> i8042 (kbd-data)
> [ 1.012989] i8042: [25] fa <- i8042 (interrupt, 0, 1)
> [ 1.013139] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input1
> [ 1.020504] i8042: [27] 23 <- i8042 (interrupt, 0, 1)
> [ 1.026812] acpi device:0b: registered as cooling_device0
> [ 1.026938] input: Video Bus as /devices/LNXSYSTM:00/device:00/PNP0A08:00/device:09/LNXVIDEO:01/input/input2
> [ 1.028000] input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0e/PNP0C0C:00/input/input3
> [ 1.028005] ACPI: Power Button [PWRB]
> [ 1.028046] input: Sleep Button as /devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0e/PNP0C0E:00/input/input4
> [ 1.028049] ACPI: Sleep Button [SLPB]
> [ 1.028109] input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0e/PNP0C0D:00/input/input5
> [ 1.028143] ACPI: Lid Switch [LID0]
> [ 1.028204] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input6
> [ 1.028207] ACPI: Power Button [PWRF]
> [ 1.032472] checking generic (91000000 130000) vs hw (80000000 10000000)
> [ 1.032476] checking generic (91000000 130000) vs hw (90000000 2000000)
> [ 1.032477] fb: conflicting fb hw usage nouveaufb vs VESA VGA - removing generic driver
> [ 1.032495] Console: switching to colour dummy device 80x25
> [ 1.033206] nouveau [ DEVICE][0000:01:00.0] BOOT0 : 0x0a5a00a2
> [ 1.033210] nouveau [ DEVICE][0000:01:00.0] Chipset: GT216 (NVA5)
> [ 1.033212] nouveau [ DEVICE][0000:01:00.0] Family : NV50
> [ 1.034746] nouveau [ VBIOS][0000:01:00.0] checking PRAMIN for image...
> [ 1.090203] i8042: [48] a3 <- i8042 (interrupt, 0, 1)
> [ 1.164871] nouveau [ VBIOS][0000:01:00.0] ... appears to be valid
> [ 1.164874] nouveau [ VBIOS][0000:01:00.0] using image from PRAMIN
> [ 1.165013] nouveau [ VBIOS][0000:01:00.0] BIT signature found
> [ 1.165016] nouveau [ VBIOS][0000:01:00.0] version 70.16.1c.00.21
> [ 1.186752] nouveau 0000:01:00.0: irq 41 for MSI/MSI-X
> [ 1.186768] nouveau [ PMC][0000:01:00.0] MSI interrupts enabled
> [ 1.186808] nouveau [ PFB][0000:01:00.0] RAM type: DDR3
> [ 1.186810] nouveau [ PFB][0000:01:00.0] RAM size: 1024 MiB
> [ 1.186812] nouveau [ PFB][0000:01:00.0] ZCOMP: 1920 tags
> [ 1.193268] nouveau [ VOLT][0000:01:00.0] GPU voltage: 850000uv
> [ 1.216778] nouveau [ PTHERM][0000:01:00.0] FAN control: none / external
> [ 1.216786] nouveau [ PTHERM][0000:01:00.0] fan management: automatic
> [ 1.216793] nouveau [ PTHERM][0000:01:00.0] internal sensor: yes
> [ 1.216865] nouveau [ CLK][0000:01:00.0] 03: core 135 MHz shader 270 MHz memory 135 MHz
> [ 1.216868] nouveau [ CLK][0000:01:00.0] 07: core 405 MHz shader 810 MHz memory 324 MHz
> [ 1.216872] nouveau [ CLK][0000:01:00.0] 0f: core 550 MHz shader 1210 MHz memory 790 MHz
> [ 1.216915] nouveau [ CLK][0000:01:00.0] --: core 405 MHz shader 810 MHz memory 324 MHz
> [ 1.217077] [TTM] Zone kernel: Available graphics memory: 989576 kiB
> [ 1.217079] [TTM] Initializing pool allocator
> [ 1.217088] [TTM] Initializing DMA pool allocator
> [ 1.217100] nouveau [ DRM] VRAM: 1024 MiB
> [ 1.217102] nouveau [ DRM] GART: 1048576 MiB
> [ 1.217105] nouveau [ DRM] TMDS table version 2.0
> [ 1.217107] nouveau [ DRM] DCB version 4.0
> [ 1.217110] nouveau [ DRM] DCB outp 00: 01010323 00010034
> [ 1.217112] nouveau [ DRM] DCB outp 01: 02001300 00000000
> [ 1.217114] nouveau [ DRM] DCB outp 02: 02022362 00020010
> [ 1.217115] nouveau [ DRM] DCB conn 00: 00000040
> [ 1.217117] nouveau [ DRM] DCB conn 01: 00000100
> [ 1.217119] nouveau [ DRM] DCB conn 02: 00002261
> [ 1.262069] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
> [ 1.262071] [drm] No driver support for vblank timestamp query.
> [ 1.262074] nouveau [ DRM] ACPI backlight interface available, not registering our own
> [ 1.312004] nouveau [ DRM] MM: using COPY for buffer copies
> [ 1.378061] nouveau [ DRM] allocated 1366x768 fb: 0x70000, bo ffff880076b12400
> [ 1.378412] fbcon: nouveaufb (fb0) is primary device
> [ 1.830558] tsc: Refined TSC clocksource calibration: 2128.004 MHz
> [ 2.720296] Console: switching to colour frame buffer device 170x48
> [ 2.720896] nouveau 0000:01:00.0: fb0: nouveaufb frame buffer device
> [ 2.720898] nouveau 0000:01:00.0: registered panic notifier
> [ 2.720904] [drm] Initialized nouveau 1.1.1 20120801 for 0000:01:00.0 on minor 0
> [ 2.781027] SCSI subsystem initialized
> [ 2.785979] ACPI: bus type USB registered
> [ 2.786039] usbcore: registered new interface driver usbfs
> [ 2.786061] usbcore: registered new interface driver hub
> [ 2.786522] usbcore: registered new device driver usb
> [ 2.787074] libata version 3.00 loaded.
> [ 2.788578] ahci 0000:00:1f.2: version 3.0
> [ 2.788891] ahci 0000:00:1f.2: irq 42 for MSI/MSI-X
> [ 2.788948] ahci 0000:00:1f.2: SSS flag set, parallel bus scan disabled
> [ 2.789000] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 4 ports 3 Gbps 0x13 impl SATA mode
> [ 2.789007] ahci 0000:00:1f.2: flags: 64bit ncq sntf ilck stag pm led clo pio slum part ems sxs apst
> [ 2.789274] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
> [ 2.789510] ehci-pci: EHCI PCI platform driver
> [ 2.803104] scsi0 : ahci
> [ 2.803592] scsi1 : ahci
> [ 2.803715] scsi2 : ahci
> [ 2.804500] scsi3 : ahci
> [ 2.805114] scsi4 : ahci
> [ 2.805363] ata1: SATA max UDMA/133 abar m2048@0x99105000 port 0x99105100 irq 42
> [ 2.805422] ata2: SATA max UDMA/133 abar m2048@0x99105000 port 0x99105180 irq 42
> [ 2.805425] ata3: DUMMY
> [ 2.805427] ata4: DUMMY
> [ 2.805432] ata5: SATA max UDMA/133 abar m2048@0x99105000 port 0x99105300 irq 42
> [ 2.805663] ehci-pci 0000:00:1a.0: EHCI Host Controller
> [ 2.805676] ehci-pci 0000:00:1a.0: new USB bus registered, assigned bus number 1
> [ 2.805696] ehci-pci 0000:00:1a.0: debug port 2
> [ 2.809687] ehci-pci 0000:00:1a.0: cache line size of 64 is not supported
> [ 2.809710] ehci-pci 0000:00:1a.0: irq 16, io mem 0x99105c00
> [ 2.816769] ehci-pci 0000:00:1a.0: USB 2.0 started, EHCI 1.00
> [ 2.816979] hub 1-0:1.0: USB hub found
> [ 2.816988] hub 1-0:1.0: 3 ports detected
> [ 2.817239] ehci-pci 0000:00:1d.0: EHCI Host Controller
> [ 2.817246] ehci-pci 0000:00:1d.0: new USB bus registered, assigned bus number 2
> [ 2.817260] ehci-pci 0000:00:1d.0: debug port 2
> [ 2.821197] ehci-pci 0000:00:1d.0: cache line size of 64 is not supported
> [ 2.821219] ehci-pci 0000:00:1d.0: irq 23, io mem 0x99105800
> [ 2.830120] ehci-pci 0000:00:1d.0: USB 2.0 started, EHCI 1.00
> [ 2.830223] Switched to clocksource tsc
> [ 2.830611] hub 2-0:1.0: USB hub found
> [ 2.830632] hub 2-0:1.0: 3 ports detected
> [ 3.123413] usb 1-1: new high-speed USB device number 2 using ehci-pci
> [ 3.126695] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
> [ 3.127390] ata1.00: ATA-9: OCZ-VERTEX4, 1.5, max UDMA/133
> [ 3.127398] ata1.00: 250069680 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
> [ 3.128201] ata1.00: configured for UDMA/133
> [ 3.128425] scsi 0:0:0:0: Direct-Access ATA OCZ-VERTEX4 1.5 PQ: 0 ANSI: 5
> [ 3.247461] hub 1-1:1.0: USB hub found
> [ 3.247625] hub 1-1:1.0: 6 ports detected
> [ 3.353282] usb 2-1: new high-speed USB device number 2 using ehci-pci
> [ 3.446596] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
> [ 3.459677] ata2.00: ATAPI: Optiarc DVD RW AD-7580S, F820, max UDMA/100
> [ 3.474591] ata2.00: configured for UDMA/100
> [ 3.477642] hub 2-1:1.0: USB hub found
> [ 3.477746] hub 2-1:1.0: 8 ports detected
> [ 3.477899] scsi 1:0:0:0: CD-ROM Optiarc DVD RW AD-7580S F820 PQ: 0 ANSI: 5
> [ 3.546651] usb 1-1.4: new full-speed USB device number 3 using ehci-pci
> [ 3.743314] usb 2-1.3: new high-speed USB device number 3 using ehci-pci
> [ 3.796436] ata5: SATA link down (SStatus 0 SControl 300)
> [ 3.800088] sd 0:0:0:0: [sda] 250069680 512-byte logical blocks: (128 GB/119 GiB)
> [ 3.800206] sd 0:0:0:0: [sda] Write Protect is off
> [ 3.800215] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
> [ 3.800282] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
> [ 3.803451] sda: sda1 sda2 sda3
> [ 3.804130] sd 0:0:0:0: [sda] Attached SCSI disk
> [ 3.804470] sr0: scsi3-mmc drive: 62x/62x writer dvd-ram cd/rw xa/form2 cdda tray
> [ 3.804474] cdrom: Uniform CD-ROM driver Revision: 3.20
> [ 3.804735] sr 1:0:0:0: Attached scsi CD-ROM sr0
> [ 4.195399] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
> [ 4.270424] systemd[1]: systemd 208 running in system mode. (+PAM -LIBWRAP -AUDIT -SELINUX -IMA -SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ)
> [ 4.271582] systemd[1]: Set hostname to <o2pc>.
> [ 4.274329] random: systemd urandom read with 72 bits of entropy available
> [ 4.341107] systemd[1]: Cannot add dependency job for unit display-manager.service, ignoring: Unit display-manager.service failed to load: No such file or directory.
> [ 4.341540] systemd[1]: Starting Forward Password Requests to Wall Directory Watch.
> [ 4.341661] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
> [ 4.341689] systemd[1]: Starting Remote File Systems.
> [ 4.341713] systemd[1]: Reached target Remote File Systems.
> [ 4.341732] systemd[1]: Starting Device-mapper event daemon FIFOs.
> [ 4.341791] systemd[1]: Listening on Device-mapper event daemon FIFOs.
> [ 4.341810] systemd[1]: Starting LVM2 metadata daemon socket.
> [ 4.341863] systemd[1]: Listening on LVM2 metadata daemon socket.
> [ 4.341882] systemd[1]: Starting /dev/initctl Compatibility Named Pipe.
> [ 4.341918] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
> [ 4.341936] systemd[1]: Starting Delayed Shutdown Socket.
> [ 4.341976] systemd[1]: Listening on Delayed Shutdown Socket.
> [ 4.342035] systemd[1]: Starting Arbitrary Executable File Formats File System Automount Point.
> [ 4.342219] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
> [ 4.342248] systemd[1]: Starting Dispatch Password Requests to Console Directory Watch.
> [ 4.342315] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
> [ 4.342334] systemd[1]: Starting Paths.
> [ 4.342355] systemd[1]: Reached target Paths.
> [ 4.342372] systemd[1]: Starting Encrypted Volumes.
> [ 4.342391] systemd[1]: Reached target Encrypted Volumes.
> [ 4.342414] systemd[1]: Starting udev Kernel Socket.
> [ 4.342454] systemd[1]: Listening on udev Kernel Socket.
> [ 4.342476] systemd[1]: Starting udev Control Socket.
> [ 4.342518] systemd[1]: Listening on udev Control Socket.
> [ 4.342540] systemd[1]: Starting Journal Socket.
> [ 4.342625] systemd[1]: Listening on Journal Socket.
> [ 4.342666] systemd[1]: Mounting Huge Pages File System...
> [ 4.344185] systemd[1]: Started Set Up Additional Binary Formats.
> [ 4.344231] systemd[1]: Starting udev Coldplug all Devices...
> [ 4.344940] systemd[1]: Mounting Debug File System...
> [ 4.346524] systemd[1]: Starting Apply Kernel Variables...
> [ 4.347091] systemd[1]: Starting Setup Virtual Console...
> [ 4.353930] systemd[1]: Starting Create list of required static device nodes for the current kernel...
> [ 4.354487] systemd[1]: Mounting POSIX Message Queue File System...
> [ 4.357367] systemd[1]: Starting Load Kernel Modules...
> [ 4.357702] systemd[1]: Starting Journal Service...
> [ 4.358782] systemd[1]: Started Journal Service.
> [ 4.371482] EXT4-fs (sda2): re-mounted. Opts: discard
> [ 4.375670] i2c /dev entries driver
> [ 4.376362] systemd-journald[132]: Vacuuming done, freed 0 bytes
> [ 4.400629] ACPI Warning: 0x0000000000005000-0x000000000000501f SystemIO conflicts with Region \_SB_.PCI0.SBUS.SMBI 1 (20131115/utaddress-251)
> [ 4.400637] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
> [ 4.429366] systemd-udevd[157]: starting version 208
> [ 4.434254] systemd-journald[132]: Received request to flush runtime journal from PID 1
> [ 4.527006] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
> [ 4.533311] ene_ir: chip is 0x3926 - kbver = 0x00, rev = 0xd2
> [ 4.533313] ene_ir: PLL freq = 1000
> [ 4.533315] ene_ir: KB3926D or higher detected
> [ 4.533330] ene_ir: Firmware regs: cc 00
> [ 4.533331] ene_ir: Hardware features:
> [ 4.533332] ene_ir: * Uses GPIO 40 for IR demodulated input
> [ 4.533333] ene_ir: * Uses new style input buffer
> [ 4.533381] ene_ir: Hardware uses 2 extended buffers:
> [ 4.533382] ene_ir: 0xfa48 - len : 15
> [ 4.533384] ene_ir: 0xfa00 - len : 17
> [ 4.533385] ene_ir: Total buffer len = 40
> [ 4.538176] ACPI: AC Adapter [ACAD] (on-line)
> [ 4.555652] snd_hda_intel 0000:00:1b.0: irq 43 for MSI/MSI-X
> [ 4.557643] ACPI : EC: GPE storm detected(9 GPEs), transactions will use polling mode
> [ 4.559700] Registered IR keymap rc-rc6-mce
> [ 4.560655] input: ENE eHome Infrared Remote Receiver as /devices/virtual/rc/rc0/input7
> [ 4.560923] rc0: ENE eHome Infrared Remote Receiver as /devices/virtual/rc/rc0
> [ 4.566518] IR RC6 protocol handler initialized
> [ 4.566814] IR RC5(x) protocol handler initialized
> [ 4.567212] IR JVC protocol handler initialized
> [ 4.569200] IR NEC protocol handler initialized
> [ 4.570794] pps_core: LinuxPPS API ver. 1 registered
> [ 4.570798] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
> [ 4.571733] IR MCE Keyboard/mouse protocol handler initialized
> [ 4.571838] IR SANYO protocol handler initialized
> [ 4.571976] input: MCE IR Keyboard/Mouse (ene_ir) as /devices/virtual/input/input8
> [ 4.572324] PTP clock support registered
> [ 4.573220] ene_ir: driver has been successfully loaded
> [ 4.574320] IR Sony protocol handler initialized
> [ 4.576848] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input9
> [ 4.578547] lirc_dev: IR Remote Control driver registered, major 249
> [ 4.580568] tg3.c:v3.134 (Sep 16, 2013)
> [ 4.582159] rc rc0: lirc_dev: driver ir-lirc-codec (ene_ir) registered at minor = 0
> [ 4.582166] IR LIRC bridge handler initialized
> [ 4.587881] cfg80211: Calling CRDA to update world regulatory domain
> [ 4.589851] input: HDA Intel MID Front Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input11
> [ 4.590134] input: HDA Intel MID Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input10
> [ 4.593140] ACPI Warning: 0x0000000000000428-0x000000000000042f SystemIO conflicts with Region \PMIO 1 (20131115/utaddress-251)
> [ 4.593148] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
> [ 4.593154] ACPI Warning: 0x0000000000000540-0x000000000000054f SystemIO conflicts with Region \GPIO 1 (20131115/utaddress-251)
> [ 4.593158] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
> [ 4.593160] ACPI Warning: 0x0000000000000530-0x000000000000053f SystemIO conflicts with Region \GPIO 1 (20131115/utaddress-251)
> [ 4.593165] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
> [ 4.593167] ACPI Warning: 0x0000000000000500-0x000000000000052f SystemIO conflicts with Region \GPIO 1 (20131115/utaddress-251)
> [ 4.593171] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
> [ 4.593173] lpc_ich: Resource conflict(s) found affecting gpio_ich
> [ 4.593242] libphy: tg3 mdio bus: probed
> [ 4.593957] hda_intel: Disabling MSI
> [ 4.593964] hda-intel 0000:01:00.1: Handle VGA-switcheroo audio client
> [ 4.603384] tg3 0000:07:00.0 eth0: Tigon3 [partno(BCM57780) rev 57780001] (PCI Express) MAC address 70:5a:b6:5f:4c:c4
> [ 4.603388] tg3 0000:07:00.0 eth0: attached PHY driver [Broadcom BCM57780] (mii_bus:phy_addr=700:01)
> [ 4.603391] tg3 0000:07:00.0 eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] TSOcap[1]
> [ 4.603393] tg3 0000:07:00.0 eth0: dma_rwctrl[76180000] dma_mask[64-bit]
> [ 4.618176] microcode: CPU0 sig=0x20652, pf=0x10, revision=0x9
> [ 4.624032] platform microcode: Direct firmware load failed with error -2
> [ 4.624038] platform microcode: Falling back to user helper
> [ 4.631780] ideapad_slidebar: Laptop model 'Lenovo IdeaPad Y550P'
> [ 4.672633] Adding 4190204k swap on /dev/sda3. Priority:-1 extents:1 across:4190204k SSFS
> [ 4.696164] ACPI: Invalid active0 threshold
> [ 4.701631] ath: phy0: Enable LNA combining
> [ 4.704418] ath: phy0: ASPM enabled: 0x43
> [ 4.704422] ath: EEPROM regdomain: 0x6a
> [ 4.704424] ath: EEPROM indicates we should expect a direct regpair map
> [ 4.704427] ath: Country alpha2 being used: 00
> [ 4.704428] ath: Regpair used: 0x6a
> [ 4.709441] input: Ideapad extra buttons as /devices/platform/VPC2004:00/input/input12
> [ 4.716028] random: nonblocking pool is initialized
> [ 4.717198] Bluetooth: Core ver 2.17
> [ 4.717218] NET: Registered protocol family 31
> [ 4.717220] Bluetooth: HCI device and connection manager initialized
> [ 4.717231] Bluetooth: HCI socket layer initialized
> [ 4.717234] Bluetooth: L2CAP socket layer initialized
> [ 4.717240] Bluetooth: SCO socket layer initialized
> [ 4.719068] usbcore: registered new interface driver btusb
> [ 4.719106] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
> [ 4.719425] ieee80211 phy0: Atheros AR9285 Rev:2 mem=0xffffc90015200000, irq=17
> [ 4.727739] media: Linux media interface: v0.10
> [ 4.731785] Linux video capture interface: v2.00
> [ 4.740364] uvcvideo: Found UVC 1.00 device Lenovo EasyCamera (090c:7371)
> [ 4.796054] thermal LNXTHERM:00: registered as thermal_zone0
> [ 4.796059] ACPI: Thermal Zone [TZ00] (51 C)
> [ 4.801246] iTCO_vendor_support: vendor-support=0
> [ 4.803147] microcode: CPU1 sig=0x20652, pf=0x10, revision=0x9
> [ 4.803165] platform microcode: Direct firmware load failed with error -2
> [ 4.803168] platform microcode: Falling back to user helper
> [ 4.803903] iTCO_wdt: Intel TCO WatchDog Timer Driver v1.10
> [ 4.804016] iTCO_wdt: Found a HM55 TCO device (Version=2, TCOBASE=0x0460)
> [ 4.804188] iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
> [ 4.816117] systemd-udevd[171]: renamed network interface eth0 to enp7s0
> [ 4.827947] microcode: CPU2 sig=0x20652, pf=0x10, revision=0x9
> [ 4.827967] platform microcode: Direct firmware load failed with error -2
> [ 4.827969] platform microcode: Falling back to user helper
> [ 4.832522] systemd-udevd[174]: renamed network interface wlan0 to wlp6s0
> [ 4.833834] microcode: CPU3 sig=0x20652, pf=0x10, revision=0x9
> [ 4.833865] platform microcode: Direct firmware load failed with error -2
> [ 4.833871] platform microcode: Falling back to user helper
> [ 4.836900] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
> [ 4.859130] kvm: disabled by bios
> [ 4.919434] input: Lenovo EasyCamera as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/input/input13
> [ 4.919720] usbcore: registered new interface driver uvcvideo
> [ 4.919725] USB Video Class driver (1.1.1)
> [ 5.269471] ACPI: Battery Slot [BAT1] (battery present)
> [ 5.275917] input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input17
> [ 5.276022] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input16
> [ 5.276113] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input15
> [ 5.276200] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input14
> [ 5.336683] IPv6: ADDRCONF(NETDEV_UP): wlp6s0: link is not ready
> [ 5.339221] tg3 0000:07:00.0: irq 44 for MSI/MSI-X
> [ 5.360249] IPv6: ADDRCONF(NETDEV_UP): enp7s0: link is not ready
> [ 5.405775] i8042: [1344] a8 -> i8042 (command)
> [ 5.405928] input: PC Speaker as /devices/platform/pcspkr/input/input18
> [ 5.406262] input: IdeaPad Slidebar as /devices/platform/ideapad_slidebar/input/input19
> [ 5.603395] tg3 0000:07:00.0 enp7s0: Link is down
>
>
> On 12/07/2013 08:02 PM, Dmitry Torokhov wrote:
>> On Sat, Dec 07, 2013 at 05:47:09PM +0400, Andrey Moiseev wrote:
>>> I inserted a printk into ps2_handle_response(struct ps2dev *ps2dev,
>>> unsigned char data) in "drivers/input/serio/libps2.c" and other
>>> functions in the file.
>>> It really eats scancodes from the keyboard, as I see (0x23 is the 'H'
>>> press scancode). Seems like the scancodes are mixed with reasonable
>>> values. Is it a bug in the controller?
>>
>> Not necessarily... Can you boot with i8042.debug=1 and post full dmesg?
>>
>> Thanks.
>>
>
^ permalink raw reply
* Re: [PATCH] input synaptics-rmi4: elliminate multiple sensor support from rmi_f11.c
From: Christopher Heiny @ 2013-12-09 0:10 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Andrew Duggan, Linux Input, Vincent Huang, Vivian Ly,
Daniel Rosenberg, Jean Delvare, Joerie de Gram, Linus Walleij,
Benjamin Tissoires
In-Reply-To: <20131207160527.GB11635@core.coreip.homeip.net>
On 12/07/2013 08:05 AM, Dmitry Torokhov wrote:
> Hi Andrew,
>
> On Thu, Dec 05, 2013 at 05:59:27PM -0800, Andrew Duggan wrote:
>> > This patch implements changes to the synaptics-rmi4 branch of
>> > Dmitry's input tree. The base for the patch is commit
>> > 8ca01dc61a42b6f7bcba052a8c084000f7057a34.
>> >
>> > This patch elliminates support for multiple sensors in rmi_f11. This feature
>> > has been removed from the RMI4 spec and no devices have every used multiple
>> > F11 sensors on a single device.
>> >
>> > Signed-off-by: Andrew Duggan <aduggan@synaptics.com>
> I am a bit confused here - has this been coordinated with recent
> submission by Chris? I'd prefer if there was a single person from
> Synaptics posting patches at the same time, so that I know they are
> properly sequenced.
Hi,
To make things go faster, Andrew working with me to split the large
patch into manageable bites, and I asked him to go ahead and submit that
one. That patch is in sequence - I'll sign off on it in a moment.
We'll run future patches through my email.
Chris
^ permalink raw reply
* Re: [PATCH] input synaptics-rmi4: elliminate multiple sensor support from rmi_f11.c
From: Christopher Heiny @ 2013-12-09 0:11 UTC (permalink / raw)
To: Andrew Duggan
Cc: Dmitry Torokhov, Linux Input, Vincent Huang, Vivian Ly,
Daniel Rosenberg, Jean Delvare, Joerie de Gram, Linus Walleij,
Benjamin Tissoires
In-Reply-To: <1386295167-866-1-git-send-email-aduggan@synaptics.com>
On 12/05/2013 05:59 PM, Andrew Duggan wrote:
> This patch implements changes to the synaptics-rmi4 branch of
> Dmitry's input tree. The base for the patch is commit
> 8ca01dc61a42b6f7bcba052a8c084000f7057a34.
>
> This patch elliminates support for multiple sensors in rmi_f11. This feature
> has been removed from the RMI4 spec and no devices have every used multiple
> F11 sensors on a single device.
>
> Signed-off-by: Andrew Duggan <aduggan@synaptics.com>
Sign-off-by: Christopher Heiny <cheiny@synaptics.com>
^ permalink raw reply
* Re: Sony DualShock4 - basic functions work, but looking to improve support
From: simon @ 2013-12-09 0:51 UTC (permalink / raw)
To: simon; +Cc: Linux Input, Antonio Ospite
In-Reply-To: <61a33717137a02a1d0eac5a2d1cb257e.squirrel@mungewell.org>
[-- Attachment #1: Type: text/plain, Size: 956 bytes --]
Following a very useful post on Reddit:
http://np.reddit.com/r/PS4/comments/1p9y0l/pairing_your_ds4_controller_via_bluetooth/
I was able to put the DS4 into discoverable mode, pair and connect using
the 'hidd --connect 1C:66:6D:07:C3:E0' to get a working wireless/BT
joystick.
discoverable - hold 'PS' and 'Share' until light bar fast strobes.
connected - light bar turns on constant.
turn device off - hold 'PS' until light bar turns off.
Not sure why, but under a bluetooth connection the 'hidraw0' device only
outputs the first 10 bytes (compared to 64 bytes with USB connection)
--
$ hexdump -v -e '10/1 "%02x " "\n"' < /dev/hidraw0
01 7d 7e 82 7e 08 00 00 00 00
01 7d 7e 83 7e 08 00 00 00 00
01 7d 7e 81 7e 08 00 00 00 00
01 7d 7e 82 7e 08 00 00 00 00
01 7d 7e 80 7f 08 00 00 00 00
--
Attached are some bluetooth details for the device. No idea on how to get
audio to/from the device - I was kind of hoping it would behave like a BT
headset.
Simon
[-- Attachment #2: hcitool_info.txt --]
[-- Type: text/plain, Size: 1017 bytes --]
simon@womble:~$ hcitool info 1C:66:6D:07:C3:E0
Requesting information ...
BD Address: 1C:66:6D:07:C3:E0
Device Name: Wireless Controller
LMP Version: 3.0 (0x5) LMP Subversion: 0x0
Manufacturer: Atheros Communications, Inc. (69)
Features: 0xff 0xfe 0x0d 0xfe 0x98 0x7f 0x79 0x87
<3-slot packets> <5-slot packets> <encryption> <slot offset>
<timing accuracy> <role switch> <hold mode> <sniff mode>
<RSSI> <channel quality> <SCO link> <HV2 packets>
<HV3 packets> <u-law log> <A-law log> <CVSD> <power control>
<transparent SCO> <EDR ACL 2 Mbps> <EDR ACL 3 Mbps>
<enhanced iscan> <interlaced iscan> <interlaced pscan>
<inquiry with RSSI> <extended SCO> <AFH cap. slave>
<AFH class. slave> <3-slot EDR ACL> <5-slot EDR ACL>
<sniff subrating> <pause encryption> <AFH cap. master>
<AFH class. master> <EDR eSCO 2 Mbps> <EDR eSCO 3 Mbps>
<extended inquiry> <simple pairing> <encapsulated PDU>
<err. data report> <non-flush flag> <LSTO> <inquiry TX power>
<EPC> <extended features>
[-- Attachment #3: sdptool_records.txt --]
[-- Type: text/plain, Size: 736 bytes --]
simon@womble:~/dualshock4$ sdptool records 1C:66:6D:07:C3:E0
Service Name: Wireless Controller
Service Description: Game Controller
Service Provider: Sony Computer Entertainment
Service RecHandle: 0x10001
Service Class ID List:
"Human Interface Device" (0x1124)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 17
"HIDP" (0x0011)
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Human Interface Device" (0x1124)
Version: 0x0100
Service RecHandle: 0x10002
Service Class ID List:
"PnP Information" (0x1200)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 1
"SDP" (0x0001)
Profile Descriptor List:
"PnP Information" (0x1200)
Version: 0x0103
^ permalink raw reply
* [PATCH] Add: (1) Detection for newer Elantech touchpads, so that kernel doesn't fall-back to default PS/2 driver. (2) Enable hardware version 4 touchpad right click function.
From: Duson Lin @ 2013-12-09 2:59 UTC (permalink / raw)
To: linux-kernel, linux-input, dmitry.torokhov; +Cc: Duson Lin
Modify:
(1) crc_enabled only support for v3 and v4 touchpad, so initialize crc_enabled as false first and
check this hardware flag when hw_version as 3 or 4.
Signed-off-by: Duson Lin <dusonlin@emc.com.tw>
---
drivers/input/mouse/elantech.c | 30 ++++++++++++++----------------
drivers/input/mouse/elantech.h | 2 +-
2 files changed, 15 insertions(+), 17 deletions(-)
diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
index 8551dca..b3627cf 100644
--- a/drivers/input/mouse/elantech.c
+++ b/drivers/input/mouse/elantech.c
@@ -1,5 +1,5 @@
/*
- * Elantech Touchpad driver (v6)
+ * Elantech Touchpad driver (v7)
*
* Copyright (C) 2007-2009 Arjan Opmeer <arjan@opmeer.net>
*
@@ -486,6 +486,7 @@ static void elantech_input_sync_v4(struct psmouse *psmouse)
unsigned char *packet = psmouse->packet;
input_report_key(dev, BTN_LEFT, packet[0] & 0x01);
+ input_report_key(dev, BTN_RIGHT, packet[0] & 0x02);
input_mt_report_pointer_emulation(dev, true);
input_sync(dev);
}
@@ -1047,9 +1048,7 @@ static int elantech_set_input_params(struct psmouse *psmouse)
*/
psmouse_warn(psmouse, "couldn't query resolution data.\n");
}
- /* v4 is clickpad, with only one button. */
__set_bit(INPUT_PROP_BUTTONPAD, dev->propbit);
- __clear_bit(BTN_RIGHT, dev->keybit);
__set_bit(BTN_TOOL_QUADTAP, dev->keybit);
/* For X to recognize me as touchpad. */
input_set_abs_params(dev, ABS_X, x_min, x_max, 0, 0);
@@ -1186,19 +1185,12 @@ static struct attribute_group elantech_attr_group = {
static bool elantech_is_signature_valid(const unsigned char *param)
{
- static const unsigned char rates[] = { 200, 100, 80, 60, 40, 20, 10 };
- int i;
-
if (param[0] == 0)
return false;
if (param[1] == 0)
return true;
- for (i = 0; i < ARRAY_SIZE(rates); i++)
- if (param[2] == rates[i])
- return false;
-
return true;
}
@@ -1298,6 +1290,14 @@ static int elantech_set_properties(struct elantech_data *etd)
{
/* This represents the version of IC body. */
int ver = (etd->fw_version & 0x0f0000) >> 16;
+ /*
+ * The signatures of v3 and v4 packets change depending on the
+ * value of this hardware flag. But the v1 and v2 have not crc
+ * check mechanism and the same hardware flag are also defined
+ * as other function. So crc_enabled must be initialized as false
+ * first and checking by different hw_version.
+ */
+ etd->crc_enabled = false;
/* Early version of Elan touchpads doesn't obey the rule. */
if (etd->fw_version < 0x020030 || etd->fw_version == 0x020600)
@@ -1309,10 +1309,14 @@ static int elantech_set_properties(struct elantech_data *etd)
etd->hw_version = 2;
break;
case 5:
+ etd->crc_enabled = ((etd->fw_version & 0x4000) == 0x4000);
etd->hw_version = 3;
break;
case 6:
case 7:
+ case 8:
+ case 10:
+ etd->crc_enabled = ((etd->fw_version & 0x4000) == 0x4000);
etd->hw_version = 4;
break;
default:
@@ -1343,12 +1347,6 @@ static int elantech_set_properties(struct elantech_data *etd)
etd->reports_pressure = true;
}
- /*
- * The signatures of v3 and v4 packets change depending on the
- * value of this hardware flag.
- */
- etd->crc_enabled = ((etd->fw_version & 0x4000) == 0x4000);
-
return 0;
}
diff --git a/drivers/input/mouse/elantech.h b/drivers/input/mouse/elantech.h
index 036a04a..c963ac8 100644
--- a/drivers/input/mouse/elantech.h
+++ b/drivers/input/mouse/elantech.h
@@ -1,5 +1,5 @@
/*
- * Elantech Touchpad driver (v6)
+ * Elantech Touchpad driver (v7)
*
* Copyright (C) 2007-2009 Arjan Opmeer <arjan@opmeer.net>
*
--
1.7.10.4
^ permalink raw reply related
* Re: [PATCH] Add: (1) Detection for newer Elantech touchpads, so that kernel doesn't fall-back to default PS/2 driver. (2) Enable hardware version 4 touchpad right click function.
From: Dmitry Torokhov @ 2013-12-09 6:32 UTC (permalink / raw)
To: Duson Lin; +Cc: linux-kernel, linux-input
In-Reply-To: <1386557990-27445-1-git-send-email-dusonlin@emc.com.tw>
Hi Duson.
On Mon, Dec 09, 2013 at 10:59:50AM +0800, Duson Lin wrote:
> Modify:
> (1) crc_enabled only support for v3 and v4 touchpad, so initialize crc_enabled as false first and
> check this hardware flag when hw_version as 3 or 4.
It looks to me there are several fixes rolled up together in this patch:
1. Support for the new hardware signatures (8 and 10, although I already
applied patch for 8)
2. Fix to handle CRC check
3. Changes to report BTN_RIGHT.
Could you please split them up please?
Also, I am not sure if we can simply start reporting BTN_RIGHT as
present, even on devices that don't actually have the right button, as
this will interfere with userspace providing emulation for multiple
buttons.
Is it possible to determine if a given model had right button or not?
Thanks.
>
> Signed-off-by: Duson Lin <dusonlin@emc.com.tw>
> ---
> drivers/input/mouse/elantech.c | 30 ++++++++++++++----------------
> drivers/input/mouse/elantech.h | 2 +-
> 2 files changed, 15 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
> index 8551dca..b3627cf 100644
> --- a/drivers/input/mouse/elantech.c
> +++ b/drivers/input/mouse/elantech.c
> @@ -1,5 +1,5 @@
> /*
> - * Elantech Touchpad driver (v6)
> + * Elantech Touchpad driver (v7)
> *
> * Copyright (C) 2007-2009 Arjan Opmeer <arjan@opmeer.net>
> *
> @@ -486,6 +486,7 @@ static void elantech_input_sync_v4(struct psmouse *psmouse)
> unsigned char *packet = psmouse->packet;
>
> input_report_key(dev, BTN_LEFT, packet[0] & 0x01);
> + input_report_key(dev, BTN_RIGHT, packet[0] & 0x02);
> input_mt_report_pointer_emulation(dev, true);
> input_sync(dev);
> }
> @@ -1047,9 +1048,7 @@ static int elantech_set_input_params(struct psmouse *psmouse)
> */
> psmouse_warn(psmouse, "couldn't query resolution data.\n");
> }
> - /* v4 is clickpad, with only one button. */
> __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit);
> - __clear_bit(BTN_RIGHT, dev->keybit);
> __set_bit(BTN_TOOL_QUADTAP, dev->keybit);
> /* For X to recognize me as touchpad. */
> input_set_abs_params(dev, ABS_X, x_min, x_max, 0, 0);
> @@ -1186,19 +1185,12 @@ static struct attribute_group elantech_attr_group = {
>
> static bool elantech_is_signature_valid(const unsigned char *param)
> {
> - static const unsigned char rates[] = { 200, 100, 80, 60, 40, 20, 10 };
> - int i;
> -
> if (param[0] == 0)
> return false;
>
> if (param[1] == 0)
> return true;
>
> - for (i = 0; i < ARRAY_SIZE(rates); i++)
> - if (param[2] == rates[i])
> - return false;
> -
> return true;
> }
>
> @@ -1298,6 +1290,14 @@ static int elantech_set_properties(struct elantech_data *etd)
> {
> /* This represents the version of IC body. */
> int ver = (etd->fw_version & 0x0f0000) >> 16;
> + /*
> + * The signatures of v3 and v4 packets change depending on the
> + * value of this hardware flag. But the v1 and v2 have not crc
> + * check mechanism and the same hardware flag are also defined
> + * as other function. So crc_enabled must be initialized as false
> + * first and checking by different hw_version.
> + */
> + etd->crc_enabled = false;
>
> /* Early version of Elan touchpads doesn't obey the rule. */
> if (etd->fw_version < 0x020030 || etd->fw_version == 0x020600)
> @@ -1309,10 +1309,14 @@ static int elantech_set_properties(struct elantech_data *etd)
> etd->hw_version = 2;
> break;
> case 5:
> + etd->crc_enabled = ((etd->fw_version & 0x4000) == 0x4000);
> etd->hw_version = 3;
> break;
> case 6:
> case 7:
> + case 8:
> + case 10:
> + etd->crc_enabled = ((etd->fw_version & 0x4000) == 0x4000);
> etd->hw_version = 4;
> break;
> default:
> @@ -1343,12 +1347,6 @@ static int elantech_set_properties(struct elantech_data *etd)
> etd->reports_pressure = true;
> }
>
> - /*
> - * The signatures of v3 and v4 packets change depending on the
> - * value of this hardware flag.
> - */
> - etd->crc_enabled = ((etd->fw_version & 0x4000) == 0x4000);
> -
> return 0;
> }
>
> diff --git a/drivers/input/mouse/elantech.h b/drivers/input/mouse/elantech.h
> index 036a04a..c963ac8 100644
> --- a/drivers/input/mouse/elantech.h
> +++ b/drivers/input/mouse/elantech.h
> @@ -1,5 +1,5 @@
> /*
> - * Elantech Touchpad driver (v6)
> + * Elantech Touchpad driver (v7)
> *
> * Copyright (C) 2007-2009 Arjan Opmeer <arjan@opmeer.net>
> *
> --
> 1.7.10.4
>
--
Dmitry
^ permalink raw reply
* Re: [PATCH] Input: samsung-keypad - favor platform data if present
From: Jingoo Han @ 2013-12-09 8:04 UTC (permalink / raw)
To: 'Dmitry Torokhov', linux-input
Cc: 'Sachin Kamat', 'Thomas Abraham',
'Joonyoung Shim', linux-kernel, 'Jingoo Han'
In-Reply-To: <20131206100215.GA27763@core.coreip.homeip.net>
On Friday, December 06, 2013 7:02 PM, Dmitry Torokhov wrote:
>
> We should be able to override firmware-provided parameters with in-kernel
> data, if needed. To that effect favor platform data, if present, over
> devicetree data.
>
> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
It looks good.
Reviewed-by: Jingoo Han <jg1.han@samsung.com>
Best regards,
Jingoo Han
> ---
> drivers/input/keyboard/samsung-keypad.c | 36 +++++++++++++++++++--------------
> 1 file changed, 21 insertions(+), 15 deletions(-)
^ permalink raw reply
* Re: ADXL34X orientation definition
From: Michael Hennerich @ 2013-12-09 8:11 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: linux-input@vger.kernel.org
In-Reply-To: <20131207095335.GA10573@core.coreip.homeip.net>
On 12/07/2013 10:53 AM, Dmitry Torokhov wrote:
> Hi Michael,
>
> I was going though Coverity reports and it looks like definition of
>
> #define ADXL346_2D_ORIENT(x) (((x) & 0x3) >> 4)
>
> is not correct as it will always evaluate to 0. Should the mask be 0x30
> instead?
>
> Thanks.
>
Hi Dmitry,
Good catch!
Yes, of course - the mask should be 0x30.
Shall I send a patch?
--
Greetings,
Michael
--
Analog Devices GmbH Wilhelm-Wagenfeld-Str. 6 80807 Muenchen
Sitz der Gesellschaft: Muenchen; Registergericht: Muenchen HRB 40368;
Geschaeftsfuehrer:Dr.Carsten Suckrow, Thomas Wessel, William A. Martin,
Margaret Seif
^ permalink raw reply
* Re: Sony DualShock4 - basic functions work, but looking to improve support
From: David Herrmann @ 2013-12-09 9:05 UTC (permalink / raw)
To: Simon Wood; +Cc: Linux Input, Antonio Ospite
In-Reply-To: <a26fde1f94cf430dd54a5045f82ac260.squirrel@mungewell.org>
Hi
On Mon, Dec 9, 2013 at 1:51 AM, <simon@mungewell.org> wrote:
> Following a very useful post on Reddit:
> http://np.reddit.com/r/PS4/comments/1p9y0l/pairing_your_ds4_controller_via_bluetooth/
>
> I was able to put the DS4 into discoverable mode, pair and connect using
> the 'hidd --connect 1C:66:6D:07:C3:E0' to get a working wireless/BT
> joystick.
>
> discoverable - hold 'PS' and 'Share' until light bar fast strobes.
> connected - light bar turns on constant.
> turn device off - hold 'PS' until light bar turns off.
>
> Not sure why, but under a bluetooth connection the 'hidraw0' device only
> outputs the first 10 bytes (compared to 64 bytes with USB connection)
> --
> $ hexdump -v -e '10/1 "%02x " "\n"' < /dev/hidraw0
> 01 7d 7e 82 7e 08 00 00 00 00
> 01 7d 7e 83 7e 08 00 00 00 00
> 01 7d 7e 81 7e 08 00 00 00 00
> 01 7d 7e 82 7e 08 00 00 00 00
> 01 7d 7e 80 7f 08 00 00 00 00
> --
>
> Attached are some bluetooth details for the device. No idea on how to get
> audio to/from the device - I was kind of hoping it would behave like a BT
> headset.
Regarding Bluetooth: hidd is deprecated. It should be all handled by
bluetoothd now. But once it's connected, HIDP is handled by the kernel
so this shouldn't be an issue here.
The SDP/hcitool information are pretty sparse so they won't help much.
All they tell is that the device uses HIDP (and a bit about BT
internals). No A2DP or alike. I guess sound is transmitted through the
HIDP channel (which is also what the wiimote does) and allows the same
transmission via USB and BT.
The report descriptor actually describes a lot more report-IDs than
just "0x01" which you describe in hidraw.txt. Are you sure the
report-descriptors are the same for USB and BT? 64bytes also seems
quite large for HID reports, I thought BT had a limit of 22 (but I'm
not sure). At least your report-descriptor says the biggest report is
63 bytes so that seems to be right for USB at least. You could turn on
BT debugging, the HIDP layer will then print size/content information
for incoming L2CAP skbs. This should help finding the culprit.
Thanks
David
^ permalink raw reply
* Re: ADXL34X orientation definition
From: Dmitry Torokhov @ 2013-12-09 11:18 UTC (permalink / raw)
To: michael.hennerich; +Cc: linux-input@vger.kernel.org
In-Reply-To: <52A57B3A.7030607@analog.com>
On Monday, December 09, 2013 09:11:38 AM Michael Hennerich wrote:
> On 12/07/2013 10:53 AM, Dmitry Torokhov wrote:
> > Hi Michael,
> >
> > I was going though Coverity reports and it looks like definition of
> >
> > #define ADXL346_2D_ORIENT(x) (((x) & 0x3) >> 4)
> >
> > is not correct as it will always evaluate to 0. Should the mask be 0x30
> > instead?
> >
> > Thanks.
>
> Hi Dmitry,
>
> Good catch!
>
> Yes, of course - the mask should be 0x30.
> Shall I send a patch?
That would be great.
--
Dmitry
^ permalink raw reply
* [PATCH] drivers/input/misc/adxl34x: Fix bug in definition of ADXL346_2D_ORIENT
From: michael.hennerich @ 2013-12-09 11:35 UTC (permalink / raw)
To: dmitry.torokhov; +Cc: linux-input, Michael Hennerich
From: Michael Hennerich <michael.hennerich@analog.com>
Coverity report pointet out by Dmitry
Reported-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
---
drivers/input/misc/adxl34x.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/input/misc/adxl34x.c b/drivers/input/misc/adxl34x.c
index 0735de3..1cb1da2 100644
--- a/drivers/input/misc/adxl34x.c
+++ b/drivers/input/misc/adxl34x.c
@@ -158,7 +158,7 @@
/* ORIENT ADXL346 only */
#define ADXL346_2D_VALID (1 << 6)
-#define ADXL346_2D_ORIENT(x) (((x) & 0x3) >> 4)
+#define ADXL346_2D_ORIENT(x) (((x) & 0x30) >> 4)
#define ADXL346_3D_VALID (1 << 3)
#define ADXL346_3D_ORIENT(x) ((x) & 0x7)
#define ADXL346_2D_PORTRAIT_POS 0 /* +X */
--
1.7.9.5
^ permalink raw reply related
* [PATCH] drivers/input/misc: new PC speaker sounds, clicks and notes
From: Karl Dahlke @ 2013-12-09 12:22 UTC (permalink / raw)
To: linux-input, linux-kernel
From: Karl Dahlke <eklhad@gmail.com>
The speaker driver can play a tone at a specified frequency,
or the standard control G bell,
which is a special case of TONE at 1000 hz 0.1 seconds.
This patch adds kd_mkpulse() to generate a soft click.
This is introduced to support accessibility modules and adapters in the future.
With this in place, a module can easily provide soft clicks,
i.e. audible feedback, whenever a key is depressed,
or when that keystroke is echoed on screen, whichever you prefer.
(Many people find the latter more valuable.)
This allows a blind user, for example, to have ongoing feedback while typing,
even if he is, at the same time, listening to text that is already on screen.
This is faster and more convenient than having characters echoed verbally.
And it works all the time, even if speech or braille is not working
for whatever reason. And there are many reasons those adapters could fail.
Misconfigured sound card, bad serial connection,
software synth not loading, etc.
Thus these forms of audio feedback are very important.
This should not be confused with the click function in certain specialized
keyboards such as lkkbd.c.
That function does a serio write to the client to activate clicks locally.
In contrast, this function generates a one-time pulse at the pc speaker,
or through a similar driver, so that modules can click whenever they want,
e.g. when a key is echoed back to you by a running application,
perhaps a thousand miles away over ssh, so you know all is well.
A module may want to click, or issue a series of clicks, for many reasons.
Another function introduced by this patch is kd_mknotes,
which plays a series of tones in the background.
You could do this yourself with kd_mksound and timers,
but why should everyone reinvent the wheel?
It is better to write the function once, properly, in the kernel,
and let modules use it thereafter.
Again, this is a means to an end.
Accessibility modules can generate rapid sequences of notes
to indicate various conditions, even error conditions,
especially if speech or braille is not working.
These notes may be the only feedback the user has to diagnose the problem.
Again, extremely valuable in a difficult situation.
This may be useful to other developers in other situations as well.
A third function kd_mksteps builds a chromatic scale,
from one frequency to another in steps.
This is a convenience on top of kd_mknotes.
The half-tone scale, with a step of 6%, starting at middle C, is approximately
kd_mksteps(260, 530, 6, 150);
Use a negative step for a descending scale.
Signed-off-by: Karl Dahlke <eklhad@gmail.com>
---
A few personal comments if I may.
I have tried for 15 years to get some of my work into the kernel,
without success.
That is partly understandable, because my early work was quite intrusive,
especially in 2.2 and 2.4,
and it was specifically one adapter, my adapter, and not a general approach.
So you were wise to say no.
But two years ago I redesigned everything,
so that almost all of my adapter runs in user space, and connects to the kernel
through a device driver.
The driver is not specific to my adapter, it supports any text based adapter
in any language (unicode).
It is a general approach, a much better design.
I asked, two years ago, if someone would help me usher these changes
into the 2.6 kernel, since Linux hacking is tremendously difficult,
even if you can see!
My ideas were well received, but the overall response was,
"This isn't a high priority for us."
That is a direct quote.
Needless to say this made me sad.
But not unexpected; accessibility has never been a priority
for Linux, or Microsoft, and Aple only gets half a nod for its VoiceOver.
There really are a lot of things vying for our atention, aren't there?
Well it's been two years and I thought I'd try again,
in the spirit of SubmittingPatches section 10, Don't Get Discouraged.
If this or subsequent patches cannot be applied as-is,
please work with me on this project,
don't just tell me to read chapter 17 of some 8,000 page manual.
I might really need some help from someone on the inside to make this fly.
It would be much appreciated.
Here is the first patch, enhancing sounds as described in the commit log above.
After this would come a supporting module, and then a device driver,
and that's it.
Well possibly one more patch for a notifier sleep function,
but I would have to discuss that one with you-all.
That one is a bit more complicated.
So this is the first step.
The code passes the style checker,
and has been exercised, in 3.12.3, by myself and others.
diff -uprN a/drivers/input/misc/pcspkr.c b/drivers/input/misc/pcspkr.c
--- a/drivers/input/misc/pcspkr.c 2013-12-08 19:02:31.000000000 -0500
+++ b/drivers/input/misc/pcspkr.c 2013-12-08 19:02:31.000000000 -0500
@@ -19,6 +19,8 @@
#include <linux/input.h>
#include <linux/platform_device.h>
#include <linux/timex.h>
+#include <linux/delay.h>
+
#include <asm/io.h>
MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
@@ -26,25 +28,26 @@ MODULE_DESCRIPTION("PC Speaker beeper dr
MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:pcspkr");
-static int pcspkr_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
+/* Toggle the speaker, but not if a tone is sounding */
+static void speaker_toggle(void)
{
- unsigned int count = 0;
+ char c;
unsigned long flags;
- if (type != EV_SND)
- return -1;
-
- switch (code) {
- case SND_BELL: if (value) value = 1000;
- case SND_TONE: break;
- default: return -1;
+ raw_spin_lock_irqsave(&i8253_lock, flags);
+ c = inb_p(0x61);
+ if ((c&3) != 3) {
+ c &= 0xfe;
+ c ^= 2; /* toggle */
+ outb(c, 0x61);
}
+ raw_spin_unlock_irqrestore(&i8253_lock, flags);
+}
- if (value > 20 && value < 32767)
- count = PIT_TICK_RATE / value;
-
+static void speaker_sing(unsigned int count)
+{
+ unsigned long flags;
raw_spin_lock_irqsave(&i8253_lock, flags);
-
if (count) {
/* set command for counter 2, 2 byte write */
outb_p(0xB6, 0x43);
@@ -57,8 +60,44 @@ static int pcspkr_event(struct input_dev
/* disable counter 2 */
outb(inb_p(0x61) & 0xFC, 0x61);
}
-
raw_spin_unlock_irqrestore(&i8253_lock, flags);
+}
+
+static int pcspkr_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
+{
+ unsigned int count;
+
+ if (type != EV_SND)
+ return -1;
+
+ switch (code) {
+ case SND_BELL:
+ if (value)
+ value = 1000;
+ /* fall through */
+
+ case SND_TONE:
+ count = 0;
+ if (value > 20 && value < 32767)
+ count = PIT_TICK_RATE / value;
+ speaker_sing(count);
+ break;
+
+ case SND_PULSE:
+ /* Don't hold the cpu for more than 1ms */
+ /* no reason for a pulse to ever be longer than that. */
+ if (value > 1000)
+ value = 1000;
+ /* if a pulse is too short it can't be heard anyways. */
+ if (value < 20)
+ break;
+ speaker_toggle();
+ udelay(value);
+ speaker_toggle();
+ break;
+
+ default: return -1;
+ }
return 0;
}
@@ -81,7 +120,8 @@ static int pcspkr_probe(struct platform_
pcspkr_dev->dev.parent = &dev->dev;
pcspkr_dev->evbit[0] = BIT_MASK(EV_SND);
- pcspkr_dev->sndbit[0] = BIT_MASK(SND_BELL) | BIT_MASK(SND_TONE);
+ pcspkr_dev->sndbit[0] = BIT_MASK(SND_BELL) | BIT_MASK(SND_TONE) |
+ BIT_MASK(SND_PULSE);
pcspkr_dev->event = pcspkr_event;
err = input_register_device(pcspkr_dev);
diff -uprN a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c
--- a/drivers/tty/vt/keyboard.c 2013-12-08 19:02:31.000000000 -0500
+++ b/drivers/tty/vt/keyboard.c 2013-12-08 19:02:31.000000000 -0500
@@ -261,6 +261,213 @@ void kd_mksound(unsigned int hz, unsigne
}
EXPORT_SYMBOL(kd_mksound);
+static int kd_pulse_helper(struct input_handle *handle, void *data)
+{
+ unsigned int *width = data;
+ struct input_dev *dev = handle->dev;
+
+ if (*width == 0)
+ return 0;
+
+ if (test_bit(EV_SND, dev->evbit)) {
+ if (test_bit(SND_PULSE, dev->sndbit)) {
+ input_inject_event(handle, EV_SND, SND_PULSE, *width);
+ return 0;
+ }
+ }
+
+ return 0;
+}
+
+/* the width of the pulse is in microseconds, must be between 20 and 1000 */
+void kd_mkpulse(unsigned int width)
+{
+ input_handler_for_each_handle(&kbd_handler, &width, kd_pulse_helper);
+}
+EXPORT_SYMBOL(kd_mkpulse);
+
+/*
+ * Push notes onto a sound fifo and play them via an asynchronous thread.
+ * kd_mksound is a single tone, but kd_mknotes is a series of notes.
+ * this is used primarily by the accessibility modules, to sound
+ * various alerts and conditions for blind users.
+ * This is particularly helpful when the adapter is not working,
+ * for whatever reason. These functions are central to the kernel,
+ * and do not depend on sound cards, loadable modules, etc.
+ * These notes can also alert a system administrator to conditions
+ * that warrant immediate attention.
+ * Each note is specified by 2 shorts. The first is the frequency in hurtz,
+ * and the second is the duration in hundredths of a second.
+ * A frequency of -1 is a rest.
+ * A frequency of 0 ends the list of notes.
+ */
+
+#define SF_LEN 64 /* length of sound fifo */
+static short sf_fifo[SF_LEN];
+static int sf_head, sf_tail;
+static DEFINE_RAW_SPINLOCK(soundfifo_lock);
+
+/* Pop the next sound out of the sound fifo. */
+static void pop_soundfifo(unsigned long);
+static DEFINE_TIMER(kd_mknotes_timer, pop_soundfifo, 0, 0);
+static void pop_soundfifo(unsigned long notUsed)
+{
+ unsigned long flags;
+ int freq, duration;
+ int i;
+ long jifpause;
+
+ raw_spin_lock_irqsave(&soundfifo_lock, flags);
+
+ i = sf_tail;
+ if (i == sf_head) {
+ freq = 0;
+ duration = 0;
+ } else {
+ freq = sf_fifo[i];
+ duration = sf_fifo[i + 1];
+ i += 2;
+ if (i == SF_LEN)
+ i = 0;
+ sf_tail = i;
+ }
+
+ raw_spin_unlock_irqrestore(&soundfifo_lock, flags);
+
+ if (freq == 0) {
+ /* turn off singing speaker */
+ kd_nosound(0);
+ return;
+ }
+
+ jifpause = msecs_to_jiffies(duration);
+ /* not sure of the rounding, if duration < HZ */
+ if (jifpause == 0)
+ jifpause = 1;
+ mod_timer(&kd_mknotes_timer, jiffies + jifpause);
+
+ if (freq < 0) {
+ /* This is a rest between notes */
+ kd_nosound(0);
+ } else {
+ input_handler_for_each_handle(&kbd_handler, &freq,
+ kd_sound_helper);
+ }
+}
+
+/* Push a string of notes into the sound fifo. */
+void kd_mknotes(const short *p)
+{
+ int i;
+ bool wake = false;
+ unsigned long flags;
+
+ if (*p == 0)
+ return; /* empty list */
+
+ raw_spin_lock_irqsave(&soundfifo_lock, flags);
+
+ i = sf_head;
+ if (i == sf_tail)
+ wake = true;
+
+ /* Copy shorts into the fifo, until the terminating zero. */
+ while (*p) {
+ sf_fifo[i++] = *p++;
+ sf_fifo[i++] = (*p++) * 10;
+ if (i == SF_LEN)
+ i = 0; /* wrap around */
+ if (i == sf_tail) {
+ /* fifo is full */
+ goto done;
+ }
+ sf_head = i;
+ }
+
+ /* try to add on a rest, to carry the last note through */
+ sf_fifo[i++] = -1;
+ sf_fifo[i++] = 10;
+ if (i == SF_LEN)
+ i = 0; /* wrap around */
+ if (i != sf_tail)
+ sf_head = i;
+
+done:
+ raw_spin_unlock_irqrestore(&soundfifo_lock, flags);
+
+ /* first sound, get things started. */
+ if (wake)
+ pop_soundfifo(0);
+}
+EXPORT_SYMBOL(kd_mknotes);
+
+/* Push an ascending or descending sequence of notes into the sound fifo.
+ * Step is a geometric factor on frequency, increase by x percent.
+ * 100% goes up by octaves, -50% goes down by octaves.
+ * 12% is a wholetone scale, while 6% is a chromatic scale.
+ * Duration is in milliseconds, for very fast frequency sweeps. But this
+ * is based on jiffies timing, so is subject to the resolution of HZ. */
+void kd_mksteps(int f1, int f2, int step, int duration)
+{
+ int i;
+ bool wake = false;
+ unsigned long flags;
+
+ /* are the parameters in range? */
+ if (step != (char)step)
+ return;
+ if (duration <= 0 || duration > 2000)
+ return;
+ if (f1 < 50 || f1 > 8000)
+ return;
+ if (f2 < 50 || f2 > 8000)
+ return;
+
+ /* avoid infinite loops */
+ if (step == 0 ||
+ (f1 < f2 && step < 0) ||
+ (f1 > f2 && step > 0))
+ return;
+
+ raw_spin_lock_irqsave(&soundfifo_lock, flags);
+
+ i = sf_head;
+ if (i == sf_tail)
+ wake = true;
+
+ /* Copy shorts into the fifo, until start reaches end */
+ while ((step > 0 && f1 < f2) || (step < 0 && f1 > f2)) {
+ sf_fifo[i++] = f1;
+ sf_fifo[i++] = duration;
+ if (i == SF_LEN)
+ i = 0; /* wrap around */
+ if (i == sf_tail) {
+ /* fifo is full */
+ goto done;
+ }
+ sf_head = i;
+ f1 = f1 * (100+step) / 100;
+ if (f1 < 50 || f1 > 8000)
+ break;
+ }
+
+ /* try to add on a rest, to carry the last note through */
+ sf_fifo[i++] = -1;
+ sf_fifo[i++] = 10;
+ if (i == SF_LEN)
+ i = 0; /* wrap around */
+ if (i != sf_tail)
+ sf_head = i;
+
+done:
+ raw_spin_unlock_irqrestore(&soundfifo_lock, flags);
+
+ /* first sound, get things started. */
+ if (wake)
+ pop_soundfifo(0);
+}
+EXPORT_SYMBOL(kd_mksteps);
+
/*
* Setting the keyboard rate.
*/
diff -uprN a/include/linux/vt_kern.h b/include/linux/vt_kern.h
--- a/include/linux/vt_kern.h 2013-12-08 19:02:31.000000000 -0500
+++ b/include/linux/vt_kern.h 2013-12-08 19:02:31.000000000 -0500
@@ -28,6 +28,9 @@
#endif
extern void kd_mksound(unsigned int hz, unsigned int ticks);
+extern void kd_mkpulse(unsigned int width);
+extern void kd_mknotes(const short *p);
+extern void kd_mksteps(int freq1, int freq2, int step, int duration);
extern int kbd_rate(struct kbd_repeat *rep);
extern int fg_console, last_console, want_console;
diff -uprN a/include/uapi/linux/input.h b/include/uapi/linux/input.h
--- a/include/uapi/linux/input.h 2013-12-08 19:02:31.000000000 -0500
+++ b/include/uapi/linux/input.h 2013-12-08 19:02:31.000000000 -0500
@@ -906,6 +906,7 @@ struct input_keymap_entry {
#define SND_CLICK 0x00
#define SND_BELL 0x01
#define SND_TONE 0x02
+#define SND_PULSE 0x03
#define SND_MAX 0x07
#define SND_CNT (SND_MAX+1)
^ permalink raw reply
* [PATCH 1/2] elantech: Properly differentiate between clickpads and normal touchpads
From: Hans de Goede @ 2013-12-09 14:32 UTC (permalink / raw)
To: linux-input; +Cc: Peter Hutterer, Hans de Goede
The current assumption in the elantech driver that hw version 3 touchpads are
never clickpads and hw version 4 touchpads are always clickpads is wrong.
There are several bug reports for this, ie:
https://bugzilla.redhat.com/show_bug.cgi?id=1030802
http://superuser.com/questions/619582/right-elantech-touchpad-button-not-working-in-linux
I've spend a couple of hours wading through various bugzillas,
launchpads and forum posts to create a list of fw-versions and capabilities
for different laptop models to find a good method to differentiate between
clickpads and versions with separate hardware buttons.
Which shows that a device being a clickpad is reliable indicated by bit 12
being set in the fw_version. I've included the gathered list inside the driver,
so that we've this info at hand if we need to revisit this later.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
drivers/input/mouse/elantech.c | 43 +++++++++++++++++++++++++++++++++++++++---
1 file changed, 40 insertions(+), 3 deletions(-)
diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
index 8551dca..f7baa32 100644
--- a/drivers/input/mouse/elantech.c
+++ b/drivers/input/mouse/elantech.c
@@ -486,6 +486,7 @@ static void elantech_input_sync_v4(struct psmouse *psmouse)
unsigned char *packet = psmouse->packet;
input_report_key(dev, BTN_LEFT, packet[0] & 0x01);
+ input_report_key(dev, BTN_RIGHT, packet[0] & 0x02);
input_mt_report_pointer_emulation(dev, true);
input_sync(dev);
}
@@ -984,6 +985,42 @@ static int elantech_get_resolution_v4(struct psmouse *psmouse,
}
/*
+ * Advertise INPUT_PROP_BUTTONPAD for clickpads. The testing of bit 12 in
+ * fw_version for this is based on the following fw_version & caps table:
+ *
+ * Laptop-model: fw_version: caps: buttons:
+ * Acer S3 0x461f00 10, 13, 0e clickpad
+ * Acer S7-392 0x581f01 50, 17, 0d clickpad
+ * Acer V5-131 0x461f02 01, 16, 0c clickpad
+ * Acer V5-551 0x461f00 ? clickpad
+ * Asus K53SV 0x450f01 78, 15, 0c 2 hw buttons
+ * Asus G46VW 0x460f02 00, 18, 0c 2 hw buttons
+ * Asus G750JX 0x360f00 00, 16, 0c 2 hw buttons
+ * Asus UX31 0x361f00 20, 15, 0e clickpad
+ * Asus UX32VD 0x361f02 00, 15, 0e clickpad
+ * Avatar AVIU-145A2 0x361f00 ? clickpad
+ * Gigabyte U2442 0x450f01 58, 17, 0c 2 hw buttons
+ * Lenovo L430 0x350f02 b9, 15, 0c 2 hw buttons (*)
+ * Samsung NF210 0x150b00 78, 14, 0a 2 hw buttons
+ * Samsung NP770Z5E 0x575f01 10, 15, 0f clickpad
+ * Samsung NP700Z5B 0x361f06 21, 15, 0f clickpad
+ * Samsung NP900X3E-A02 0x575f03 ? clickpad
+ * Samsung NP-QX410 0x851b00 19, 14, 0c clickpad
+ * Samsung RC512 0x450f00 08, 15, 0c 2 hw buttons
+ * Samsung RF710 0x450f00 ? 2 hw buttons
+ * System76 Pangolin 0x250f01 ? 2 hw buttons
+ * (*) + 3 trackpoint buttons
+ */
+static void elantech_set_buttonpad_prop(struct psmouse *psmouse)
+{
+ struct input_dev *dev = psmouse->dev;
+ struct elantech_data *etd = psmouse->private;
+
+ if (etd->fw_version & 0x001000)
+ __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit);
+}
+
+/*
* Set the appropriate event bits for the input subsystem
*/
static int elantech_set_input_params(struct psmouse *psmouse)
@@ -1026,6 +1063,8 @@ static int elantech_set_input_params(struct psmouse *psmouse)
__set_bit(INPUT_PROP_SEMI_MT, dev->propbit);
/* fall through */
case 3:
+ if (etd->hw_version == 3)
+ elantech_set_buttonpad_prop(psmouse);
input_set_abs_params(dev, ABS_X, x_min, x_max, 0, 0);
input_set_abs_params(dev, ABS_Y, y_min, y_max, 0, 0);
if (etd->reports_pressure) {
@@ -1047,9 +1086,7 @@ static int elantech_set_input_params(struct psmouse *psmouse)
*/
psmouse_warn(psmouse, "couldn't query resolution data.\n");
}
- /* v4 is clickpad, with only one button. */
- __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit);
- __clear_bit(BTN_RIGHT, dev->keybit);
+ elantech_set_buttonpad_prop(psmouse);
__set_bit(BTN_TOOL_QUADTAP, dev->keybit);
/* For X to recognize me as touchpad. */
input_set_abs_params(dev, ABS_X, x_min, x_max, 0, 0);
--
1.8.4.2
^ permalink raw reply related
* [PATCH 2/2] elantech: Add support for IC-body version 8
From: Hans de Goede @ 2013-12-09 14:32 UTC (permalink / raw)
To: linux-input; +Cc: Peter Hutterer, Hans de Goede
In-Reply-To: <1386599551-2339-1-git-send-email-hdegoede@redhat.com>
Acording to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1232877
a patch for this has been send before, but I don't see this in 3.13-rc3,
so here is another one.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
drivers/input/mouse/elantech.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
index f7baa32..fc72446 100644
--- a/drivers/input/mouse/elantech.c
+++ b/drivers/input/mouse/elantech.c
@@ -1350,6 +1350,7 @@ static int elantech_set_properties(struct elantech_data *etd)
break;
case 6:
case 7:
+ case 8:
etd->hw_version = 4;
break;
default:
--
1.8.4.2
^ permalink raw reply related
* Re: [PATCH v1] HID: hid-sensor-hub: Fix kernel warning and failure
From: Jiri Kosina @ 2013-12-09 14:46 UTC (permalink / raw)
To: Srinivas Pandruvada; +Cc: linux-input
In-Reply-To: <1386290065-31813-2-git-send-email-srinivas.pandruvada@linux.intel.com>
On Thu, 5 Dec 2013, Srinivas Pandruvada wrote:
> Fix kernel warning and failure to register sensor hub devices with MFD.
> Now many devices has in-built sensor hubs. So by default this HID hub,
> is properly parsed and register individual sensors as platform device
> using MFD framework. But if a second sensor hub is attached via USB,
> which has same sensors, it will result in kernel warning and failure
> to register MFD cell as the platform device sysfs file name will be
> same as created by in-built sensor hubs. This patch sets MFD cell id
> to PLATFORM_DEVID_AUTO. In this way there will never
> be duplicate sysfs file names.
>
> Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Applied, thanks Srinivas.
--
Jiri Kosina
SUSE Labs
^ permalink raw reply
* Re: [PATCH 2/2] Documentation: dt: Document TSC2005 DT binding
From: Tony Lindgren @ 2013-12-09 17:46 UTC (permalink / raw)
To: Sebastian Reichel
Cc: Sebastian Reichel, Dmitry Torokhov, Dmitry Torokhov, linux-input,
Rob Herring, Pawel Moll, Mark Rutland, Stephen Warren,
Ian Campbell, Rob Landley, Grant Likely, devicetree, linux-omap,
linux-kernel
In-Reply-To: <1386284979-9680-3-git-send-email-sre@debian.org>
* Sebastian Reichel <sre@debian.org> [131205 15:11]:
> Add devicetree binding documentation for TSC2005 touchscreen.
>
> Signed-off-by: Sebastian Reichel <sre@debian.org>
> ---
> .../bindings/input/touchscreen/tsc2005.txt | 49 ++++++++++++++++++++++
> 1 file changed, 49 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt
>
> diff --git a/Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt b/Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt
> new file mode 100644
> index 0000000..4e7df0b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt
> @@ -0,0 +1,49 @@
> +* TSC2005 Touchscreen
> +
> +Required properties:
> + - compatible : "ti,tsc2005"
> + - reg : SPI device address
> + - spi-max-frequency : Maximal SPI speed
> + - interrupts : IRQ specifier
> + - reset-gpio : GPIO specifier
> +
> +Optional properties:
> + - ti,fuzz-x : integer, X noise value of the touchscreen
> + (defaults to 4)
> + - ti,fuzz-y : integer, Y noise value of the touchscreen
> + (defaults to 8)
> + - ti,fuzz-pressure : integer, pressure noise value of the touchscreen
> + (defaults to 2)
> + - ti,max-x : integer, maximum reported x value
> + (defaults to 4096)
> + - ti,max-y : integer, maximum reported y value
> + (defaults to 4096)
> + - ti,max-pressure : integer, maximum reported pressure
> + (defaults to 4096)
> + - ti,x-plate-resistance : integer, resistance of the touchscreen's X plates
> + in ohm (defaults to 280)
> + - ti,esd-recovery-timeout-ms : integer, if the touchscreen does not respond after
> + the configured time (in milli seconds), the driver
> + will reset it. This is disabled by default.
Instead of adding these optional ti,* properties you can set them in the
driver directly in the of_match table based on the compatible flag. Then
you can pass compatible flag like ti,tsc2005-nokia-n900, or the name of
the LCD panel. Most likely these depend on the LCD panel selected.
Regards,
Tony
> +Example:
> +
> +&mcspi1 {
> + tsc2005@0 {
> + compatible = "ti,tsc2005";
> + spi-max-frequency = <6000000>;
> + reg = <0>;
> + reset-gpio = <&gpio4 8 GPIO_ACTIVE_HIGH>; /* 104 */
> + interrupt-parent = <&gpio4>;
> + interrupts = <4 IRQ_TYPE_NONE>; /* gpio line 100 */
> +
> + ti,fuzz-x = <4>;
> + ti,fuzz-y = <7>;
> + ti,fuzz-pressure = <2>;
> + ti,max-x = <4096>;
> + ti,max-y = <4096>;
> + ti,max-pressure = <2048>;
> + ti,x-plate-resistance = <280>;
> + ti,esd-recovery-timeout-ms = <8000>;
> + };
> +}
> --
> 1.8.4.3
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" 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 2/2] elantech: Add support for IC-body version 8
From: Benjamin Tissoires @ 2013-12-09 17:50 UTC (permalink / raw)
To: Hans de Goede; +Cc: linux-input, Peter Hutterer
In-Reply-To: <1386599551-2339-2-git-send-email-hdegoede@redhat.com>
On Mon, Dec 9, 2013 at 9:32 AM, Hans de Goede <hdegoede@redhat.com> wrote:
> Acording to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1232877
> a patch for this has been send before, but I don't see this in 3.13-rc3,
> so here is another one.
>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
>
Hey Hans,
good to see you on linux-input :)
anyway, Dmitry already took this patch in his tree:
https://git.kernel.org/cgit/linux/kernel/git/dtor/input.git/commit/?h=for-linus&id=9cb80b965eaf7af1369f6e16f48a05fbaaccc021
And this patch is part of the pull request for 3.13-rc3 (so should be in rc4).
Cheers,
Benjamin
^ permalink raw reply
* Re: [PATCH 1/2] elantech: Properly differentiate between clickpads and normal touchpads
From: Benjamin Tissoires @ 2013-12-09 18:02 UTC (permalink / raw)
To: Hans de Goede; +Cc: linux-input, Peter Hutterer, Duson Lin, Dmitry Torokhov
In-Reply-To: <1386599551-2339-1-git-send-email-hdegoede@redhat.com>
Hi Hans,
adding in CC Duson, who seems to be working on the same driver
currently, and Dmitry, the input maintainer.
On Mon, Dec 9, 2013 at 9:32 AM, Hans de Goede <hdegoede@redhat.com> wrote:
> The current assumption in the elantech driver that hw version 3 touchpads are
> never clickpads and hw version 4 touchpads are always clickpads is wrong.
>
> There are several bug reports for this, ie:
> https://bugzilla.redhat.com/show_bug.cgi?id=1030802
> http://superuser.com/questions/619582/right-elantech-touchpad-button-not-working-in-linux
>
> I've spend a couple of hours wading through various bugzillas,
> launchpads and forum posts to create a list of fw-versions and capabilities
> for different laptop models to find a good method to differentiate between
> clickpads and versions with separate hardware buttons.
>
> Which shows that a device being a clickpad is reliable indicated by bit 12
> being set in the fw_version. I've included the gathered list inside the driver,
> so that we've this info at hand if we need to revisit this later.
Duson, can you confirm this? It's not that I don't trust Hans, but if
we could have the hardware maker validating this part, this would be
great.
>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
> drivers/input/mouse/elantech.c | 43 +++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 40 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
> index 8551dca..f7baa32 100644
> --- a/drivers/input/mouse/elantech.c
> +++ b/drivers/input/mouse/elantech.c
> @@ -486,6 +486,7 @@ static void elantech_input_sync_v4(struct psmouse *psmouse)
> unsigned char *packet = psmouse->packet;
>
> input_report_key(dev, BTN_LEFT, packet[0] & 0x01);
> + input_report_key(dev, BTN_RIGHT, packet[0] & 0x02);
> input_mt_report_pointer_emulation(dev, true);
> input_sync(dev);
> }
> @@ -984,6 +985,42 @@ static int elantech_get_resolution_v4(struct psmouse *psmouse,
> }
>
> /*
> + * Advertise INPUT_PROP_BUTTONPAD for clickpads. The testing of bit 12 in
> + * fw_version for this is based on the following fw_version & caps table:
> + *
> + * Laptop-model: fw_version: caps: buttons:
> + * Acer S3 0x461f00 10, 13, 0e clickpad
> + * Acer S7-392 0x581f01 50, 17, 0d clickpad
> + * Acer V5-131 0x461f02 01, 16, 0c clickpad
> + * Acer V5-551 0x461f00 ? clickpad
> + * Asus K53SV 0x450f01 78, 15, 0c 2 hw buttons
> + * Asus G46VW 0x460f02 00, 18, 0c 2 hw buttons
> + * Asus G750JX 0x360f00 00, 16, 0c 2 hw buttons
> + * Asus UX31 0x361f00 20, 15, 0e clickpad
> + * Asus UX32VD 0x361f02 00, 15, 0e clickpad
> + * Avatar AVIU-145A2 0x361f00 ? clickpad
> + * Gigabyte U2442 0x450f01 58, 17, 0c 2 hw buttons
> + * Lenovo L430 0x350f02 b9, 15, 0c 2 hw buttons (*)
> + * Samsung NF210 0x150b00 78, 14, 0a 2 hw buttons
> + * Samsung NP770Z5E 0x575f01 10, 15, 0f clickpad
> + * Samsung NP700Z5B 0x361f06 21, 15, 0f clickpad
> + * Samsung NP900X3E-A02 0x575f03 ? clickpad
> + * Samsung NP-QX410 0x851b00 19, 14, 0c clickpad
> + * Samsung RC512 0x450f00 08, 15, 0c 2 hw buttons
> + * Samsung RF710 0x450f00 ? 2 hw buttons
> + * System76 Pangolin 0x250f01 ? 2 hw buttons
> + * (*) + 3 trackpoint buttons
> + */
> +static void elantech_set_buttonpad_prop(struct psmouse *psmouse)
> +{
> + struct input_dev *dev = psmouse->dev;
> + struct elantech_data *etd = psmouse->private;
> +
> + if (etd->fw_version & 0x001000)
> + __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit);
Small question here: if the touchpad is a clickpad, should'nt we also
remove the BTN_RIGHT bit too?
Cheers,
Benjamin
> +}
> +
> +/*
> * Set the appropriate event bits for the input subsystem
> */
> static int elantech_set_input_params(struct psmouse *psmouse)
> @@ -1026,6 +1063,8 @@ static int elantech_set_input_params(struct psmouse *psmouse)
> __set_bit(INPUT_PROP_SEMI_MT, dev->propbit);
> /* fall through */
> case 3:
> + if (etd->hw_version == 3)
> + elantech_set_buttonpad_prop(psmouse);
> input_set_abs_params(dev, ABS_X, x_min, x_max, 0, 0);
> input_set_abs_params(dev, ABS_Y, y_min, y_max, 0, 0);
> if (etd->reports_pressure) {
> @@ -1047,9 +1086,7 @@ static int elantech_set_input_params(struct psmouse *psmouse)
> */
> psmouse_warn(psmouse, "couldn't query resolution data.\n");
> }
> - /* v4 is clickpad, with only one button. */
> - __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit);
> - __clear_bit(BTN_RIGHT, dev->keybit);
> + elantech_set_buttonpad_prop(psmouse);
> __set_bit(BTN_TOOL_QUADTAP, dev->keybit);
> /* For X to recognize me as touchpad. */
> input_set_abs_params(dev, ABS_X, x_min, x_max, 0, 0);
> --
> 1.8.4.2
>
> --
> 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 2/2] Documentation: dt: Document TSC2005 DT binding
From: Sebastian Reichel @ 2013-12-09 18:24 UTC (permalink / raw)
To: Tony Lindgren
Cc: Dmitry Torokhov, Dmitry Torokhov, linux-input, Rob Herring,
Pawel Moll, Mark Rutland, Stephen Warren, Ian Campbell,
Rob Landley, Grant Likely, devicetree, linux-omap, linux-kernel
In-Reply-To: <20131209174638.GC12527@atomide.com>
[-- Attachment #1: Type: text/plain, Size: 1501 bytes --]
On Mon, Dec 09, 2013 at 09:46:38AM -0800, Tony Lindgren wrote:
> > +Optional properties:
> > + - ti,fuzz-x : integer, X noise value of the touchscreen
> > + (defaults to 4)
> > + - ti,fuzz-y : integer, Y noise value of the touchscreen
> > + (defaults to 8)
> > + - ti,fuzz-pressure : integer, pressure noise value of the touchscreen
> > + (defaults to 2)
> > + - ti,max-x : integer, maximum reported x value
> > + (defaults to 4096)
> > + - ti,max-y : integer, maximum reported y value
> > + (defaults to 4096)
> > + - ti,max-pressure : integer, maximum reported pressure
> > + (defaults to 4096)
> > + - ti,x-plate-resistance : integer, resistance of the touchscreen's X plates
> > + in ohm (defaults to 280)
> > + - ti,esd-recovery-timeout-ms : integer, if the touchscreen does not respond after
> > + the configured time (in milli seconds), the driver
> > + will reset it. This is disabled by default.
>
> Instead of adding these optional ti,* properties you can set them in the
> driver directly in the of_match table based on the compatible flag. Then
> you can pass compatible flag like ti,tsc2005-nokia-n900, or the name of
> the LCD panel. Most likely these depend on the LCD panel selected.
I could certainly do this, but it would move the board specific data
from the boardcode into the driver. That looks contra-productive to
me. Is there a good reason to do it this way?
-- Sebastian
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox