* [PATCH] Input: evdev: Fall back to vmalloc for client event buffer
From: Daniel Stone @ 2013-10-07 13:06 UTC (permalink / raw)
To: linux-input; +Cc: Henrik Rydberg
evdev always tries to allocate the event buffer for clients using
kzalloc rather than vmalloc, presumably to avoid mapping overhead where
possible. However, drivers like bcm5974, which claims support for
reporting 16 fingers simultaneously, can have an extraordinarily large
buffer. The resultant contiguous order-4 allocation attempt fails due
to fragmentation, and the device is thus unusable until reboot.
Try kzalloc if we can to avoid the mapping overhead, but if that fails,
fall back to vzalloc.
Signed-off-by: Daniel Stone <daniels@collabora.com>
---
drivers/input/evdev.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
index f0f8928..edfca4a 100644
--- a/drivers/input/evdev.c
+++ b/drivers/input/evdev.c
@@ -18,6 +18,7 @@
#include <linux/poll.h>
#include <linux/sched.h>
#include <linux/slab.h>
+#include <linux/mm.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/input/mt.h>
@@ -289,7 +290,11 @@ static int evdev_release(struct inode *inode, struct file *file)
mutex_unlock(&evdev->mutex);
evdev_detach_client(evdev, client);
- kfree(client);
+
+ if (is_vmalloc_addr(client))
+ vfree(client);
+ else
+ kfree(client);
evdev_close_device(evdev);
@@ -311,10 +316,12 @@ static int evdev_open(struct inode *inode, struct file *file)
unsigned int bufsize = evdev_compute_buffer_size(evdev->handle.dev);
struct evdev_client *client;
int error;
+ int size =
+ sizeof(struct evdev_client) + bufsize * sizeof(struct input_event);
- client = kzalloc(sizeof(struct evdev_client) +
- bufsize * sizeof(struct input_event),
- GFP_KERNEL);
+ client = kzalloc(size, GFP_KERNEL | __GFP_NOWARN);
+ if (!client)
+ client = vzalloc(size);
if (!client)
return -ENOMEM;
--
1.8.3.1
^ permalink raw reply related
* Re: Testing ti_am335x_adc continuous mode (WAS: Re: [PATCH 2/2]
From: Zubair Lutfullah : @ 2013-10-07 12:50 UTC (permalink / raw)
To: Sebastian Andrzej Siewior
Cc: Zubair Lutfullah, jic23, dmitry.torokhov, linux-iio, linux-input,
linux-kernel, gregkh, Felipe Balbi
In-Reply-To: <20131007115317.GA6135@linutronix.de>
On Mon, Oct 07, 2013 at 01:53:17PM +0200, Sebastian Andrzej Siewior wrote:
> Hi Zubair,
>
> I have here am335x-evm board. The output of voltage4 (via `cat
> /sys/bus/iio/devices/iio\:device0/in_voltage4_raw´) returns values in
> the range 570…580. I tested the continuous sampling mdoe by executing
> the following commands:
>
> |echo 1 > /sys/bus/iio/devices/iio\:device0/scan_elements/in_voltage4_en
> |echo 25 > /sys/bus/iio/devices/iio\:device0/buffer/length
> |echo 1 > /sys/bus/iio/devices/iio\:device0/buffer/enable
> |sleep 1
> |echo 0 > /sys/bus/iio/devices/iio\:device0/buffer/enable
> |cat /dev/iio\:device0 > iio
> |hexdump -C iio
>
> and the output is:
> |00000000 37 02 92 02 1f 07 0a 06 20 06 31 06 2f 07 2a 07
> |00000010 2b 07 2d 07 2c 07 28 07 2c 07 2b 07 2b 07 0c 06
> |00000020 21 06 32 06 2e 07 2c 07 2a 07 2a 07 2c 07 2b 07
> |00000030 29 07 27 07 28 07 29 07 2a 07 0d 06 21 06 35 06
>
> The first entry is in the range that I would expect. The second is
> slitghly higher. The third and following entries are out of range. Have
> you observed something like that? Is my testing close to what you have
> done or did I make an mistake here?
I can't read the hex dump easily..
Keep in mind that the driver now uses 16 bit storage.
Also, I used generic_buffer.c after removing the trigger checks.
The driver would report stable values for 1.8V on one channel and gnd
on another channel.
Hope this helps
ZubairLK
>
> Sebastian
--
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
* Testing ti_am335x_adc continuous mode (WAS: Re: [PATCH 2/2]
From: Sebastian Andrzej Siewior @ 2013-10-07 11:53 UTC (permalink / raw)
To: Zubair Lutfullah
Cc: jic23-KWPb1pKIrIJaa/9Udqfwiw,
dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w,
linux-iio-u79uwXL29TY76Z2rM5mHXA,
linux-input-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r, Felipe Balbi
In-Reply-To: <1379503383-17086-3-git-send-email-zubair.lutfullah-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Hi Zubair,
I have here am335x-evm board. The output of voltage4 (via `cat
/sys/bus/iio/devices/iio\:device0/in_voltage4_raw´) returns values in
the range 570…580. I tested the continuous sampling mdoe by executing
the following commands:
|echo 1 > /sys/bus/iio/devices/iio\:device0/scan_elements/in_voltage4_en
|echo 25 > /sys/bus/iio/devices/iio\:device0/buffer/length
|echo 1 > /sys/bus/iio/devices/iio\:device0/buffer/enable
|sleep 1
|echo 0 > /sys/bus/iio/devices/iio\:device0/buffer/enable
|cat /dev/iio\:device0 > iio
|hexdump -C iio
and the output is:
|00000000 37 02 92 02 1f 07 0a 06 20 06 31 06 2f 07 2a 07
|00000010 2b 07 2d 07 2c 07 28 07 2c 07 2b 07 2b 07 0c 06
|00000020 21 06 32 06 2e 07 2c 07 2a 07 2a 07 2c 07 2b 07
|00000030 29 07 27 07 28 07 29 07 2a 07 0d 06 21 06 35 06
The first entry is in the range that I would expect. The second is
slitghly higher. The third and following entries are out of range. Have
you observed something like that? Is my testing close to what you have
done or did I make an mistake here?
Sebastian
^ permalink raw reply
* Re: [PATCH v2] Input: add driver for Neonode zForce based touchscreens
From: Heiko Stübner @ 2013-10-07 11:17 UTC (permalink / raw)
To: Dmitry Torokhov, Henrik Rydberg; +Cc: linux-kernel, linux-input
In-Reply-To: <201309231550.27313.heiko@sntech.de>
Hi,
Am Montag, 23. September 2013, 15:50:26 schrieb Heiko Stübner:
> Am Samstag, 7. September 2013, 01:33:11 schrieb Heiko Stübner:
> > This adds a driver for touchscreens using the zforce infrared
> > technology from Neonode connected via i2c to the host system.
> >
> > It supports multitouch with up to two fingers and tracking of the
> > contacts in hardware.
> >
> > Signed-off-by: Heiko Stuebner <heiko@sntech.de>
> > ---
> > changes since v1:
> > - address comments from Dmitry Torokhov
> >
> > but I kept the access_mutex due to the possible race I described in the
> >
> > mail:
> > - touch -> interrupt
> > - isr reads first packet
> > - user closes device -> stop command sent
> > - isr reads payload
> >
> > - address comments from Henrik Rydberg, letting the input system collect
> >
> > singletouch from the multitouch data using the appropriate functions
>
> ping?
>
is the driver ok in this form or is more work needed?
Thanks
Heiko
--
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: [RFC] Input: introduce ABS_MAX2/CNT2 and friends
From: David Herrmann @ 2013-10-07 10:58 UTC (permalink / raw)
To: Peter Hutterer
Cc: Dmitry Torokhov, open list:HID CORE LAYER, Henrik Rydberg,
Benjamin Tissoires, Jiri Kosina, linux-kernel
In-Reply-To: <20131007013058.GA20549@yabbi.redhat.com>
Hi
On Mon, Oct 7, 2013 at 3:30 AM, Peter Hutterer <peter.hutterer@who-t.net> wrote:
> On Sun, Oct 06, 2013 at 05:04:36PM -0700, Dmitry Torokhov wrote:
>> Peter Hutterer <peter.hutterer@who-t.net> wrote:
>> >On Sun, Oct 06, 2013 at 12:47:00AM -0700, Dmitry Torokhov wrote:
>> >> On Fri, Oct 04, 2013 at 09:32:23AM +1000, Peter Hutterer wrote:
>> >> > On Thu, Oct 03, 2013 at 12:10:36AM +0200, David Herrmann wrote:
>> >> > > As we painfully noticed during the 3.12 merge-window our
>> >> > > EVIOCGABS/EVIOCSABS API is limited to ABS_MAX<=0x3f. We tried
>> >several
>> >> > > hacks to work around it but if we ever decide to increase
>> >ABS_MAX, the
>> >> > > EVIOCSABS ioctl ABI might overflow into the next byte causing
>> >horrible
>> >> > > misinterpretations in the kernel that we cannot catch.
>> >> > >
>> >> > > Therefore, we decided to go with ABS_MAX2/CNT2 and introduce two
>> >new
>> >> > > ioctls to get/set abs-params. They no longer encode the ABS code
>> >in the
>> >> > > ioctl number and thus allow up to 4 billion ABS codes.
>> >> > >
>> >> > > Unfortunately, the uinput API also hard-coded the ABS_CNT value
>> >in its
>> >> > > ABI. To avoid any hacks in uinput, we simply introduce a new
>> >> > > uinput_user_dev2 to replace the old one. The new API allows
>> >growing
>> >> > > ABS_CNT2 values without any API changes.
>> >> > >
>> >> > > Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
>> >> > > ---
>> >> > > Hi
>> >> > >
>> >> > > This is only compile-tested but I wanted to get a first revision
>> >out to let
>> >> > > people know what we're working on. Unfortunately, the ABS API has
>> >this horribly
>> >> > > low ABS_MAX limit and we couldn't figure out a way to increase it
>> >while keeping
>> >> > > ABI compatibility.
>> >> > >
>> >> > > Any feedback and review is welcome. And if anyone spots ABI
>> >breakage by this
>> >> > > patch, please let me know. If nothing comes up I will patch
>> >libevdev to use the
>> >> > > new API, write some extensive test-cases and push this forward.
>> >> > >
>> >> > > As a sidenote: I didn't modify joydev to use the new values.
>> >Fortunately, the
>> >> > > joydev API would allow switching to ABS_CNT2 without breaking
>> >API, but it would
>> >> > > limit the new ABS_CNT2 to 16k. This is quite high but nothing
>> >compared to the
>> >> > > 2^32 that we can theoretically support now. If you think 16k
>> >ought to be enough
>> >> > > (probably?) I can adjust the joydev API, too.
>> >> > > All other kernel users were converted to the new values. Nothing
>> >left behind..
>> >> >
>> >> >
>> >> > just a comment from skimming the patch:
>> >> > if you need a new uinput abi anyway, can we add the resolution
>> >here? it's
>> >> > sorely needed for some tests. see also the patch Benjamin sent a
>> >while ago
>> >> > ("input/uinput: support abs resolution", July 15 2013)
>> >>
>> >> Indeed. Also, while we are at it, would it make sense to allow
>> >> requesting a range of ABS infos at once?
>> >
>> >yes, but what API did you have in mind?
>> >
>>
>> I was thinking about specifying the start ABS but and the count and array of absinfo structures to be filled.
>
> yeah, that works for me (I suspect 90% of users will use ABS_MAX anyway :)
And how exactly should this look like? Like this:
#define EVIOCGABS2(cnt) _IOR('E', 0x92, struct
input_absinfo2 * (cnt))
Or like this:
struct input_absinfo3 {
size_t cnt;
struct input_absinfo2[];
};
#define EVIOCGABS2 _IOR('E', 0x92, struct input_absinfo3)
btw., resolution added and uinput changes split off into separate patch.
Thanks
David
^ permalink raw reply
* PROBLEM: XPS 12-9Q33 touchpad not recognized, problem with i2c_hid module
From: Wouter van der Graaf @ 2013-10-07 8:46 UTC (permalink / raw)
To: linux-input
Dear Maintainers,
[1.] One line summary of the problem:
Dell XPS 12-9Q33 touchpad is not recognized, works when i2c_hid (needed
for touchscreen) is blacklisted
[2.] Full description of the problem/report:
Problem exists in kernels 3.10, 3.11 and 3.12rc3 (latest mainline kernel
release as of this writing).
The Dell XPS 12, 2013 Haswell version, comes with both multitouch
touchscreen and touchpad, of which only the touchscreen functions
correctly. The touchpad is not correctly detected and acts like a
generic pointing device without any touchpad (multitouch, scrolling,
etc.) features.
Below I've included environment and device information as well as Xorg
log, xinput list and dmesg output.
The device named "DLL05E3:01 06CB:2734" is the touchpad.
When i2c_hid module is blacklisted, the touchpad *does* work and is
detected by the psmouse module as a Synaptics touchpad. However, the
touchscreen needs the i2c_hid module.
With i2c_hid module enabled, both touchpad and touchscreen are detected
by i2c_hid, but maybe this causes a conflict and the psmouse module is
not able to detect the touchpad anymore.
[3.] Keywords (i.e., modules, networking, kernel):
[4.] Kernel version (from /proc/version):
Linux version 3.12.0-031200rc3-generic (apw@gomeisa) (gcc version 4.6.3
(Ubuntu/Linaro 4.6.3-1ubuntu5) ) #201309291835 SMP Sun Sep 29 22:37:02
UTC 2013
[5.] Output of Oops.. message (if applicable) with symbolic information
resolved (see Documentation/oops-tracing.txt)
N/A
[6.] A small shell script or example program which triggers the
problem (if possible)
N/A
[7.] Environment
Description: Ubuntu Saucy Salamander (development branch)
Release: 13.10
[7.1.] Software (add the output of the ver_linux script here)
Linux wouter-xps12 3.12.0-031200rc3-generic #201309291835 SMP Sun Sep 29
22:37:02 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Gnu C 4.8
Gnu make 3.81
binutils 2.23.52.20130913
util-linux 2.20.1
mount support
module-init-tools 9
e2fsprogs 1.42.8
pcmciautils 018
PPP 2.4.5
Linux C Library 2.17
Dynamic linker (ldd) 2.17
Procps 3.3.3
Net-tools 1.60
Kbd 1.15.5
Sh-utils 8.20
wireless-tools 30
Modules Loaded dm_crypt x86_pkg_temp_thermal coretemp kvm_intel
kvm crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel
aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd joydev pn544_mei
mei_phy pn544 hci snd_hda_codec_realtek nfc snd_hda_codec_hdmi
hid_sensor_magn_3d hid_sensor_accel_3d hid_sensor_gyro_3d
hid_sensor_trigger industrialio_triggered_buffer kfifo_buf industrialio
arc4 snd_hda_intel hid_sensor_iio_common snd_hda_codec snd_hwdep
hid_multitouch snd_pcm hid_generic dell_wmi sparse_keymap snd_page_alloc
snd_seq_midi snd_seq_midi_event snd_rawmidi dell_laptop parport_pc
dcdbas ppdev snd_seq mei_me uvcvideo hid_sensor_hub iwlmvm microcode
videobuf2_vmalloc videobuf2_memops mac80211 videobuf2_core mei videodev
usb_storage rfcomm bnep psmouse iwlwifi serio_raw snd_seq_device btusb
bluetooth cfg80211 snd_timer lpc_ich snd soundcore i2c_hid
i2c_designware_platform i2c_designware_core mac_hid intel_smartconnect
tpm_tis nls_iso8859_1 lp parport usbhid hid i915 i2c_algo_bit
drm_kms_helper ahci drm libahci wmi video
[7.2.] Processor information (from /proc/cpuinfo):
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 69
model name : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping : 1
microcode : 0x14
cpu MHz : 1800.000
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall
nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat
epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips : 4788.86
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 69
model name : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping : 1
microcode : 0x14
cpu MHz : 1800.000
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 2
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall
nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat
epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips : 4788.86
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 69
model name : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping : 1
microcode : 0x14
cpu MHz : 1800.000
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall
nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat
epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips : 4788.86
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 69
model name : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping : 1
microcode : 0x14
cpu MHz : 1800.000
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 2
apicid : 3
initial apicid : 3
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall
nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor
ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe
popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat
epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips : 4788.86
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
[7.3.] Module information (from /proc/modules):
dm_crypt 23012 1 - Live 0x0000000000000000
x86_pkg_temp_thermal 14269 0 - Live 0x0000000000000000
coretemp 17728 0 - Live 0x0000000000000000
kvm_intel 144049 0 - Live 0x0000000000000000
kvm 457676 1 kvm_intel, Live 0x0000000000000000
crct10dif_pclmul 14250 0 - Live 0x0000000000000000
crc32_pclmul 13160 0 - Live 0x0000000000000000
ghash_clmulni_intel 13259 0 - Live 0x0000000000000000
aesni_intel 55720 268 - Live 0x0000000000000000
aes_x86_64 17131 1 aesni_intel, Live 0x0000000000000000
lrw 13294 1 aesni_intel, Live 0x0000000000000000
gf128mul 14951 1 lrw, Live 0x0000000000000000
glue_helper 14095 1 aesni_intel, Live 0x0000000000000000
ablk_helper 13597 1 aesni_intel, Live 0x0000000000000000
cryptd 20501 136 ghash_clmulni_intel,aesni_intel,ablk_helper, Live
0x0000000000000000
joydev 17575 0 - Live 0x0000000000000000
pn544_mei 12787 0 - Live 0x0000000000000000
mei_phy 13929 1 pn544_mei, Live 0x0000000000000000
pn544 17995 1 pn544_mei, Live 0x0000000000000000
hci 44774 2 mei_phy,pn544, Live 0x0000000000000000
snd_hda_codec_realtek 56695 1 - Live 0x0000000000000000
nfc 99413 2 pn544,hci, Live 0x0000000000000000
snd_hda_codec_hdmi 41684 1 - Live 0x0000000000000000
hid_sensor_magn_3d 13266 0 - Live 0x0000000000000000
hid_sensor_accel_3d 13279 0 - Live 0x0000000000000000
hid_sensor_gyro_3d 13266 0 - Live 0x0000000000000000
hid_sensor_trigger 12916 3
hid_sensor_magn_3d,hid_sensor_accel_3d,hid_sensor_gyro_3d, Live
0x0000000000000000
industrialio_triggered_buffer 12882 3
hid_sensor_magn_3d,hid_sensor_accel_3d,hid_sensor_gyro_3d, Live
0x0000000000000000
kfifo_buf 13294 1 industrialio_triggered_buffer, Live 0x0000000000000000
industrialio 54016 6
hid_sensor_magn_3d,hid_sensor_accel_3d,hid_sensor_gyro_3d,hid_sensor_trigger,industrialio_triggered_buffer,kfifo_buf,
Live 0x0000000000000000
arc4 12573 2 - Live 0x0000000000000000
snd_hda_intel 57183 5 - Live 0x0000000000000000
hid_sensor_iio_common 13807 3
hid_sensor_magn_3d,hid_sensor_accel_3d,hid_sensor_gyro_3d, Live
0x0000000000000000
snd_hda_codec 194881 3
snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_intel, Live
0x0000000000000000
snd_hwdep 13613 1 snd_hda_codec, Live 0x0000000000000000
hid_multitouch 17645 0 - Live 0x0000000000000000
snd_pcm 107140 3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec, Live
0x0000000000000000
hid_generic 12548 0 - Live 0x0000000000000000
dell_wmi 12681 0 - Live 0x0000000000000000
sparse_keymap 13890 1 dell_wmi, Live 0x0000000000000000
snd_page_alloc 18798 2 snd_hda_intel,snd_pcm, Live 0x0000000000000000
snd_seq_midi 13324 0 - Live 0x0000000000000000
snd_seq_midi_event 14899 1 snd_seq_midi, Live 0x0000000000000000
snd_rawmidi 30465 1 snd_seq_midi, Live 0x0000000000000000
dell_laptop 17425 0 - Live 0x0000000000000000
parport_pc 32866 0 - Live 0x0000000000000000
dcdbas 14977 1 dell_laptop, Live 0x0000000000000000
ppdev 17711 0 - Live 0x0000000000000000
snd_seq 66061 2 snd_seq_midi,snd_seq_midi_event, Live 0x0000000000000000
mei_me 18418 0 - Live 0x0000000000000000
uvcvideo 82247 0 - Live 0x0000000000000000
hid_sensor_hub 19096 5
hid_sensor_magn_3d,hid_sensor_accel_3d,hid_sensor_gyro_3d,hid_sensor_trigger,hid_sensor_iio_common,
Live 0x0000000000000000
iwlmvm 176559 0 - Live 0x0000000000000000
microcode 23650 0 - Live 0x0000000000000000
videobuf2_vmalloc 13216 1 uvcvideo, Live 0x0000000000000000
videobuf2_memops 13362 1 videobuf2_vmalloc, Live 0x0000000000000000
mac80211 634661 1 iwlmvm, Live 0x0000000000000000
videobuf2_core 40903 1 uvcvideo, Live 0x0000000000000000
mei 78609 3 pn544_mei,mei_phy,mei_me, Live 0x0000000000000000
videodev 139144 2 uvcvideo,videobuf2_core, Live 0x0000000000000000
usb_storage 66714 0 - Live 0x0000000000000000
rfcomm 74658 12 - Live 0x0000000000000000
bnep 23966 2 - Live 0x0000000000000000
psmouse 104113 0 - Live 0x0000000000000000
iwlwifi 171124 1 iwlmvm, Live 0x0000000000000000
serio_raw 13462 0 - Live 0x0000000000000000
snd_seq_device 14497 3 snd_seq_midi,snd_rawmidi,snd_seq, Live
0x0000000000000000
btusb 28326 0 - Live 0x0000000000000000
bluetooth 391597 22 rfcomm,bnep,btusb, Live 0x0000000000000000
cfg80211 504229 3 iwlmvm,mac80211,iwlwifi, Live 0x0000000000000000
snd_timer 30038 2 snd_pcm,snd_seq, Live 0x0000000000000000
lpc_ich 21163 0 - Live 0x0000000000000000
snd 73802 21
snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_seq_midi,snd_rawmidi,snd_seq,snd_seq_device,snd_timer,
Live 0x0000000000000000
soundcore 12680 1 snd, Live 0x0000000000000000
i2c_hid 19067 0 - Live 0x0000000000000000
i2c_designware_platform 13006 0 - Live 0x0000000000000000
i2c_designware_core 14990 1 i2c_designware_platform, Live 0x0000000000000000
mac_hid 13253 0 - Live 0x0000000000000000
intel_smartconnect 12619 0 - Live 0x0000000000000000
tpm_tis 19116 0 - Live 0x0000000000000000
nls_iso8859_1 12713 1 - Live 0x0000000000000000
lp 17799 0 - Live 0x0000000000000000
parport 42481 3 parport_pc,ppdev,lp, Live 0x0000000000000000
usbhid 53067 0 - Live 0x0000000000000000
hid 106254 5 hid_multitouch,hid_generic,hid_sensor_hub,i2c_hid,usbhid,
Live 0x0000000000000000
i915 733800 5 - Live 0x0000000000000000
i2c_algo_bit 13564 1 i915, Live 0x0000000000000000
drm_kms_helper 53165 1 i915, Live 0x0000000000000000
ahci 30063 3 - Live 0x0000000000000000
drm 303133 4 i915,drm_kms_helper, Live 0x0000000000000000
libahci 32088 1 ahci, Live 0x0000000000000000
wmi 19363 1 dell_wmi, Live 0x0000000000000000
video 19574 1 i915, Live 0x0000000000000000
[7.4.] Loaded driver and hardware information (/proc/ioports, /proc/iomem)
0000-0cf7 : PCI Bus 0000:00
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-0060 : keyboard
0062-0062 : EC data
0064-0064 : keyboard
0066-0066 : EC cmd
0070-0077 : rtc0
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
04d0-04d1 : pnp 00:06
0680-069f : pnp 00:03
0cf8-0cff : PCI conf1
0d00-ffff : PCI Bus 0000:00
164e-164f : pnp 00:03
1800-1803 : ACPI PM1a_EVT_BLK
1804-1805 : ACPI PM1a_CNT_BLK
1808-180b : ACPI PM_TMR
1810-1815 : ACPI CPU throttle
1830-1833 : iTCO_wdt
1850-1850 : ACPI PM2_CNT_BLK
1854-1857 : pnp 00:05
1860-187f : iTCO_wdt
1880-189f : ACPI GPE0_BLK
1c00-1fff : INT33C7:00
1c00-1fff : lp-gpio
2000-2fff : PCI Bus 0000:04
f000-f03f : 0000:00:02.0
f040-f05f : 0000:00:1f.3
f060-f07f : 0000:00:1f.2
f060-f07f : ahci
f080-f083 : 0000:00:1f.2
f080-f083 : ahci
f090-f097 : 0000:00:1f.2
f090-f097 : ahci
f0a0-f0a3 : 0000:00:1f.2
f0a0-f0a3 : ahci
f0b0-f0b7 : 0000:00:1f.2
f0b0-f0b7 : ahci
ffff-ffff : pnp 00:03
ffff-ffff : pnp 00:03
ffff-ffff : pnp 00:03
00000000-00000fff : reserved
00001000-00057fff : System RAM
00058000-00058fff : reserved
00059000-0009efff : System RAM
0009f000-0009ffff : reserved
000a0000-000bffff : PCI Bus 0000:00
000c0000-000ce9ff : Video ROM
000d0000-000d3fff : PCI Bus 0000:00
000d4000-000d7fff : PCI Bus 0000:00
000d8000-000dbfff : PCI Bus 0000:00
000dc000-000dffff : PCI Bus 0000:00
000f0000-000fffff : System ROM
00100000-c98d3fff : System RAM
02000000-02762924 : Kernel code
02762925-02d18c7f : Kernel data
02e72000-02fe4fff : Kernel bss
c98d4000-c98dafff : ACPI Non-volatile Storage
c98db000-c9d18fff : System RAM
c9d19000-ca2b4fff : reserved
ca2b5000-da96efff : System RAM
da96f000-dae4bfff : reserved
dae4c000-dae65fff : ACPI Tables
dae66000-db764fff : ACPI Non-volatile Storage
db765000-dbffefff : reserved
dbfff000-dbffffff : System RAM
dd000000-df1fffff : reserved
dd200000-df1fffff : Graphics Stolen Memory
df200000-feafffff : PCI Bus 0000:00
df200000-df3fffff : PCI Bus 0000:04
df400000-df5fffff : PCI Bus 0000:04
e0000000-efffffff : 0000:00:02.0
f7800000-f7bfffff : 0000:00:02.0
f7c00000-f7cfffff : PCI Bus 0000:06
f7c00000-f7c01fff : 0000:06:00.0
f7c00000-f7c01fff : iwlwifi
f7d00000-f7d0ffff : 0000:00:14.0
f7d00000-f7d0ffff : xhci_hcd
f7d10000-f7d13fff : 0000:00:1b.0
f7d10000-f7d13fff : ICH HD audio
f7d14000-f7d17fff : 0000:00:03.0
f7d14000-f7d17fff : ICH HD audio
f7d19000-f7d190ff : 0000:00:1f.3
f7d1a000-f7d1a7ff : 0000:00:1f.2
f7d1a000-f7d1a7ff : ahci
f7d1b000-f7d1b3ff : 0000:00:1d.0
f7d1b000-f7d1b3ff : ehci_hcd
f7d1d000-f7d1d01f : 0000:00:16.0
f7d1d000-f7d1d01f : mei_me
f7fef000-f7feffff : pnp 00:0c
f7ff0000-f7ff0fff : pnp 00:0c
f8000000-fbffffff : PCI MMCONFIG 0000 [bus 00-3f]
f8000000-fbffffff : reserved
f8000000-fbffffff : pnp 00:0c
fe102000-fe102fff : pnp 00:09
fe104000-fe104fff : pnp 00:09
fe105000-fe105fff : INT33C3:00
fe105000-fe105fff : INT33C3:00
fe106000-fe106fff : pnp 00:09
fe108000-fe108fff : pnp 00:09
fe10a000-fe10afff : pnp 00:09
fe10c000-fe10cfff : pnp 00:09
fe10e000-fe10efff : pnp 00:09
fe111000-fe111007 : pnp 00:09
fe111014-fe111fff : pnp 00:09
fe112000-fe112fff : pnp 00:09
fec00000-fec00fff : reserved
fec00000-fec003ff : IOAPIC 0
fed00000-fed03fff : reserved
fed00000-fed003ff : HPET 0
fed10000-fed17fff : pnp 00:0c
fed18000-fed18fff : pnp 00:0c
fed19000-fed19fff : pnp 00:0c
fed1c000-fed1ffff : reserved
fed1c000-fed1ffff : pnp 00:0c
fed1f410-fed1f414 : iTCO_wdt
fed20000-fed3ffff : pnp 00:0c
fed45000-fed8ffff : pnp 00:0c
fed90000-fed93fff : pnp 00:0c
fee00000-fee00fff : Local APIC
fee00000-fee00fff : reserved
ff000000-ffffffff : reserved
ff000000-ffffffff : pnp 00:0c
100000000-21fdfffff : System RAM
21fe00000-21fffffff : RAM buffer
[7.5.] PCI information ('lspci -vvv' as root)
00:00.0 Host bridge: Intel Corporation Haswell-ULT DRAM Controller (rev 09)
Subsystem: Dell Device 05e3
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort+ >SERR- <PERR- INTx-
Latency: 0
Capabilities: [e0] Vendor Specific Information: Len=0c <?>
00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT
Integrated Graphics Controller (rev 09) (prog-if 00 [VGA controller])
Subsystem: Dell Device 05e3
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 58
Region 0: Memory at f7800000 (64-bit, non-prefetchable) [size=4M]
Region 2: Memory at e0000000 (64-bit, prefetchable) [size=256M]
Region 4: I/O ports at f000 [size=64]
Expansion ROM at <unassigned> [disabled]
Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee0f00c Data: 41b1
Capabilities: [d0] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [a4] PCI Advanced Features
AFCap: TP+ FLR+
AFCtrl: FLR-
AFStatus: TP-
Kernel driver in use: i915
00:03.0 Audio device: Intel Corporation Device 0a0c (rev 09)
Subsystem: Intel Corporation Device 2010
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 61
Region 0: Memory at f7d14000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D3 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee0f00c Data: 4142
Capabilities: [70] Express (v1) Root Complex Integrated Endpoint,
MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
unlimited, L1 unlimited
ExtTag- RBE- FLReset+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr-
TransPend-
LnkCap: Port #0, Speed unknown, Width x0, ASPM unknown,
Latency L0 <64ns, L1 <1us
ClockPM- Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; Disabled- Retrain- CommClk-
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed unknown, Width x0, TrErr- Train- SlotClk-
DLActive- BWMgmt- ABWMgmt-
Kernel driver in use: snd_hda_intel
00:14.0 USB controller: Intel Corporation Lynx Point-LP USB xHCI HC (rev
04) (prog-if 30 [XHCI])
Subsystem: Dell Device 05e3
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 56
Region 0: Memory at f7d00000 (64-bit, non-prefetchable) [size=64K]
Capabilities: [70] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA
PME(D0-,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
Address: 00000000fee0a00c Data: 4181
Kernel driver in use: xhci_hcd
00:16.0 Communication controller: Intel Corporation Lynx Point-LP HECI
#0 (rev 04)
Subsystem: Dell Device 05e3
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 60
Region 0: Memory at f7d1d000 (64-bit, non-prefetchable) [size=32]
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [8c] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0f00c Data: 4122
Kernel driver in use: mei_me
00:1b.0 Audio device: Intel Corporation Lynx Point-LP HD Audio
Controller (rev 04)
Subsystem: Dell Device 05e3
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 62
Region 0: Memory at f7d10000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0f00c Data: 4162
Capabilities: [70] Express (v1) Root Complex Integrated Endpoint,
MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
<64ns, L1 <1us
ExtTag- RBE- FLReset+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+
TransPend-
LnkCap: Port #0, Speed unknown, Width x0, ASPM unknown,
Latency L0 <64ns, L1 <1us
ClockPM- Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; Disabled- Retrain- CommClk-
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed unknown, Width x0, TrErr- Train- SlotClk-
DLActive- BWMgmt- ABWMgmt-
Capabilities: [100 v1] Virtual Channel
Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
Arb: Fixed- WRR32- WRR64- WRR128-
Ctrl: ArbSelect=Fixed
Status: InProgress-
VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=01
Status: NegoPending- InProgress-
VC1: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable- ID=2 ArbSelect=Fixed TC/VC=04
Status: NegoPending- InProgress-
Kernel driver in use: snd_hda_intel
00:1c.0 PCI bridge: Intel Corporation Lynx Point-LP PCI Express Root
Port 1 (rev e4) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=04, subordinate=05, sec-latency=0
I/O behind bridge: 00002000-00002fff
Memory behind bridge: df200000-df3fffff
Prefetchable memory behind bridge: 00000000df400000-00000000df5fffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
<64ns, L1 <1us
ExtTag- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+
TransPend-
LnkCap: Port #1, Speed 5GT/s, Width x1, ASPM L0s L1, Latency
L0 <1us, L1 <4us
ClockPM- Surprise- LLActRep+ BwNot+
LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- Retrain-
CommClk-
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+
DLActive- BWMgmt- ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+
Surprise+
Slot #0, PowerLimit 0.000W; Interlock- NoCompl+
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
HPIrq- LinkChg-
Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet-
Interlock-
Changed: MRL- PresDet- LinkState-
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna-
CRSVisible-
RootCap: CRSVisible-
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABC, TimeoutDis+ ARIFwd-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- ARIFwd-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-,
Selectable De-emphasis: -6dB
Transmit Margin: Normal Operating Range,
EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB,
EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-,
LinkEqualizationRequest-
Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
Address: 00000000 Data: 0000
Capabilities: [90] Subsystem: Dell Device 05e3
Capabilities: [a0] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: pcieport
00:1c.2 PCI bridge: Intel Corporation Lynx Point-LP PCI Express Root
Port 3 (rev e4) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=06, subordinate=06, sec-latency=0
I/O behind bridge: 0000f000-00000fff
Memory behind bridge: f7c00000-f7cfffff
Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
<64ns, L1 <1us
ExtTag- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+
TransPend-
LnkCap: Port #3, Speed 5GT/s, Width x1, ASPM L0s L1, Latency
L0 <512ns, L1 <16us
ClockPM- Surprise- LLActRep+ BwNot+
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
DLActive+ BWMgmt+ ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug-
Surprise-
Slot #2, PowerLimit 10.000W; Interlock- NoCompl+
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
HPIrq- LinkChg-
Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+
Interlock-
Changed: MRL- PresDet- LinkState-
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna-
CRSVisible-
RootCap: CRSVisible-
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABC, TimeoutDis+ ARIFwd-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- ARIFwd-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-,
Selectable De-emphasis: -6dB
Transmit Margin: Normal Operating Range,
EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB,
EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-,
LinkEqualizationRequest-
Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
Address: 00000000 Data: 0000
Capabilities: [90] Subsystem: Dell Device 05e3
Capabilities: [a0] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [100 v0] #00
Capabilities: [200 v1] #1e
Kernel driver in use: pcieport
00:1d.0 USB controller: Intel Corporation Lynx Point-LP USB EHCI #1 (rev
04) (prog-if 20 [EHCI])
Subsystem: Dell Device 05e3
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 23
Region 0: Memory at f7d1b000 (32-bit, non-prefetchable) [size=1K]
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [58] Debug port: BAR=1 offset=00a0
Capabilities: [98] PCI Advanced Features
AFCap: TP+ FLR+
AFCtrl: FLR-
AFStatus: TP-
Kernel driver in use: ehci-pci
00:1f.0 ISA bridge: Intel Corporation Lynx Point-LP LPC Controller (rev 04)
Subsystem: Dell Device 05e3
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Capabilities: [e0] Vendor Specific Information: Len=0c <?>
Kernel driver in use: lpc_ich
00:1f.2 SATA controller: Intel Corporation Lynx Point-LP SATA Controller
1 [AHCI mode] (rev 04) (prog-if 01 [AHCI 1.0])
Subsystem: Dell Device 05e3
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin B routed to IRQ 57
Region 0: I/O ports at f0b0 [size=8]
Region 1: I/O ports at f0a0 [size=4]
Region 2: I/O ports at f090 [size=8]
Region 3: I/O ports at f080 [size=4]
Region 4: I/O ports at f060 [size=32]
Region 5: Memory at f7d1a000 (32-bit, non-prefetchable) [size=2K]
Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee0a00c Data: 41a1
Capabilities: [70] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot+,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [a8] SATA HBA v1.0 BAR4 Offset=00000004
Kernel driver in use: ahci
00:1f.3 SMBus: Intel Corporation Lynx Point-LP SMBus Controller (rev 04)
Subsystem: Dell Device 05e3
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin C routed to IRQ 3
Region 0: Memory at f7d19000 (64-bit, non-prefetchable) [size=256]
Region 4: I/O ports at f040 [size=32]
06:00.0 Network controller: Intel Corporation Wireless 7260 (rev 6b)
Subsystem: Intel Corporation Dual Band Wireless-AC 7260
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 59
Region 0: Memory at f7c00000 (64-bit, non-prefetchable) [size=8K]
Capabilities: [c8] Power Management version 3
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0100c Data: 41e1
Capabilities: [40] Express (v2) Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
<512ns, L1 unlimited
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr+ NoSnoop+ FLReset-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+
TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1,
Latency L0 <4us, L1 <32us
ClockPM+ Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range B, TimeoutDis+
DevCtl2: Completion Timeout: 16ms to 55ms, TimeoutDis-
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance-
SpeedDis-, Selectable De-emphasis: -6dB
Transmit Margin: Normal Operating Range,
EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB,
EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-,
LinkEqualizationRequest-
Capabilities: [100 v1] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt-
RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
Capabilities: [140 v1] Device Serial Number 5c-51-4f-ff-ff-11-a5-9e
Capabilities: [14c v1] Latency Tolerance Reporting
Max snoop latency: 3145728ns
Max no snoop latency: 3145728ns
Capabilities: [154 v1] Vendor Specific Information: ID=cafe Rev=1
Len=014 <?>
Kernel driver in use: iwlwifi
[7.6.] SCSI information (from /proc/scsi/scsi)
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: LITEONIT LMT-256 Rev: DM81
Type: Direct-Access ANSI SCSI revision: 05
[7.7.] Other information that might be relevant to the problem (please
look in /proc and include all information that you think to be relevant):
Relevant info from /proc/bus/input/devices
I: Bus=0018 Vendor=06cb Product=2734 Version=0100
N: Name="DLL05E3:01 06CB:2734"
P: Phys=
S: Sysfs=/devices/pci0000:00/INT33C3:00/i2c-8/8-002c/input/input7
U: Uniq=
H: Handlers=mouse0 event7
B: PROP=0
B: EV=17
B: KEY=30000 0 0 0 0
B: REL=3
B: MSC=10
I: Bus=0018 Vendor=03eb Product=842f Version=0100
N: Name="ATML1000:00 03EB:842F"
P: Phys=
S: Sysfs=/devices/pci0000:00/INT33C3:00/i2c-8/8-004b/input/input8
U: Uniq=
H: Handlers=mouse1 event8
B: PROP=2
B: EV=b
B: KEY=400 0 0 0 0 0
B: ABS=260800000000003
/var/log/Xorg.0.log
[ 11.411] X.Org X Server 1.14.2.901 (1.14.3 RC 1) Release Date:
2013-07-25
[ 11.411] X Protocol Version 11, Revision 0
[ 11.411] Build Operating System: Linux 3.2.0-37-generic x86_64 Ubuntu
[ 11.411] Current Operating System: Linux wouter-xps12
3.12.0-031200rc3-generic #201309291835 SMP Sun Sep 29 22:37:02 UTC 2013
x86_64
[ 11.411] Kernel command line:
BOOT_IMAGE=/boot/vmlinuz-3.12.0-031200rc3-generic
root=UUID=8e4879ce-4777-4c48-b6d7-5b3b4b116ad3 ro quiet splash vt.handoff=7
[ 11.411] Build Date: 26 September 2013 05:25:08PM
[ 11.411] xorg-server 2:1.14.2.901-2ubuntu6 (For technical support
please see http://www.ubuntu.com/support)
[ 11.411] Current version of pixman: 0.30.2
[ 11.411] Before reporting problems, check http://wiki.x.org to
make sure that you have the latest version.
[ 11.411] Markers: (--) probed, (**) from config file, (==) default
setting, (++) from command line, (!!) notice, (II) informational, (WW)
warning, (EE) error, (NI) not implemented, (??) unknown.
[ 11.411] (==) Log file: "/var/log/Xorg.0.log", Time: Sun Oct 6
21:24:45 2013
[ 11.412] (==) Using config file: "/etc/X11/xorg.conf"
[ 11.412] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[ 11.414] (==) No Layout section. Using the first Screen section.
[ 11.414] (==) No screen section available. Using defaults.
[ 11.414] (**) |-->Screen "Default Screen Section" (0)
[ 11.414] (**) | |-->Monitor "<default monitor>"
[ 11.414] (==) No monitor specified for screen "Default Screen Section".
Using a default monitor configuration.
[ 11.414] (==) Automatically adding devices
[ 11.414] (==) Automatically enabling devices
[ 11.414] (==) Automatically adding GPU devices
[ 11.416] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not
exist.
[ 11.416] Entry deleted from font path.
[ 11.416] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not
exist.
[ 11.416] Entry deleted from font path.
[ 11.416] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not
exist.
[ 11.416] Entry deleted from font path.
[ 11.416] (WW) The directory "/usr/share/fonts/X11/100dpi" does not
exist.
[ 11.416] Entry deleted from font path.
[ 11.416] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
[ 11.416] Entry deleted from font path.
[ 11.416] (WW) The directory
"/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" does not exist.
[ 11.416] Entry deleted from font path.
[ 11.416] (==) FontPath set to:
/usr/share/fonts/X11/misc,
/usr/share/fonts/X11/Type1,
built-ins
[ 11.416] (==) ModulePath set to
"/usr/lib/x86_64-linux-gnu/xorg/extra-modules,/usr/lib/xorg/extra-modules,/usr/lib/xorg/modules"
[ 11.416] (II) The server relies on udev to provide the list of input
devices.
If no devices become available, reconfigure udev or disable
AutoAddDevices.
[ 11.416] (II) Loader magic: 0x7fe40c4a1d20
[ 11.416] (II) Module ABI versions:
[ 11.416] X.Org ANSI C Emulation: 0.4
[ 11.416] X.Org Video Driver: 14.1
[ 11.416] X.Org XInput driver : 19.1
[ 11.416] X.Org Server Extension : 7.0
[ 11.417] (II) xfree86: Adding drm device (/dev/dri/card0)
[ 11.417] (--) PCI:*(0:0:2:0) 8086:0a16:1028:05e3 rev 9, Mem @
0xf7800000/4194304, 0xe0000000/268435456, I/O @ 0x0000f000/64
[ 11.417] (II) Open ACPI successful (/var/run/acpid.socket)
[ 11.418] Initializing built-in extension Generic Event Extension
[ 11.418] Initializing built-in extension SHAPE
[ 11.418] Initializing built-in extension MIT-SHM
[ 11.418] Initializing built-in extension XInputExtension
[ 11.418] Initializing built-in extension XTEST
[ 11.418] Initializing built-in extension BIG-REQUESTS
[ 11.418] Initializing built-in extension SYNC
[ 11.418] Initializing built-in extension XKEYBOARD
[ 11.418] Initializing built-in extension XC-MISC
[ 11.418] Initializing built-in extension SECURITY
[ 11.418] Initializing built-in extension XINERAMA
[ 11.418] Initializing built-in extension XFIXES
[ 11.418] Initializing built-in extension RENDER
[ 11.418] Initializing built-in extension RANDR
[ 11.418] Initializing built-in extension COMPOSITE
[ 11.418] Initializing built-in extension DAMAGE
[ 11.418] Initializing built-in extension MIT-SCREEN-SAVER
[ 11.418] Initializing built-in extension DOUBLE-BUFFER
[ 11.418] Initializing built-in extension RECORD
[ 11.418] Initializing built-in extension DPMS
[ 11.418] Initializing built-in extension X-Resource
[ 11.418] Initializing built-in extension XVideo
[ 11.418] Initializing built-in extension XVideo-MotionCompensation
[ 11.418] Initializing built-in extension SELinux
[ 11.418] Initializing built-in extension XFree86-VidModeExtension
[ 11.418] Initializing built-in extension XFree86-DGA
[ 11.418] Initializing built-in extension XFree86-DRI
[ 11.418] Initializing built-in extension DRI2
[ 11.418] (II) "glx" will be loaded by default.
[ 11.418] (WW) "xmir" is not to be loaded by default. Skipping.
[ 11.418] (II) LoadModule: "dri2"
[ 11.418] (II) Module "dri2" already built-in
[ 11.418] (II) LoadModule: "glamoregl"
[ 11.419] (II) Loading /usr/lib/xorg/modules/libglamoregl.so
[ 11.431] (II) Module glamoregl: vendor="X.Org Foundation"
[ 11.431] compiled for 1.14.2.901, module version = 0.5.1
[ 11.432] ABI class: X.Org ANSI C Emulation, version 0.4
[ 11.432] (II) LoadModule: "glx"
[ 11.432] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[ 11.434] (II) Module glx: vendor="X.Org Foundation"
[ 11.434] compiled for 1.14.2.901, module version = 1.0.0
[ 11.434] ABI class: X.Org Server Extension, version 7.0
[ 11.434] (==) AIGLX enabled
[ 11.434] Loading extension GLX
[ 11.434] (==) Matched intel as autoconfigured driver 0
[ 11.434] (==) Matched intel as autoconfigured driver 1
[ 11.434] (==) Matched vesa as autoconfigured driver 2
[ 11.434] (==) Matched modesetting as autoconfigured driver 3
[ 11.434] (==) Matched fbdev as autoconfigured driver 4
[ 11.434] (==) Assigned the driver to the xf86ConfigLayout
[ 11.434] (II) LoadModule: "intel"
[ 11.434] (II) Loading /usr/lib/xorg/modules/drivers/intel_drv.so
[ 11.437] (II) Module intel: vendor="X.Org Foundation"
[ 11.437] compiled for 1.14.2.901, module version = 2.21.14
[ 11.437] Module class: X.Org Video Driver
[ 11.437] ABI class: X.Org Video Driver, version 14.1
[ 11.437] (II) LoadModule: "vesa"
[ 11.437] (II) Loading /usr/lib/xorg/modules/drivers/vesa_drv.so
[ 11.437] (II) Module vesa: vendor="X.Org Foundation"
[ 11.437] compiled for 1.14.1, module version = 2.3.2
[ 11.438] Module class: X.Org Video Driver
[ 11.438] ABI class: X.Org Video Driver, version 14.1
[ 11.438] (II) LoadModule: "modesetting"
[ 11.438] (II) Loading /usr/lib/xorg/modules/drivers/modesetting_drv.so
[ 11.438] (II) Module modesetting: vendor="X.Org Foundation"
[ 11.438] compiled for 1.14.1, module version = 0.8.0
[ 11.438] Module class: X.Org Video Driver
[ 11.438] ABI class: X.Org Video Driver, version 14.1
[ 11.438] (II) LoadModule: "fbdev"
[ 11.438] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so
[ 11.439] (II) Module fbdev: vendor="X.Org Foundation"
[ 11.439] compiled for 1.14.1, module version = 0.4.3
[ 11.439] Module class: X.Org Video Driver
[ 11.439] ABI class: X.Org Video Driver, version 14.1
[ 11.439] (II) intel: Driver for Intel(R) Integrated Graphics Chipsets:
i810, i810-dc100, i810e, i815, i830M, 845G, 854, 852GM/855GM, 865G,
915G, E7221 (i915), 915GM, 945G, 945GM, 945GME, Pineview GM,
Pineview G, 965G, G35, 965Q, 946GZ, 965GM, 965GME/GLE, G33, Q35, Q33,
GM45, 4 Series, G45/G43, Q45/Q43, G41, B43, HD Graphics,
HD Graphics 2000, HD Graphics 3000, HD Graphics 2500,
HD Graphics 4000, HD Graphics P4000, HD Graphics 4600,
HD Graphics 5000, HD Graphics P4600/P4700, Iris(TM) Graphics 5100,
HD Graphics 4400, HD Graphics 4200, Iris(TM) Pro Graphics 5200
[ 11.439] (II) VESA: driver for VESA chipsets: vesa
[ 11.439] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[ 11.439] (II) FBDEV: driver for framebuffer: fbdev
[ 11.439] (++) using VT number 7
[ 11.440] (II) intel(0): SNA compiled: xserver-xorg-video-intel
2:2.21.14-4ubuntu4 (Christopher James Halse Rogers <raof@ubuntu.com>)
[ 11.441] (WW) Falling back to old probe method for vesa
[ 11.441] (WW) Falling back to old probe method for modesetting
[ 11.441] (WW) Falling back to old probe method for fbdev
[ 11.441] (II) Loading sub module "fbdevhw"
[ 11.441] (II) LoadModule: "fbdevhw"
[ 11.442] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so
[ 11.442] (II) Module fbdevhw: vendor="X.Org Foundation"
[ 11.442] compiled for 1.14.2.901, module version = 0.0.2
[ 11.442] ABI class: X.Org Video Driver, version 14.1
[ 11.443] (II) intel(0): Creating default Display subsection in
Screen section
"Default Screen Section" for depth/fbbpp 24/32
[ 11.443] (==) intel(0): Depth 24, (--) framebuffer bpp 32
[ 11.443] (==) intel(0): RGB weight 888
[ 11.443] (==) intel(0): Default visual is TrueColor
[ 11.443] (--) intel(0): Integrated Graphics Chipset: Intel(R) HD
Graphics 4400
[ 11.443] (--) intel(0): CPU: x86-64, sse2, sse3, ssse3, sse4.1,
sse4.2, avx, avx2
[ 11.443] (**) intel(0): Framebuffer tiled
[ 11.443] (**) intel(0): Pixmaps tiled
[ 11.443] (**) intel(0): "Tear free" disabled
[ 11.443] (**) intel(0): Forcing per-crtc-pixmaps? no
[ 11.443] (II) intel(0): Output eDP1 has no monitor section
[ 11.443] (--) intel(0): found backlight control interface
acpi_video0 (type 'firmware')
[ 11.443] (II) intel(0): Output DP1 has no monitor section
[ 11.443] (II) intel(0): Output HDMI1 has no monitor section
[ 11.443] (--) intel(0): Output eDP1 using initial mode 1920x1080 on
pipe 0
[ 11.443] (==) intel(0): DPI set to (96, 96)
[ 11.443] (II) Loading sub module "dri2"
[ 11.443] (II) LoadModule: "dri2"
[ 11.443] (II) Module "dri2" already built-in
[ 11.443] (II) UnloadModule: "vesa"
[ 11.443] (II) Unloading vesa
[ 11.443] (II) UnloadModule: "modesetting"
[ 11.443] (II) Unloading modesetting
[ 11.443] (II) UnloadModule: "fbdev"
[ 11.443] (II) Unloading fbdev
[ 11.443] (II) UnloadSubModule: "fbdevhw"
[ 11.443] (II) Unloading fbdevhw
[ 11.443] (==) Depth 24 pixmap format is 32 bpp
[ 11.446] (II) intel(0): SNA initialized with Haswell (gen7.5, gt2)
backend
[ 11.446] (==) intel(0): Backing store disabled
[ 11.446] (==) intel(0): Silken mouse enabled
[ 11.446] (II) intel(0): HW Cursor enabled
[ 11.446] (II) intel(0): RandR 1.2 enabled, ignore the following
RandR disabled message.
[ 11.447] (==) intel(0): DPMS enabled
[ 11.447] (II) intel(0): [DRI2] Setup complete
[ 11.447] (II) intel(0): [DRI2] DRI driver: i965
[ 11.447] (II) intel(0): direct rendering: DRI2 Enabled
[ 11.447] (==) intel(0): hotplug detection: "enabled"
[ 11.447] (--) RandR disabled
[ 11.452] (II) SELinux: Disabled on system
[ 11.467] (II) AIGLX: enabled GLX_MESA_copy_sub_buffer
[ 11.467] (II) AIGLX: enabled GLX_INTEL_swap_event
[ 11.467] (II) AIGLX: enabled GLX_ARB_create_context
[ 11.467] (II) AIGLX: enabled GLX_ARB_create_context_profile
[ 11.467] (II) AIGLX: enabled GLX_EXT_create_context_es2_profile
[ 11.467] (II) AIGLX: enabled GLX_SGI_swap_control and
GLX_MESA_swap_control
[ 11.467] (II) AIGLX: GLX_EXT_texture_from_pixmap backed by buffer
objects
[ 11.467] (II) AIGLX: Loaded and initialized i965
[ 11.467] (II) GLX: Initialized DRI2 GL provider for screen 0
[ 11.470] (II) intel(0): switch to mode 1920x1080@59.9 on pipe 0
using eDP1, position (0, 0), rotation normal
[ 11.488] (II) intel(0): Setting screen physical size to 508 x 285
[ 11.497] (II) XKB: reuse xkmfile
/var/lib/xkb/server-B20D7FC79C7F597315E3E501AEF10E0D866E8E92.xkm
[ 11.499] (II) config/udev: Adding input device Power Button
(/dev/input/event2)
[ 11.499] (**) Power Button: Applying InputClass "evdev keyboard
catchall"
[ 11.499] (II) LoadModule: "evdev"
[ 11.499] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
[ 11.500] (II) Module evdev: vendor="X.Org Foundation"
[ 11.500] compiled for 1.14.1, module version = 2.7.3
[ 11.500] Module class: X.Org XInput Driver
[ 11.500] ABI class: X.Org XInput driver, version 19.1
[ 11.500] (II) Using input driver 'evdev' for 'Power Button'
[ 11.500] (**) Power Button: always reports core events
[ 11.500] (**) evdev: Power Button: Device: "/dev/input/event2"
[ 11.500] (--) evdev: Power Button: Vendor 0 Product 0x1
[ 11.500] (--) evdev: Power Button: Found keys
[ 11.500] (II) evdev: Power Button: Configuring as keyboard
[ 11.500] (**) Option "config_info"
"udev:/sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input2/event2"
[ 11.500] (II) XINPUT: Adding extended input device "Power Button"
(type: KEYBOARD, id 6)
[ 11.500] (**) Option "xkb_rules" "evdev"
[ 11.500] (**) Option "xkb_model" "pc105"
[ 11.500] (**) Option "xkb_layout" "us"
[ 11.500] (**) Option "xkb_variant" "intl"
[ 11.502] (II) XKB: reuse xkmfile
/var/lib/xkb/server-A5431D4A34463C892C9E905E2E421B30A3CC30DD.xkm
[ 11.503] (II) config/udev: Adding input device Video Bus
(/dev/input/event4)
[ 11.503] (**) Video Bus: Applying InputClass "evdev keyboard catchall"
[ 11.503] (II) Using input driver 'evdev' for 'Video Bus'
[ 11.503] (**) Video Bus: always reports core events
[ 11.503] (**) evdev: Video Bus: Device: "/dev/input/event4"
[ 11.503] (--) evdev: Video Bus: Vendor 0 Product 0x6
[ 11.503] (--) evdev: Video Bus: Found keys
[ 11.503] (II) evdev: Video Bus: Configuring as keyboard
[ 11.503] (**) Option "config_info"
"udev:/sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/LNXVIDEO:00/input/input4/event4"
[ 11.503] (II) XINPUT: Adding extended input device "Video Bus"
(type: KEYBOARD, id 7)
[ 11.503] (**) Option "xkb_rules" "evdev"
[ 11.503] (**) Option "xkb_model" "pc105"
[ 11.503] (**) Option "xkb_layout" "us"
[ 11.503] (**) Option "xkb_variant" "intl"
[ 11.504] (II) config/udev: Adding input device Power Button
(/dev/input/event0)
[ 11.504] (**) Power Button: Applying InputClass "evdev keyboard
catchall"
[ 11.504] (II) Using input driver 'evdev' for 'Power Button'
[ 11.504] (**) Power Button: always reports core events
[ 11.504] (**) evdev: Power Button: Device: "/dev/input/event0"
[ 11.504] (--) evdev: Power Button: Vendor 0 Product 0x1
[ 11.504] (--) evdev: Power Button: Found keys
[ 11.504] (II) evdev: Power Button: Configuring as keyboard
[ 11.504] (**) Option "config_info"
"udev:/sys/devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input0/event0"
[ 11.504] (II) XINPUT: Adding extended input device "Power Button"
(type: KEYBOARD, id 8)
[ 11.504] (**) Option "xkb_rules" "evdev"
[ 11.504] (**) Option "xkb_model" "pc105"
[ 11.504] (**) Option "xkb_layout" "us"
[ 11.504] (**) Option "xkb_variant" "intl"
[ 11.504] (II) config/udev: Adding input device Lid Switch
(/dev/input/event1)
[ 11.504] (II) No input driver specified, ignoring this device.
[ 11.504] (II) This device may have been added with another device file.
[ 11.504] (II) config/udev: Adding drm device (/dev/dri/card0)
[ 11.504] (II) config/udev: Ignoring already known drm device
(/dev/dri/card0)
[ 11.504] (II) config/udev: Adding input device HDA Intel MID
HDMI/DP,pcm=7 (/dev/input/event10)
[ 11.504] (II) No input driver specified, ignoring this device.
[ 11.504] (II) This device may have been added with another device file.
[ 11.504] (II) config/udev: Adding input device HDA Intel MID
HDMI/DP,pcm=3 (/dev/input/event11)
[ 11.504] (II) No input driver specified, ignoring this device.
[ 11.504] (II) This device may have been added with another device file.
[ 11.505] (II) config/udev: Adding input device HDA Intel MID
HDMI/DP,pcm=8 (/dev/input/event9)
[ 11.505] (II) No input driver specified, ignoring this device.
[ 11.505] (II) This device may have been added with another device file.
[ 11.505] (II) config/udev: Adding input device Integrated Webcam
(/dev/input/event5)
[ 11.505] (**) Integrated Webcam: Applying InputClass "evdev keyboard
catchall"
[ 11.505] (II) Using input driver 'evdev' for 'Integrated Webcam'
[ 11.505] (**) Integrated Webcam: always reports core events
[ 11.505] (**) evdev: Integrated Webcam: Device: "/dev/input/event5"
[ 11.505] (--) evdev: Integrated Webcam: Vendor 0xbda Product 0x5602
[ 11.505] (--) evdev: Integrated Webcam: Found keys
[ 11.505] (II) evdev: Integrated Webcam: Configuring as keyboard
[ 11.505] (**) Option "config_info"
"udev:/sys/devices/pci0000:00/0000:00:14.0/usb2/2-5/2-5:1.0/input/input5/event5"
[ 11.505] (II) XINPUT: Adding extended input device "Integrated
Webcam" (type: KEYBOARD, id 9)
[ 11.505] (**) Option "xkb_rules" "evdev"
[ 11.505] (**) Option "xkb_model" "pc105"
[ 11.505] (**) Option "xkb_layout" "us"
[ 11.505] (**) Option "xkb_variant" "intl"
[ 11.505] (II) config/udev: Adding input device HDA Intel PCH
Headphone (/dev/input/event12)
[ 11.505] (II) No input driver specified, ignoring this device.
[ 11.505] (II) This device may have been added with another device file.
[ 11.505] (II) config/udev: Adding input device DLL05E3:01 06CB:2734
(/dev/input/event7)
[ 11.505] (**) DLL05E3:01 06CB:2734: Applying InputClass "evdev
pointer catchall"
[ 11.505] (II) Using input driver 'evdev' for 'DLL05E3:01 06CB:2734'
[ 11.505] (**) DLL05E3:01 06CB:2734: always reports core events
[ 11.505] (**) evdev: DLL05E3:01 06CB:2734: Device: "/dev/input/event7"
[ 11.512] (--) evdev: DLL05E3:01 06CB:2734: Vendor 0x6cb Product 0x2734
[ 11.512] (--) evdev: DLL05E3:01 06CB:2734: Found 3 mouse buttons
[ 11.512] (--) evdev: DLL05E3:01 06CB:2734: Found relative axes
[ 11.512] (--) evdev: DLL05E3:01 06CB:2734: Found x and y relative axes
[ 11.512] (II) evdev: DLL05E3:01 06CB:2734: Configuring as mouse
[ 11.512] (**) evdev: DLL05E3:01 06CB:2734: YAxisMapping: buttons 4 and 5
[ 11.512] (**) evdev: DLL05E3:01 06CB:2734: EmulateWheelButton: 4,
EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[ 11.512] (**) Option "config_info"
"udev:/sys/devices/pci0000:00/INT33C3:00/i2c-8/8-002c/input/input7/event7"
[ 11.512] (II) XINPUT: Adding extended input device "DLL05E3:01
06CB:2734" (type: MOUSE, id 10)
[ 11.512] (II) evdev: DLL05E3:01 06CB:2734: initialized for relative
axes.
[ 11.513] (**) DLL05E3:01 06CB:2734: (accel) keeping acceleration
scheme 1
[ 11.513] (**) DLL05E3:01 06CB:2734: (accel) acceleration profile 0
[ 11.513] (**) DLL05E3:01 06CB:2734: (accel) acceleration factor: 2.000
[ 11.513] (**) DLL05E3:01 06CB:2734: (accel) acceleration threshold: 4
[ 11.513] (II) config/udev: Adding input device DLL05E3:01 06CB:2734
(/dev/input/mouse0)
[ 11.513] (II) No input driver specified, ignoring this device.
[ 11.513] (II) This device may have been added with another device file.
[ 11.513] (II) config/udev: Adding input device ATML1000:00 03EB:842F
(/dev/input/event8)
[ 11.513] (**) ATML1000:00 03EB:842F: Applying InputClass "evdev
touchscreen catchall"
[ 11.513] (II) Using input driver 'evdev' for 'ATML1000:00 03EB:842F'
[ 11.513] (**) ATML1000:00 03EB:842F: always reports core events
[ 11.513] (**) evdev: ATML1000:00 03EB:842F: Device: "/dev/input/event8"
[ 11.514] (--) evdev: ATML1000:00 03EB:842F: Vendor 0x3eb Product 0x842f
[ 11.514] (--) evdev: ATML1000:00 03EB:842F: Found absolute axes
[ 11.514] (--) evdev: ATML1000:00 03EB:842F: Found absolute
multitouch axes
[ 11.514] (--) evdev: ATML1000:00 03EB:842F: Found x and y absolute axes
[ 11.514] (--) evdev: ATML1000:00 03EB:842F: Found absolute touchscreen
[ 11.514] (II) evdev: ATML1000:00 03EB:842F: Configuring as touchscreen
[ 11.514] (**) evdev: ATML1000:00 03EB:842F: YAxisMapping: buttons 4
and 5
[ 11.514] (**) evdev: ATML1000:00 03EB:842F: EmulateWheelButton: 4,
EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[ 11.514] (**) Option "config_info"
"udev:/sys/devices/pci0000:00/INT33C3:00/i2c-8/8-004b/input/input8/event8"
[ 11.514] (II) XINPUT: Adding extended input device "ATML1000:00
03EB:842F" (type: TOUCHSCREEN, id 11)
[ 11.514] (II) evdev: ATML1000:00 03EB:842F: initialized for absolute
axes.
[ 11.514] (**) ATML1000:00 03EB:842F: (accel) keeping acceleration
scheme 1
[ 11.514] (**) ATML1000:00 03EB:842F: (accel) acceleration profile 0
[ 11.514] (**) ATML1000:00 03EB:842F: (accel) acceleration factor: 2.000
[ 11.514] (**) ATML1000:00 03EB:842F: (accel) acceleration threshold: 4
[ 11.515] (II) config/udev: Adding input device ATML1000:00 03EB:842F
(/dev/input/mouse1)
[ 11.515] (II) No input driver specified, ignoring this device.
[ 11.515] (II) This device may have been added with another device file.
[ 11.515] (II) config/udev: Adding input device AT Translated Set 2
keyboard (/dev/input/event3)
[ 11.515] (**) AT Translated Set 2 keyboard: Applying InputClass
"evdev keyboard catchall"
[ 11.515] (II) Using input driver 'evdev' for 'AT Translated Set 2
keyboard'
[ 11.515] (**) AT Translated Set 2 keyboard: always reports core events
[ 11.515] (**) evdev: AT Translated Set 2 keyboard: Device:
"/dev/input/event3"
[ 11.515] (--) evdev: AT Translated Set 2 keyboard: Vendor 0x1
Product 0x1
[ 11.515] (--) evdev: AT Translated Set 2 keyboard: Found keys
[ 11.515] (II) evdev: AT Translated Set 2 keyboard: Configuring as
keyboard
[ 11.515] (**) Option "config_info"
"udev:/sys/devices/platform/i8042/serio0/input/input3/event3"
[ 11.515] (II) XINPUT: Adding extended input device "AT Translated
Set 2 keyboard" (type: KEYBOARD, id 12)
[ 11.515] (**) Option "xkb_rules" "evdev"
[ 11.515] (**) Option "xkb_model" "pc105"
[ 11.515] (**) Option "xkb_layout" "us"
[ 11.515] (**) Option "xkb_variant" "intl"
[ 11.516] (II) config/udev: Adding input device Dell WMI hotkeys
(/dev/input/event6)
[ 11.516] (**) Dell WMI hotkeys: Applying InputClass "evdev keyboard
catchall"
[ 11.516] (II) Using input driver 'evdev' for 'Dell WMI hotkeys'
[ 11.516] (**) Dell WMI hotkeys: always reports core events
[ 11.516] (**) evdev: Dell WMI hotkeys: Device: "/dev/input/event6"
[ 11.516] (--) evdev: Dell WMI hotkeys: Vendor 0 Product 0
[ 11.516] (--) evdev: Dell WMI hotkeys: Found keys
[ 11.516] (II) evdev: Dell WMI hotkeys: Configuring as keyboard
[ 11.516] (**) Option "config_info"
"udev:/sys/devices/virtual/input/input6/event6"
[ 11.516] (II) XINPUT: Adding extended input device "Dell WMI
hotkeys" (type: KEYBOARD, id 13)
[ 11.516] (**) Option "xkb_rules" "evdev"
[ 11.516] (**) Option "xkb_model" "pc105"
[ 11.516] (**) Option "xkb_layout" "us"
[ 11.516] (**) Option "xkb_variant" "intl"
[ 11.793] (II) intel(0): EDID vendor "LGD", prod id 1021
[ 11.793] (II) intel(0): Printing DDC gathered Modelines:
[ 11.793] (II) intel(0): Modeline "1920x1080"x0.0 138.50 1920 1968
2000 2080 1080 1083 1088 1111 +hsync -vsync (66.6 kHz eP)
[ 17.641] (II) XKB: reuse xkmfile
/var/lib/xkb/server-8CD2763E246F7107805A70A0C7DBAC594B3523D9.xkm
[ 18.165] (II) XKB: reuse xkmfile
/var/lib/xkb/server-657D1E36EA86B8E7C9DA9E3D0CE267494DF7D894.xkm
[ 18.168] (II) XKB: reuse xkmfile
/var/lib/xkb/server-657D1E36EA86B8E7C9DA9E3D0CE267494DF7D894.xkm
[ 18.381] (II) XKB: reuse xkmfile
/var/lib/xkb/server-280C0FB5E1610579A23BBD0FBA8EB1281D867EEF.xkm
[ 18.722] (II) XKB: reuse xkmfile
/var/lib/xkb/server-8CD2763E246F7107805A70A0C7DBAC594B3523D9.xkm
[ 18.727] (II) XKB: reuse xkmfile
/var/lib/xkb/server-657D1E36EA86B8E7C9DA9E3D0CE267494DF7D894.xkm
xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave
pointer (2)]
⎜ ↳ DLL05E3:01 06CB:2734 id=10 [slave
pointer (2)]
⎜ ↳ ATML1000:00 03EB:842F id=11 [slave
pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave
keyboard (3)]
↳ Power Button id=6 [slave
keyboard (3)]
↳ Video Bus id=7 [slave
keyboard (3)]
↳ Power Button id=8 [slave
keyboard (3)]
↳ Integrated Webcam id=9 [slave
keyboard (3)]
↳ AT Translated Set 2 keyboard id=12 [slave
keyboard (3)]
↳ Dell WMI hotkeys id=13 [slave
keyboard (3)]
Relevant lines from dmesg
[ 0.000000] Linux version 3.12.0-031200rc3-generic (apw@gomeisa) (gcc
version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #201309291835 SMP Sun Sep
29 22:37:02 UTC 2013
[ 0.000000] Command line:
BOOT_IMAGE=/boot/vmlinuz-3.12.0-031200rc3-generic
root=UUID=8e4879ce-4777-4c48-b6d7-5b3b4b116ad3 ro quiet splash vt.handoff=7
[ 0.000000] DMI: Dell Inc. XPS 12-9Q33/XPS 12-9Q33, BIOS A02 07/26/2013
[ 1.145083] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M]
at 0x60,0x64 irq 1,12
[ 1.169878] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 1.169882] serio: i8042 AUX port at 0x60,0x64 irq 12
[ 1.170063] mousedev: PS/2 mouse device common for all mice
[ 8.636649] ACPI Warning: 0x0000000000001828-0x000000000000182f
SystemIO conflicts with Region \PMIO 1 (20130725/utaddress-251)
[ 8.636656] ACPI: If an ACPI driver is available for this device, you
should use it instead of the native driver
[ 8.636660] ACPI Warning: 0x0000000000001c30-0x0000000000001c3f
SystemIO conflicts with Region \GPRL 1 (20130725/utaddress-251)
[ 8.636664] ACPI Warning: 0x0000000000001c30-0x0000000000001c3f
SystemIO conflicts with Region \GPR_ 2 (20130725/utaddress-251)
[ 8.636667] ACPI: If an ACPI driver is available for this device, you
should use it instead of the native driver
[ 8.636669] ACPI Warning: 0x0000000000001c00-0x0000000000001c2f
SystemIO conflicts with Region \GPRL 1 (20130725/utaddress-251)
[ 8.636672] ACPI Warning: 0x0000000000001c00-0x0000000000001c2f
SystemIO conflicts with Region \GPR_ 2 (20130725/utaddress-251)
[ 8.636675] ACPI: If an ACPI driver is available for this device, you
should use it instead of the native driver
[ 8.636677] lpc_ich: Resource conflict(s) found affecting gpio_ich
[ 8.915773] i2c_hid 8-002c: failed to retrieve report from device.
[ 8.918200] i2c_hid 8-002c: failed to retrieve report from device.
[ 8.918897] i2c_hid 8-002c: failed to retrieve report from device.
[ 8.924053] i2c_hid 8-002c: failed to retrieve report from device.
[ 8.924118] input: DLL05E3:01 06CB:2734 as
/devices/pci0000:00/INT33C3:00/i2c-8/8-002c/input/input7
[ 8.924297] hid-generic 0018:06CB:2734.0003: input,hidraw0: <UNKNOWN>
HID v1.00 Pointer [DLL05E3:01 06CB:2734] on
[ 8.928162] i2c_hid 8-004b: error in i2c_hid_init_report size:20 /
ret_size:0
[ 8.930894] i2c_hid 8-004b: error in i2c_hid_init_report size:20 /
ret_size:0
[ 8.933598] i2c_hid 8-004b: error in i2c_hid_init_report size:13 /
ret_size:0
[ 8.946226] input: ATML1000:00 03EB:842F as
/devices/pci0000:00/INT33C3:00/i2c-8/8-004b/input/input8
[ 8.946815] hid-multitouch 0018:03EB:842F.0002: input,hidraw1:
<UNKNOWN> HID v1.00 Device [ATML1000:00 03EB:842F] on
ls /proc
1 1353 1671 1794 1995 23 304 485 56 922 iomem
sched_debug
10 14 1673 18 2 2334 31 490 57 928 ioports
schedstat
1005 140 1681 1807 20 24 33 493 579 93 irq scsi
1016 141 1683 1821 2002 2456 330 495 629 acpi kallsyms
self
1027 1413 1686 1844 2005 2480 338 496 637 asound kcore
slabinfo
1044 142 1690 1851 2011 2486 34 498 69 buddyinfo key-users
softirqs
1058 143 1692 1853 2021 2487 35 499 7 bus kmsg
stat
1094 15 17 19 2028 25 36 5 718 cgroups kpagecount
swaps
11 1522 1701 192 2029 2557 37 507 73 cmdline kpageflags sys
1142 1566 1720 1920 2034 2562 38 51 765 consoles
latency_stats sysrq-trigger
1155 1568 1738 1922 2044 26 39 510 795 cpuinfo loadavg
sysvipc
1156 16 1748 1924 2048 2668 41 511 8 crypto locks
timer_list
1157 1617 1760 1925 2052 2683 42 513 800 devices mdstat
timer_stats
1158 1619 1761 1928 21 2716 43 514 822 diskstats meminfo
tty
1189 1633 1762 193 2186 2738 44 52 832 dma misc
uptime
12 1639 1763 1931 2194 2765 45 528 834 driver modules
version
1200 1645 1765 194 2201 2767 457 529 9 execdomains mounts
vmallocinfo
1214 1658 1781 1945 2207 28 46 53 900 fb mtrr
vmstat
1261 1661 1785 1948 2215 29 467 531 908 filesystems net
zoneinfo
1292 1664 1786 1965 2232 3 47 54 919 fs pagetypeinfo
13 1666 1787 1976 2284 30 483 55 92 interrupts partitions
[X.] Other notes, patches, fixes, workarounds:
Downstream Launchpad bug report:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1218973
After blacklisting i2c_hid this is my xinput list:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave
pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [slave
pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave
keyboard (3)]
↳ Power Button id=6 [slave
keyboard (3)]
↳ Video Bus id=7 [slave
keyboard (3)]
↳ Power Button id=8 [slave
keyboard (3)]
↳ Integrated Webcam id=9 [slave
keyboard (3)]
↳ AT Translated Set 2 keyboard id=10 [slave
keyboard (3)]
↳ Dell WMI hotkeys id=12 [slave
keyboard (3)]
As you can see, the touchpad is no longer called "DLL05E3:01 06CB:2734".
However, touchscreen "ATML1000:00 03EB:842F" is missing now.
Thank you for your time.
--
Wouter van der Graaf
--
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: [RFC] Input: introduce ABS_MAX2/CNT2 and friends
From: Peter Hutterer @ 2013-10-07 1:30 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: David Herrmann, linux-input, Henrik Rydberg, Benjamin Tissoires,
Jiri Kosina, linux-kernel
In-Reply-To: <f37ea673-a597-4dd2-88b4-bf190d8eeff5@email.android.com>
On Sun, Oct 06, 2013 at 05:04:36PM -0700, Dmitry Torokhov wrote:
> Peter Hutterer <peter.hutterer@who-t.net> wrote:
> >On Sun, Oct 06, 2013 at 12:47:00AM -0700, Dmitry Torokhov wrote:
> >> On Fri, Oct 04, 2013 at 09:32:23AM +1000, Peter Hutterer wrote:
> >> > On Thu, Oct 03, 2013 at 12:10:36AM +0200, David Herrmann wrote:
> >> > > As we painfully noticed during the 3.12 merge-window our
> >> > > EVIOCGABS/EVIOCSABS API is limited to ABS_MAX<=0x3f. We tried
> >several
> >> > > hacks to work around it but if we ever decide to increase
> >ABS_MAX, the
> >> > > EVIOCSABS ioctl ABI might overflow into the next byte causing
> >horrible
> >> > > misinterpretations in the kernel that we cannot catch.
> >> > >
> >> > > Therefore, we decided to go with ABS_MAX2/CNT2 and introduce two
> >new
> >> > > ioctls to get/set abs-params. They no longer encode the ABS code
> >in the
> >> > > ioctl number and thus allow up to 4 billion ABS codes.
> >> > >
> >> > > Unfortunately, the uinput API also hard-coded the ABS_CNT value
> >in its
> >> > > ABI. To avoid any hacks in uinput, we simply introduce a new
> >> > > uinput_user_dev2 to replace the old one. The new API allows
> >growing
> >> > > ABS_CNT2 values without any API changes.
> >> > >
> >> > > Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
> >> > > ---
> >> > > Hi
> >> > >
> >> > > This is only compile-tested but I wanted to get a first revision
> >out to let
> >> > > people know what we're working on. Unfortunately, the ABS API has
> >this horribly
> >> > > low ABS_MAX limit and we couldn't figure out a way to increase it
> >while keeping
> >> > > ABI compatibility.
> >> > >
> >> > > Any feedback and review is welcome. And if anyone spots ABI
> >breakage by this
> >> > > patch, please let me know. If nothing comes up I will patch
> >libevdev to use the
> >> > > new API, write some extensive test-cases and push this forward.
> >> > >
> >> > > As a sidenote: I didn't modify joydev to use the new values.
> >Fortunately, the
> >> > > joydev API would allow switching to ABS_CNT2 without breaking
> >API, but it would
> >> > > limit the new ABS_CNT2 to 16k. This is quite high but nothing
> >compared to the
> >> > > 2^32 that we can theoretically support now. If you think 16k
> >ought to be enough
> >> > > (probably?) I can adjust the joydev API, too.
> >> > > All other kernel users were converted to the new values. Nothing
> >left behind..
> >> >
> >> >
> >> > just a comment from skimming the patch:
> >> > if you need a new uinput abi anyway, can we add the resolution
> >here? it's
> >> > sorely needed for some tests. see also the patch Benjamin sent a
> >while ago
> >> > ("input/uinput: support abs resolution", July 15 2013)
> >>
> >> Indeed. Also, while we are at it, would it make sense to allow
> >> requesting a range of ABS infos at once?
> >
> >yes, but what API did you have in mind?
> >
>
> I was thinking about specifying the start ABS but and the count and array of absinfo structures to be filled.
yeah, that works for me (I suspect 90% of users will use ABS_MAX anyway :)
Cheers,
Peter
^ permalink raw reply
* Re: [RFC] Input: introduce ABS_MAX2/CNT2 and friends
From: Dmitry Torokhov @ 2013-10-07 0:04 UTC (permalink / raw)
To: Peter Hutterer
Cc: David Herrmann, linux-input, Henrik Rydberg, Benjamin Tissoires,
Jiri Kosina, linux-kernel
In-Reply-To: <20131006231955.GA26952@yabbi.redhat.com>
Peter Hutterer <peter.hutterer@who-t.net> wrote:
>On Sun, Oct 06, 2013 at 12:47:00AM -0700, Dmitry Torokhov wrote:
>> On Fri, Oct 04, 2013 at 09:32:23AM +1000, Peter Hutterer wrote:
>> > On Thu, Oct 03, 2013 at 12:10:36AM +0200, David Herrmann wrote:
>> > > As we painfully noticed during the 3.12 merge-window our
>> > > EVIOCGABS/EVIOCSABS API is limited to ABS_MAX<=0x3f. We tried
>several
>> > > hacks to work around it but if we ever decide to increase
>ABS_MAX, the
>> > > EVIOCSABS ioctl ABI might overflow into the next byte causing
>horrible
>> > > misinterpretations in the kernel that we cannot catch.
>> > >
>> > > Therefore, we decided to go with ABS_MAX2/CNT2 and introduce two
>new
>> > > ioctls to get/set abs-params. They no longer encode the ABS code
>in the
>> > > ioctl number and thus allow up to 4 billion ABS codes.
>> > >
>> > > Unfortunately, the uinput API also hard-coded the ABS_CNT value
>in its
>> > > ABI. To avoid any hacks in uinput, we simply introduce a new
>> > > uinput_user_dev2 to replace the old one. The new API allows
>growing
>> > > ABS_CNT2 values without any API changes.
>> > >
>> > > Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
>> > > ---
>> > > Hi
>> > >
>> > > This is only compile-tested but I wanted to get a first revision
>out to let
>> > > people know what we're working on. Unfortunately, the ABS API has
>this horribly
>> > > low ABS_MAX limit and we couldn't figure out a way to increase it
>while keeping
>> > > ABI compatibility.
>> > >
>> > > Any feedback and review is welcome. And if anyone spots ABI
>breakage by this
>> > > patch, please let me know. If nothing comes up I will patch
>libevdev to use the
>> > > new API, write some extensive test-cases and push this forward.
>> > >
>> > > As a sidenote: I didn't modify joydev to use the new values.
>Fortunately, the
>> > > joydev API would allow switching to ABS_CNT2 without breaking
>API, but it would
>> > > limit the new ABS_CNT2 to 16k. This is quite high but nothing
>compared to the
>> > > 2^32 that we can theoretically support now. If you think 16k
>ought to be enough
>> > > (probably?) I can adjust the joydev API, too.
>> > > All other kernel users were converted to the new values. Nothing
>left behind..
>> >
>> >
>> > just a comment from skimming the patch:
>> > if you need a new uinput abi anyway, can we add the resolution
>here? it's
>> > sorely needed for some tests. see also the patch Benjamin sent a
>while ago
>> > ("input/uinput: support abs resolution", July 15 2013)
>>
>> Indeed. Also, while we are at it, would it make sense to allow
>> requesting a range of ABS infos at once?
>
>yes, but what API did you have in mind?
>
I was thinking about specifying the start ABS but and the count and array of absinfo structures to be filled.
Thanks.
--
Dmitry
^ permalink raw reply
* Re: [RFC] Input: introduce ABS_MAX2/CNT2 and friends
From: Peter Hutterer @ 2013-10-06 23:19 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: David Herrmann, linux-input, Henrik Rydberg, Benjamin Tissoires,
Jiri Kosina, linux-kernel
In-Reply-To: <20131006074700.GA19155@core.coreip.homeip.net>
On Sun, Oct 06, 2013 at 12:47:00AM -0700, Dmitry Torokhov wrote:
> On Fri, Oct 04, 2013 at 09:32:23AM +1000, Peter Hutterer wrote:
> > On Thu, Oct 03, 2013 at 12:10:36AM +0200, David Herrmann wrote:
> > > As we painfully noticed during the 3.12 merge-window our
> > > EVIOCGABS/EVIOCSABS API is limited to ABS_MAX<=0x3f. We tried several
> > > hacks to work around it but if we ever decide to increase ABS_MAX, the
> > > EVIOCSABS ioctl ABI might overflow into the next byte causing horrible
> > > misinterpretations in the kernel that we cannot catch.
> > >
> > > Therefore, we decided to go with ABS_MAX2/CNT2 and introduce two new
> > > ioctls to get/set abs-params. They no longer encode the ABS code in the
> > > ioctl number and thus allow up to 4 billion ABS codes.
> > >
> > > Unfortunately, the uinput API also hard-coded the ABS_CNT value in its
> > > ABI. To avoid any hacks in uinput, we simply introduce a new
> > > uinput_user_dev2 to replace the old one. The new API allows growing
> > > ABS_CNT2 values without any API changes.
> > >
> > > Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
> > > ---
> > > Hi
> > >
> > > This is only compile-tested but I wanted to get a first revision out to let
> > > people know what we're working on. Unfortunately, the ABS API has this horribly
> > > low ABS_MAX limit and we couldn't figure out a way to increase it while keeping
> > > ABI compatibility.
> > >
> > > Any feedback and review is welcome. And if anyone spots ABI breakage by this
> > > patch, please let me know. If nothing comes up I will patch libevdev to use the
> > > new API, write some extensive test-cases and push this forward.
> > >
> > > As a sidenote: I didn't modify joydev to use the new values. Fortunately, the
> > > joydev API would allow switching to ABS_CNT2 without breaking API, but it would
> > > limit the new ABS_CNT2 to 16k. This is quite high but nothing compared to the
> > > 2^32 that we can theoretically support now. If you think 16k ought to be enough
> > > (probably?) I can adjust the joydev API, too.
> > > All other kernel users were converted to the new values. Nothing left behind..
> >
> >
> > just a comment from skimming the patch:
> > if you need a new uinput abi anyway, can we add the resolution here? it's
> > sorely needed for some tests. see also the patch Benjamin sent a while ago
> > ("input/uinput: support abs resolution", July 15 2013)
>
> Indeed. Also, while we are at it, would it make sense to allow
> requesting a range of ABS infos at once?
yes, but what API did you have in mind?
Cheers,
Peter
^ permalink raw reply
* [PATCH 1/1] HID: wiimote: invert Y-Axis and add automatic calibration for Wii U Pro Controller
From: Rafael Brune @ 2013-10-06 18:44 UTC (permalink / raw)
To: linux-input; +Cc: Rafael Brune
With these changes the Wii U Pro Controller fully complies
to the gamepad-API and with the calibration is fully usable
out-of-the-box without any user-space tools. This potentially
breaks compatibility with software that relies on the two
inverted Y-Axis but since current bluez 4.x and 5.x versions
don't even support pairing with the controller yet the amount
of people affected should be rather small.
Signed-off-by: Rafael Brune <mail@rbrune.de>
---
drivers/hid/hid-wiimote-modules.c | 45 +++++++++++++++++++++++++++++++++++----
1 file changed, 41 insertions(+), 4 deletions(-)
diff --git a/drivers/hid/hid-wiimote-modules.c b/drivers/hid/hid-wiimote-modules.c
index 2e7d644..1422b0b 100644
--- a/drivers/hid/hid-wiimote-modules.c
+++ b/drivers/hid/hid-wiimote-modules.c
@@ -1640,10 +1640,41 @@ static void wiimod_pro_in_ext(struct wiimote_data *wdata, const __u8 *ext)
ly = (ext[4] & 0xff) | ((ext[5] & 0x0f) << 8);
ry = (ext[6] & 0xff) | ((ext[7] & 0x0f) << 8);
- input_report_abs(wdata->extension.input, ABS_X, lx - 0x800);
- input_report_abs(wdata->extension.input, ABS_Y, ly - 0x800);
- input_report_abs(wdata->extension.input, ABS_RX, rx - 0x800);
- input_report_abs(wdata->extension.input, ABS_RY, ry - 0x800);
+ /* Calibrating the sticks by saving the global min/max per axis */
+ if (lx < wdata->state.calib_bboard[0][0])
+ wdata->state.calib_bboard[0][0] = lx;
+ if (lx > wdata->state.calib_bboard[0][1])
+ wdata->state.calib_bboard[0][1] = lx;
+
+ if (ly < wdata->state.calib_bboard[1][0])
+ wdata->state.calib_bboard[1][0] = ly;
+ if (ly > wdata->state.calib_bboard[1][1])
+ wdata->state.calib_bboard[1][1] = ly;
+
+ if (rx < wdata->state.calib_bboard[2][0])
+ wdata->state.calib_bboard[2][0] = rx;
+ if (rx > wdata->state.calib_bboard[2][1])
+ wdata->state.calib_bboard[2][1] = rx;
+
+ if (ry < wdata->state.calib_bboard[3][0])
+ wdata->state.calib_bboard[3][0] = ry;
+ if (ry > wdata->state.calib_bboard[3][1])
+ wdata->state.calib_bboard[3][1] = ry;
+
+ /* Normalize using int math to prevent conversion to/from float */
+ lx = -2048 + (((__s32)(lx - wdata->state.calib_bboard[0][0]) * 4096)/
+ (wdata->state.calib_bboard[0][1]-wdata->state.calib_bboard[0][0]));
+ ly = -2048 + (((__s32)(ly - wdata->state.calib_bboard[1][0]) * 4096)/
+ (wdata->state.calib_bboard[1][1]-wdata->state.calib_bboard[1][0]));
+ rx = -2048 + (((__s32)(rx - wdata->state.calib_bboard[2][0]) * 4096)/
+ (wdata->state.calib_bboard[2][1]-wdata->state.calib_bboard[2][0]));
+ ry = -2048 + (((__s32)(ry - wdata->state.calib_bboard[3][0]) * 4096)/
+ (wdata->state.calib_bboard[3][1]-wdata->state.calib_bboard[3][0]));
+
+ input_report_abs(wdata->extension.input, ABS_X, lx);
+ input_report_abs(wdata->extension.input, ABS_Y, -ly);
+ input_report_abs(wdata->extension.input, ABS_RX, rx);
+ input_report_abs(wdata->extension.input, ABS_RY, -ry);
input_report_key(wdata->extension.input,
wiimod_pro_map[WIIMOD_PRO_KEY_RIGHT],
@@ -1760,6 +1791,12 @@ static int wiimod_pro_probe(const struct wiimod_ops *ops,
if (!wdata->extension.input)
return -ENOMEM;
+ /* Initialize min/max values for all Axis with reasonable values */
+ for (i = 0; i < 4; ++i) {
+ wdata->state.calib_bboard[i][0] = 0x780;
+ wdata->state.calib_bboard[i][1] = 0x880;
+ }
+
set_bit(FF_RUMBLE, wdata->extension.input->ffbit);
input_set_drvdata(wdata->extension.input, wdata);
--
1.8.3.2
^ permalink raw reply related
* Re: [RFC] Input: introduce ABS_MAX2/CNT2 and friends
From: Dmitry Torokhov @ 2013-10-06 7:47 UTC (permalink / raw)
To: Peter Hutterer
Cc: David Herrmann, linux-input, Henrik Rydberg, Benjamin Tissoires,
Jiri Kosina, linux-kernel
In-Reply-To: <20131003233223.GA21255@yabbi.bne.redhat.com>
On Fri, Oct 04, 2013 at 09:32:23AM +1000, Peter Hutterer wrote:
> On Thu, Oct 03, 2013 at 12:10:36AM +0200, David Herrmann wrote:
> > As we painfully noticed during the 3.12 merge-window our
> > EVIOCGABS/EVIOCSABS API is limited to ABS_MAX<=0x3f. We tried several
> > hacks to work around it but if we ever decide to increase ABS_MAX, the
> > EVIOCSABS ioctl ABI might overflow into the next byte causing horrible
> > misinterpretations in the kernel that we cannot catch.
> >
> > Therefore, we decided to go with ABS_MAX2/CNT2 and introduce two new
> > ioctls to get/set abs-params. They no longer encode the ABS code in the
> > ioctl number and thus allow up to 4 billion ABS codes.
> >
> > Unfortunately, the uinput API also hard-coded the ABS_CNT value in its
> > ABI. To avoid any hacks in uinput, we simply introduce a new
> > uinput_user_dev2 to replace the old one. The new API allows growing
> > ABS_CNT2 values without any API changes.
> >
> > Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
> > ---
> > Hi
> >
> > This is only compile-tested but I wanted to get a first revision out to let
> > people know what we're working on. Unfortunately, the ABS API has this horribly
> > low ABS_MAX limit and we couldn't figure out a way to increase it while keeping
> > ABI compatibility.
> >
> > Any feedback and review is welcome. And if anyone spots ABI breakage by this
> > patch, please let me know. If nothing comes up I will patch libevdev to use the
> > new API, write some extensive test-cases and push this forward.
> >
> > As a sidenote: I didn't modify joydev to use the new values. Fortunately, the
> > joydev API would allow switching to ABS_CNT2 without breaking API, but it would
> > limit the new ABS_CNT2 to 16k. This is quite high but nothing compared to the
> > 2^32 that we can theoretically support now. If you think 16k ought to be enough
> > (probably?) I can adjust the joydev API, too.
> > All other kernel users were converted to the new values. Nothing left behind..
>
>
> just a comment from skimming the patch:
> if you need a new uinput abi anyway, can we add the resolution here? it's
> sorely needed for some tests. see also the patch Benjamin sent a while ago
> ("input/uinput: support abs resolution", July 15 2013)
Indeed. Also, while we are at it, would it make sense to allow
requesting a range of ABS infos at once?
--
Dmitry
^ permalink raw reply
* [Review PATCH 5/7] si4713 : HID blacklist Si4713 USB development board
From: Dinesh Ram @ 2013-10-05 20:58 UTC (permalink / raw)
To: dinesh.superman2006; +Cc: Dinesh Ram, Jiri Kosina, linux-input
In-Reply-To: <89ec888fdb63c693bd8cea96ae5ad008391e866b.1381006700.git.dinesh.ram@cern.ch>
From: Dinesh Ram <dinram@cisco.com>
The Si4713 development board contains a Si4713 FM transmitter chip
and is handled by the radio-usb-si4713 driver.
The board reports itself as (10c4:8244) Cygnal Integrated Products, Inc.
and misidentifies itself as a HID device in its USB interface descriptor.
This patch ignores this device as an HID device and hence loads the custom driver.
Signed-off-by: Dinesh Ram <dinram@cisco.com>
Cc: Jiri Kosina <jkosina@suse.cz>
Cc: linux-input@vger.kernel.org
---
drivers/hid/hid-core.c | 1 +
drivers/hid/hid-ids.h | 2 ++
2 files changed, 3 insertions(+)
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index b8470b1..81b9b44 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -2106,6 +2106,7 @@ static const struct hid_device_id hid_ignore_list[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD) },
{ HID_USB_DEVICE(USB_VENDOR_ID_CIDC, 0x0103) },
{ HID_USB_DEVICE(USB_VENDOR_ID_CYGNAL, USB_DEVICE_ID_CYGNAL_RADIO_SI470X) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_CYGNAL, USB_DEVICE_ID_CYGNAL_RADIO_SI4713) },
{ HID_USB_DEVICE(USB_VENDOR_ID_CMEDIA, USB_DEVICE_ID_CM109) },
{ HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_HIDCOM) },
{ HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_ULTRAMOUSE) },
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index e60e8d5..1cdd34a 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -241,6 +241,8 @@
#define USB_VENDOR_ID_CYGNAL 0x10c4
#define USB_DEVICE_ID_CYGNAL_RADIO_SI470X 0x818a
+#define USB_DEVICE_ID_CYGNAL_RADIO_SI4713 0x8244
+
#define USB_VENDOR_ID_CYPRESS 0x04b4
#define USB_DEVICE_ID_CYPRESS_MOUSE 0x0001
#define USB_DEVICE_ID_CYPRESS_HIDCOM 0x5500
--
1.7.9.5
^ permalink raw reply related
* [PATCH 2/2] Input: wacom - add support for three new Intuos devices
From: Ping Cheng @ 2013-10-04 18:15 UTC (permalink / raw)
To: linux-input
On Fri, Oct 4, 2013 at 9:47 AM, Jason Gerecke <killertofu@gmail.com> wrote:
>
> On Thu, Oct 3, 2013 at 2:54 PM, Dmitry Torokhov
> <dmitry.torokhov@gmail.com> wrote:
> > On Thursday, October 03, 2013 01:53:10 PM Ping Cheng wrote:
> >> This series of models added a hardware switch to turn touch
> >> data on/off. To report the state of the switch, SW_TOUCH_ENABLED
> >> is added in include/uapi/linux/input.h.
> >
> >
> > Hmm, should we just postpone creating of input device until touch is enabled
> > instead?
> >
> > --
> > Dmitry
> > --
>
> The idea of SW_TOUCH_ENABLED is to allow userspace to be a bit more
> helpful and display a "disabled" message rather than disappearing the
> device entirely when the switch is 'off'. In theory this could also be
> achieved through the libwacom support library (by scanning the list of
> event devices to see if any of the expected interfaces are missing),
> but the approach is somewhat fragile and I'm not convinced that
> linking the switch to device creation/removal is correct.
Good point, Jason. I thought Dmitry suggested to have SW_TOUCH_ENABLED
accepted before adding new devices. My misunderstanding did bring nice
feedbacks from Chris and Peter. Thank you guys.
Dmitry,
If you meant to check the status of the touch switch before creating
touch interface, that would also mean we need to delete the interface
if the switch is turned off. Otherwise, we are not supporting it
consistently. However, the switch is only an indicator of whether
tablet will post touch events or not. The actual touch device is not
removed. It is always there and connected to the system no matter what
state the switch is in. So, dynamically creating and removal of touch
interface can complicate user land support.
Does this make sense to you?
Ping
^ permalink raw reply
* Re: [PATCH 2/2] Input: wacom - add support for three new Intuos devices
From: Jason Gerecke @ 2013-10-04 16:47 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: Ping Cheng, Linux Input, Chris Bagwell, Ping Cheng
In-Reply-To: <2980943.RVh73cvMGD@dtor-d630.eng.vmware.com>
On Thu, Oct 3, 2013 at 2:54 PM, Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
> On Thursday, October 03, 2013 01:53:10 PM Ping Cheng wrote:
>> This series of models added a hardware switch to turn touch
>> data on/off. To report the state of the switch, SW_TOUCH_ENABLED
>> is added in include/uapi/linux/input.h.
>
>
> Hmm, should we just postpone creating of input device until touch is enabled
> instead?
>
> --
> Dmitry
> --
The idea of SW_TOUCH_ENABLED is to allow userspace to be a bit more
helpful and display a "disabled" message rather than disappearing the
device entirely when the switch is 'off'. In theory this could also be
achieved through the libwacom support library (by scanning the list of
event devices to see if any of the expected interfaces are missing),
but the approach is somewhat fragile and I'm not convinced that
linking the switch to device creation/removal is correct.
Jason
---
Now instead of four in the eights place /
you’ve got three, ‘Cause you added one /
(That is to say, eight) to the two, /
But you can’t take seven from three, /
So you look at the sixty-fours....
--
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 v2 2/2] input: rotary-encoder: Add 'on-each-step' to binding documentation
From: Ezequiel Garcia @ 2013-10-04 14:09 UTC (permalink / raw)
To: Mark Rutland
Cc: Ezequiel Garcia, linux-kernel@vger.kernel.org,
linux-input@vger.kernel.org, Daniel Mack, Dmitry Torokhov,
rob.herring@calxeda.com, devicetree
In-Reply-To: <20131004131956.GE6999@e106331-lin.cambridge.arm.com>
On Fri, Oct 04, 2013 at 02:19:56PM +0100, Mark Rutland wrote:
> On Fri, Oct 04, 2013 at 01:53:23PM +0100, Ezequiel Garcia wrote:
> > The driver now supports a new mode to handle the interruptions generated
> > by the device: on this new mode an input event is generated on each step
> > (i.e. on each IRQ). Therefore, add a new DT property, to select the
> > mode: 'rotary-encoder,on-each-step'.
> >
> > Cc: Daniel Mack <zonque@gmail.com>
> > Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> > Cc: Rob Herring <rob.herring@calxeda.com>
> > Cc: devicetree@vger.kernel.org
> > Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
> > ---
> > I'm not at all happy with this DT binding as it's way to customized
> > for the current driver. For instance, if we want to support mapping
> > key events (or better arbitrary linux-input event types) it seems
> > there's no easy way to fix the binding.
> >
> > Maybe a better way of handling the different 'modes' is through
> > compatible strings?
>
> I'd prefer not to have more pseudo-devices in DT, and would prefer not
> to have compatible strings that boil down to driver options. We end up
> just embedding a tonne of Linux-specific driver configuration in the DT
> rather than describing hardware.
>
> That said, I'm not sure what the best solution is here.
>
> >
> > I'm not really sure, so I hope the DT guys have some comment on this.
> >
> > Documentation/devicetree/bindings/input/rotary-encoder.txt | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/Documentation/devicetree/bindings/input/rotary-encoder.txt b/Documentation/devicetree/bindings/input/rotary-encoder.txt
> > index 3315495..b89e38d 100644
> > --- a/Documentation/devicetree/bindings/input/rotary-encoder.txt
> > +++ b/Documentation/devicetree/bindings/input/rotary-encoder.txt
> > @@ -15,6 +15,7 @@ Optional properties:
> > - rotary-encoder,rollover: Automatic rollove when the rotary value becomes
> > greater than the specified steps or smaller than 0. For absolute axis only.
> > - rotary-encoder,half-period: Makes the driver work on half-period mode.
> > +- rotary-encoder,on-each-step: Makes the driver send an event on each step.
>
> Could this not be something requested at runtime?
>
Sure. The different modes:
* default (no option)
* rotary-encoder,half-period
* rotary-encoder,on-each-step
Just map to different interruption handlers. I don't have any other
rotary-encoder device, so I'm not at all sure what's the use of the
other two cases.
My particular device is detented, and produces a 'stable' event on each
step (i.e on each IRQ).
Regarding the runtime specification: you mean as a module parameter?
That should be trivial to add, no?
> Could you explain what you want to achieve with this? -- what events do
> you want to occur when, to be handled in what way?
>
Hm.. maybe I should have added the binding to the 1/2 patch and CCed
everybody involved for better context.
Anyway, I hope the above is clearer, I'm not really sure how to specify
the details in the DT binding, since it's a specific interruption handler
for this class of encoder devices (stable on each step).
That said, I really hope I'm crafting a generic solution and not some
tailor-made implementation that just happens to match my use case.
The input maintainer's opinion on this would be valuable.
--
Ezequiel García, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
--
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 v2 2/2] input: rotary-encoder: Add 'on-each-step' to binding documentation
From: Mark Rutland @ 2013-10-04 13:19 UTC (permalink / raw)
To: Ezequiel Garcia
Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
Daniel Mack, Dmitry Torokhov, rob.herring@calxeda.com,
devicetree@vger.kernel.org
In-Reply-To: <1380891203-17617-3-git-send-email-ezequiel@vanguardiasur.com.ar>
On Fri, Oct 04, 2013 at 01:53:23PM +0100, Ezequiel Garcia wrote:
> The driver now supports a new mode to handle the interruptions generated
> by the device: on this new mode an input event is generated on each step
> (i.e. on each IRQ). Therefore, add a new DT property, to select the
> mode: 'rotary-encoder,on-each-step'.
>
> Cc: Daniel Mack <zonque@gmail.com>
> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> Cc: Rob Herring <rob.herring@calxeda.com>
> Cc: devicetree@vger.kernel.org
> Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
> ---
> I'm not at all happy with this DT binding as it's way to customized
> for the current driver. For instance, if we want to support mapping
> key events (or better arbitrary linux-input event types) it seems
> there's no easy way to fix the binding.
>
> Maybe a better way of handling the different 'modes' is through
> compatible strings?
I'd prefer not to have more pseudo-devices in DT, and would prefer not
to have compatible strings that boil down to driver options. We end up
just embedding a tonne of Linux-specific driver configuration in the DT
rather than describing hardware.
That said, I'm not sure what the best solution is here.
>
> I'm not really sure, so I hope the DT guys have some comment on this.
>
> Documentation/devicetree/bindings/input/rotary-encoder.txt | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/Documentation/devicetree/bindings/input/rotary-encoder.txt b/Documentation/devicetree/bindings/input/rotary-encoder.txt
> index 3315495..b89e38d 100644
> --- a/Documentation/devicetree/bindings/input/rotary-encoder.txt
> +++ b/Documentation/devicetree/bindings/input/rotary-encoder.txt
> @@ -15,6 +15,7 @@ Optional properties:
> - rotary-encoder,rollover: Automatic rollove when the rotary value becomes
> greater than the specified steps or smaller than 0. For absolute axis only.
> - rotary-encoder,half-period: Makes the driver work on half-period mode.
> +- rotary-encoder,on-each-step: Makes the driver send an event on each step.
Could this not be something requested at runtime?
Could you explain what you want to achieve with this? -- what events do
you want to occur when, to be handled in what way?
Cheers,
Mark.
^ permalink raw reply
* Re: [PATCH v2 1/2] Input: rotary-encoder: Add 'stepped' irq handler
From: Daniel Mack @ 2013-10-04 13:18 UTC (permalink / raw)
To: Ezequiel Garcia; +Cc: linux-kernel, linux-input, Dmitry Torokhov
In-Reply-To: <1380891203-17617-2-git-send-email-ezequiel@vanguardiasur.com.ar>
On 04.10.2013 14:53, Ezequiel Garcia wrote:
> Some rotary-encoder devices (such as those with detents) are capable
> of producing a stable event on each step. This commit adds support
> for this case, by implementing a new interruption handler.
>
> The handler needs only detect the direction of the turn and generate
> an event according to this detection.
I think you can squash patch 2/2 into this one. It doesn't make much
sense to have a one-liner patch to just update the documenation separately.
Other than that, the code looks fine to me.
Acked-by: Daniel Mack <zonque@gmail.com>
Thanks,
Daniel
>
> Cc: Daniel Mack <zonque@gmail.com>
> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
> ---
> v1->v2:
> * Add DT property handling
> * Replace binary representation by hexa-decimal in the sum encoding
>
> drivers/input/misc/rotary_encoder.c | 41 +++++++++++++++++++++++++++++++++++++
> include/linux/rotary_encoder.h | 1 +
> 2 files changed, 42 insertions(+)
>
> diff --git a/drivers/input/misc/rotary_encoder.c b/drivers/input/misc/rotary_encoder.c
> index 5b1aff8..6c7a554 100644
> --- a/drivers/input/misc/rotary_encoder.c
> +++ b/drivers/input/misc/rotary_encoder.c
> @@ -117,6 +117,42 @@ static irqreturn_t rotary_encoder_irq(int irq, void *dev_id)
> return IRQ_HANDLED;
> }
>
> +static irqreturn_t rotary_encoder_stepped_irq(int irq, void *dev_id)
> +{
> + struct rotary_encoder *encoder = dev_id;
> + int state;
> + unsigned char sum;
> +
> + state = rotary_encoder_get_state(encoder->pdata);
> +
> + /*
> + * We encode the previous and the current state using a byte.
> + * The previous state in the MSB nibble, the current state in the LSB
> + * nibble. Then use a table to decide the direction of the turn.
> + */
> + sum = (encoder->last_stable << 4) + state;
> + switch (sum) {
> + case 0x31:
> + case 0x10:
> + case 0x02:
> + case 0x23:
> + encoder->dir = 0; /* clockwise */
> + break;
> + /*
> + * TODO: Add the other case, and the illegal values should
> + * say a WARN (it's a BUG, but we won't stop the kernel for it :)
> + */
> + default:
> + encoder->dir = 1;
> + }
> +
> + rotary_encoder_report_event(encoder);
> +
> + encoder->last_stable = state;
> +
> + return IRQ_HANDLED;
> +}
> +
> static irqreturn_t rotary_encoder_half_period_irq(int irq, void *dev_id)
> {
> struct rotary_encoder *encoder = dev_id;
> @@ -180,6 +216,8 @@ static struct rotary_encoder_platform_data *rotary_encoder_parse_dt(struct devic
> "rotary-encoder,rollover", NULL);
> pdata->half_period = !!of_get_property(np,
> "rotary-encoder,half-period", NULL);
> + pdata->on_each_step = !!of_get_property(np,
> + "rotary-encoder,on-each-step", NULL);
>
> return pdata;
> }
> @@ -254,6 +292,9 @@ static int rotary_encoder_probe(struct platform_device *pdev)
> if (pdata->half_period) {
> handler = &rotary_encoder_half_period_irq;
> encoder->last_stable = rotary_encoder_get_state(pdata);
> + } else if (pdata->on_each_step) {
> + handler = &rotary_encoder_stepped_irq;
> + encoder->last_stable = rotary_encoder_get_state(pdata);
> } else {
> handler = &rotary_encoder_irq;
> }
> diff --git a/include/linux/rotary_encoder.h b/include/linux/rotary_encoder.h
> index 3f594dc..499f6f7 100644
> --- a/include/linux/rotary_encoder.h
> +++ b/include/linux/rotary_encoder.h
> @@ -11,6 +11,7 @@ struct rotary_encoder_platform_data {
> bool relative_axis;
> bool rollover;
> bool half_period;
> + bool on_each_step;
> };
>
> #endif /* __ROTARY_ENCODER_H__ */
>
^ permalink raw reply
* [PATCH v2 2/2] input: rotary-encoder: Add 'on-each-step' to binding documentation
From: Ezequiel Garcia @ 2013-10-04 12:53 UTC (permalink / raw)
To: linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-input-u79uwXL29TY76Z2rM5mHXA
Cc: Ezequiel Garcia, Daniel Mack, Dmitry Torokhov, Rob Herring,
devicetree-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1380891203-17617-1-git-send-email-ezequiel-30ULvvUtt6G51wMPkGsGjgyUoB5FGQPZ@public.gmane.org>
The driver now supports a new mode to handle the interruptions generated
by the device: on this new mode an input event is generated on each step
(i.e. on each IRQ). Therefore, add a new DT property, to select the
mode: 'rotary-encoder,on-each-step'.
Cc: Daniel Mack <zonque-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Dmitry Torokhov <dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Signed-off-by: Ezequiel Garcia <ezequiel-30ULvvUtt6G51wMPkGsGjgyUoB5FGQPZ@public.gmane.org>
---
I'm not at all happy with this DT binding as it's way to customized
for the current driver. For instance, if we want to support mapping
key events (or better arbitrary linux-input event types) it seems
there's no easy way to fix the binding.
Maybe a better way of handling the different 'modes' is through
compatible strings?
I'm not really sure, so I hope the DT guys have some comment on this.
Documentation/devicetree/bindings/input/rotary-encoder.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/input/rotary-encoder.txt b/Documentation/devicetree/bindings/input/rotary-encoder.txt
index 3315495..b89e38d 100644
--- a/Documentation/devicetree/bindings/input/rotary-encoder.txt
+++ b/Documentation/devicetree/bindings/input/rotary-encoder.txt
@@ -15,6 +15,7 @@ Optional properties:
- rotary-encoder,rollover: Automatic rollove when the rotary value becomes
greater than the specified steps or smaller than 0. For absolute axis only.
- rotary-encoder,half-period: Makes the driver work on half-period mode.
+- rotary-encoder,on-each-step: Makes the driver send an event on each step.
See Documentation/input/rotary-encoder.txt for more information.
--
1.8.1.5
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related
* [PATCH v2 1/2] Input: rotary-encoder: Add 'stepped' irq handler
From: Ezequiel Garcia @ 2013-10-04 12:53 UTC (permalink / raw)
To: linux-kernel, linux-input; +Cc: Ezequiel Garcia, Daniel Mack, Dmitry Torokhov
In-Reply-To: <1380891203-17617-1-git-send-email-ezequiel@vanguardiasur.com.ar>
Some rotary-encoder devices (such as those with detents) are capable
of producing a stable event on each step. This commit adds support
for this case, by implementing a new interruption handler.
The handler needs only detect the direction of the turn and generate
an event according to this detection.
Cc: Daniel Mack <zonque@gmail.com>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
---
v1->v2:
* Add DT property handling
* Replace binary representation by hexa-decimal in the sum encoding
drivers/input/misc/rotary_encoder.c | 41 +++++++++++++++++++++++++++++++++++++
include/linux/rotary_encoder.h | 1 +
2 files changed, 42 insertions(+)
diff --git a/drivers/input/misc/rotary_encoder.c b/drivers/input/misc/rotary_encoder.c
index 5b1aff8..6c7a554 100644
--- a/drivers/input/misc/rotary_encoder.c
+++ b/drivers/input/misc/rotary_encoder.c
@@ -117,6 +117,42 @@ static irqreturn_t rotary_encoder_irq(int irq, void *dev_id)
return IRQ_HANDLED;
}
+static irqreturn_t rotary_encoder_stepped_irq(int irq, void *dev_id)
+{
+ struct rotary_encoder *encoder = dev_id;
+ int state;
+ unsigned char sum;
+
+ state = rotary_encoder_get_state(encoder->pdata);
+
+ /*
+ * We encode the previous and the current state using a byte.
+ * The previous state in the MSB nibble, the current state in the LSB
+ * nibble. Then use a table to decide the direction of the turn.
+ */
+ sum = (encoder->last_stable << 4) + state;
+ switch (sum) {
+ case 0x31:
+ case 0x10:
+ case 0x02:
+ case 0x23:
+ encoder->dir = 0; /* clockwise */
+ break;
+ /*
+ * TODO: Add the other case, and the illegal values should
+ * say a WARN (it's a BUG, but we won't stop the kernel for it :)
+ */
+ default:
+ encoder->dir = 1;
+ }
+
+ rotary_encoder_report_event(encoder);
+
+ encoder->last_stable = state;
+
+ return IRQ_HANDLED;
+}
+
static irqreturn_t rotary_encoder_half_period_irq(int irq, void *dev_id)
{
struct rotary_encoder *encoder = dev_id;
@@ -180,6 +216,8 @@ static struct rotary_encoder_platform_data *rotary_encoder_parse_dt(struct devic
"rotary-encoder,rollover", NULL);
pdata->half_period = !!of_get_property(np,
"rotary-encoder,half-period", NULL);
+ pdata->on_each_step = !!of_get_property(np,
+ "rotary-encoder,on-each-step", NULL);
return pdata;
}
@@ -254,6 +292,9 @@ static int rotary_encoder_probe(struct platform_device *pdev)
if (pdata->half_period) {
handler = &rotary_encoder_half_period_irq;
encoder->last_stable = rotary_encoder_get_state(pdata);
+ } else if (pdata->on_each_step) {
+ handler = &rotary_encoder_stepped_irq;
+ encoder->last_stable = rotary_encoder_get_state(pdata);
} else {
handler = &rotary_encoder_irq;
}
diff --git a/include/linux/rotary_encoder.h b/include/linux/rotary_encoder.h
index 3f594dc..499f6f7 100644
--- a/include/linux/rotary_encoder.h
+++ b/include/linux/rotary_encoder.h
@@ -11,6 +11,7 @@ struct rotary_encoder_platform_data {
bool relative_axis;
bool rollover;
bool half_period;
+ bool on_each_step;
};
#endif /* __ROTARY_ENCODER_H__ */
--
1.8.1.5
^ permalink raw reply related
* [PATCH v2 0/2] rotary-encoder: Add new interruption handler
From: Ezequiel Garcia @ 2013-10-04 12:53 UTC (permalink / raw)
To: linux-kernel, linux-input; +Cc: Ezequiel Garcia, Daniel Mack, Dmitry Torokhov
Some rotary-encoder devices (such as those with detents) are capable
of producing a stable event on each step. This simple patch adds support
for this case, by implementing a new interruption handler.
The handler needs only detect the direction of the turn and generate
an event according to this detection.
We encode the previous and the current state, and then use the sum of them
to decide on the direction of the turn, according to the following simple
table:
Previous state + currrent state | Movement
==========================================
0b1101 | clockwise
0b0100 | ..
0b0010 | ..
0b1011 | ..
==========================================
0b1110 | counter-clockwise
0b0111 | ..
0b0001 | ..
0b1000 | ..
(The other sumed values are considered illegal)
This calculation is based on some previous work found at this blog:
http://bildr.org/2012/08/rotary-encoder-arduino/
The result is a seemingly very robust behavior, with a truly simple
implementation, that produces an event on each turn of the device.
Thanks!
Ezequiel Garcia (2):
Input: rotary-encoder: Add 'stepped' irq handler
input: rotary-encoder: Add 'on-each-step' to binding documentation
.../devicetree/bindings/input/rotary-encoder.txt | 1 +
drivers/input/misc/rotary_encoder.c | 41 ++++++++++++++++++++++
include/linux/rotary_encoder.h | 1 +
3 files changed, 43 insertions(+)
--
1.8.1.5
^ permalink raw reply
* Re: [PATCH] input: i8042 - add PNP modaliases
From: Tom Gundersen @ 2013-10-04 12:26 UTC (permalink / raw)
To: linux-input@vger.kernel.org
Cc: LKML, Tom Gundersen, Matthew Garrett, Dmitry Torokhov
In-Reply-To: <1378286856-6384-1-git-send-email-teg@jklm.no>
On Wed, Sep 4, 2013 at 11:27 AM, Tom Gundersen <teg@jklm.no> wrote:
> This allows the module to be autoloaded in the common case.
>
> In order to work on non-PnP systems the module should be compiled in or loaded
> unconditionally at boot (c.f. modules-load.d(5)), as before.
>
> Cc: Matthew Garrett <mjg59@srcf.ucam.org>
> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> Signed-off-by: Tom Gundersen <teg@jklm.no>
> --
Hi Dmitry,
Any comments on this? Any chance of having this (and the two patches
dropping EXPERT=y requirements) included for 3.13 (or even 3.12 if it
is not too late for this kind of stuff)? Let me know if I should
resend the three patches.
Cheers,
Tom
> This appears to work for me (though I don't have the real hardware to test), I get the following aliases:
> alias: acpi*:CPQA0D7:*
> alias: pnp:dCPQA0D7*
> alias: acpi*:PNP0345:*
> alias: pnp:dPNP0345*
> alias: acpi*:PNP0344:*
> alias: pnp:dPNP0344*
> alias: acpi*:PNP0343:*
> alias: pnp:dPNP0343*
> alias: acpi*:PNP0320:*
> alias: pnp:dPNP0320*
> alias: acpi*:PNP030B:*
> alias: pnp:dPNP030b*
> alias: acpi*:PNP030A:*
> alias: pnp:dPNP030a*
> alias: acpi*:PNP0309:*
> alias: pnp:dPNP0309*
> alias: acpi*:PNP0306:*
> alias: pnp:dPNP0306*
> alias: acpi*:PNP0305:*
> alias: pnp:dPNP0305*
> alias: acpi*:PNP0304:*
> alias: pnp:dPNP0304*
> alias: acpi*:PNP0303:*
> alias: pnp:dPNP0303*
> alias: acpi*:PNP0302:*
> alias: pnp:dPNP0302*
> alias: acpi*:PNP0301:*
> alias: pnp:dPNP0301*
> alias: acpi*:PNP0300:*
> alias: pnp:dPNP0300*
>
> drivers/input/serio/i8042-x86ia64io.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
> index 5f306f7..0ec9abb 100644
> --- a/drivers/input/serio/i8042-x86ia64io.h
> +++ b/drivers/input/serio/i8042-x86ia64io.h
> @@ -765,6 +765,7 @@ static struct pnp_device_id pnp_kbd_devids[] = {
> { .id = "CPQA0D7", .driver_data = 0 },
> { .id = "", },
> };
> +MODULE_DEVICE_TABLE(pnp, pnp_kbd_devids);
>
> static struct pnp_driver i8042_pnp_kbd_driver = {
> .name = "i8042 kbd",
> @@ -786,6 +787,7 @@ static struct pnp_device_id pnp_aux_devids[] = {
> { .id = "SYN0801", .driver_data = 0 },
> { .id = "", },
> };
> +MODULE_DEVICE_TABLE(pnp, pnp_aux_devids);
>
> static struct pnp_driver i8042_pnp_aux_driver = {
> .name = "i8042 aux",
> --
> 1.8.4
>
^ permalink raw reply
* Re: [PATCH] input - input.h: Add a new switch event
From: Chris Bagwell @ 2013-10-04 2:48 UTC (permalink / raw)
To: Ping Cheng
Cc: linux-input@vger.kernel.org, Dmitry Torokhov, Henrik Rydberg,
Benjamin Tissoires, linux-kernel@vger.kernel.org, Ping Cheng
In-Reply-To: <1380839467-27264-1-git-send-email-pingc@wacom.com>
On Thu, Oct 3, 2013 at 5:31 PM, Ping Cheng <pinglinux@gmail.com> wrote:
> One of Wacom's pen and touch capable models added a switch for
> users to turn on/off touch events. We need to report the state of
> this switch to userland. But, there is no existing switch event
> defined for this purpose. Luckily enough, there is a room for a
> new switch event.
It is a switch so hard to argue against adding it this way... but I
also want to point out existing feature to consider.
Touchpads on several laptops have either a single touchpad toggle
button or a touchpad switch that serve same basic purpose. Most of
these switches are hooked up as keys and controlled by platform/x86
driver or udev.
Most platform/x86 drivers map these "keys" to KEY_TOUCHPAD_TOGGLE,
KEY_TOUCHPAD_ON, and KEY_TOUCHPAD_OFF. Since those don't make it to
X, most udev keymaps instead use f21, f22, and f23 for same purpose.
As long as this is a touch+tablet that looks like a touchpad then
using those keys will cause gnome-settings-daemon to give a nice OSD
touchpad status when switch is moved and will also enable/disable the
touchpad using "Device Enabled" X property.
On the down side, I think these keys are treated as system wide
disable of all touchpads. Having a Switch reported against the device
its controlling (as apposed to above which is reported over different
input then touchpad) would allow user land an easy way to know to only
disable the single device.
Chris
>
> Signed-off-by: Ping Cheng <pingc@wacom.com>
> ---
> include/uapi/linux/input.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h
> index d08abf9..d4097b0 100644
> --- a/include/uapi/linux/input.h
> +++ b/include/uapi/linux/input.h
> @@ -855,6 +855,7 @@ struct input_keymap_entry {
> #define SW_FRONT_PROXIMITY 0x0b /* set = front proximity sensor active */
> #define SW_ROTATE_LOCK 0x0c /* set = rotate locked/disabled */
> #define SW_LINEIN_INSERT 0x0d /* set = inserted */
> +#define SW_TOUCH_ENABLED 0x0e /* set = touch switch turned on (touch events off) */
> #define SW_MAX 0x0f
> #define SW_CNT (SW_MAX+1)
>
> --
> 1.8.1.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] input - input.h: Add a new switch event
From: Peter Hutterer @ 2013-10-03 23:33 UTC (permalink / raw)
To: Ping Cheng
Cc: linux-input, dmitry.torokhov, rydberg, benjamin.tissoires,
linux-kernel, Ping Cheng
In-Reply-To: <1380839467-27264-1-git-send-email-pingc@wacom.com>
On Thu, Oct 03, 2013 at 03:31:07PM -0700, Ping Cheng wrote:
> One of Wacom's pen and touch capable models added a switch for
> users to turn on/off touch events. We need to report the state of
> this switch to userland. But, there is no existing switch event
> defined for this purpose. Luckily enough, there is a room for a
> new switch event.
>
> Signed-off-by: Ping Cheng <pingc@wacom.com>
> ---
> include/uapi/linux/input.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h
> index d08abf9..d4097b0 100644
> --- a/include/uapi/linux/input.h
> +++ b/include/uapi/linux/input.h
> @@ -855,6 +855,7 @@ struct input_keymap_entry {
> #define SW_FRONT_PROXIMITY 0x0b /* set = front proximity sensor active */
> #define SW_ROTATE_LOCK 0x0c /* set = rotate locked/disabled */
> #define SW_LINEIN_INSERT 0x0d /* set = inserted */
> +#define SW_TOUCH_ENABLED 0x0e /* set = touch switch turned on (touch events off) */
> #define SW_MAX 0x0f
> #define SW_CNT (SW_MAX+1)
>
> --
> 1.8.1.2
Acked-by: Peter Hutterer <peter.hutterer@who-t.net> for the principle,
though I think SW_TOUCH would be enough, given that the switch already
communicates on/off.
Cheers,
Peter
^ permalink raw reply
* Re: [RFC] Input: introduce ABS_MAX2/CNT2 and friends
From: Peter Hutterer @ 2013-10-03 23:32 UTC (permalink / raw)
To: David Herrmann
Cc: linux-input, Dmitry Torokhov, Henrik Rydberg, Benjamin Tissoires,
Jiri Kosina, linux-kernel
In-Reply-To: <1380751836-10829-1-git-send-email-dh.herrmann@gmail.com>
On Thu, Oct 03, 2013 at 12:10:36AM +0200, David Herrmann wrote:
> As we painfully noticed during the 3.12 merge-window our
> EVIOCGABS/EVIOCSABS API is limited to ABS_MAX<=0x3f. We tried several
> hacks to work around it but if we ever decide to increase ABS_MAX, the
> EVIOCSABS ioctl ABI might overflow into the next byte causing horrible
> misinterpretations in the kernel that we cannot catch.
>
> Therefore, we decided to go with ABS_MAX2/CNT2 and introduce two new
> ioctls to get/set abs-params. They no longer encode the ABS code in the
> ioctl number and thus allow up to 4 billion ABS codes.
>
> Unfortunately, the uinput API also hard-coded the ABS_CNT value in its
> ABI. To avoid any hacks in uinput, we simply introduce a new
> uinput_user_dev2 to replace the old one. The new API allows growing
> ABS_CNT2 values without any API changes.
>
> Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
> ---
> Hi
>
> This is only compile-tested but I wanted to get a first revision out to let
> people know what we're working on. Unfortunately, the ABS API has this horribly
> low ABS_MAX limit and we couldn't figure out a way to increase it while keeping
> ABI compatibility.
>
> Any feedback and review is welcome. And if anyone spots ABI breakage by this
> patch, please let me know. If nothing comes up I will patch libevdev to use the
> new API, write some extensive test-cases and push this forward.
>
> As a sidenote: I didn't modify joydev to use the new values. Fortunately, the
> joydev API would allow switching to ABS_CNT2 without breaking API, but it would
> limit the new ABS_CNT2 to 16k. This is quite high but nothing compared to the
> 2^32 that we can theoretically support now. If you think 16k ought to be enough
> (probably?) I can adjust the joydev API, too.
> All other kernel users were converted to the new values. Nothing left behind..
just a comment from skimming the patch:
if you need a new uinput abi anyway, can we add the resolution here? it's
sorely needed for some tests. see also the patch Benjamin sent a while ago
("input/uinput: support abs resolution", July 15 2013)
Cheers,
Peter
> drivers/hid/hid-debug.c | 2 +-
> drivers/hid/hid-input.c | 2 +-
> drivers/input/evdev.c | 63 ++++++++++++++-
> drivers/input/input.c | 14 ++--
> drivers/input/keyboard/goldfish_events.c | 6 +-
> drivers/input/keyboard/hil_kbd.c | 2 +-
> drivers/input/misc/uinput.c | 128 ++++++++++++++++++++++---------
> include/linux/hid.h | 2 +-
> include/linux/input.h | 6 +-
> include/linux/mod_devicetable.h | 2 +-
> include/uapi/linux/input.h | 31 +++++++-
> include/uapi/linux/uinput.h | 13 ++++
> 12 files changed, 213 insertions(+), 58 deletions(-)
>
> diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c
> index 8453214..d32fa30 100644
> --- a/drivers/hid/hid-debug.c
> +++ b/drivers/hid/hid-debug.c
> @@ -862,7 +862,7 @@ static const char *relatives[REL_MAX + 1] = {
> [REL_WHEEL] = "Wheel", [REL_MISC] = "Misc",
> };
>
> -static const char *absolutes[ABS_CNT] = {
> +static const char *absolutes[ABS_CNT2] = {
> [ABS_X] = "X", [ABS_Y] = "Y",
> [ABS_Z] = "Z", [ABS_RX] = "Rx",
> [ABS_RY] = "Ry", [ABS_RZ] = "Rz",
> diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
> index 8741d95..3e879bf 100644
> --- a/drivers/hid/hid-input.c
> +++ b/drivers/hid/hid-input.c
> @@ -1305,7 +1305,7 @@ static bool hidinput_has_been_populated(struct hid_input *hidinput)
> for (i = 0; i < BITS_TO_LONGS(REL_CNT); i++)
> r |= hidinput->input->relbit[i];
>
> - for (i = 0; i < BITS_TO_LONGS(ABS_CNT); i++)
> + for (i = 0; i < BITS_TO_LONGS(ABS_CNT2); i++)
> r |= hidinput->input->absbit[i];
>
> for (i = 0; i < BITS_TO_LONGS(MSC_CNT); i++)
> diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
> index b6ded17..c76b87e 100644
> --- a/drivers/input/evdev.c
> +++ b/drivers/input/evdev.c
> @@ -635,7 +635,7 @@ static int handle_eviocgbit(struct input_dev *dev,
> case 0: bits = dev->evbit; len = EV_MAX; break;
> case EV_KEY: bits = dev->keybit; len = KEY_MAX; break;
> case EV_REL: bits = dev->relbit; len = REL_MAX; break;
> - case EV_ABS: bits = dev->absbit; len = ABS_MAX; break;
> + case EV_ABS: bits = dev->absbit; len = ABS_MAX2; break;
> case EV_MSC: bits = dev->mscbit; len = MSC_MAX; break;
> case EV_LED: bits = dev->ledbit; len = LED_MAX; break;
> case EV_SND: bits = dev->sndbit; len = SND_MAX; break;
> @@ -663,6 +663,61 @@ static int handle_eviocgbit(struct input_dev *dev,
> }
> #undef OLD_KEY_MAX
>
> +static int evdev_handle_get_abs2(struct input_dev *dev, void __user *p)
> +{
> + u32 code;
> + struct input_absinfo2 __user *pinfo = p;
> + struct input_absinfo abs;
> +
> + if (!dev->absinfo)
> + return -EINVAL;
> +
> + if (copy_from_user(&code, &pinfo->code, sizeof(code)))
> + return -EFAULT;
> +
> + if (code >= ABS_CNT2)
> + return -EINVAL;
> +
> + /*
> + * Take event lock to ensure that we are not
> + * copying data while EVIOCSABS2 changes it.
> + * Might be inconsistent, otherwise.
> + */
> + spin_lock_irq(&dev->event_lock);
> + abs = dev->absinfo[code];
> + spin_unlock_irq(&dev->event_lock);
> +
> + if (copy_to_user(&pinfo->info, &abs, sizeof(abs)))
> + return -EFAULT;
> +
> + return 0;
> +}
> +
> +static int evdev_handle_set_abs2(struct input_dev *dev, void __user *p)
> +{
> + struct input_absinfo2 info;
> +
> + if (!dev->absinfo)
> + return -EINVAL;
> +
> + if (copy_from_user(&info, p, sizeof(info)))
> + return -EFAULT;
> +
> + if (info.code == ABS_MT_SLOT || info.code >= ABS_CNT2)
> + return -EINVAL;
> +
> + /*
> + * Take event lock to ensure that we are not
> + * changing device parameters in the middle
> + * of event.
> + */
> + spin_lock_irq(&dev->event_lock);
> + dev->absinfo[info.code] = info.info;
> + spin_unlock_irq(&dev->event_lock);
> +
> + return 0;
> +}
> +
> static int evdev_handle_get_keycode(struct input_dev *dev, void __user *p)
> {
> struct input_keymap_entry ke = {
> @@ -890,6 +945,12 @@ static long evdev_do_ioctl(struct file *file, unsigned int cmd,
> client->clkid = i;
> return 0;
>
> + case EVIOCGABS2:
> + return evdev_handle_get_abs2(dev, p);
> +
> + case EVIOCSABS2:
> + return evdev_handle_set_abs2(dev, p);
> +
> case EVIOCGKEYCODE:
> return evdev_handle_get_keycode(dev, p);
>
> diff --git a/drivers/input/input.c b/drivers/input/input.c
> index c044699..bc88f17 100644
> --- a/drivers/input/input.c
> +++ b/drivers/input/input.c
> @@ -305,7 +305,7 @@ static int input_get_disposition(struct input_dev *dev,
> break;
>
> case EV_ABS:
> - if (is_event_supported(code, dev->absbit, ABS_MAX))
> + if (is_event_supported(code, dev->absbit, ABS_MAX2))
> disposition = input_handle_abs_event(dev, code, &value);
>
> break;
> @@ -474,7 +474,7 @@ EXPORT_SYMBOL(input_inject_event);
> void input_alloc_absinfo(struct input_dev *dev)
> {
> if (!dev->absinfo)
> - dev->absinfo = kcalloc(ABS_CNT, sizeof(struct input_absinfo),
> + dev->absinfo = kcalloc(ABS_CNT2, sizeof(struct input_absinfo),
> GFP_KERNEL);
>
> WARN(!dev->absinfo, "%s(): kcalloc() failed?\n", __func__);
> @@ -954,7 +954,7 @@ static const struct input_device_id *input_match_device(struct input_handler *ha
> if (!bitmap_subset(id->relbit, dev->relbit, REL_MAX))
> continue;
>
> - if (!bitmap_subset(id->absbit, dev->absbit, ABS_MAX))
> + if (!bitmap_subset(id->absbit, dev->absbit, ABS_MAX2))
> continue;
>
> if (!bitmap_subset(id->mscbit, dev->mscbit, MSC_MAX))
> @@ -1147,7 +1147,7 @@ static int input_devices_seq_show(struct seq_file *seq, void *v)
> if (test_bit(EV_REL, dev->evbit))
> input_seq_print_bitmap(seq, "REL", dev->relbit, REL_MAX);
> if (test_bit(EV_ABS, dev->evbit))
> - input_seq_print_bitmap(seq, "ABS", dev->absbit, ABS_MAX);
> + input_seq_print_bitmap(seq, "ABS", dev->absbit, ABS_MAX2);
> if (test_bit(EV_MSC, dev->evbit))
> input_seq_print_bitmap(seq, "MSC", dev->mscbit, MSC_MAX);
> if (test_bit(EV_LED, dev->evbit))
> @@ -1333,7 +1333,7 @@ static int input_print_modalias(char *buf, int size, struct input_dev *id,
> len += input_print_modalias_bits(buf + len, size - len,
> 'r', id->relbit, 0, REL_MAX);
> len += input_print_modalias_bits(buf + len, size - len,
> - 'a', id->absbit, 0, ABS_MAX);
> + 'a', id->absbit, 0, ABS_MAX2);
> len += input_print_modalias_bits(buf + len, size - len,
> 'm', id->mscbit, 0, MSC_MAX);
> len += input_print_modalias_bits(buf + len, size - len,
> @@ -1592,7 +1592,7 @@ static int input_dev_uevent(struct device *device, struct kobj_uevent_env *env)
> if (test_bit(EV_REL, dev->evbit))
> INPUT_ADD_HOTPLUG_BM_VAR("REL=", dev->relbit, REL_MAX);
> if (test_bit(EV_ABS, dev->evbit))
> - INPUT_ADD_HOTPLUG_BM_VAR("ABS=", dev->absbit, ABS_MAX);
> + INPUT_ADD_HOTPLUG_BM_VAR("ABS=", dev->absbit, ABS_MAX2);
> if (test_bit(EV_MSC, dev->evbit))
> INPUT_ADD_HOTPLUG_BM_VAR("MSC=", dev->mscbit, MSC_MAX);
> if (test_bit(EV_LED, dev->evbit))
> @@ -1924,7 +1924,7 @@ static unsigned int input_estimate_events_per_packet(struct input_dev *dev)
>
> events = mt_slots + 1; /* count SYN_MT_REPORT and SYN_REPORT */
>
> - for (i = 0; i < ABS_CNT; i++) {
> + for (i = 0; i < ABS_CNT2; i++) {
> if (test_bit(i, dev->absbit)) {
> if (input_is_mt_axis(i))
> events += mt_slots;
> diff --git a/drivers/input/keyboard/goldfish_events.c b/drivers/input/keyboard/goldfish_events.c
> index 9f60a2e..9999cea 100644
> --- a/drivers/input/keyboard/goldfish_events.c
> +++ b/drivers/input/keyboard/goldfish_events.c
> @@ -90,8 +90,8 @@ static void events_import_abs_params(struct event_dev *edev)
> __raw_writel(PAGE_ABSDATA, addr + REG_SET_PAGE);
>
> count = __raw_readl(addr + REG_LEN) / sizeof(val);
> - if (count > ABS_MAX)
> - count = ABS_MAX;
> + if (count > ABS_MAX2)
> + count = ABS_MAX2;
>
> for (i = 0; i < count; i++) {
> if (!test_bit(i, input_dev->absbit))
> @@ -158,7 +158,7 @@ static int events_probe(struct platform_device *pdev)
> events_import_bits(edev, input_dev->evbit, EV_SYN, EV_MAX);
> events_import_bits(edev, input_dev->keybit, EV_KEY, KEY_MAX);
> events_import_bits(edev, input_dev->relbit, EV_REL, REL_MAX);
> - events_import_bits(edev, input_dev->absbit, EV_ABS, ABS_MAX);
> + events_import_bits(edev, input_dev->absbit, EV_ABS, ABS_MAX2);
> events_import_bits(edev, input_dev->mscbit, EV_MSC, MSC_MAX);
> events_import_bits(edev, input_dev->ledbit, EV_LED, LED_MAX);
> events_import_bits(edev, input_dev->sndbit, EV_SND, SND_MAX);
> diff --git a/drivers/input/keyboard/hil_kbd.c b/drivers/input/keyboard/hil_kbd.c
> index 589e3c2..4e4e010 100644
> --- a/drivers/input/keyboard/hil_kbd.c
> +++ b/drivers/input/keyboard/hil_kbd.c
> @@ -387,7 +387,7 @@ static void hil_dev_pointer_setup(struct hil_dev *ptr)
> 0, HIL_IDD_AXIS_MAX(idd, i - 3), 0, 0);
>
> #ifdef TABLET_AUTOADJUST
> - for (i = 0; i < ABS_MAX; i++) {
> + for (i = 0; i < ABS_MAX2; i++) {
> int diff = input_abs_get_max(input_dev, ABS_X + i) / 10;
> input_abs_set_min(input_dev, ABS_X + i,
> input_abs_get_min(input_dev, ABS_X + i) + diff);
> diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c
> index a0a4bba..72029d6 100644
> --- a/drivers/input/misc/uinput.c
> +++ b/drivers/input/misc/uinput.c
> @@ -311,7 +311,7 @@ static int uinput_validate_absbits(struct input_dev *dev)
> unsigned int cnt;
> int retval = 0;
>
> - for (cnt = 0; cnt < ABS_CNT; cnt++) {
> + for (cnt = 0; cnt < ABS_CNT2; cnt++) {
> int min, max;
> if (!test_bit(cnt, dev->absbit))
> continue;
> @@ -358,14 +358,15 @@ static int uinput_allocate_device(struct uinput_device *udev)
> }
>
> static int uinput_setup_device(struct uinput_device *udev,
> - const char __user *buffer, size_t count)
> + struct uinput_user_dev2 *user_dev2,
> + size_t abscnt)
> {
> - struct uinput_user_dev *user_dev;
> struct input_dev *dev;
> int i;
> int retval;
>
> - if (count != sizeof(struct uinput_user_dev))
> + /* Ensure name is filled in */
> + if (!user_dev2->name[0])
> return -EINVAL;
>
> if (!udev->dev) {
> @@ -375,37 +376,24 @@ static int uinput_setup_device(struct uinput_device *udev,
> }
>
> dev = udev->dev;
> -
> - user_dev = memdup_user(buffer, sizeof(struct uinput_user_dev));
> - if (IS_ERR(user_dev))
> - return PTR_ERR(user_dev);
> -
> - udev->ff_effects_max = user_dev->ff_effects_max;
> -
> - /* Ensure name is filled in */
> - if (!user_dev->name[0]) {
> - retval = -EINVAL;
> - goto exit;
> - }
> + udev->ff_effects_max = user_dev2->ff_effects_max;
>
> kfree(dev->name);
> - dev->name = kstrndup(user_dev->name, UINPUT_MAX_NAME_SIZE,
> + dev->name = kstrndup(user_dev2->name, UINPUT_MAX_NAME_SIZE,
> GFP_KERNEL);
> - if (!dev->name) {
> - retval = -ENOMEM;
> - goto exit;
> - }
> + if (!dev->name)
> + return -ENOMEM;
>
> - dev->id.bustype = user_dev->id.bustype;
> - dev->id.vendor = user_dev->id.vendor;
> - dev->id.product = user_dev->id.product;
> - dev->id.version = user_dev->id.version;
> + dev->id.bustype = user_dev2->id.bustype;
> + dev->id.vendor = user_dev2->id.vendor;
> + dev->id.product = user_dev2->id.product;
> + dev->id.version = user_dev2->id.version;
>
> - for (i = 0; i < ABS_CNT; i++) {
> - input_abs_set_max(dev, i, user_dev->absmax[i]);
> - input_abs_set_min(dev, i, user_dev->absmin[i]);
> - input_abs_set_fuzz(dev, i, user_dev->absfuzz[i]);
> - input_abs_set_flat(dev, i, user_dev->absflat[i]);
> + for (i = 0; i < abscnt; i++) {
> + input_abs_set_max(dev, i, user_dev2->abs[i].max);
> + input_abs_set_min(dev, i, user_dev2->abs[i].min);
> + input_abs_set_fuzz(dev, i, user_dev2->abs[i].fuzz);
> + input_abs_set_flat(dev, i, user_dev2->abs[i].flat);
> }
>
> /* check if absmin/absmax/absfuzz/absflat are filled as
> @@ -413,7 +401,7 @@ static int uinput_setup_device(struct uinput_device *udev,
> if (test_bit(EV_ABS, dev->evbit)) {
> retval = uinput_validate_absbits(dev);
> if (retval < 0)
> - goto exit;
> + return retval;
> if (test_bit(ABS_MT_SLOT, dev->absbit)) {
> int nslot = input_abs_get_max(dev, ABS_MT_SLOT) + 1;
> input_mt_init_slots(dev, nslot, 0);
> @@ -423,11 +411,72 @@ static int uinput_setup_device(struct uinput_device *udev,
> }
>
> udev->state = UIST_SETUP_COMPLETE;
> - retval = count;
> + return 0;
> +}
> +
> +static int uinput_setup_device1(struct uinput_device *udev,
> + const char __user *buffer, size_t count)
> +{
> + struct uinput_user_dev *user_dev;
> + struct uinput_user_dev2 *user_dev2;
> + int i;
> + int retval;
> +
> + if (count != sizeof(struct uinput_user_dev))
> + return -EINVAL;
> +
> + user_dev = memdup_user(buffer, sizeof(struct uinput_user_dev));
> + if (IS_ERR(user_dev))
> + return PTR_ERR(user_dev);
> +
> + user_dev2 = kmalloc(sizeof(*user_dev2), GFP_KERNEL);
> + if (!user_dev2) {
> + kfree(user_dev);
> + return -ENOMEM;
> + }
> +
> + memcpy(user_dev2->name, user_dev->name, UINPUT_MAX_NAME_SIZE);
> + memcpy(&user_dev2->id, &user_dev->id, sizeof(struct input_id));
> + user_dev2->ff_effects_max = user_dev->ff_effects_max;
> +
> + for (i = 0; i < ABS_CNT; ++i) {
> + user_dev2->abs[i].max = user_dev->absmax[i];
> + user_dev2->abs[i].min = user_dev->absmin[i];
> + user_dev2->abs[i].fuzz = user_dev->absfuzz[i];
> + user_dev2->abs[i].flat = user_dev->absflat[i];
> + }
> +
> + retval = uinput_setup_device(udev, user_dev2, ABS_CNT);
>
> - exit:
> kfree(user_dev);
> - return retval;
> + kfree(user_dev2);
> +
> + return retval ? retval : count;
> +}
> +
> +static int uinput_setup_device2(struct uinput_device *udev,
> + const char __user *buffer, size_t count)
> +{
> + struct uinput_user_dev2 *user_dev2;
> + int retval;
> + size_t off, abscnt;
> +
> + /* The first revision of "uinput_user_dev2" is bigger than
> + * "uinput_user_dev" and growing. Disallow any smaller payloads. */
> + if (count <= sizeof(struct uinput_user_dev))
> + return -EINVAL;
> +
> + user_dev2 = memdup_user(buffer, count);
> + if (IS_ERR(user_dev2))
> + return PTR_ERR(user_dev2);
> +
> + off = offsetof(struct uinput_user_dev2, abs);
> + abscnt = (count - off) / sizeof(struct uinput_user_absinfo);
> + retval = uinput_setup_device(udev, user_dev2, abscnt);
> +
> + kfree(user_dev2);
> +
> + return retval ? retval : count;
> }
>
> static ssize_t uinput_inject_event(struct uinput_device *udev,
> @@ -459,9 +508,12 @@ static ssize_t uinput_write(struct file *file, const char __user *buffer,
> if (retval)
> return retval;
>
> - retval = udev->state == UIST_CREATED ?
> - uinput_inject_event(udev, buffer, count) :
> - uinput_setup_device(udev, buffer, count);
> + if (udev->state == UIST_CREATED)
> + retval = uinput_inject_event(udev, buffer, count);
> + else if (count <= sizeof(struct uinput_user_dev))
> + retval = uinput_setup_device1(udev, buffer, count);
> + else
> + retval = uinput_setup_device2(udev, buffer, count);
>
> mutex_unlock(&udev->mutex);
>
> @@ -702,7 +754,7 @@ static long uinput_ioctl_handler(struct file *file, unsigned int cmd,
> break;
>
> case UI_SET_ABSBIT:
> - retval = uinput_set_bit(arg, absbit, ABS_MAX);
> + retval = uinput_set_bit(arg, absbit, ABS_MAX2);
> break;
>
> case UI_SET_MSCBIT:
> diff --git a/include/linux/hid.h b/include/linux/hid.h
> index 31b9d29..c21d8bb 100644
> --- a/include/linux/hid.h
> +++ b/include/linux/hid.h
> @@ -828,7 +828,7 @@ static inline void hid_map_usage(struct hid_input *hidinput,
> switch (type) {
> case EV_ABS:
> *bit = input->absbit;
> - *max = ABS_MAX;
> + *max = ABS_MAX2;
> break;
> case EV_REL:
> *bit = input->relbit;
> diff --git a/include/linux/input.h b/include/linux/input.h
> index 82ce323..c6add6f 100644
> --- a/include/linux/input.h
> +++ b/include/linux/input.h
> @@ -129,7 +129,7 @@ struct input_dev {
> unsigned long evbit[BITS_TO_LONGS(EV_CNT)];
> unsigned long keybit[BITS_TO_LONGS(KEY_CNT)];
> unsigned long relbit[BITS_TO_LONGS(REL_CNT)];
> - unsigned long absbit[BITS_TO_LONGS(ABS_CNT)];
> + unsigned long absbit[BITS_TO_LONGS(ABS_CNT2)];
> unsigned long mscbit[BITS_TO_LONGS(MSC_CNT)];
> unsigned long ledbit[BITS_TO_LONGS(LED_CNT)];
> unsigned long sndbit[BITS_TO_LONGS(SND_CNT)];
> @@ -210,8 +210,8 @@ struct input_dev {
> #error "REL_MAX and INPUT_DEVICE_ID_REL_MAX do not match"
> #endif
>
> -#if ABS_MAX != INPUT_DEVICE_ID_ABS_MAX
> -#error "ABS_MAX and INPUT_DEVICE_ID_ABS_MAX do not match"
> +#if ABS_MAX2 != INPUT_DEVICE_ID_ABS_MAX
> +#error "ABS_MAX2 and INPUT_DEVICE_ID_ABS_MAX do not match"
> #endif
>
> #if MSC_MAX != INPUT_DEVICE_ID_MSC_MAX
>lt diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
> index 45e9214..329aa30 100644
> --- a/include/linux/mod_devicetable.h
> +++ b/include/linux/mod_devicetable.h
> @@ -277,7 +277,7 @@ struct pcmcia_device_id {
> #define INPUT_DEVICE_ID_KEY_MIN_INTERESTING 0x71
> #define INPUT_DEVICE_ID_KEY_MAX 0x2ff
> #define INPUT_DEVICE_ID_REL_MAX 0x0f
> -#define INPUT_DEVICE_ID_ABS_MAX 0x3f
> +#define INPUT_DEVICE_ID_ABS_MAX 0x4f
> #define INPUT_DEVICE_ID_MSC_MAX 0x07
> #define INPUT_DEVICE_ID_LED_MAX 0x0f
> #define INPUT_DEVICE_ID_SND_MAX 0x07
> diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h
> index a372627..4a6082a 100644
> --- a/include/uapi/linux/input.h
> +++ b/include/uapi/linux/input.h
> @@ -74,6 +74,21 @@ struct input_absinfo {
> };
>
> /**
> + * struct input_absinfo2 - used by EVIOC[G/S]ABS2 ioctls
> + * @code: ABS code to query
> + * @info: absinfo structure to get/set abs parameters for @code
> + *
> + * This structure is used by the new EVIOC[G/S]ABS2 ioctls which
> + * do the same as the old EVIOC[G/S]ABS ioctls but avoid encoding
> + * the ABS code in the ioctl number. This allows a much wider
> + * range of ABS codes.
> + */
> +struct input_absinfo2 {
> + __u32 code;
> + struct input_absinfo info;
> +};
> +
> +/**
> * struct input_keymap_entry - used by EVIOCGKEYCODE/EVIOCSKEYCODE ioctls
> * @scancode: scancode represented in machine-endian form.
> * @len: length of the scancode that resides in @scancode buffer.
> @@ -153,6 +168,8 @@ struct input_keymap_entry {
>
> #define EVIOCGRAB _IOW('E', 0x90, int) /* Grab/Release device */
> #define EVIOCREVOKE _IOW('E', 0x91, int) /* Revoke device access */
> +#define EVIOCGABS2 _IOR('E', 0x92, struct input_absinfo2) /* get abs value/limits */
> +#define EVIOCSABS2 _IOW('E', 0x93, struct input_absinfo2) /* set abs value/limits */
>
> #define EVIOCSCLOCKID _IOW('E', 0xa0, int) /* Set clockid to be used for timestamps */
>
> @@ -832,11 +849,23 @@ struct input_keymap_entry {
> #define ABS_MT_TOOL_X 0x3c /* Center X tool position */
> #define ABS_MT_TOOL_Y 0x3d /* Center Y tool position */
>
> -
> +/*
> + * ABS_MAX/CNT is limited to a maximum of 0x3f due to the design of EVIOCGABS
> + * and EVIOCSABS ioctls. Other kernel APIs like uinput also hardcoded it. Do
> + * not modify this value and instead use the extended ABS_MAX2/CNT2 API.
> + */
> #define ABS_MAX 0x3f
> #define ABS_CNT (ABS_MAX+1)
>
> /*
> + * Due to API restrictions the legacy evdev API only supports ABS values up to
> + * ABS_MAX/CNT. Use the extended *ABS2 ioctls to operate on any ABS values in
> + * between ABS_MAX and ABS_MAX2.
> + */
> +#define ABS_MAX2 0x4f
> +#define ABS_CNT2 (ABS_MAX2+1)
> +
> +/*
> * Switch events
> */
>
> diff --git a/include/uapi/linux/uinput.h b/include/uapi/linux/uinput.h
> index fe46431..124e20c 100644
> --- a/include/uapi/linux/uinput.h
> +++ b/include/uapi/linux/uinput.h
> @@ -134,4 +134,17 @@ struct uinput_user_dev {
> __s32 absfuzz[ABS_CNT];
> __s32 absflat[ABS_CNT];
> };
> +
> +struct uinput_user_dev2 {
> + char name[UINPUT_MAX_NAME_SIZE];
> + struct input_id id;
> + __u32 ff_effects_max;
> + struct uinput_user_absinfo {
> + __s32 max;
> + __s32 min;
> + __s32 fuzz;
> + __s32 flat;
> + } abs[ABS_CNT2];
> +};
> +
> #endif /* _UAPI__UINPUT_H_ */
> --
> 1.8.4
>
^ permalink raw reply
* [PATCH] input - input.h: Add a new switch event
From: Ping Cheng @ 2013-10-03 22:31 UTC (permalink / raw)
To: linux-input
Cc: dmitry.torokhov, rydberg, benjamin.tissoires, linux-kernel,
Ping Cheng
One of Wacom's pen and touch capable models added a switch for
users to turn on/off touch events. We need to report the state of
this switch to userland. But, there is no existing switch event
defined for this purpose. Luckily enough, there is a room for a
new switch event.
Signed-off-by: Ping Cheng <pingc@wacom.com>
---
include/uapi/linux/input.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h
index d08abf9..d4097b0 100644
--- a/include/uapi/linux/input.h
+++ b/include/uapi/linux/input.h
@@ -855,6 +855,7 @@ struct input_keymap_entry {
#define SW_FRONT_PROXIMITY 0x0b /* set = front proximity sensor active */
#define SW_ROTATE_LOCK 0x0c /* set = rotate locked/disabled */
#define SW_LINEIN_INSERT 0x0d /* set = inserted */
+#define SW_TOUCH_ENABLED 0x0e /* set = touch switch turned on (touch events off) */
#define SW_MAX 0x0f
#define SW_CNT (SW_MAX+1)
--
1.8.1.2
^ permalink raw reply related
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