* Re: [PATCH 2/3] input: touchscreen: of: Register multitouch axes
From: Dmitry Torokhov @ 2014-11-05 17:56 UTC (permalink / raw)
To: Maxime Ripard
Cc: Lothar Waßmann, Henrik Rydberg, linux-input, linux-kernel
In-Reply-To: <1415200070-19346-3-git-send-email-maxime.ripard@free-electrons.com>
On Wed, Nov 05, 2014 at 04:07:49PM +0100, Maxime Ripard wrote:
> So far, the DT parsing code was only setting up the regular input axes,
> completely ignoring their multitouch counter parts.
>
> Fill them with the same parameters than the regular axes.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
> drivers/input/touchscreen/of_touchscreen.c | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/input/touchscreen/of_touchscreen.c b/drivers/input/touchscreen/of_touchscreen.c
> index 74d6b0eb50ac..cf2a753edd96 100644
> --- a/drivers/input/touchscreen/of_touchscreen.c
> +++ b/drivers/input/touchscreen/of_touchscreen.c
> @@ -42,17 +42,23 @@ void touchscreen_parse_of_params(struct input_dev *dev)
>
> maximum = of_get_optional_u32(np, "touchscreen-size-x");
> fuzz = of_get_optional_u32(np, "touchscreen-fuzz-x");
> - if (maximum || fuzz)
> + if (maximum || fuzz) {
> input_set_abs_params(dev, ABS_X, 0, maximum, fuzz, 0);
> + input_set_abs_params(dev, ABS_MT_POSITION_X, 0, maximum, fuzz, 0);
Not all devices are multitouch so you shoudl not be setting multitouch
bits unconditionally.
In I think we should rely on driver to set capability bits properly and
then here test them and apply the readings. Probably also issue a
warning if we see max/fuzz setting but neither ABS_<N>/ABS_MT_<N>
capabilities.
Thanks.
> + }
>
> maximum = of_get_optional_u32(np, "touchscreen-size-y");
> fuzz = of_get_optional_u32(np, "touchscreen-fuzz-y");
> - if (maximum || fuzz)
> + if (maximum || fuzz) {
> input_set_abs_params(dev, ABS_Y, 0, maximum, fuzz, 0);
> + input_set_abs_params(dev, ABS_MT_POSITION_Y, 0, maximum, fuzz, 0);
> + }
>
> maximum = of_get_optional_u32(np, "touchscreen-max-pressure");
> fuzz = of_get_optional_u32(np, "touchscreen-fuzz-pressure");
> - if (maximum || fuzz)
> + if (maximum || fuzz) {
> input_set_abs_params(dev, ABS_PRESSURE, 0, maximum, fuzz, 0);
> + input_set_abs_params(dev, ABS_MT_PRESSURE, 0, maximum, fuzz, 0);
> + }
> }
> EXPORT_SYMBOL(touchscreen_parse_of_params);
> --
> 2.1.1
>
--
Dmitry
^ permalink raw reply
* Re: Aorus X3+ touchpad not working
From: Benjamin Tissoires @ 2014-11-05 15:47 UTC (permalink / raw)
To: Maximilien Levesque; +Cc: linux-input, Hans de Goede
In-Reply-To: <CAJdy7pJpbyYHuOg3AWnDJap=T9z0bUCZkM+DRuuTLUFj129H_w@mail.gmail.com>
Hi Maximilien,
[Adding Hans in CC, I am pretty sure he might be helpful]
[side note: I hate those bug reports when there is all the information
but the one we need] <-- Maximilien, do not take this personally, I
know you have been asked to report it that way.
So, I think we need to have a look at your dmesg with the v3.18-rc3
kernel booted.
Hans, do you think this could be related to the nomux/mux dance in the
input tree?
Cheers,
Benjamin
On Wed, Nov 5, 2014 at 4:37 AM, Maximilien Levesque
<maximilien.levesque@gmail.com> wrote:
> Dear Maintainers,
>
> This is my first report. Please bear with me...
> (and let me take the opportunity to thank all of you for your amazing work).
> I've been asked to give a direct link to my e-mail so here it is:
> maximilien.levesque@gmail.com
>
> [1.] One line summary of the problem:
> Aorus X3+ touchpad not working
>
> [2.] Full description of the problem/report:
> On a laptop Aorus X3+, the touchpad is not working. The mouse pointer
> is invisible and touchpad clicks are not possible. It feels like there
> is no touchpad at all.
>
> [3.] Keywords (i.e., modules, networking, kernel):
>
> [4.] Kernel version (from /proc/version):
> Linux version 3.18.0-031800rc3-generic (apw@tangerine) (gcc version
> 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #201411022335 SMP Sun Nov 2
> 23:36:52 UTC 2014
>
> [5.] Output of Oops..
> not relevant
>
> [6.] A small shell script or example program which triggers the
> problem (if possible)
> I am not able to provide one.
>
> [7.] Environment
> Description: Ubuntu 14.10
> Release: 14.10
>
> [7.1.] Software (add the output of the ver_linux script here)
> Linux portmax2 3.18.0-031800rc3-generic #201411022335 SMP Sun Nov 2
> 23:36:52 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
>
> Gnu C 4.9.1
> Gnu make 4.0
> binutils 2.24.90.20141014
> util-linux 2.25.1
> mount debug
> module-init-tools 18
> e2fsprogs 1.42.10
> pcmciautils 018
> PPP 2.4.5
> Linux C Library 2.19
> Dynamic linker (ldd) 2.19
> Procps 3.3.9
> Net-tools 1.60
> Kbd 1.15.5
> Sh-utils 8.23
> wireless-tools 30
> Modules Loaded pci_stub vboxpci vboxnetadp vboxnetflt vboxdrv
> ctr ccm arc4 iwlmvm mac80211 btusb sparse_keymap x86_pkg_temp_thermal
> intel_powerclamp coretemp kvm_intel kvm snd_hda_codec_hdmi
> crct10dif_pclmul crc32_pclmul ghash_clmulni_intel uvcvideo
> videobuf2_vmalloc videobuf2_memops aesni_intel aes_x86_64 lrw
> videobuf2_core gf128mul glue_helper nouveau ablk_helper iwlwifi cryptd
> v4l2_common videodev serio_raw media joydev snd_hda_codec_realtek
> snd_hda_codec_generic i915 mxm_wmi snd_soc_rt5640 rtsx_pci_ms
> snd_soc_rl6231 cfg80211 ttm snd_hda_intel memstick snd_soc_core
> snd_hda_controller drm_kms_helper snd_compress snd_hda_codec
> snd_pcm_dmaengine lpc_ich snd_hwdep drm mei_me snd_pcm mei shpchp
> i2c_algo_bit snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq
> snd_seq_device snd_timer tpm_infineon snd soundcore i2c_hid wmi
> snd_soc_sst_acpi dw_dmac video dw_dmac_core 8250_dw
> i2c_designware_platform i2c_designware_core bnep rfcomm bluetooth
> spi_pxa2xx_platform mac_hid binfmt_misc parport_pc ppdev lp parport
> nls_iso8859_1 hid_generic usbhid hid rtsx_pci_sdmmc ahci psmouse alx
> rtsx_pci libahci mdio sdhci_acpi sdhci
>
>
> [7.2.] Processor information (from /proc/cpuinfo):
> processor : 0
> vendor_id : GenuineIntel
> cpu family : 6
> model : 70
> model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
> stepping : 1
> microcode : 0xf
> cpu MHz : 832.781
> cache size : 6144 KB
> physical id : 0
> siblings : 8
> core id : 0
> cpu cores : 4
> 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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
> sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
> f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
> flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
> invpcid rtm xsaveopt
> bugs :
> bogomips : 4789.06
> 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 : 70
> model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
> stepping : 1
> microcode : 0xf
> cpu MHz : 931.406
> cache size : 6144 KB
> physical id : 0
> siblings : 8
> core id : 1
> cpu cores : 4
> 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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
> sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
> f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
> flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
> invpcid rtm xsaveopt
> bugs :
> bogomips : 4789.06
> 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 : 70
> model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
> stepping : 1
> microcode : 0xf
> cpu MHz : 899.437
> cache size : 6144 KB
> physical id : 0
> siblings : 8
> core id : 2
> cpu cores : 4
> apicid : 4
> initial apicid : 4
> 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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
> sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
> f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
> flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
> invpcid rtm xsaveopt
> bugs :
> bogomips : 4789.06
> 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 : 70
> model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
> stepping : 1
> microcode : 0xf
> cpu MHz : 829.218
> cache size : 6144 KB
> physical id : 0
> siblings : 8
> core id : 3
> cpu cores : 4
> apicid : 6
> initial apicid : 6
> 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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
> sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
> f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
> flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
> invpcid rtm xsaveopt
> bugs :
> bogomips : 4789.06
> clflush size : 64
> cache_alignment : 64
> address sizes : 39 bits physical, 48 bits virtual
> power management:
>
> processor : 4
> vendor_id : GenuineIntel
> cpu family : 6
> model : 70
> model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
> stepping : 1
> microcode : 0xf
> cpu MHz : 799.968
> cache size : 6144 KB
> physical id : 0
> siblings : 8
> core id : 0
> cpu cores : 4
> 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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
> sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
> f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
> flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
> invpcid rtm xsaveopt
> bugs :
> bogomips : 4789.06
> clflush size : 64
> cache_alignment : 64
> address sizes : 39 bits physical, 48 bits virtual
> power management:
>
> processor : 5
> vendor_id : GenuineIntel
> cpu family : 6
> model : 70
> model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
> stepping : 1
> microcode : 0xf
> cpu MHz : 1000.500
> cache size : 6144 KB
> physical id : 0
> siblings : 8
> core id : 1
> cpu cores : 4
> 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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
> sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
> f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
> flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
> invpcid rtm xsaveopt
> bugs :
> bogomips : 4789.06
> clflush size : 64
> cache_alignment : 64
> address sizes : 39 bits physical, 48 bits virtual
> power management:
>
> processor : 6
> vendor_id : GenuineIntel
> cpu family : 6
> model : 70
> model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
> stepping : 1
> microcode : 0xf
> cpu MHz : 899.531
> cache size : 6144 KB
> physical id : 0
> siblings : 8
> core id : 2
> cpu cores : 4
> apicid : 5
> initial apicid : 5
> 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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
> sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
> f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
> flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
> invpcid rtm xsaveopt
> bugs :
> bogomips : 4789.06
> clflush size : 64
> cache_alignment : 64
> address sizes : 39 bits physical, 48 bits virtual
> power management:
>
> processor : 7
> vendor_id : GenuineIntel
> cpu family : 6
> model : 70
> model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
> stepping : 1
> microcode : 0xf
> cpu MHz : 1019.625
> cache size : 6144 KB
> physical id : 0
> siblings : 8
> core id : 3
> cpu cores : 4
> apicid : 7
> initial apicid : 7
> 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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
> sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
> f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
> flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
> invpcid rtm xsaveopt
> bugs :
> bogomips : 4789.06
> clflush size : 64
> cache_alignment : 64
> address sizes : 39 bits physical, 48 bits virtual
> power management:
>
>
>
> [7.3.] Module information (from /proc/modules):
> pci_stub 12622 1 - Live 0x0000000000000000
> vboxpci 23256 0 - Live 0x0000000000000000 (OE)
> vboxnetadp 25670 0 - Live 0x0000000000000000 (OE)
> vboxnetflt 27605 0 - Live 0x0000000000000000 (OE)
> vboxdrv 418013 3 vboxpci,vboxnetadp,vboxnetflt, Live 0x0000000000000000 (OE)
> ctr 13193 0 - Live 0x0000000000000000
> ccm 17856 0 - Live 0x0000000000000000
> arc4 12573 2 - Live 0x0000000000000000
> iwlmvm 254598 0 - Live 0x0000000000000000
> mac80211 697143 1 iwlmvm, Live 0x0000000000000000
> btusb 32691 0 - Live 0x0000000000000000
> sparse_keymap 13890 0 - Live 0x0000000000000000
> x86_pkg_temp_thermal 14312 0 - Live 0x0000000000000000
> intel_powerclamp 19099 0 - Live 0x0000000000000000
> coretemp 13638 0 - Live 0x0000000000000000
> kvm_intel 149984 0 - Live 0x0000000000000000
> kvm 475233 1 kvm_intel, Live 0x0000000000000000
> snd_hda_codec_hdmi 52670 1 - Live 0x0000000000000000
> crct10dif_pclmul 14268 0 - Live 0x0000000000000000
> crc32_pclmul 13180 0 - Live 0x0000000000000000
> ghash_clmulni_intel 13230 0 - Live 0x0000000000000000
> uvcvideo 86723 0 - Live 0x0000000000000000
> videobuf2_vmalloc 13216 1 uvcvideo, Live 0x0000000000000000
> videobuf2_memops 13362 1 videobuf2_vmalloc, Live 0x0000000000000000
> aesni_intel 169686 1 - Live 0x0000000000000000
> aes_x86_64 17131 1 aesni_intel, Live 0x0000000000000000
> lrw 13323 1 aesni_intel, Live 0x0000000000000000
> videobuf2_core 51547 1 uvcvideo, Live 0x0000000000000000
> gf128mul 14951 1 lrw, Live 0x0000000000000000
> glue_helper 14095 1 aesni_intel, Live 0x0000000000000000
> nouveau 1365930 1 - Live 0x0000000000000000
> ablk_helper 13597 1 aesni_intel, Live 0x0000000000000000
> iwlwifi 193774 1 iwlmvm, Live 0x0000000000000000
> cryptd 20531 3 ghash_clmulni_intel,aesni_intel,ablk_helper, Live
> 0x0000000000000000
> v4l2_common 15715 1 videobuf2_core, Live 0x0000000000000000
> videodev 163831 3 uvcvideo,videobuf2_core,v4l2_common, Live 0x0000000000000000
> serio_raw 13483 0 - Live 0x0000000000000000
> media 22008 2 uvcvideo,videodev, Live 0x0000000000000000
> joydev 17587 0 - Live 0x0000000000000000
> snd_hda_codec_realtek 76099 1 - Live 0x0000000000000000
> snd_hda_codec_generic 69995 1 snd_hda_codec_realtek, Live 0x0000000000000000
> i915 1031913 7 - Live 0x0000000000000000
> mxm_wmi 13021 1 nouveau, Live 0x0000000000000000
> snd_soc_rt5640 93325 0 - Live 0x0000000000000000
> rtsx_pci_ms 18337 0 - Live 0x0000000000000000
> snd_soc_rl6231 13037 1 snd_soc_rt5640, Live 0x0000000000000000
> cfg80211 520257 3 iwlmvm,mac80211,iwlwifi, Live 0x0000000000000000
> ttm 90228 1 nouveau, Live 0x0000000000000000
> snd_hda_intel 30783 5 - Live 0x0000000000000000
> memstick 16968 1 rtsx_pci_ms, Live 0x0000000000000000
> snd_soc_core 207596 1 snd_soc_rt5640, Live 0x0000000000000000
> snd_hda_controller 32234 1 snd_hda_intel, Live 0x0000000000000000
> drm_kms_helper 99802 2 nouveau,i915, Live 0x0000000000000000
> snd_compress 19395 1 snd_soc_core, Live 0x0000000000000000
> snd_hda_codec 144641 5
> snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel,snd_hda_controller,
> Live 0x0000000000000000
> snd_pcm_dmaengine 15229 1 snd_soc_core, Live 0x0000000000000000
> lpc_ich 21176 0 - Live 0x0000000000000000
> snd_hwdep 17709 1 snd_hda_codec, Live 0x0000000000000000
> drm 323675 9 nouveau,i915,ttm,drm_kms_helper, Live 0x0000000000000000
> mei_me 19565 0 - Live 0x0000000000000000
> snd_pcm 106273 7
> snd_hda_codec_hdmi,snd_soc_rt5640,snd_hda_intel,snd_soc_core,snd_hda_controller,snd_hda_codec,snd_pcm_dmaengine,
> Live 0x0000000000000000
> mei 88473 1 mei_me, Live 0x0000000000000000
> shpchp 37216 0 - Live 0x0000000000000000
> i2c_algo_bit 13564 2 nouveau,i915, Live 0x0000000000000000
> snd_seq_midi 13564 0 - Live 0x0000000000000000
> snd_seq_midi_event 14899 1 snd_seq_midi, Live 0x0000000000000000
> snd_rawmidi 31197 1 snd_seq_midi, Live 0x0000000000000000
> snd_seq 63540 2 snd_seq_midi,snd_seq_midi_event, Live 0x0000000000000000
> snd_seq_device 14497 3 snd_seq_midi,snd_rawmidi,snd_seq, Live 0x0000000000000000
> snd_timer 30118 2 snd_pcm,snd_seq, Live 0x0000000000000000
> tpm_infineon 17169 0 - Live 0x0000000000000000
> snd 84025 23 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel,snd_soc_core,snd_compress,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_seq_device,snd_timer,
> Live 0x0000000000000000
> soundcore 15091 2 snd_hda_codec,snd, Live 0x0000000000000000
> i2c_hid 19065 0 - Live 0x0000000000000000
> wmi 19379 2 nouveau,mxm_wmi, Live 0x0000000000000000
> snd_soc_sst_acpi 13007 0 - Live 0x0000000000000000
> dw_dmac 12835 0 - Live 0x0000000000000000
> video 20649 2 nouveau,i915, Live 0x0000000000000000
> dw_dmac_core 28558 1 dw_dmac, Live 0x0000000000000000
> 8250_dw 13474 0 - Live 0x0000000000000000
> i2c_designware_platform 13025 0 - Live 0x0000000000000000
> i2c_designware_core 14990 1 i2c_designware_platform, Live 0x0000000000000000
> bnep 23980 2 - Live 0x0000000000000000
> rfcomm 75066 8 - Live 0x0000000000000000
> bluetooth 486890 22 btusb,bnep,rfcomm, Live 0x0000000000000000
> spi_pxa2xx_platform 23256 0 - Live 0x0000000000000000
> mac_hid 13275 0 - Live 0x0000000000000000
> binfmt_misc 17501 1 - Live 0x0000000000000000
> parport_pc 32909 0 - Live 0x0000000000000000
> ppdev 17711 0 - Live 0x0000000000000000
> lp 17799 0 - Live 0x0000000000000000
> parport 42481 3 parport_pc,ppdev,lp, Live 0x0000000000000000
> nls_iso8859_1 12713 1 - Live 0x0000000000000000
> hid_generic 12559 0 - Live 0x0000000000000000
> usbhid 53155 0 - Live 0x0000000000000000
> hid 110572 3 i2c_hid,hid_generic,usbhid, Live 0x0000000000000000
> rtsx_pci_sdmmc 23718 0 - Live 0x0000000000000000
> ahci 34220 3 - Live 0x0000000000000000
> psmouse 118117 0 - Live 0x0000000000000000
> alx 41397 0 - Live 0x0000000000000000
> rtsx_pci 51162 2 rtsx_pci_ms,rtsx_pci_sdmmc, Live 0x0000000000000000
> libahci 32446 1 ahci, Live 0x0000000000000000
> mdio 13561 1 alx, Live 0x0000000000000000
> sdhci_acpi 13502 0 - Live 0x0000000000000000
> sdhci 43929 1 sdhci_acpi, 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 : PNP0C09:00
> 0062-0062 : EC data
> 0064-0064 : keyboard
> 0066-0066 : PNP0C09:00
> 0066-0066 : EC cmd
> 0070-0077 : rtc0
> 0080-008f : dma page reg
> 00a0-00a1 : pic2
> 00c0-00df : dma2
> 00f0-00ff : fpu
> 00f0-00f0 : PNP0C04:00
> 04d0-04d1 : pnp 00:04
> 0680-069f : pnp 00:01
> 0cf8-0cff : PCI conf1
> 0d00-ffff : PCI Bus 0000:00
> 164e-164f : pnp 00:01
> 1800-1803 : ACPI PM1a_EVT_BLK
> 1804-1805 : ACPI PM1a_CNT_BLK
> 1808-180b : ACPI PM_TMR
> 1810-1815 : ACPI CPU throttle
> 1820-182f : ACPI GPE0_BLK
> 1830-1833 : iTCO_wdt
> 1850-1850 : ACPI PM2_CNT_BLK
> 1854-1857 : pnp 00:03
> 1860-187f : iTCO_wdt
> 1c00-1cfe : pnp 00:01
> 1d00-1dfe : pnp 00:01
> 1e00-1efe : pnp 00:01
> 1f00-1ffe : pnp 00:01
> 2000-2fff : PCI Bus 0000:02
> d000-dfff : PCI Bus 0000:04
> d000-d07f : 0000:04:00.0
> e000-efff : PCI Bus 0000:01
> e000-e07f : 0000:01:00.0
> 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:01
> ffff-ffff : pnp 00:01
> ffff-ffff : pnp 00:01
>
> 00000000-00000fff : reserved
> 00001000-00057fff : System RAM
> 00058000-00058fff : reserved
> 00059000-0009dfff : System RAM
> 0009e000-0009ffff : reserved
> 000a0000-000bffff : PCI Bus 0000:00
> 000c0000-000c3fff : PCI Bus 0000:00
> 000c4000-000c7fff : PCI Bus 0000:00
> 000c8000-000cbfff : PCI Bus 0000:00
> 000cc000-000cffff : PCI Bus 0000:00
> 000d0000-000d3fff : PCI Bus 0000:00
> 000d4000-000d7fff : PCI Bus 0000:00
> 000d8000-000dbfff : PCI Bus 0000:00
> 000dc000-000dffff : PCI Bus 0000:00
> 000f0000-000fffff : System ROM
> 00100000-b9511fff : System RAM
> 02000000-027ae357 : Kernel code
> 027ae358-02d1997f : Kernel data
> 02e80000-02fc8fff : Kernel bss
> b9512000-b9518fff : ACPI Non-volatile Storage
> b9519000-b9d6cfff : System RAM
> b9d6d000-ba024fff : reserved
> ba025000-cb226fff : System RAM
> cb227000-cb2c2fff : reserved
> cb2c3000-cb2e1fff : ACPI Tables
> cb2e2000-cb987fff : ACPI Non-volatile Storage
> cb988000-cbf77fff : reserved
> cbf78000-cbffefff : reserved
> cbfff000-cbffffff : System RAM
> cd000000-cf1fffff : reserved
> cd200000-cf1fffff : Graphics Stolen Memory
> cf200000-feafffff : PCI Bus 0000:00
> cf200000-cf3fffff : PCI Bus 0000:02
> cf400000-cf5fffff : PCI Bus 0000:02
> d0000000-dfffffff : 0000:00:02.0
> e0000000-f1ffffff : PCI Bus 0000:01
> e0000000-efffffff : 0000:01:00.0
> f0000000-f1ffffff : 0000:01:00.0
> f6000000-f70fffff : PCI Bus 0000:01
> f6000000-f6ffffff : 0000:01:00.0
> f7000000-f707ffff : 0000:01:00.0
> f7400000-f77fffff : 0000:00:02.0
> f7800000-f78fffff : PCI Bus 0000:05
> f7800000-f7800fff : 0000:05:00.0
> f7800000-f7800fff : rtsx_pci
> f7900000-f79fffff : PCI Bus 0000:04
> f7900000-f793ffff : 0000:04:00.0
> f7900000-f793ffff : alx
> f7a00000-f7afffff : PCI Bus 0000:03
> f7a00000-f7a01fff : 0000:03:00.0
> f7a00000-f7a01fff : iwlwifi
> f7b00000-f7b0ffff : 0000:00:14.0
> f7b00000-f7b0ffff : xhci-hcd
> f7b10000-f7b13fff : 0000:00:1b.0
> f7b10000-f7b13fff : ICH HD audio
> f7b14000-f7b17fff : 0000:00:03.0
> f7b14000-f7b17fff : ICH HD audio
> f7b18000-f7b18fff : 0000:00:1f.6
> f7b19000-f7b190ff : 0000:00:1f.3
> f7b1a000-f7b1a7ff : 0000:00:1f.2
> f7b1a000-f7b1a7ff : ahci
> f7b1b000-f7b1b3ff : 0000:00:1d.0
> f7b1b000-f7b1b3ff : ehci_hcd
> f7b1c000-f7b1c3ff : 0000:00:1a.0
> f7b1c000-f7b1c3ff : ehci_hcd
> f7b1e000-f7b1e00f : 0000:00:16.0
> f7b1e000-f7b1e00f : mei_me
> f7fdf000-f7fdffff : pnp 00:07
> f7fe0000-f7feffff : pnp 00:07
> f8000000-fbffffff : PCI MMCONFIG 0000 [bus 00-3f]
> f8000000-fbffffff : reserved
> f8000000-fbffffff : pnp 00:07
> fec00000-fec00fff : reserved
> fec00000-fec003ff : IOAPIC 0
> fed00000-fed03fff : reserved
> fed00000-fed003ff : HPET 0
> fed00000-fed003ff : PNP0103:00
> fed10000-fed17fff : pnp 00:07
> fed18000-fed18fff : pnp 00:07
> fed19000-fed19fff : pnp 00:07
> fed1c000-fed1ffff : reserved
> fed1c000-fed1ffff : pnp 00:07
> fed1f410-fed1f414 : iTCO_wdt
> fed20000-fed3ffff : pnp 00:07
> fed40000-fed44fff : pnp 00:00
> fed45000-fed8ffff : pnp 00:07
> fed90000-fed90fff : dmar0
> fed91000-fed91fff : dmar1
> fee00000-fee00fff : Local APIC
> fee00000-fee00fff : reserved
> ff000000-ffffffff : reserved
> ff000000-ffffffff : INT0800:00
> ff000000-ffffffff : pnp 00:07
> 100000000-42fdfffff : System RAM
> 42fe00000-42fffffff : RAM buffer
>
>
> [7.5.] PCI information ('lspci -vvv' as root)
> 00:00.0 Host bridge: Intel Corporation Crystal Well DRAM Controller (rev 08)
> Subsystem: Gigabyte Technology Co., Ltd Device 1456
> 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:01.0 PCI bridge: Intel Corporation Crystal Well PCI Express x16
> Controller (rev 08) (prog-if 00 [Normal decode])
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
> ParErr- Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
> I/O behind bridge: 0000e000-0000efff
> Memory behind bridge: f6000000-f70fffff
> Prefetchable memory behind bridge: 00000000e0000000-00000000f1ffffff
> 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: [88] Subsystem: Gigabyte Technology Co., Ltd Device 1456
> Capabilities: [80] 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: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
> Address: fee002d8 Data: 0000
> Capabilities: [a0] Express (v2) Root Port (Slot+), MSI 00
> DevCap: MaxPayload 256 bytes, PhantFunc 0
> ExtTag- RBE+
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 256 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> LnkCap: Port #2, Speed 8GT/s, Width x16, ASPM L0s L1, Exit
> Latency L0s <256ns, L1 <8us
> ClockPM- Surprise- LLActRep- BwNot+
> LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled+ CommClk+
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+
> DLActive- BWMgmt- ABWMgmt-
> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> Slot #1, PowerLimit 75.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: Not Supported, TimeoutDis-, LTR+,
> OBFF Via WAKE# ARIFwd-
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-,
> OBFF Via WAKE# ARIFwd-
> LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range,
> EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -6dB,
> EqualizationComplete+, EqualizationPhase1+
> EqualizationPhase2+, EqualizationPhase3+, LinkEqualizationRequest-
> Capabilities: [100 v1] 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=ff
> Status: NegoPending+ InProgress-
> Capabilities: [140 v1] Root Complex Link
> Desc: PortNumber=02 ComponentID=01 EltType=Config
> Link0: Desc: TargetPort=00 TargetComponent=01 AssocRCRB-
> LinkType=MemMapped LinkValid+
> Addr: 00000000fed19000
> Capabilities: [d94 v1] #19
> Kernel driver in use: pcieport
>
> 00:02.0 VGA compatible controller: Intel Corporation Crystal Well
> Integrated Graphics Controller (rev 08) (prog-if 00 [VGA controller])
> Subsystem: Gigabyte Technology Co., Ltd Device 1456
> 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 37
> Region 0: Memory at f7400000 (64-bit, non-prefetchable) [size=4M]
> Region 2: Memory at d0000000 (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: fee00018 Data: 0000
> 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 Crystal Well HD Audio
> Controller (rev 08)
> 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 38
> Region 0: Memory at f7b14000 (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: fee004d8 Data: 0000
> Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE-
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> Kernel driver in use: snd_hda_intel
>
> 00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset
> Family USB xHCI (rev 05) (prog-if 30 [XHCI])
> Subsystem: Gigabyte Technology Co., Ltd Device 1456
> 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 31
> Region 0: Memory at f7b00000 (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: 00000000fee003d8 Data: 0000
> Kernel driver in use: xhci_hcd
>
> 00:16.0 Communication controller: Intel Corporation 8 Series/C220
> Series Chipset Family MEI Controller #1 (rev 04)
> Subsystem: Gigabyte Technology Co., Ltd Device 1456
> 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 34
> Region 0: Memory at f7b1e000 (64-bit, non-prefetchable) [size=16]
> 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: 00000000fee00458 Data: 0000
> Kernel driver in use: mei_me
>
> 00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset
> Family USB EHCI #2 (rev 05) (prog-if 20 [EHCI])
> Subsystem: Gigabyte Technology Co., Ltd Device 1456
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
> ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Interrupt: pin A routed to IRQ 16
> Region 0: Memory at f7b1c000 (32-bit, non-prefetchable) [size=1K]
> Capabilities: [50] Power Management version 2
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA
> PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [58] Debug port: BAR=1 offset=00a0
> Capabilities: [98] PCI Advanced Features
> AFCap: TP+ FLR+
> AFCtrl: FLR-
> AFStatus: TP-
> Kernel driver in use: ehci-pci
>
> 00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset
> High Definition Audio Controller (rev 05)
> Subsystem: Gigabyte Technology Co., Ltd Device 1456
> 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 35
> Region 0: Memory at f7b10000 (64-bit, non-prefetchable) [size=16K]
> Capabilities: [50] Power Management version 2
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA
> PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D3 NoSoftRst- PME-Enable+ DSel=0 DScale=0 PME-
> Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Address: 00000000fee00498 Data: 0000
> Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE-
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> Capabilities: [100 v1] Virtual Channel
> Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
> Arb: Fixed- WRR32- WRR64- WRR128-
> Ctrl: ArbSelect=Fixed
> Status: InProgress-
> VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
> Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=01
> Status: NegoPending- InProgress-
> VC1: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
> Ctrl: Enable+ ID=2 ArbSelect=Fixed TC/VC=04
> Status: NegoPending- InProgress-
> Kernel driver in use: snd_hda_intel
>
> 00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
> Family PCI Express Root Port #1 (rev d5) (prog-if 00 [Normal decode])
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
> ParErr- Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
> I/O behind bridge: 00002000-00002fff
> Memory behind bridge: cf200000-cf3fffff
> Prefetchable memory behind bridge: 00000000cf400000-00000000cf5fffff
> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort+ <SERR- <PERR-
> BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE+
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> LnkCap: Port #1, Speed 5GT/s, Width x1, ASPM L0s L1, Exit
> Latency L0s <1us, L1 <4us
> ClockPM- Surprise- LLActRep+ BwNot+
> LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk-
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+
> DLActive- BWMgmt- ABWMgmt-
> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+
> Slot #0, PowerLimit 0.000W; Interlock- NoCompl+
> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet+ CmdCplt-
> HPIrq+ LinkChg+
> Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-
> Changed: MRL- PresDet- LinkState-
> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
> RootCap: CRSVisible-
> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+,
> OBFF Via WAKE# ARIFwd-
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+,
> OBFF Disabled ARIFwd-
> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range,
> EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB,
> EqualizationComplete-, EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
> Address: fee002f8 Data: 0000
> Capabilities: [90] Subsystem: Gigabyte Technology Co., Ltd Device 1456
> Capabilities: [a0] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
> PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Kernel driver in use: pcieport
>
> 00:1c.1 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
> Family PCI Express Root Port #2 (rev d5) (prog-if 00 [Normal decode])
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
> ParErr- Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
> I/O behind bridge: 0000f000-00000fff
> Memory behind bridge: f7a00000-f7afffff
> Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- <SERR- <PERR-
> BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE+
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> LnkCap: Port #2, Speed 5GT/s, Width x1, ASPM L0s L1, Exit
> Latency L0s <512ns, L1 <16us
> ClockPM- Surprise- LLActRep+ BwNot+
> LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
> DLActive+ BWMgmt+ ABWMgmt-
> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> Slot #1, PowerLimit 10.000W; Interlock- NoCompl+
> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
> HPIrq- LinkChg-
> Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> Changed: MRL- PresDet- LinkState-
> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
> RootCap: CRSVisible-
> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+,
> OBFF Not Supported ARIFwd-
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+,
> OBFF Disabled ARIFwd-
> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range,
> EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB,
> EqualizationComplete-, EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
> Address: fee00338 Data: 0000
> Capabilities: [90] Subsystem: Gigabyte Technology Co., Ltd Device 1456
> 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 8 Series/C220 Series Chipset
> Family PCI Express Root Port #3 (rev d5) (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=04, sec-latency=0
> I/O behind bridge: 0000d000-0000dfff
> Memory behind bridge: f7900000-f79fffff
> Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- <SERR- <PERR-
> BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE+
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> LnkCap: Port #3, Speed 5GT/s, Width x1, ASPM L0s L1, Exit
> Latency L0s <512ns, L1 <16us
> ClockPM- Surprise- LLActRep+ BwNot+
> LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
> DLActive+ BWMgmt+ ABWMgmt-
> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> Slot #2, PowerLimit 10.000W; Interlock- NoCompl+
> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
> HPIrq- LinkChg-
> Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> Changed: MRL- PresDet- LinkState-
> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
> RootCap: CRSVisible-
> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+,
> OBFF Not Supported ARIFwd-
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+,
> OBFF Disabled ARIFwd-
> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range,
> EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB,
> EqualizationComplete-, EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
> Address: fee00378 Data: 0000
> Capabilities: [90] Subsystem: Gigabyte Technology Co., Ltd Device 1456
> 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.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
> Family PCI Express Root Port #4 (rev d5) (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=05, subordinate=05, sec-latency=0
> I/O behind bridge: 0000f000-00000fff
> Memory behind bridge: f7800000-f78fffff
> Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- <SERR- <PERR-
> BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag- RBE+
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> LnkCap: Port #4, Speed 5GT/s, Width x1, ASPM L0s L1, Exit
> Latency L0s <512ns, L1 <16us
> ClockPM- Surprise- LLActRep+ BwNot+
> LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
> DLActive+ BWMgmt+ ABWMgmt-
> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> Slot #3, PowerLimit 10.000W; Interlock- NoCompl+
> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
> HPIrq- LinkChg-
> Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> Changed: MRL- PresDet- LinkState-
> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
> RootCap: CRSVisible-
> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+,
> OBFF Not Supported ARIFwd-
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+,
> OBFF Disabled ARIFwd-
> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range,
> EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB,
> EqualizationComplete-, EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
> Address: fee003b8 Data: 0000
> Capabilities: [90] Subsystem: Gigabyte Technology Co., Ltd Device 1456
> 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:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset
> Family USB EHCI #1 (rev 05) (prog-if 20 [EHCI])
> Subsystem: Gigabyte Technology Co., Ltd Device 1456
> 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 f7b1b000 (32-bit, non-prefetchable) [size=1K]
> Capabilities: [50] Power Management version 2
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA
> PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [58] Debug port: BAR=1 offset=00a0
> Capabilities: [98] PCI Advanced Features
> AFCap: TP+ FLR+
> AFCtrl: FLR-
> AFStatus: TP-
> Kernel driver in use: ehci-pci
>
> 00:1f.0 ISA bridge: Intel Corporation HM87 Express LPC Controller (rev 05)
> Subsystem: Gigabyte Technology Co., Ltd Device 1456
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
> ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Capabilities: [e0] Vendor Specific Information: Len=0c <?>
> Kernel driver in use: lpc_ich
>
> 00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series
> Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05) (prog-if
> 01 [AHCI 1.0])
> Subsystem: Gigabyte Technology Co., Ltd Device 1456
> 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 33
> 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 f7b1a000 (32-bit, non-prefetchable) [size=2K]
> Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
> Address: fee00438 Data: 0000
> Capabilities: [70] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
> PME(D0-,D1-,D2-,D3hot+,D3cold-)
> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [a8] SATA HBA v1.0 BAR4 Offset=00000004
> Kernel driver in use: ahci
>
> 00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family
> SMBus Controller (rev 05)
> Subsystem: Gigabyte Technology Co., Ltd Device 1456
> Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop-
> ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Interrupt: pin C routed to IRQ 255
> Region 0: Memory at f7b19000 (64-bit, non-prefetchable) [size=256]
> Region 4: I/O ports at f040 [size=32]
>
> 00:1f.6 Signal processing controller: Intel Corporation 8 Series
> Chipset Family Thermal Management Controller (rev 05)
> Subsystem: Gigabyte Technology Co., Ltd Device 1456
> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop-
> ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Interrupt: pin C routed to IRQ 255
> Region 0: Memory at f7b18000 (64-bit, non-prefetchable) [disabled] [size=4K]
> Capabilities: [50] Power Management version 3
> Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
> PME(D0-,D1-,D2-,D3hot-,D3cold-)
> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
> Address: 00000000 Data: 0000
>
> 01:00.0 3D controller: NVIDIA Corporation GK104M [GeForce GTX 870M]
> (rev ff) (prog-if ff)
> !!! Unknown header type 7f
> Kernel driver in use: nouveau
>
> 03:00.0 Network controller: Intel Corporation Wireless 7260 (rev bb)
> 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 36
> Region 0: Memory at f7a00000 (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: 00000000fee004b8 Data: 0000
> Capabilities: [40] Express (v2) Endpoint, MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
> <512ns, L1 unlimited
> ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr+ NoSnoop+ FLReset-
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit
> Latency L0s <4us, L1 <32us
> ClockPM+ Surprise- LLActRep- BwNot-
> LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
> ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
> DLActive- BWMgmt- ABWMgmt-
> DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Via WAKE#
> DevCtl2: Completion Timeout: 16ms to 55ms, TimeoutDis-, LTR+,
> OBFF Disabled
> LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range,
> EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB,
> EqualizationComplete-, EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [100 v1] Advanced Error Reporting
> UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
> RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
> RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt-
> RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
> CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
> AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
> Capabilities: [140 v1] Device Serial Number f8-16-54-ff-ff-7d-7e-6d
> Capabilities: [14c v1] Latency Tolerance Reporting
> Max snoop latency: 71680ns
> Max no snoop latency: 71680ns
> Capabilities: [154 v1] Vendor Specific Information: ID=cafe Rev=1
> Len=014 <?>
> Kernel driver in use: iwlwifi
>
> 04:00.0 Ethernet controller: Qualcomm Atheros Killer E220x Gigabit
> Ethernet Controller (rev 10)
> Subsystem: Gigabyte Technology Co., Ltd Device 1456
> 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 40
> Region 0: Memory at f7900000 (64-bit, non-prefetchable) [size=256K]
> Region 2: I/O ports at d000 [disabled] [size=128]
> Capabilities: [40] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA
> PME(D0+,D1+,D2+,D3hot+,D3cold+)
> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [58] Express (v1) Endpoint, MSI 00
> DevCap: MaxPayload 4096 bytes, PhantFunc 0, Latency L0s
> unlimited, L1 unlimited
> ExtTag- AttnBtn+ AttnInd+ PwrInd+ RBE+ FLReset-
> DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 512 bytes
> DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit
> Latency L0s unlimited, L1 unlimited
> ClockPM+ Surprise- LLActRep- BwNot-
> LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
> ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
> DLActive- BWMgmt- ABWMgmt-
> Capabilities: [c0] MSI: Enable+ Count=1/16 Maskable+ 64bit+
> Address: 00000000fee00518 Data: 0000
> Masking: 0000fffe Pending: 00000000
> Capabilities: [d8] MSI-X: Enable- Count=16 Masked-
> Vector table: BAR=0 offset=00002000
> PBA: BAR=0 offset=00003000
> 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: [180 v1] Device Serial Number ff-9b-c9-fc-f0-de-f1-ff
> Kernel driver in use: alx
>
> 05:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd.
> RTS5227 PCI Express Card Reader (rev 01)
> Subsystem: Realtek Semiconductor Co., Ltd. RTS5227 PCI Express Card Reader
> 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 32
> Region 0: Memory at f7800000 (32-bit, non-prefetchable) [size=4K]
> Capabilities: [40] Power Management version 3
> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA
> PME(D0-,D1+,D2+,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Address: 00000000fee00418 Data: 0000
> Capabilities: [70] Express (v2) Endpoint, MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
> unlimited, L1 unlimited
> ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> MaxPayload 128 bytes, MaxReadReq 512 bytes
> DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit
> Latency L0s unlimited, L1 <64us
> ClockPM+ Surprise- LLActRep- BwNot-
> LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk-
> ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
> DLActive- BWMgmt- ABWMgmt-
> DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR+,
> OBFF Via message/WAKE#
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+,
> OBFF Disabled
> LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range,
> EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -3.5dB,
> EqualizationComplete-, EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [100 v2] 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 00-00-00-01-00-4c-e0-00
> Capabilities: [150 v1] Latency Tolerance Reporting
> Max snoop latency: 71680ns
> Max no snoop latency: 71680ns
> Capabilities: [158 v1] L1 PM Substates
> L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+
> L1_PM_Substates+
> PortCommonModeRestoreTime=60us PortTPowerOnTime=60us
> Kernel driver in use: rtsx_pci
>
>
>
> [7.6.] SCSI information (from /proc/scsi/scsi)
> Attached devices:
> Host: scsi0 Channel: 00 Id: 00 Lun: 00
> Vendor: ATA Model: LITEONIT LGT-256 Rev: 001
> Type: Direct-Access ANSI SCSI revision: 05
> Host: scsi1 Channel: 00 Id: 00 Lun: 00
> Vendor: ATA Model: LITEONIT LGT-256 Rev: 001
> 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):
> ls /proc
> 1 1114 14 1549 185 19 20 2180 2437 2601 2672 2725
> 28 2920 3002 3153 3345 3452 38 45 53 59 67 72 777
> 845 asound dma kallsyms meminfo scsi
> timer_list
> 10 1127 1488 1598 1856 190 200 219 2468 2607 2673 2744
> 2805 2921 3027 3198 3350 3477 39 46 54 60 676 73 778
> 846 buddyinfo driver kcore misc self
> timer_stats
> 1011 1128 1493 1676 186 191 2017 22 2470 2612 2678 2783
> 2850 2928 3035 32 3356 3486 4 47 546 61 68 74 78
> 847 bus execdomains keys modules slabinfo
> tty
> 102 1150 1494 1698 1869 192 202 220 25 2614 2680 2784
> 2856 2930 3037 3236 3381 3487 40 48 55 62 687 740 784
> 848 cgroups fb key-users mounts softirqs
> uptime
> 103 1151 15 17 187 1921 203 221 2542 2619 2688 2785
> 2862 2944 3040 3239 3385 35 407 49 56 620 69 75 8
> 85 cmdline filesystems kmsg mtrr stat
> version
> 1036 1156 1500 1758 1877 193 204 222 2544 2628 2689 2787
> 2882 2949 3042 3270 34 3542 41 5 560 63 691 751 81
> 86 consoles fs kpagecount net swaps
> vmallocinfo
> 1069 12 1501 18 188 194 207 223 2558 2633 2692 2790
> 2897 2955 3055 3282 3402 36 42 50 561 639 7 76 814
> 9 cpuinfo interrupts kpageflags pagetypeinfo sys
> vmstat
> 11 122 1506 182 1883 1942 21 2234 2568 2637 27 2791
> 2898 2981 31 33 342 3687 421 51 562 64 70 77 82
> 98 crypto iomem loadavg partitions sysrq-trigger
> zoneinfo
> 1109 123 1516 183 1885 195 217 2285 2569 2646 2701 2792
> 29 2983 3103 3321 3421 3697 43 52 57 65 71 775 84
> 99 devices ioports locks sched_debug sysvipc
> 1111 13 1542 184 189 2 218 24 26 2648 2711 2793
> 2911 3 3130 3330 3422 37 44 524 572 66 716 776 844
> acpi diskstats irq mdstat schedstat thread-self
>
>
> [X.] Other notes, patches, fixes, workarounds:
> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1387865
>
>
>
> With all due respect,
> Max
> --
> 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: About Dell Inspiron 3442 touchpad
From: Benjamin Tissoires @ 2014-11-05 15:35 UTC (permalink / raw)
To: Luiz Carlos Ramos; +Cc: linux-input, Andrew Duggan
In-Reply-To: <1415174986.3564402.187250685.15E765C9@webmail.messagingengine.com>
Hi Luiz,
On Wed, Nov 5, 2014 at 3:09 AM, Luiz Carlos Ramos
<lramos.prof@yahoo.com.br> wrote:
> Hi, Benjamin,
>
> Thanks again!
>
> Here it is an excerpt from $(udevadm info --export-db), I think the
> relevant one:
>
> P:
> /devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00/0018:06CB:2985.0005
> E:
> DEVPATH=/devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00/0018:06CB:2985.0005
> E: HID_ID=0018:000006CB:00002985
> E: HID_NAME=DLL0652:00 06CB:2985
> E: MODALIAS=hid:b0018g0000v000006CBp00002985
> E: SUBSYSTEM=hid
> E: UDEV_LOG=3
>
> Also, this is the same information, from
> /sys/bus/hid/devices/0018:06CB:2985.0005/modalias:
>
> root@giustizia:/sys/bus/hid/devices/0018:06CB:2985.0005# cat modalias
> hid:b0018g0000v000006CBp00002985
So this is definitively wrong. g0000 means that your device has not
been scanned for the reports. However, there is no way a vanilla
kernel will not scan a Synaptics HID device.
My guess is that your arch kernel has some crappy patches which
prevent your touchpad to be bound to hid-rmi.
Can you point out to the patches that has been added to the kernel
tree by your distribution? (I never managed to find this information
for arch)
>
> And, finally, the device descriptor:
>
> root@giustizia:/sys/kernel/debug/hid/0018:06CB:2985.0005# cat rdesc
> 05 01 09 02 a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01
> 95 02 81 02 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06
> c0 c0 06 00 ff 09 01 a1 01 85 09 09 02 15 00 26 ff 00 75 08 95 14 91 02
> 85 0a 09 03 15 00 26 ff 00 75 08 95 14 91 02 85 0b 09 04 15 00 26 ff 00
> 75 08 95 1d 81 02 85 0c 09 05 15 00 26 ff 00 75 08 95 1d 81 02 85 0f 09
> 06 15 00 26 ff 00 75 08 95 01 b1 02 c0
Thanks. So after injecting this in my boxes, (which are currently a
plain 3.16.3-200.fc20 from fedora 20, and a somewhat vanilla 3.18-rc3
+ Jiri's upstream hid patches for 3.19), hid-rmi picks up the device.
Please try to use a vanilla kernel and see if things are better.
>
> Yesterday, after sending my reply, I figured out that vendor 06CB means
> Synaptics; am I right?
You are right.
>
> Also, again, if you'd like to me to code/patch/test anything, fell free
> to ask me.
Well, please try a vanilla kernel (3.16.7 if you want to keep your
current config file, or a 3.17.2), and check if it does not magically
works.
Cheers,
Benjamin
>>
>> On Tue, Nov 4, 2014 at 8:11 PM, Luiz Carlos Ramos
>> <lramos.prof@yahoo.com.br> wrote:
>> > Hi, Benjamin,
>> >
>> > I think I just wrote the email below in a way it suggests everything had
>> > gone well and the issue was resolved... but unfortunately it's not the
>> > case. In my reply, I wrote some remarks in the text body in that email,
>> > but I think they weren't noticed at all given the first paragraph.
>>
>> Apologies for that. I read it, thought about it, and forgot it.
>>
>> >
>> > Only to recall, the problem is with a Dell Inspiron 3442, that has a
>> > touchpad which doesn't show up. It seems like it is a Synaptics I2C
>> > device. Your last advice was to insmod hid-rmi, which would hopefully
>> > make things go on after I2C basic device handshake. However, it didn't
>> > happen.
>>
>> Yeah, so given the state of the 3.16 kernel and your tests, the group
>> associated to the device is simply not the RMI one.
>> Which is weird.
>>
>> >
>> > I managed also to put some "printk" at the beginning and at the end of
>> > the "probe" function of hid-rmi, and it seems both were not called. I
>> > don't know if some kind of ioctl() should be issued, or if udevd should
>> > be configured some special way, but my feeling is that I am missing
>> > something really really important and obvious.
>> >
>>
>> No, I think your device is in a black hole. If the device declares
>> nothing special, it should be handled by hid-rmi. But given that it is
>> not the case, it might declares itself as a multitouch capable, and
>> should be handled by hid-multitouch. But if hid-multitouch does not
>> drive it properly, that is weird.
>>
>> Can you provide the modalias of the HID device: in "udevadm info
>> --export-db", look for the device attached to i2c_hid, and find its
>> son which has a modalias in the form of
>> MODALIAS=hid:b0018gXXXXv000006cbp00002985. I am interested in what is
>> after the "g".
>>
>> Also, can you export the content of the report descriptor of your
>> device. You can find it in
>> /sys/kernel/debug/hid/0018\:06CB\:2985.*/rdesc assuming you have
>> debugfs mounted under /sys/kernel/debug
>>
>> Cheers,
>> Benjamin
>>
>> >
>> >
>> > On Thu, Oct 30, 2014, at 08:06, Luiz Carlos Ramos wrote:
>> >> Hi Benjamin,
>> >>
>> >> Thanks for the assistance and quick reply.
>> >>
>> >> On Tue, Oct 28, 2014, at 23:40, Benjamin Tissoires wrote:
>> >> > Hi Luiz,
>> >> >
>> >> > On Tue, Oct 28, 2014 at 9:00 PM, Luiz Carlos Ramos
>> >> > <lramos.prof@yahoo.com.br> wrote:
>> >> > > Hello,
>> >> > >
>> >> > > I'm trying to make a touchpad from a Dell Inspiron I14-3442 laptop work.
>> >> > >
>> >> > > Some details:
>> >> > >
>> >> > > - I'm using plain Slackware64 14.1, but raised the kernel to 3.16.3 for
>> >> > > tests
>> >> > >
>> >> > > - xinput ignores the touchpad; it shows only a USB mouse/keyboard
>> >> > > adapter and the laptop's keyboard:
>> >> > >
>> >> > > root@pace:/sys/bus/hid/devices# xinput
>> >> > > Virtual core pointer id=2 [master pointer
>> >> > > (3)]
>> >> > > Virtual core XTEST pointer id=4 [slave
>> >> > > pointer (2)]
>> >> > > Generic USB K/B id=12 [slave
>> >> > > pointer (2)]
>> >> > > Virtual core keyboard id=3 [master
>> >> > > keyboard (2)]
>> >> > > Virtual core XTEST keyboard id=5 [slave
>> >> > > keyboard (3)]
>> >> > > Power Button id=6 [slave
>> >> > > keyboard (3)]
>> >> > > Video Bus id=7 [slave
>> >> > > keyboard (3)]
>> >> > > Power Button id=9 [slave
>> >> > > keyboard (3)]
>> >> > > Sleep Button id=10 [slave
>> >> > > keyboard (3)]
>> >> > > Integrated_Webcam_HD id=13 [slave
>> >> > > keyboard (3)]
>> >> > > AT Translated Set 2 keyboard id=14 [slave
>> >> > > keyboard (3)]
>> >> > > Dell WMI hotkeys id=15 [slave
>> >> > > keyboard (3)]
>> >> > > Video Bus id=8 [slave
>> >> > > keyboard (3)]
>> >> > > Generic USB K/B id=11 [slave
>> >> > > keyboard (3)]
>> >> > >
>> >> > > - it seems Ubuntu certified this machine (check
>> >> > > http://www.ubuntu.com/certification/hardware/201402-14674/components/),
>> >> > > but it assumes the touchpad is PS/2. I haven't found it as a PS/2 thing,
>> >> > > even loading psmouse.ko, or doing other tricks
>> >> > >
>> >> > > - some articles lists some tips for making it work (like
>> >> > > http://askubuntu.com/questions/134627/how-do-i-get-the-touchpad-settings-working-on-a-dell-xps-13-ultrabook,
>> >> > > or https://bugzilla.redhat.com/show_bug.cgi?id=1048314#c2), but I read
>> >> > > them carefully, made some tests, and they didn't work. One article says
>> >> > > I could blacklist i2c_hid or like in order to make the bring up the
>> >> > > touchpad in PS/2 mode, but I couldn't succeed doing so
>> >> > >
>> >> > > - at Dell's site, it is offered a driver for Ubuntu 12.04, but it's
>> >> > > almost obsolete. It seems to be just merged into the kernel
>> >> > >
>> >> > > - from Windows 8.1, which runs in the same machine (dual boot), I
>> >> > > concluded the proper way of making it work is to use HID over I2C. It
>> >> > > seems that there are two components loaded; one I2CHID, and a Synaptics
>> >> > > HID. This makes me hint it may be a Synaptics device
>> >> >
>> >> > Well, if this is a Synaptics HID over I2C device, it should be handled
>> >> > by hid-rmi in recent kernels (or hid-multitouch but I would say
>> >> > hid-rmi in your case).
>> >> > Is the hid-rmi module loaded? Can we get a dmesg output so we can see
>> >> > if there is any problem?
>> >> >
>> >> > >
>> >> > > - it seems there are two I2C busses in the machine. One is related to
>> >> > > the Intel video graphics subsystem (i801). The other seems to be linked
>> >> > > to the touchpad (i2c_designware_platform). I'm not sure that latest kmod
>> >> > > (i2c_designware_platform) is the right one to be used in this case, but
>> >> > > it appears to be working:
>> >> >
>> >> > Yeah, i2c_designware_platform is pretty common for Haswell processors.
>> >> >
>> >> > >
>> >> > > root@pace:/sys/bus/i2c/devices# ls -l /sys/bus/i2c/devices
>> >> > > total 0
>> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-0 ->
>> >> > > ../../../devices/pci0000:00/INT33C2:00/i2c-0
>> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-1 ->
>> >> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1
>> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-2 ->
>> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-2
>> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-3 ->
>> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-3
>> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-4 ->
>> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-4
>> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-5 ->
>> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-5
>> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-6 ->
>> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-6
>> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-7 ->
>> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-7
>> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-8 ->
>> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-8
>> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-DLL0652:00 ->
>> >> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00
>> >> >
>> >> > This one is the touchpad.
>> >> >
>> >> > >
>> >> > > root@pace:/sys/bus/i2c/devices# lsmod | grep i2c
>> >> > > i2c_hid 10682 0
>> >> > > hid 94632 3 i2c_hid,hid_generic,usbhid
>> >> > > i2c_dev 5739 0
>> >> > > i2c_designware_platform 3189 0
>> >> > > i2c_i801 13732 0
>> >> > > i2c_designware_core 6045 1 i2c_designware_platform
>> >> > > i2c_algo_bit 5351 1 i915
>> >> > > i2c_core 35216 11
>> >> > > drm,i915,i2c_i801,i2c_dev,i2c_hid,i2c_designware_platform,drm_kms_helper,i2c_algo_bit,v4l2_common,synaptics_i2c,videodev
>> >> > >
>> >> > > - in the HID /sys directory, there are three devices. Two are related to
>> >> > > a keyboard/mouse USB adapter. The third seems to be the linked to the
>> >> > > touchpad:
>> >> > >
>> >> > > root@pace:/sys/bus/hid/devices# ls -l /sys/bus/hid/devices
>> >> > > total 0
>> >> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0003:13BA:0017.004F ->
>> >> > > ../../../devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1.3/3-1.3:1.0/0003:13BA:0017.004F
>> >> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0003:13BA:0017.0050 ->
>> >> > > ../../../devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1.3/3-1.3:1.1/0003:13BA:0017.0050
>> >> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0018:06CB:2985.0052 ->
>> >> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00/0018:06CB:2985.0052
>> >> >
>> >> > This is the HID over I2C touchpad.
>> >> >
>> >> > >
>> >> > > - when I load the kernel module i2c-hid.ko (with debug=1), I read this
>> >> > > in dmesg:
>> >> > >
>> >> > > [146172.568787] i2c_hid i2c-DLL0652:00: Fetching the HID descriptor
>> >> > > [146172.568791] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=20 00
>> >> > > [146172.574806] i2c_hid i2c-DLL0652:00: HID Descriptor: 1e 00 00 01 85
>> >> > > 00 21 00 24 00 20 00 25 00 17 00 22 00 23 00 cb 06 85 29 00 00 00 00 00
>> >> > > 00
>> >> > > [146172.574845] i2c_hid i2c-DLL0652:00: entering i2c_hid_parse
>> >> > > [146172.574847] i2c_hid i2c-DLL0652:00: i2c_hid_hwreset
>> >> > > [146172.574849] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
>> >> > > [146172.574850] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
>> >> > > 08
>> >> > > [146172.575436] i2c_hid i2c-DLL0652:00: resetting...
>> >> > > [146172.575442] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
>> >> > > 01
>> >> > > [146172.576113] i2c_hid i2c-DLL0652:00: __i2c_hid_command: waiting...
>> >> > > [146172.577414] i2c_hid i2c-DLL0652:00: __i2c_hid_command: finished.
>> >> > > [146172.577417] i2c_hid i2c-DLL0652:00: asking HID report descriptor
>> >> > > [146172.577419] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=21 00
>> >> > > [146172.581072] i2c_hid i2c-DLL0652:00: Report Descriptor: 05 01 09 02
>> >> > > a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02
>> >> > > 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 c0 c0 06 00
>> >> > > ff 09 01 a1 01 85 09 09 02 15 00 26
>> >> > > [146172.581126] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
>> >> > > [146172.581129] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 01
>> >> > > 08
>> >> >
>> >> > Everything is fine, this is the normal behavior while connecting a
>> >> > i2c_hid device.
>> >> > Normally, we should have then hid-rmi asking for more things and then
>> >> > it will eventually set up the input device.
>> >> >
>> >> > >
>> >> > > I am aware this information probably is not sufficient to draw any
>> >> > > conclusions, but I'd appreciate to hear from someone who knows i2c_hid
>> >> > > in detail what steps I should take next. For me the last command timed
>> >> > > out or got stuck, but I haven't checked the code to see if it's the
>> >> > > case. Anyway, if it was a timeout case, it should have something logged
>> >> > > after the time expired.
>> >> >
>> >> > There is no answer from the device when a SET_POWER is emitted. So
>> >> > this is not a timeout problem.
>> >> >
>> >> > If hid-rmi is compiled and is not taking the device, we have a big
>> >> > problem, but for now, the symptoms look like you do not have this
>> >> > driver compiled and hid-generic does not bind the device because it
>> >> > waits for hid-rmi to handle it.
>> >> >
>> >>
>> >> Well, I tried to insmod hid-rmi, and nothing special happened. Here is a
>> >> dmesg output (relevant lines):
>> >>
>> >> [158885.774386] i2c_hid i2c-DLL0652:00: Fetching the HID descriptor
>> >> [158885.774391] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=20 00
>> >> [158885.785853] i2c_hid i2c-DLL0652:00: HID Descriptor: 1e 00 00 01 85
>> >> 00 21 00 24 00 20 00 25 00 17 00 22 00 23 00 cb 06 85 29 00 00 00 00 00
>> >> 00
>> >> [158885.785924] i2c_hid i2c-DLL0652:00: entering i2c_hid_parse
>> >> [158885.785926] i2c_hid i2c-DLL0652:00: i2c_hid_hwreset
>> >> [158885.785927] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
>> >> [158885.785928] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
>> >> 08
>> >> [158885.786494] i2c_hid i2c-DLL0652:00: resetting...
>> >> [158885.786497] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
>> >> 01
>> >> [158885.787285] i2c_hid i2c-DLL0652:00: __i2c_hid_command: waiting...
>> >> [158885.788496] i2c_hid i2c-DLL0652:00: __i2c_hid_command: finished.
>> >> [158885.788499] i2c_hid i2c-DLL0652:00: asking HID report descriptor
>> >> [158885.788501] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=21 00
>> >> [158885.792194] i2c_hid i2c-DLL0652:00: Report Descriptor: 05 01 09 02
>> >> a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02
>> >> 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 c0 c0 06 00
>> >> ff 09 01 a1 01 85 09 09 02 15 00 26
>> >> [158885.792252] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
>> >> [158885.792254] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 01
>> >> 08
>> >>
>> >> I included lines like:
>> >>
>> >> printk(KERN_ERR "hid_rmi_probe(): called\n");
>> >> printk(KERN_ERR "hid_rmi_probe(): ret=0\n");
>> >>
>> >> in the beginning and at the end of the routine rmi_probe(). These lines
>> >> didn't
>> >> appear in dmesg (those pictured above). I don't know if "probe" is to be
>> >> called
>> >> in this case, or not. Is there any other condition to make hid-rmi be
>> >> "instantiated",
>> >> I mean, other kmod to be loaded, or a special ioctl() coming to the hid
>> >> from userland,
>> >> or even echoing something to the "bind" file at /sys/...?
>> >>
>> >> Well, here's the "directory" /sys/bus/hid/drivers/hid-rmi:
>> >>
>> >> root@pace:/sys/bus/hid/drivers/hid-rmi# ls -l
>> >> /sys/bus/hid/drivers/hid-rmi/
>> >> total 0
>> >> --w------- 1 root root 4096 Out 30 08:03 bind
>> >> lrwxrwxrwx 1 root root 0 Out 30 08:03 module ->
>> >> ../../../../module/hid_rmi
>> >> --w------- 1 root root 4096 Out 30 08:03 new_id
>> >> --w------- 1 root root 4096 Out 30 07:48 uevent
>> >> --w------- 1 root root 4096 Out 30 08:03 unbind
>> >>
>> >> One thing I didn't still did is to reboot the machine. I found it was
>> >> not the case,
>> >> but this type of action use to work a lot in IT/IS, right? :-)
>> >>
>> >> > >
>> >> > > I have some programming skills, and so if it's the case of applying any
>> >> > > patches, or recompiling the kernel or any subsystem to make tests, I'm
>> >> > > up to.
>> >> >
>> >> > Cool, thanks.
>> >> >
>> >> > Cheers,
>> >> > Benjamin
>> >>
>> >> Many thanks,
>> >>
>> >> Luiz
^ permalink raw reply
* [PATCH 0/3] input: ft5x06: Fix userspace reported maximum value
From: Maxime Ripard @ 2014-11-05 15:07 UTC (permalink / raw)
To: Lothar Waßmann, Dmitry Torokhov, Henrik Rydberg
Cc: linux-input, linux-kernel, Maxime Ripard
Hi,
The current ft5x06 reports to the user-space that its maximum
coordinates are, on both X and Y, way higher than what could be
actually usable on the screen (in my case, 5759x1151 instead of
480x800).
This causes trouble on some userspace stacks that then try to re-scale
these coordinates back to the framebuffer resolution, like QT does.
Use the of_touchscreen code to find the real touchscreen limits in the
DT case, and report that to the userspace.
Thanks,
Maxime
Maxime Ripard (3):
input: touchscreen: of: Use input_set_abs_params
input: touchscreen: of: Register multitouch axes
input: ft5x06: Allow to set the maximum axes value through the DT
drivers/input/touchscreen/edt-ft5x06.c | 5 ++++
drivers/input/touchscreen/of_touchscreen.c | 39 ++++++++++++++++++++++--------
2 files changed, 34 insertions(+), 10 deletions(-)
--
2.1.1
^ permalink raw reply
* [PATCH 1/3] input: touchscreen: of: Use input_set_abs_params
From: Maxime Ripard @ 2014-11-05 15:07 UTC (permalink / raw)
To: Lothar Waßmann, Dmitry Torokhov, Henrik Rydberg
Cc: linux-input, linux-kernel, Maxime Ripard
In-Reply-To: <1415200070-19346-1-git-send-email-maxime.ripard@free-electrons.com>
Drivers are still required to call input_set_abs_params for their axes, as if
they only use the touchscreen_parse_of_params function, the axis bit in absbit
won't be set.
Switch to using input_set_abs_params to fully setup each and every available
axis so that drivers will be able to solely use this function.
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
drivers/input/touchscreen/of_touchscreen.c | 33 +++++++++++++++++++++---------
1 file changed, 23 insertions(+), 10 deletions(-)
diff --git a/drivers/input/touchscreen/of_touchscreen.c b/drivers/input/touchscreen/of_touchscreen.c
index f8f9b84230b1..74d6b0eb50ac 100644
--- a/drivers/input/touchscreen/of_touchscreen.c
+++ b/drivers/input/touchscreen/of_touchscreen.c
@@ -13,6 +13,16 @@
#include <linux/input.h>
#include <linux/input/touchscreen.h>
+static u32 of_get_optional_u32(struct device_node *np,
+ const char *property)
+{
+ u32 val = 0;
+
+ of_property_read_u32(np, property, &val);
+
+ return val;
+}
+
/**
* touchscreen_parse_of_params - parse common touchscreen DT properties
* @dev: device that should be parsed
@@ -24,22 +34,25 @@
void touchscreen_parse_of_params(struct input_dev *dev)
{
struct device_node *np = dev->dev.parent->of_node;
- struct input_absinfo *absinfo;
+ u32 maximum, fuzz;
input_alloc_absinfo(dev);
if (!dev->absinfo)
return;
- absinfo = &dev->absinfo[ABS_X];
- of_property_read_u32(np, "touchscreen-size-x", &absinfo->maximum);
- of_property_read_u32(np, "touchscreen-fuzz-x", &absinfo->fuzz);
+ maximum = of_get_optional_u32(np, "touchscreen-size-x");
+ fuzz = of_get_optional_u32(np, "touchscreen-fuzz-x");
+ if (maximum || fuzz)
+ input_set_abs_params(dev, ABS_X, 0, maximum, fuzz, 0);
- absinfo = &dev->absinfo[ABS_Y];
- of_property_read_u32(np, "touchscreen-size-y", &absinfo->maximum);
- of_property_read_u32(np, "touchscreen-fuzz-y", &absinfo->fuzz);
+ maximum = of_get_optional_u32(np, "touchscreen-size-y");
+ fuzz = of_get_optional_u32(np, "touchscreen-fuzz-y");
+ if (maximum || fuzz)
+ input_set_abs_params(dev, ABS_Y, 0, maximum, fuzz, 0);
- absinfo = &dev->absinfo[ABS_PRESSURE];
- of_property_read_u32(np, "touchscreen-max-pressure", &absinfo->maximum);
- of_property_read_u32(np, "touchscreen-fuzz-pressure", &absinfo->fuzz);
+ maximum = of_get_optional_u32(np, "touchscreen-max-pressure");
+ fuzz = of_get_optional_u32(np, "touchscreen-fuzz-pressure");
+ if (maximum || fuzz)
+ input_set_abs_params(dev, ABS_PRESSURE, 0, maximum, fuzz, 0);
}
EXPORT_SYMBOL(touchscreen_parse_of_params);
--
2.1.1
^ permalink raw reply related
* [PATCH 3/3] input: ft5x06: Allow to set the maximum axes value through the DT
From: Maxime Ripard @ 2014-11-05 15:07 UTC (permalink / raw)
To: Lothar Waßmann, Dmitry Torokhov, Henrik Rydberg
Cc: linux-input, linux-kernel, Maxime Ripard
In-Reply-To: <1415200070-19346-1-git-send-email-maxime.ripard@free-electrons.com>
Currently the driver relies on some obscure and undocumented register to set
the maximum axis value.
The reported value is way too high to be meaningful, which confuses some
userspace tools like QT's evdevtouch plugin which try to scale the reported
events to the maximum values.
Use the values from the DT to set meaningful values.
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
drivers/input/touchscreen/edt-ft5x06.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index ee3434f1e949..3ebc1a7e46c5 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -37,6 +37,7 @@
#include <linux/gpio.h>
#include <linux/of_gpio.h>
#include <linux/input/mt.h>
+#include <linux/input/touchscreen.h>
#include <linux/input/edt-ft5x06.h>
#define MAX_SUPPORT_POINTS 5
@@ -1042,6 +1043,10 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
0, tsdata->num_x * 64 - 1, 0, 0);
input_set_abs_params(input, ABS_MT_POSITION_Y,
0, tsdata->num_y * 64 - 1, 0, 0);
+
+ if (!pdata)
+ touchscreen_parse_of_params(input);
+
error = input_mt_init_slots(input, MAX_SUPPORT_POINTS, 0);
if (error) {
dev_err(&client->dev, "Unable to init MT slots.\n");
--
2.1.1
^ permalink raw reply related
* [PATCH 2/3] input: touchscreen: of: Register multitouch axes
From: Maxime Ripard @ 2014-11-05 15:07 UTC (permalink / raw)
To: Lothar Waßmann, Dmitry Torokhov, Henrik Rydberg
Cc: linux-input, linux-kernel, Maxime Ripard
In-Reply-To: <1415200070-19346-1-git-send-email-maxime.ripard@free-electrons.com>
So far, the DT parsing code was only setting up the regular input axes,
completely ignoring their multitouch counter parts.
Fill them with the same parameters than the regular axes.
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
drivers/input/touchscreen/of_touchscreen.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/input/touchscreen/of_touchscreen.c b/drivers/input/touchscreen/of_touchscreen.c
index 74d6b0eb50ac..cf2a753edd96 100644
--- a/drivers/input/touchscreen/of_touchscreen.c
+++ b/drivers/input/touchscreen/of_touchscreen.c
@@ -42,17 +42,23 @@ void touchscreen_parse_of_params(struct input_dev *dev)
maximum = of_get_optional_u32(np, "touchscreen-size-x");
fuzz = of_get_optional_u32(np, "touchscreen-fuzz-x");
- if (maximum || fuzz)
+ if (maximum || fuzz) {
input_set_abs_params(dev, ABS_X, 0, maximum, fuzz, 0);
+ input_set_abs_params(dev, ABS_MT_POSITION_X, 0, maximum, fuzz, 0);
+ }
maximum = of_get_optional_u32(np, "touchscreen-size-y");
fuzz = of_get_optional_u32(np, "touchscreen-fuzz-y");
- if (maximum || fuzz)
+ if (maximum || fuzz) {
input_set_abs_params(dev, ABS_Y, 0, maximum, fuzz, 0);
+ input_set_abs_params(dev, ABS_MT_POSITION_Y, 0, maximum, fuzz, 0);
+ }
maximum = of_get_optional_u32(np, "touchscreen-max-pressure");
fuzz = of_get_optional_u32(np, "touchscreen-fuzz-pressure");
- if (maximum || fuzz)
+ if (maximum || fuzz) {
input_set_abs_params(dev, ABS_PRESSURE, 0, maximum, fuzz, 0);
+ input_set_abs_params(dev, ABS_MT_PRESSURE, 0, maximum, fuzz, 0);
+ }
}
EXPORT_SYMBOL(touchscreen_parse_of_params);
--
2.1.1
^ permalink raw reply related
* Re: [PATCH 1/1] hid-saitek: Quirk for Saitek R.A.T.7 works with R.A.T.9 too
From: Jiri Kosina @ 2014-11-05 14:15 UTC (permalink / raw)
To: Ville Aakko; +Cc: Harald Brinkmann, linux-input
In-Reply-To: <40478FF3-907F-4894-95AA-E09CB4BAA087@gmail.com>
On Tue, 4 Nov 2014, Ville Aakko wrote:
> From: Ville Aakko <ville.aakko@gmail.com>
>
> I have tested HID quirk for Saitek R.A.T.7 with my R.A.T. 9. It works
> fine for me. Attached patch makes the necessary changes to use the quirk
> on the R.A.T.9 too, and necessary Kconfig changes too.
>
> I have stylized the Kconfig option name to include Mad Catz in the
> option name, as (at least some of) the devices are marketed under Mad
> Catz brand.
>
> Signed-off-by: Ville Aakko <ville.aakko@gmail.com>
Applied, thanks.
--
Jiri Kosina
SUSE Labs
^ permalink raw reply
* Re: [PATCH 0/4] Touchscreen performance related fixes
From: Vignesh R @ 2014-11-05 12:08 UTC (permalink / raw)
To: Sebastian Andrzej Siewior, Griffis, Brad, Rob Herring, Pawel Moll,
Mark Rutland, Ian Campbell, Kumar Gala, Benoit Cousson,
Tony Lindgren, Russell King, Jonathan Cameron, Dmitry Torokhov
Cc: Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald, Samuel Ortiz,
Lee Jones, Balbi, Felipe, Jan Kardell, Paul Gortmaker,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
In-Reply-To: <5458C87F.80409-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>
On Tuesday 04 November 2014 06:07 PM, Sebastian Andrzej Siewior wrote:
> On 11/04/2014 12:44 PM, Vignesh R wrote:
>
>> I ran following commands
>> $ evtest /dev/input/touchscreen0 &
>> (with heavy item on touchscreen)
>> and
>> $ cat /sys/bus/iio/devices/iio\:device0/scan_elements/in_voltage4_en
>> (in a busy loop)
>> I tried above experiment on my board but I didn't hit any problem even
>> after running for close to 30 minutes. I was unable to reproduce failure
>
> Just to make sure: You had the touchscreen and iio command running in
> parallel and you saw evtest output while there was iio operation?
>
Yeah.. I see both evtest and IIO outputs. Touch events are received
consistently (decent samples per second) and atleast one IIO output per
second.
Here is a part from console log
---------------------------
928
Event: time 1413204484.240114, type 3 (Absolute), code 0 (X), value 1746
Event: time 1413204484.240114, type 3 (Absolute), code 1 (Y), value 1720
Event: time 1413204484.240114, type 3 (Absolute), code 24 (Pressure),
value 99
Event: time 1413204484.240114, -------------- Report Sync ------------
Event: time 1413204484.255318, type 1 (Key), code 330 (Touch), value 0
Event: time 1413204484.255318, type 3 (Absolute), code 24 (Pressure),
value 0
Event: time 1413204484.255318, -------------- Report Sync ------------
933
Event: time 1413204484.273599, type 3 (Absolute), code 1 (Y), value 1718
Event: time 1413204484.273599, type 3 (Absolute), code 24 (Pressure),
value 99
Event: time 1413204484.273599, type 1 (Key), code 330 (Touch), value 1
Event: time 1413204484.273599, -------------- Report Sync ------------
Event: time 1413204484.290195, type 3 (Absolute), code 24 (Pressure),
value 98
Event: time 1413204484.290195, -------------- Report Sync ------------
Event: time 1413204484.306783, type 3 (Absolute), code 1 (Y), value 1719
Event: time 1413204484.306783, -------------- Report Sync ------------
946
Event: time 1413204484.322164, type 1 (Key), code 330 (Touch), value 0
Event: time 1413204484.322164, type 3 (Absolute), code 24 (Pressure),
value 0
Event: time 1413204484.322164, -------------- Report Sync ------------
Event: time 1413204484.340435, type 3 (Absolute), code 1 (Y), value 1721
Event: time 1413204484.340435, type 3 (Absolute), code 24 (Pressure),
value 98
Event: time 1413204484.340435, type 1 (Key), code 330 (Touch), value 1
Event: time 1413204484.340435, -------------- Report Sync ------------
Event: time 1413204484.357025, type 3 (Absolute), code 0 (X), value 1745
Event: time 1413204484.357025, type 3 (Absolute), code 24 (Pressure),
value 97
Event: time 1413204484.357025, -------------- Report Sync ------------
Event: time 1413204484.373621, type 3 (Absolute), code 0 (X), value 1746
Event: time 1413204484.373621, type 3 (Absolute), code 1 (Y), value 1720
Event: time 1413204484.373621, -------------- Report Sync ------------
942
---------------------------
The numbers 928, 933 etc are from oneshot ADC read. The above output is
pretty consistent over time.
>> The problem may be in configuring correct charge-delay value. Please run:
>> $ ts_test > /dev/null
>> and let me know if pen events are being detected properly.
>
> Well I get the touch events but not while busy loop on iio interface is
> running (I get maybe one event every 5 seconds or so).
> After all, it is the same HW you have.
Yeah.. I believe HW is same. I am using rev 1.5B with
omap2plus_defconfig (+ TSC/ADC enabled)
Regards
Vignesh
>
> Sebastian
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" 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
* Aorus X3+ touchpad not working
From: Maximilien Levesque @ 2014-11-05 9:37 UTC (permalink / raw)
To: linux-input
Dear Maintainers,
This is my first report. Please bear with me...
(and let me take the opportunity to thank all of you for your amazing work).
I've been asked to give a direct link to my e-mail so here it is:
maximilien.levesque@gmail.com
[1.] One line summary of the problem:
Aorus X3+ touchpad not working
[2.] Full description of the problem/report:
On a laptop Aorus X3+, the touchpad is not working. The mouse pointer
is invisible and touchpad clicks are not possible. It feels like there
is no touchpad at all.
[3.] Keywords (i.e., modules, networking, kernel):
[4.] Kernel version (from /proc/version):
Linux version 3.18.0-031800rc3-generic (apw@tangerine) (gcc version
4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #201411022335 SMP Sun Nov 2
23:36:52 UTC 2014
[5.] Output of Oops..
not relevant
[6.] A small shell script or example program which triggers the
problem (if possible)
I am not able to provide one.
[7.] Environment
Description: Ubuntu 14.10
Release: 14.10
[7.1.] Software (add the output of the ver_linux script here)
Linux portmax2 3.18.0-031800rc3-generic #201411022335 SMP Sun Nov 2
23:36:52 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Gnu C 4.9.1
Gnu make 4.0
binutils 2.24.90.20141014
util-linux 2.25.1
mount debug
module-init-tools 18
e2fsprogs 1.42.10
pcmciautils 018
PPP 2.4.5
Linux C Library 2.19
Dynamic linker (ldd) 2.19
Procps 3.3.9
Net-tools 1.60
Kbd 1.15.5
Sh-utils 8.23
wireless-tools 30
Modules Loaded pci_stub vboxpci vboxnetadp vboxnetflt vboxdrv
ctr ccm arc4 iwlmvm mac80211 btusb sparse_keymap x86_pkg_temp_thermal
intel_powerclamp coretemp kvm_intel kvm snd_hda_codec_hdmi
crct10dif_pclmul crc32_pclmul ghash_clmulni_intel uvcvideo
videobuf2_vmalloc videobuf2_memops aesni_intel aes_x86_64 lrw
videobuf2_core gf128mul glue_helper nouveau ablk_helper iwlwifi cryptd
v4l2_common videodev serio_raw media joydev snd_hda_codec_realtek
snd_hda_codec_generic i915 mxm_wmi snd_soc_rt5640 rtsx_pci_ms
snd_soc_rl6231 cfg80211 ttm snd_hda_intel memstick snd_soc_core
snd_hda_controller drm_kms_helper snd_compress snd_hda_codec
snd_pcm_dmaengine lpc_ich snd_hwdep drm mei_me snd_pcm mei shpchp
i2c_algo_bit snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq
snd_seq_device snd_timer tpm_infineon snd soundcore i2c_hid wmi
snd_soc_sst_acpi dw_dmac video dw_dmac_core 8250_dw
i2c_designware_platform i2c_designware_core bnep rfcomm bluetooth
spi_pxa2xx_platform mac_hid binfmt_misc parport_pc ppdev lp parport
nls_iso8859_1 hid_generic usbhid hid rtsx_pci_sdmmc ahci psmouse alx
rtsx_pci libahci mdio sdhci_acpi sdhci
[7.2.] Processor information (from /proc/cpuinfo):
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 70
model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
stepping : 1
microcode : 0xf
cpu MHz : 832.781
cache size : 6144 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
invpcid rtm xsaveopt
bugs :
bogomips : 4789.06
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 : 70
model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
stepping : 1
microcode : 0xf
cpu MHz : 931.406
cache size : 6144 KB
physical id : 0
siblings : 8
core id : 1
cpu cores : 4
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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
invpcid rtm xsaveopt
bugs :
bogomips : 4789.06
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 : 70
model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
stepping : 1
microcode : 0xf
cpu MHz : 899.437
cache size : 6144 KB
physical id : 0
siblings : 8
core id : 2
cpu cores : 4
apicid : 4
initial apicid : 4
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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
invpcid rtm xsaveopt
bugs :
bogomips : 4789.06
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 : 70
model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
stepping : 1
microcode : 0xf
cpu MHz : 829.218
cache size : 6144 KB
physical id : 0
siblings : 8
core id : 3
cpu cores : 4
apicid : 6
initial apicid : 6
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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
invpcid rtm xsaveopt
bugs :
bogomips : 4789.06
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 4
vendor_id : GenuineIntel
cpu family : 6
model : 70
model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
stepping : 1
microcode : 0xf
cpu MHz : 799.968
cache size : 6144 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
invpcid rtm xsaveopt
bugs :
bogomips : 4789.06
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 5
vendor_id : GenuineIntel
cpu family : 6
model : 70
model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
stepping : 1
microcode : 0xf
cpu MHz : 1000.500
cache size : 6144 KB
physical id : 0
siblings : 8
core id : 1
cpu cores : 4
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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
invpcid rtm xsaveopt
bugs :
bogomips : 4789.06
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 6
vendor_id : GenuineIntel
cpu family : 6
model : 70
model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
stepping : 1
microcode : 0xf
cpu MHz : 899.531
cache size : 6144 KB
physical id : 0
siblings : 8
core id : 2
cpu cores : 4
apicid : 5
initial apicid : 5
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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
invpcid rtm xsaveopt
bugs :
bogomips : 4789.06
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 7
vendor_id : GenuineIntel
cpu family : 6
model : 70
model name : Intel(R) Core(TM) i7-4860HQ CPU @ 2.40GHz
stepping : 1
microcode : 0xf
cpu MHz : 1019.625
cache size : 6144 KB
physical id : 0
siblings : 8
core id : 3
cpu cores : 4
apicid : 7
initial apicid : 7
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 smx est tm2 ssse3 fma cx16 xtpr pdcm pcid
sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx
f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi
flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms
invpcid rtm xsaveopt
bugs :
bogomips : 4789.06
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
[7.3.] Module information (from /proc/modules):
pci_stub 12622 1 - Live 0x0000000000000000
vboxpci 23256 0 - Live 0x0000000000000000 (OE)
vboxnetadp 25670 0 - Live 0x0000000000000000 (OE)
vboxnetflt 27605 0 - Live 0x0000000000000000 (OE)
vboxdrv 418013 3 vboxpci,vboxnetadp,vboxnetflt, Live 0x0000000000000000 (OE)
ctr 13193 0 - Live 0x0000000000000000
ccm 17856 0 - Live 0x0000000000000000
arc4 12573 2 - Live 0x0000000000000000
iwlmvm 254598 0 - Live 0x0000000000000000
mac80211 697143 1 iwlmvm, Live 0x0000000000000000
btusb 32691 0 - Live 0x0000000000000000
sparse_keymap 13890 0 - Live 0x0000000000000000
x86_pkg_temp_thermal 14312 0 - Live 0x0000000000000000
intel_powerclamp 19099 0 - Live 0x0000000000000000
coretemp 13638 0 - Live 0x0000000000000000
kvm_intel 149984 0 - Live 0x0000000000000000
kvm 475233 1 kvm_intel, Live 0x0000000000000000
snd_hda_codec_hdmi 52670 1 - Live 0x0000000000000000
crct10dif_pclmul 14268 0 - Live 0x0000000000000000
crc32_pclmul 13180 0 - Live 0x0000000000000000
ghash_clmulni_intel 13230 0 - Live 0x0000000000000000
uvcvideo 86723 0 - Live 0x0000000000000000
videobuf2_vmalloc 13216 1 uvcvideo, Live 0x0000000000000000
videobuf2_memops 13362 1 videobuf2_vmalloc, Live 0x0000000000000000
aesni_intel 169686 1 - Live 0x0000000000000000
aes_x86_64 17131 1 aesni_intel, Live 0x0000000000000000
lrw 13323 1 aesni_intel, Live 0x0000000000000000
videobuf2_core 51547 1 uvcvideo, Live 0x0000000000000000
gf128mul 14951 1 lrw, Live 0x0000000000000000
glue_helper 14095 1 aesni_intel, Live 0x0000000000000000
nouveau 1365930 1 - Live 0x0000000000000000
ablk_helper 13597 1 aesni_intel, Live 0x0000000000000000
iwlwifi 193774 1 iwlmvm, Live 0x0000000000000000
cryptd 20531 3 ghash_clmulni_intel,aesni_intel,ablk_helper, Live
0x0000000000000000
v4l2_common 15715 1 videobuf2_core, Live 0x0000000000000000
videodev 163831 3 uvcvideo,videobuf2_core,v4l2_common, Live 0x0000000000000000
serio_raw 13483 0 - Live 0x0000000000000000
media 22008 2 uvcvideo,videodev, Live 0x0000000000000000
joydev 17587 0 - Live 0x0000000000000000
snd_hda_codec_realtek 76099 1 - Live 0x0000000000000000
snd_hda_codec_generic 69995 1 snd_hda_codec_realtek, Live 0x0000000000000000
i915 1031913 7 - Live 0x0000000000000000
mxm_wmi 13021 1 nouveau, Live 0x0000000000000000
snd_soc_rt5640 93325 0 - Live 0x0000000000000000
rtsx_pci_ms 18337 0 - Live 0x0000000000000000
snd_soc_rl6231 13037 1 snd_soc_rt5640, Live 0x0000000000000000
cfg80211 520257 3 iwlmvm,mac80211,iwlwifi, Live 0x0000000000000000
ttm 90228 1 nouveau, Live 0x0000000000000000
snd_hda_intel 30783 5 - Live 0x0000000000000000
memstick 16968 1 rtsx_pci_ms, Live 0x0000000000000000
snd_soc_core 207596 1 snd_soc_rt5640, Live 0x0000000000000000
snd_hda_controller 32234 1 snd_hda_intel, Live 0x0000000000000000
drm_kms_helper 99802 2 nouveau,i915, Live 0x0000000000000000
snd_compress 19395 1 snd_soc_core, Live 0x0000000000000000
snd_hda_codec 144641 5
snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel,snd_hda_controller,
Live 0x0000000000000000
snd_pcm_dmaengine 15229 1 snd_soc_core, Live 0x0000000000000000
lpc_ich 21176 0 - Live 0x0000000000000000
snd_hwdep 17709 1 snd_hda_codec, Live 0x0000000000000000
drm 323675 9 nouveau,i915,ttm,drm_kms_helper, Live 0x0000000000000000
mei_me 19565 0 - Live 0x0000000000000000
snd_pcm 106273 7
snd_hda_codec_hdmi,snd_soc_rt5640,snd_hda_intel,snd_soc_core,snd_hda_controller,snd_hda_codec,snd_pcm_dmaengine,
Live 0x0000000000000000
mei 88473 1 mei_me, Live 0x0000000000000000
shpchp 37216 0 - Live 0x0000000000000000
i2c_algo_bit 13564 2 nouveau,i915, Live 0x0000000000000000
snd_seq_midi 13564 0 - Live 0x0000000000000000
snd_seq_midi_event 14899 1 snd_seq_midi, Live 0x0000000000000000
snd_rawmidi 31197 1 snd_seq_midi, Live 0x0000000000000000
snd_seq 63540 2 snd_seq_midi,snd_seq_midi_event, Live 0x0000000000000000
snd_seq_device 14497 3 snd_seq_midi,snd_rawmidi,snd_seq, Live 0x0000000000000000
snd_timer 30118 2 snd_pcm,snd_seq, Live 0x0000000000000000
tpm_infineon 17169 0 - Live 0x0000000000000000
snd 84025 23 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_codec_generic,snd_hda_intel,snd_soc_core,snd_compress,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_seq_device,snd_timer,
Live 0x0000000000000000
soundcore 15091 2 snd_hda_codec,snd, Live 0x0000000000000000
i2c_hid 19065 0 - Live 0x0000000000000000
wmi 19379 2 nouveau,mxm_wmi, Live 0x0000000000000000
snd_soc_sst_acpi 13007 0 - Live 0x0000000000000000
dw_dmac 12835 0 - Live 0x0000000000000000
video 20649 2 nouveau,i915, Live 0x0000000000000000
dw_dmac_core 28558 1 dw_dmac, Live 0x0000000000000000
8250_dw 13474 0 - Live 0x0000000000000000
i2c_designware_platform 13025 0 - Live 0x0000000000000000
i2c_designware_core 14990 1 i2c_designware_platform, Live 0x0000000000000000
bnep 23980 2 - Live 0x0000000000000000
rfcomm 75066 8 - Live 0x0000000000000000
bluetooth 486890 22 btusb,bnep,rfcomm, Live 0x0000000000000000
spi_pxa2xx_platform 23256 0 - Live 0x0000000000000000
mac_hid 13275 0 - Live 0x0000000000000000
binfmt_misc 17501 1 - Live 0x0000000000000000
parport_pc 32909 0 - Live 0x0000000000000000
ppdev 17711 0 - Live 0x0000000000000000
lp 17799 0 - Live 0x0000000000000000
parport 42481 3 parport_pc,ppdev,lp, Live 0x0000000000000000
nls_iso8859_1 12713 1 - Live 0x0000000000000000
hid_generic 12559 0 - Live 0x0000000000000000
usbhid 53155 0 - Live 0x0000000000000000
hid 110572 3 i2c_hid,hid_generic,usbhid, Live 0x0000000000000000
rtsx_pci_sdmmc 23718 0 - Live 0x0000000000000000
ahci 34220 3 - Live 0x0000000000000000
psmouse 118117 0 - Live 0x0000000000000000
alx 41397 0 - Live 0x0000000000000000
rtsx_pci 51162 2 rtsx_pci_ms,rtsx_pci_sdmmc, Live 0x0000000000000000
libahci 32446 1 ahci, Live 0x0000000000000000
mdio 13561 1 alx, Live 0x0000000000000000
sdhci_acpi 13502 0 - Live 0x0000000000000000
sdhci 43929 1 sdhci_acpi, 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 : PNP0C09:00
0062-0062 : EC data
0064-0064 : keyboard
0066-0066 : PNP0C09:00
0066-0066 : EC cmd
0070-0077 : rtc0
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
00f0-00f0 : PNP0C04:00
04d0-04d1 : pnp 00:04
0680-069f : pnp 00:01
0cf8-0cff : PCI conf1
0d00-ffff : PCI Bus 0000:00
164e-164f : pnp 00:01
1800-1803 : ACPI PM1a_EVT_BLK
1804-1805 : ACPI PM1a_CNT_BLK
1808-180b : ACPI PM_TMR
1810-1815 : ACPI CPU throttle
1820-182f : ACPI GPE0_BLK
1830-1833 : iTCO_wdt
1850-1850 : ACPI PM2_CNT_BLK
1854-1857 : pnp 00:03
1860-187f : iTCO_wdt
1c00-1cfe : pnp 00:01
1d00-1dfe : pnp 00:01
1e00-1efe : pnp 00:01
1f00-1ffe : pnp 00:01
2000-2fff : PCI Bus 0000:02
d000-dfff : PCI Bus 0000:04
d000-d07f : 0000:04:00.0
e000-efff : PCI Bus 0000:01
e000-e07f : 0000:01:00.0
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:01
ffff-ffff : pnp 00:01
ffff-ffff : pnp 00:01
00000000-00000fff : reserved
00001000-00057fff : System RAM
00058000-00058fff : reserved
00059000-0009dfff : System RAM
0009e000-0009ffff : reserved
000a0000-000bffff : PCI Bus 0000:00
000c0000-000c3fff : PCI Bus 0000:00
000c4000-000c7fff : PCI Bus 0000:00
000c8000-000cbfff : PCI Bus 0000:00
000cc000-000cffff : PCI Bus 0000:00
000d0000-000d3fff : PCI Bus 0000:00
000d4000-000d7fff : PCI Bus 0000:00
000d8000-000dbfff : PCI Bus 0000:00
000dc000-000dffff : PCI Bus 0000:00
000f0000-000fffff : System ROM
00100000-b9511fff : System RAM
02000000-027ae357 : Kernel code
027ae358-02d1997f : Kernel data
02e80000-02fc8fff : Kernel bss
b9512000-b9518fff : ACPI Non-volatile Storage
b9519000-b9d6cfff : System RAM
b9d6d000-ba024fff : reserved
ba025000-cb226fff : System RAM
cb227000-cb2c2fff : reserved
cb2c3000-cb2e1fff : ACPI Tables
cb2e2000-cb987fff : ACPI Non-volatile Storage
cb988000-cbf77fff : reserved
cbf78000-cbffefff : reserved
cbfff000-cbffffff : System RAM
cd000000-cf1fffff : reserved
cd200000-cf1fffff : Graphics Stolen Memory
cf200000-feafffff : PCI Bus 0000:00
cf200000-cf3fffff : PCI Bus 0000:02
cf400000-cf5fffff : PCI Bus 0000:02
d0000000-dfffffff : 0000:00:02.0
e0000000-f1ffffff : PCI Bus 0000:01
e0000000-efffffff : 0000:01:00.0
f0000000-f1ffffff : 0000:01:00.0
f6000000-f70fffff : PCI Bus 0000:01
f6000000-f6ffffff : 0000:01:00.0
f7000000-f707ffff : 0000:01:00.0
f7400000-f77fffff : 0000:00:02.0
f7800000-f78fffff : PCI Bus 0000:05
f7800000-f7800fff : 0000:05:00.0
f7800000-f7800fff : rtsx_pci
f7900000-f79fffff : PCI Bus 0000:04
f7900000-f793ffff : 0000:04:00.0
f7900000-f793ffff : alx
f7a00000-f7afffff : PCI Bus 0000:03
f7a00000-f7a01fff : 0000:03:00.0
f7a00000-f7a01fff : iwlwifi
f7b00000-f7b0ffff : 0000:00:14.0
f7b00000-f7b0ffff : xhci-hcd
f7b10000-f7b13fff : 0000:00:1b.0
f7b10000-f7b13fff : ICH HD audio
f7b14000-f7b17fff : 0000:00:03.0
f7b14000-f7b17fff : ICH HD audio
f7b18000-f7b18fff : 0000:00:1f.6
f7b19000-f7b190ff : 0000:00:1f.3
f7b1a000-f7b1a7ff : 0000:00:1f.2
f7b1a000-f7b1a7ff : ahci
f7b1b000-f7b1b3ff : 0000:00:1d.0
f7b1b000-f7b1b3ff : ehci_hcd
f7b1c000-f7b1c3ff : 0000:00:1a.0
f7b1c000-f7b1c3ff : ehci_hcd
f7b1e000-f7b1e00f : 0000:00:16.0
f7b1e000-f7b1e00f : mei_me
f7fdf000-f7fdffff : pnp 00:07
f7fe0000-f7feffff : pnp 00:07
f8000000-fbffffff : PCI MMCONFIG 0000 [bus 00-3f]
f8000000-fbffffff : reserved
f8000000-fbffffff : pnp 00:07
fec00000-fec00fff : reserved
fec00000-fec003ff : IOAPIC 0
fed00000-fed03fff : reserved
fed00000-fed003ff : HPET 0
fed00000-fed003ff : PNP0103:00
fed10000-fed17fff : pnp 00:07
fed18000-fed18fff : pnp 00:07
fed19000-fed19fff : pnp 00:07
fed1c000-fed1ffff : reserved
fed1c000-fed1ffff : pnp 00:07
fed1f410-fed1f414 : iTCO_wdt
fed20000-fed3ffff : pnp 00:07
fed40000-fed44fff : pnp 00:00
fed45000-fed8ffff : pnp 00:07
fed90000-fed90fff : dmar0
fed91000-fed91fff : dmar1
fee00000-fee00fff : Local APIC
fee00000-fee00fff : reserved
ff000000-ffffffff : reserved
ff000000-ffffffff : INT0800:00
ff000000-ffffffff : pnp 00:07
100000000-42fdfffff : System RAM
42fe00000-42fffffff : RAM buffer
[7.5.] PCI information ('lspci -vvv' as root)
00:00.0 Host bridge: Intel Corporation Crystal Well DRAM Controller (rev 08)
Subsystem: Gigabyte Technology Co., Ltd Device 1456
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:01.0 PCI bridge: Intel Corporation Crystal Well PCI Express x16
Controller (rev 08) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 0000e000-0000efff
Memory behind bridge: f6000000-f70fffff
Prefetchable memory behind bridge: 00000000e0000000-00000000f1ffffff
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: [88] Subsystem: Gigabyte Technology Co., Ltd Device 1456
Capabilities: [80] 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: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee002d8 Data: 0000
Capabilities: [a0] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 256 bytes, PhantFunc 0
ExtTag- RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 256 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
LnkCap: Port #2, Speed 8GT/s, Width x16, ASPM L0s L1, Exit
Latency L0s <256ns, L1 <8us
ClockPM- Surprise- LLActRep- BwNot+
LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled+ CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+
DLActive- BWMgmt- ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
Slot #1, PowerLimit 75.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: Not Supported, TimeoutDis-, LTR+,
OBFF Via WAKE# ARIFwd-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-,
OBFF Via WAKE# ARIFwd-
LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range,
EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB,
EqualizationComplete+, EqualizationPhase1+
EqualizationPhase2+, EqualizationPhase3+, LinkEqualizationRequest-
Capabilities: [100 v1] 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=ff
Status: NegoPending+ InProgress-
Capabilities: [140 v1] Root Complex Link
Desc: PortNumber=02 ComponentID=01 EltType=Config
Link0: Desc: TargetPort=00 TargetComponent=01 AssocRCRB-
LinkType=MemMapped LinkValid+
Addr: 00000000fed19000
Capabilities: [d94 v1] #19
Kernel driver in use: pcieport
00:02.0 VGA compatible controller: Intel Corporation Crystal Well
Integrated Graphics Controller (rev 08) (prog-if 00 [VGA controller])
Subsystem: Gigabyte Technology Co., Ltd Device 1456
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 37
Region 0: Memory at f7400000 (64-bit, non-prefetchable) [size=4M]
Region 2: Memory at d0000000 (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: fee00018 Data: 0000
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 Crystal Well HD Audio
Controller (rev 08)
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 38
Region 0: Memory at f7b14000 (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: fee004d8 Data: 0000
Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
Kernel driver in use: snd_hda_intel
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset
Family USB xHCI (rev 05) (prog-if 30 [XHCI])
Subsystem: Gigabyte Technology Co., Ltd Device 1456
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 31
Region 0: Memory at f7b00000 (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: 00000000fee003d8 Data: 0000
Kernel driver in use: xhci_hcd
00:16.0 Communication controller: Intel Corporation 8 Series/C220
Series Chipset Family MEI Controller #1 (rev 04)
Subsystem: Gigabyte Technology Co., Ltd Device 1456
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 34
Region 0: Memory at f7b1e000 (64-bit, non-prefetchable) [size=16]
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: 00000000fee00458 Data: 0000
Kernel driver in use: mei_me
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset
Family USB EHCI #2 (rev 05) (prog-if 20 [EHCI])
Subsystem: Gigabyte Technology Co., Ltd Device 1456
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 16
Region 0: Memory at f7b1c000 (32-bit, non-prefetchable) [size=1K]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [58] Debug port: BAR=1 offset=00a0
Capabilities: [98] PCI Advanced Features
AFCap: TP+ FLR+
AFCtrl: FLR-
AFStatus: TP-
Kernel driver in use: ehci-pci
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset
High Definition Audio Controller (rev 05)
Subsystem: Gigabyte Technology Co., Ltd Device 1456
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 35
Region 0: Memory at f7b10000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D3 NoSoftRst- PME-Enable+ DSel=0 DScale=0 PME-
Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee00498 Data: 0000
Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
Capabilities: [100 v1] Virtual Channel
Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
Arb: Fixed- WRR32- WRR64- WRR128-
Ctrl: ArbSelect=Fixed
Status: InProgress-
VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=01
Status: NegoPending- InProgress-
VC1: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=2 ArbSelect=Fixed TC/VC=04
Status: NegoPending- InProgress-
Kernel driver in use: snd_hda_intel
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
Family PCI Express Root Port #1 (rev d5) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
I/O behind bridge: 00002000-00002fff
Memory behind bridge: cf200000-cf3fffff
Prefetchable memory behind bridge: 00000000cf400000-00000000cf5fffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort+ <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #1, Speed 5GT/s, Width x1, ASPM L0s L1, Exit
Latency L0s <1us, L1 <4us
ClockPM- Surprise- LLActRep+ BwNot+
LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk-
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+
DLActive- BWMgmt- ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+
Slot #0, PowerLimit 0.000W; Interlock- NoCompl+
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet+ CmdCplt-
HPIrq+ LinkChg+
Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-
Changed: MRL- PresDet- LinkState-
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
RootCap: CRSVisible-
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+,
OBFF Via WAKE# ARIFwd-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+,
OBFF Disabled ARIFwd-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range,
EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB,
EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee002f8 Data: 0000
Capabilities: [90] Subsystem: Gigabyte Technology Co., Ltd Device 1456
Capabilities: [a0] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: pcieport
00:1c.1 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
Family PCI Express Root Port #2 (rev d5) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
I/O behind bridge: 0000f000-00000fff
Memory behind bridge: f7a00000-f7afffff
Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #2, Speed 5GT/s, Width x1, ASPM L0s L1, Exit
Latency L0s <512ns, L1 <16us
ClockPM- Surprise- LLActRep+ BwNot+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
DLActive+ BWMgmt+ ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
Slot #1, PowerLimit 10.000W; Interlock- NoCompl+
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
HPIrq- LinkChg-
Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
Changed: MRL- PresDet- LinkState-
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
RootCap: CRSVisible-
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+,
OBFF Not Supported ARIFwd-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+,
OBFF Disabled ARIFwd-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range,
EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB,
EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee00338 Data: 0000
Capabilities: [90] Subsystem: Gigabyte Technology Co., Ltd Device 1456
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 8 Series/C220 Series Chipset
Family PCI Express Root Port #3 (rev d5) (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=04, sec-latency=0
I/O behind bridge: 0000d000-0000dfff
Memory behind bridge: f7900000-f79fffff
Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #3, Speed 5GT/s, Width x1, ASPM L0s L1, Exit
Latency L0s <512ns, L1 <16us
ClockPM- Surprise- LLActRep+ BwNot+
LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
DLActive+ BWMgmt+ ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
Slot #2, PowerLimit 10.000W; Interlock- NoCompl+
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
HPIrq- LinkChg-
Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
Changed: MRL- PresDet- LinkState-
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
RootCap: CRSVisible-
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+,
OBFF Not Supported ARIFwd-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+,
OBFF Disabled ARIFwd-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range,
EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB,
EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee00378 Data: 0000
Capabilities: [90] Subsystem: Gigabyte Technology Co., Ltd Device 1456
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.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
Family PCI Express Root Port #4 (rev d5) (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=05, subordinate=05, sec-latency=0
I/O behind bridge: 0000f000-00000fff
Memory behind bridge: f7800000-f78fffff
Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #4, Speed 5GT/s, Width x1, ASPM L0s L1, Exit
Latency L0s <512ns, L1 <16us
ClockPM- Surprise- LLActRep+ BwNot+
LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
DLActive+ BWMgmt+ ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
Slot #3, PowerLimit 10.000W; Interlock- NoCompl+
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
HPIrq- LinkChg-
Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
Changed: MRL- PresDet- LinkState-
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
RootCap: CRSVisible-
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+,
OBFF Not Supported ARIFwd-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+,
OBFF Disabled ARIFwd-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range,
EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB,
EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee003b8 Data: 0000
Capabilities: [90] Subsystem: Gigabyte Technology Co., Ltd Device 1456
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:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset
Family USB EHCI #1 (rev 05) (prog-if 20 [EHCI])
Subsystem: Gigabyte Technology Co., Ltd Device 1456
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 f7b1b000 (32-bit, non-prefetchable) [size=1K]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [58] Debug port: BAR=1 offset=00a0
Capabilities: [98] PCI Advanced Features
AFCap: TP+ FLR+
AFCtrl: FLR-
AFStatus: TP-
Kernel driver in use: ehci-pci
00:1f.0 ISA bridge: Intel Corporation HM87 Express LPC Controller (rev 05)
Subsystem: Gigabyte Technology Co., Ltd Device 1456
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Capabilities: [e0] Vendor Specific Information: Len=0c <?>
Kernel driver in use: lpc_ich
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series
Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05) (prog-if
01 [AHCI 1.0])
Subsystem: Gigabyte Technology Co., Ltd Device 1456
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 33
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 f7b1a000 (32-bit, non-prefetchable) [size=2K]
Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee00438 Data: 0000
Capabilities: [70] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot+,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [a8] SATA HBA v1.0 BAR4 Offset=00000004
Kernel driver in use: ahci
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family
SMBus Controller (rev 05)
Subsystem: Gigabyte Technology Co., Ltd Device 1456
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin C routed to IRQ 255
Region 0: Memory at f7b19000 (64-bit, non-prefetchable) [size=256]
Region 4: I/O ports at f040 [size=32]
00:1f.6 Signal processing controller: Intel Corporation 8 Series
Chipset Family Thermal Management Controller (rev 05)
Subsystem: Gigabyte Technology Co., Ltd Device 1456
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin C routed to IRQ 255
Region 0: Memory at f7b18000 (64-bit, non-prefetchable) [disabled] [size=4K]
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
Address: 00000000 Data: 0000
01:00.0 3D controller: NVIDIA Corporation GK104M [GeForce GTX 870M]
(rev ff) (prog-if ff)
!!! Unknown header type 7f
Kernel driver in use: nouveau
03:00.0 Network controller: Intel Corporation Wireless 7260 (rev bb)
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 36
Region 0: Memory at f7a00000 (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: 00000000fee004b8 Data: 0000
Capabilities: [40] Express (v2) Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
<512ns, L1 unlimited
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr+ NoSnoop+ FLReset-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit
Latency L0s <4us, L1 <32us
ClockPM+ Surprise- LLActRep- BwNot-
LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Via WAKE#
DevCtl2: Completion Timeout: 16ms to 55ms, TimeoutDis-, LTR+,
OBFF Disabled
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range,
EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB,
EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [100 v1] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt-
RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt-
RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
Capabilities: [140 v1] Device Serial Number f8-16-54-ff-ff-7d-7e-6d
Capabilities: [14c v1] Latency Tolerance Reporting
Max snoop latency: 71680ns
Max no snoop latency: 71680ns
Capabilities: [154 v1] Vendor Specific Information: ID=cafe Rev=1
Len=014 <?>
Kernel driver in use: iwlwifi
04:00.0 Ethernet controller: Qualcomm Atheros Killer E220x Gigabit
Ethernet Controller (rev 10)
Subsystem: Gigabyte Technology Co., Ltd Device 1456
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 40
Region 0: Memory at f7900000 (64-bit, non-prefetchable) [size=256K]
Region 2: I/O ports at d000 [disabled] [size=128]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [58] Express (v1) Endpoint, MSI 00
DevCap: MaxPayload 4096 bytes, PhantFunc 0, Latency L0s
unlimited, L1 unlimited
ExtTag- AttnBtn+ AttnInd+ PwrInd+ RBE+ FLReset-
DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit
Latency L0s unlimited, L1 unlimited
ClockPM+ Surprise- LLActRep- BwNot-
LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
DLActive- BWMgmt- ABWMgmt-
Capabilities: [c0] MSI: Enable+ Count=1/16 Maskable+ 64bit+
Address: 00000000fee00518 Data: 0000
Masking: 0000fffe Pending: 00000000
Capabilities: [d8] MSI-X: Enable- Count=16 Masked-
Vector table: BAR=0 offset=00002000
PBA: BAR=0 offset=00003000
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: [180 v1] Device Serial Number ff-9b-c9-fc-f0-de-f1-ff
Kernel driver in use: alx
05:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd.
RTS5227 PCI Express Card Reader (rev 01)
Subsystem: Realtek Semiconductor Co., Ltd. RTS5227 PCI Express Card Reader
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 32
Region 0: Memory at f7800000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA
PME(D0-,D1+,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee00418 Data: 0000
Capabilities: [70] Express (v2) Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
unlimited, L1 unlimited
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit
Latency L0s unlimited, L1 <64us
ClockPM+ Surprise- LLActRep- BwNot-
LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk-
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+
DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR+,
OBFF Via message/WAKE#
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+,
OBFF Disabled
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range,
EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB,
EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [100 v2] 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 00-00-00-01-00-4c-e0-00
Capabilities: [150 v1] Latency Tolerance Reporting
Max snoop latency: 71680ns
Max no snoop latency: 71680ns
Capabilities: [158 v1] L1 PM Substates
L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+
L1_PM_Substates+
PortCommonModeRestoreTime=60us PortTPowerOnTime=60us
Kernel driver in use: rtsx_pci
[7.6.] SCSI information (from /proc/scsi/scsi)
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: LITEONIT LGT-256 Rev: 001
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: LITEONIT LGT-256 Rev: 001
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):
ls /proc
1 1114 14 1549 185 19 20 2180 2437 2601 2672 2725
28 2920 3002 3153 3345 3452 38 45 53 59 67 72 777
845 asound dma kallsyms meminfo scsi
timer_list
10 1127 1488 1598 1856 190 200 219 2468 2607 2673 2744
2805 2921 3027 3198 3350 3477 39 46 54 60 676 73 778
846 buddyinfo driver kcore misc self
timer_stats
1011 1128 1493 1676 186 191 2017 22 2470 2612 2678 2783
2850 2928 3035 32 3356 3486 4 47 546 61 68 74 78
847 bus execdomains keys modules slabinfo
tty
102 1150 1494 1698 1869 192 202 220 25 2614 2680 2784
2856 2930 3037 3236 3381 3487 40 48 55 62 687 740 784
848 cgroups fb key-users mounts softirqs
uptime
103 1151 15 17 187 1921 203 221 2542 2619 2688 2785
2862 2944 3040 3239 3385 35 407 49 56 620 69 75 8
85 cmdline filesystems kmsg mtrr stat
version
1036 1156 1500 1758 1877 193 204 222 2544 2628 2689 2787
2882 2949 3042 3270 34 3542 41 5 560 63 691 751 81
86 consoles fs kpagecount net swaps
vmallocinfo
1069 12 1501 18 188 194 207 223 2558 2633 2692 2790
2897 2955 3055 3282 3402 36 42 50 561 639 7 76 814
9 cpuinfo interrupts kpageflags pagetypeinfo sys
vmstat
11 122 1506 182 1883 1942 21 2234 2568 2637 27 2791
2898 2981 31 33 342 3687 421 51 562 64 70 77 82
98 crypto iomem loadavg partitions sysrq-trigger
zoneinfo
1109 123 1516 183 1885 195 217 2285 2569 2646 2701 2792
29 2983 3103 3321 3421 3697 43 52 57 65 71 775 84
99 devices ioports locks sched_debug sysvipc
1111 13 1542 184 189 2 218 24 26 2648 2711 2793
2911 3 3130 3330 3422 37 44 524 572 66 716 776 844
acpi diskstats irq mdstat schedstat thread-self
[X.] Other notes, patches, fixes, workarounds:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1387865
With all due respect,
Max
^ permalink raw reply
* Re: About Dell Inspiron 3442 touchpad
From: Luiz Carlos Ramos @ 2014-11-05 8:09 UTC (permalink / raw)
To: Benjamin Tissoires; +Cc: linux-input, andrew.duggan
In-Reply-To: <207925.414b376d6a6b514141412b4a56466d51496774703445624d356c4d@popretr.messagingengine.com>
Hi, Benjamin,
Thanks again!
Here it is an excerpt from $(udevadm info --export-db), I think the
relevant one:
P:
/devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00/0018:06CB:2985.0005
E:
DEVPATH=/devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00/0018:06CB:2985.0005
E: HID_ID=0018:000006CB:00002985
E: HID_NAME=DLL0652:00 06CB:2985
E: MODALIAS=hid:b0018g0000v000006CBp00002985
E: SUBSYSTEM=hid
E: UDEV_LOG=3
Also, this is the same information, from
/sys/bus/hid/devices/0018:06CB:2985.0005/modalias:
root@giustizia:/sys/bus/hid/devices/0018:06CB:2985.0005# cat modalias
hid:b0018g0000v000006CBp00002985
And, finally, the device descriptor:
root@giustizia:/sys/kernel/debug/hid/0018:06CB:2985.0005# cat rdesc
05 01 09 02 a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01
95 02 81 02 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06
c0 c0 06 00 ff 09 01 a1 01 85 09 09 02 15 00 26 ff 00 75 08 95 14 91 02
85 0a 09 03 15 00 26 ff 00 75 08 95 14 91 02 85 0b 09 04 15 00 26 ff 00
75 08 95 1d 81 02 85 0c 09 05 15 00 26 ff 00 75 08 95 1d 81 02 85 0f 09
06 15 00 26 ff 00 75 08 95 01 b1 02 c0
Yesterday, after sending my reply, I figured out that vendor 06CB means
Synaptics; am I right?
Also, again, if you'd like to me to code/patch/test anything, fell free
to ask me.
Many thanks again,
Luiz
On Wed, Nov 5, 2014, at 00:49, Benjamin Tissoires wrote:
> Hi Luiz,
>
> On Tue, Nov 4, 2014 at 8:11 PM, Luiz Carlos Ramos
> <lramos.prof@yahoo.com.br> wrote:
> > Hi, Benjamin,
> >
> > I think I just wrote the email below in a way it suggests everything had
> > gone well and the issue was resolved... but unfortunately it's not the
> > case. In my reply, I wrote some remarks in the text body in that email,
> > but I think they weren't noticed at all given the first paragraph.
>
> Apologies for that. I read it, thought about it, and forgot it.
>
> >
> > Only to recall, the problem is with a Dell Inspiron 3442, that has a
> > touchpad which doesn't show up. It seems like it is a Synaptics I2C
> > device. Your last advice was to insmod hid-rmi, which would hopefully
> > make things go on after I2C basic device handshake. However, it didn't
> > happen.
>
> Yeah, so given the state of the 3.16 kernel and your tests, the group
> associated to the device is simply not the RMI one.
> Which is weird.
>
> >
> > I managed also to put some "printk" at the beginning and at the end of
> > the "probe" function of hid-rmi, and it seems both were not called. I
> > don't know if some kind of ioctl() should be issued, or if udevd should
> > be configured some special way, but my feeling is that I am missing
> > something really really important and obvious.
> >
>
> No, I think your device is in a black hole. If the device declares
> nothing special, it should be handled by hid-rmi. But given that it is
> not the case, it might declares itself as a multitouch capable, and
> should be handled by hid-multitouch. But if hid-multitouch does not
> drive it properly, that is weird.
>
> Can you provide the modalias of the HID device: in "udevadm info
> --export-db", look for the device attached to i2c_hid, and find its
> son which has a modalias in the form of
> MODALIAS=hid:b0018gXXXXv000006cbp00002985. I am interested in what is
> after the "g".
>
> Also, can you export the content of the report descriptor of your
> device. You can find it in
> /sys/kernel/debug/hid/0018\:06CB\:2985.*/rdesc assuming you have
> debugfs mounted under /sys/kernel/debug
>
> Cheers,
> Benjamin
>
> >
> >
> > On Thu, Oct 30, 2014, at 08:06, Luiz Carlos Ramos wrote:
> >> Hi Benjamin,
> >>
> >> Thanks for the assistance and quick reply.
> >>
> >> On Tue, Oct 28, 2014, at 23:40, Benjamin Tissoires wrote:
> >> > Hi Luiz,
> >> >
> >> > On Tue, Oct 28, 2014 at 9:00 PM, Luiz Carlos Ramos
> >> > <lramos.prof@yahoo.com.br> wrote:
> >> > > Hello,
> >> > >
> >> > > I'm trying to make a touchpad from a Dell Inspiron I14-3442 laptop work.
> >> > >
> >> > > Some details:
> >> > >
> >> > > - I'm using plain Slackware64 14.1, but raised the kernel to 3.16.3 for
> >> > > tests
> >> > >
> >> > > - xinput ignores the touchpad; it shows only a USB mouse/keyboard
> >> > > adapter and the laptop's keyboard:
> >> > >
> >> > > root@pace:/sys/bus/hid/devices# xinput
> >> > > Virtual core pointer id=2 [master pointer
> >> > > (3)]
> >> > > Virtual core XTEST pointer id=4 [slave
> >> > > pointer (2)]
> >> > > Generic USB K/B id=12 [slave
> >> > > pointer (2)]
> >> > > Virtual core keyboard id=3 [master
> >> > > keyboard (2)]
> >> > > Virtual core XTEST keyboard id=5 [slave
> >> > > keyboard (3)]
> >> > > Power Button id=6 [slave
> >> > > keyboard (3)]
> >> > > Video Bus id=7 [slave
> >> > > keyboard (3)]
> >> > > Power Button id=9 [slave
> >> > > keyboard (3)]
> >> > > Sleep Button id=10 [slave
> >> > > keyboard (3)]
> >> > > Integrated_Webcam_HD id=13 [slave
> >> > > keyboard (3)]
> >> > > AT Translated Set 2 keyboard id=14 [slave
> >> > > keyboard (3)]
> >> > > Dell WMI hotkeys id=15 [slave
> >> > > keyboard (3)]
> >> > > Video Bus id=8 [slave
> >> > > keyboard (3)]
> >> > > Generic USB K/B id=11 [slave
> >> > > keyboard (3)]
> >> > >
> >> > > - it seems Ubuntu certified this machine (check
> >> > > http://www.ubuntu.com/certification/hardware/201402-14674/components/),
> >> > > but it assumes the touchpad is PS/2. I haven't found it as a PS/2 thing,
> >> > > even loading psmouse.ko, or doing other tricks
> >> > >
> >> > > - some articles lists some tips for making it work (like
> >> > > http://askubuntu.com/questions/134627/how-do-i-get-the-touchpad-settings-working-on-a-dell-xps-13-ultrabook,
> >> > > or https://bugzilla.redhat.com/show_bug.cgi?id=1048314#c2), but I read
> >> > > them carefully, made some tests, and they didn't work. One article says
> >> > > I could blacklist i2c_hid or like in order to make the bring up the
> >> > > touchpad in PS/2 mode, but I couldn't succeed doing so
> >> > >
> >> > > - at Dell's site, it is offered a driver for Ubuntu 12.04, but it's
> >> > > almost obsolete. It seems to be just merged into the kernel
> >> > >
> >> > > - from Windows 8.1, which runs in the same machine (dual boot), I
> >> > > concluded the proper way of making it work is to use HID over I2C. It
> >> > > seems that there are two components loaded; one I2CHID, and a Synaptics
> >> > > HID. This makes me hint it may be a Synaptics device
> >> >
> >> > Well, if this is a Synaptics HID over I2C device, it should be handled
> >> > by hid-rmi in recent kernels (or hid-multitouch but I would say
> >> > hid-rmi in your case).
> >> > Is the hid-rmi module loaded? Can we get a dmesg output so we can see
> >> > if there is any problem?
> >> >
> >> > >
> >> > > - it seems there are two I2C busses in the machine. One is related to
> >> > > the Intel video graphics subsystem (i801). The other seems to be linked
> >> > > to the touchpad (i2c_designware_platform). I'm not sure that latest kmod
> >> > > (i2c_designware_platform) is the right one to be used in this case, but
> >> > > it appears to be working:
> >> >
> >> > Yeah, i2c_designware_platform is pretty common for Haswell processors.
> >> >
> >> > >
> >> > > root@pace:/sys/bus/i2c/devices# ls -l /sys/bus/i2c/devices
> >> > > total 0
> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-0 ->
> >> > > ../../../devices/pci0000:00/INT33C2:00/i2c-0
> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-1 ->
> >> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1
> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-2 ->
> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-2
> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-3 ->
> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-3
> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-4 ->
> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-4
> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-5 ->
> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-5
> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-6 ->
> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-6
> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-7 ->
> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-7
> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-8 ->
> >> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-8
> >> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-DLL0652:00 ->
> >> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00
> >> >
> >> > This one is the touchpad.
> >> >
> >> > >
> >> > > root@pace:/sys/bus/i2c/devices# lsmod | grep i2c
> >> > > i2c_hid 10682 0
> >> > > hid 94632 3 i2c_hid,hid_generic,usbhid
> >> > > i2c_dev 5739 0
> >> > > i2c_designware_platform 3189 0
> >> > > i2c_i801 13732 0
> >> > > i2c_designware_core 6045 1 i2c_designware_platform
> >> > > i2c_algo_bit 5351 1 i915
> >> > > i2c_core 35216 11
> >> > > drm,i915,i2c_i801,i2c_dev,i2c_hid,i2c_designware_platform,drm_kms_helper,i2c_algo_bit,v4l2_common,synaptics_i2c,videodev
> >> > >
> >> > > - in the HID /sys directory, there are three devices. Two are related to
> >> > > a keyboard/mouse USB adapter. The third seems to be the linked to the
> >> > > touchpad:
> >> > >
> >> > > root@pace:/sys/bus/hid/devices# ls -l /sys/bus/hid/devices
> >> > > total 0
> >> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0003:13BA:0017.004F ->
> >> > > ../../../devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1.3/3-1.3:1.0/0003:13BA:0017.004F
> >> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0003:13BA:0017.0050 ->
> >> > > ../../../devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1.3/3-1.3:1.1/0003:13BA:0017.0050
> >> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0018:06CB:2985.0052 ->
> >> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00/0018:06CB:2985.0052
> >> >
> >> > This is the HID over I2C touchpad.
> >> >
> >> > >
> >> > > - when I load the kernel module i2c-hid.ko (with debug=1), I read this
> >> > > in dmesg:
> >> > >
> >> > > [146172.568787] i2c_hid i2c-DLL0652:00: Fetching the HID descriptor
> >> > > [146172.568791] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=20 00
> >> > > [146172.574806] i2c_hid i2c-DLL0652:00: HID Descriptor: 1e 00 00 01 85
> >> > > 00 21 00 24 00 20 00 25 00 17 00 22 00 23 00 cb 06 85 29 00 00 00 00 00
> >> > > 00
> >> > > [146172.574845] i2c_hid i2c-DLL0652:00: entering i2c_hid_parse
> >> > > [146172.574847] i2c_hid i2c-DLL0652:00: i2c_hid_hwreset
> >> > > [146172.574849] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
> >> > > [146172.574850] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
> >> > > 08
> >> > > [146172.575436] i2c_hid i2c-DLL0652:00: resetting...
> >> > > [146172.575442] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
> >> > > 01
> >> > > [146172.576113] i2c_hid i2c-DLL0652:00: __i2c_hid_command: waiting...
> >> > > [146172.577414] i2c_hid i2c-DLL0652:00: __i2c_hid_command: finished.
> >> > > [146172.577417] i2c_hid i2c-DLL0652:00: asking HID report descriptor
> >> > > [146172.577419] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=21 00
> >> > > [146172.581072] i2c_hid i2c-DLL0652:00: Report Descriptor: 05 01 09 02
> >> > > a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02
> >> > > 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 c0 c0 06 00
> >> > > ff 09 01 a1 01 85 09 09 02 15 00 26
> >> > > [146172.581126] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
> >> > > [146172.581129] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 01
> >> > > 08
> >> >
> >> > Everything is fine, this is the normal behavior while connecting a
> >> > i2c_hid device.
> >> > Normally, we should have then hid-rmi asking for more things and then
> >> > it will eventually set up the input device.
> >> >
> >> > >
> >> > > I am aware this information probably is not sufficient to draw any
> >> > > conclusions, but I'd appreciate to hear from someone who knows i2c_hid
> >> > > in detail what steps I should take next. For me the last command timed
> >> > > out or got stuck, but I haven't checked the code to see if it's the
> >> > > case. Anyway, if it was a timeout case, it should have something logged
> >> > > after the time expired.
> >> >
> >> > There is no answer from the device when a SET_POWER is emitted. So
> >> > this is not a timeout problem.
> >> >
> >> > If hid-rmi is compiled and is not taking the device, we have a big
> >> > problem, but for now, the symptoms look like you do not have this
> >> > driver compiled and hid-generic does not bind the device because it
> >> > waits for hid-rmi to handle it.
> >> >
> >>
> >> Well, I tried to insmod hid-rmi, and nothing special happened. Here is a
> >> dmesg output (relevant lines):
> >>
> >> [158885.774386] i2c_hid i2c-DLL0652:00: Fetching the HID descriptor
> >> [158885.774391] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=20 00
> >> [158885.785853] i2c_hid i2c-DLL0652:00: HID Descriptor: 1e 00 00 01 85
> >> 00 21 00 24 00 20 00 25 00 17 00 22 00 23 00 cb 06 85 29 00 00 00 00 00
> >> 00
> >> [158885.785924] i2c_hid i2c-DLL0652:00: entering i2c_hid_parse
> >> [158885.785926] i2c_hid i2c-DLL0652:00: i2c_hid_hwreset
> >> [158885.785927] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
> >> [158885.785928] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
> >> 08
> >> [158885.786494] i2c_hid i2c-DLL0652:00: resetting...
> >> [158885.786497] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
> >> 01
> >> [158885.787285] i2c_hid i2c-DLL0652:00: __i2c_hid_command: waiting...
> >> [158885.788496] i2c_hid i2c-DLL0652:00: __i2c_hid_command: finished.
> >> [158885.788499] i2c_hid i2c-DLL0652:00: asking HID report descriptor
> >> [158885.788501] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=21 00
> >> [158885.792194] i2c_hid i2c-DLL0652:00: Report Descriptor: 05 01 09 02
> >> a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02
> >> 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 c0 c0 06 00
> >> ff 09 01 a1 01 85 09 09 02 15 00 26
> >> [158885.792252] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
> >> [158885.792254] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 01
> >> 08
> >>
> >> I included lines like:
> >>
> >> printk(KERN_ERR "hid_rmi_probe(): called\n");
> >> printk(KERN_ERR "hid_rmi_probe(): ret=0\n");
> >>
> >> in the beginning and at the end of the routine rmi_probe(). These lines
> >> didn't
> >> appear in dmesg (those pictured above). I don't know if "probe" is to be
> >> called
> >> in this case, or not. Is there any other condition to make hid-rmi be
> >> "instantiated",
> >> I mean, other kmod to be loaded, or a special ioctl() coming to the hid
> >> from userland,
> >> or even echoing something to the "bind" file at /sys/...?
> >>
> >> Well, here's the "directory" /sys/bus/hid/drivers/hid-rmi:
> >>
> >> root@pace:/sys/bus/hid/drivers/hid-rmi# ls -l
> >> /sys/bus/hid/drivers/hid-rmi/
> >> total 0
> >> --w------- 1 root root 4096 Out 30 08:03 bind
> >> lrwxrwxrwx 1 root root 0 Out 30 08:03 module ->
> >> ../../../../module/hid_rmi
> >> --w------- 1 root root 4096 Out 30 08:03 new_id
> >> --w------- 1 root root 4096 Out 30 07:48 uevent
> >> --w------- 1 root root 4096 Out 30 08:03 unbind
> >>
> >> One thing I didn't still did is to reboot the machine. I found it was
> >> not the case,
> >> but this type of action use to work a lot in IT/IS, right? :-)
> >>
> >> > >
> >> > > I have some programming skills, and so if it's the case of applying any
> >> > > patches, or recompiling the kernel or any subsystem to make tests, I'm
> >> > > up to.
> >> >
> >> > Cool, thanks.
> >> >
> >> > Cheers,
> >> > Benjamin
> >>
> >> Many thanks,
> >>
> >> Luiz
^ permalink raw reply
* Re: About Dell Inspiron 3442 touchpad
From: Benjamin Tissoires @ 2014-11-05 2:49 UTC (permalink / raw)
To: Luiz Carlos Ramos, Andrew Duggan; +Cc: linux-input
In-Reply-To: <1415149868.3091658.187158185.5DD776E6@webmail.messagingengine.com>
Hi Luiz,
On Tue, Nov 4, 2014 at 8:11 PM, Luiz Carlos Ramos
<lramos.prof@yahoo.com.br> wrote:
> Hi, Benjamin,
>
> I think I just wrote the email below in a way it suggests everything had
> gone well and the issue was resolved... but unfortunately it's not the
> case. In my reply, I wrote some remarks in the text body in that email,
> but I think they weren't noticed at all given the first paragraph.
Apologies for that. I read it, thought about it, and forgot it.
>
> Only to recall, the problem is with a Dell Inspiron 3442, that has a
> touchpad which doesn't show up. It seems like it is a Synaptics I2C
> device. Your last advice was to insmod hid-rmi, which would hopefully
> make things go on after I2C basic device handshake. However, it didn't
> happen.
Yeah, so given the state of the 3.16 kernel and your tests, the group
associated to the device is simply not the RMI one.
Which is weird.
>
> I managed also to put some "printk" at the beginning and at the end of
> the "probe" function of hid-rmi, and it seems both were not called. I
> don't know if some kind of ioctl() should be issued, or if udevd should
> be configured some special way, but my feeling is that I am missing
> something really really important and obvious.
>
No, I think your device is in a black hole. If the device declares
nothing special, it should be handled by hid-rmi. But given that it is
not the case, it might declares itself as a multitouch capable, and
should be handled by hid-multitouch. But if hid-multitouch does not
drive it properly, that is weird.
Can you provide the modalias of the HID device: in "udevadm info
--export-db", look for the device attached to i2c_hid, and find its
son which has a modalias in the form of
MODALIAS=hid:b0018gXXXXv000006cbp00002985. I am interested in what is
after the "g".
Also, can you export the content of the report descriptor of your
device. You can find it in
/sys/kernel/debug/hid/0018\:06CB\:2985.*/rdesc assuming you have
debugfs mounted under /sys/kernel/debug
Cheers,
Benjamin
>
>
> On Thu, Oct 30, 2014, at 08:06, Luiz Carlos Ramos wrote:
>> Hi Benjamin,
>>
>> Thanks for the assistance and quick reply.
>>
>> On Tue, Oct 28, 2014, at 23:40, Benjamin Tissoires wrote:
>> > Hi Luiz,
>> >
>> > On Tue, Oct 28, 2014 at 9:00 PM, Luiz Carlos Ramos
>> > <lramos.prof@yahoo.com.br> wrote:
>> > > Hello,
>> > >
>> > > I'm trying to make a touchpad from a Dell Inspiron I14-3442 laptop work.
>> > >
>> > > Some details:
>> > >
>> > > - I'm using plain Slackware64 14.1, but raised the kernel to 3.16.3 for
>> > > tests
>> > >
>> > > - xinput ignores the touchpad; it shows only a USB mouse/keyboard
>> > > adapter and the laptop's keyboard:
>> > >
>> > > root@pace:/sys/bus/hid/devices# xinput
>> > > Virtual core pointer id=2 [master pointer
>> > > (3)]
>> > > Virtual core XTEST pointer id=4 [slave
>> > > pointer (2)]
>> > > Generic USB K/B id=12 [slave
>> > > pointer (2)]
>> > > Virtual core keyboard id=3 [master
>> > > keyboard (2)]
>> > > Virtual core XTEST keyboard id=5 [slave
>> > > keyboard (3)]
>> > > Power Button id=6 [slave
>> > > keyboard (3)]
>> > > Video Bus id=7 [slave
>> > > keyboard (3)]
>> > > Power Button id=9 [slave
>> > > keyboard (3)]
>> > > Sleep Button id=10 [slave
>> > > keyboard (3)]
>> > > Integrated_Webcam_HD id=13 [slave
>> > > keyboard (3)]
>> > > AT Translated Set 2 keyboard id=14 [slave
>> > > keyboard (3)]
>> > > Dell WMI hotkeys id=15 [slave
>> > > keyboard (3)]
>> > > Video Bus id=8 [slave
>> > > keyboard (3)]
>> > > Generic USB K/B id=11 [slave
>> > > keyboard (3)]
>> > >
>> > > - it seems Ubuntu certified this machine (check
>> > > http://www.ubuntu.com/certification/hardware/201402-14674/components/),
>> > > but it assumes the touchpad is PS/2. I haven't found it as a PS/2 thing,
>> > > even loading psmouse.ko, or doing other tricks
>> > >
>> > > - some articles lists some tips for making it work (like
>> > > http://askubuntu.com/questions/134627/how-do-i-get-the-touchpad-settings-working-on-a-dell-xps-13-ultrabook,
>> > > or https://bugzilla.redhat.com/show_bug.cgi?id=1048314#c2), but I read
>> > > them carefully, made some tests, and they didn't work. One article says
>> > > I could blacklist i2c_hid or like in order to make the bring up the
>> > > touchpad in PS/2 mode, but I couldn't succeed doing so
>> > >
>> > > - at Dell's site, it is offered a driver for Ubuntu 12.04, but it's
>> > > almost obsolete. It seems to be just merged into the kernel
>> > >
>> > > - from Windows 8.1, which runs in the same machine (dual boot), I
>> > > concluded the proper way of making it work is to use HID over I2C. It
>> > > seems that there are two components loaded; one I2CHID, and a Synaptics
>> > > HID. This makes me hint it may be a Synaptics device
>> >
>> > Well, if this is a Synaptics HID over I2C device, it should be handled
>> > by hid-rmi in recent kernels (or hid-multitouch but I would say
>> > hid-rmi in your case).
>> > Is the hid-rmi module loaded? Can we get a dmesg output so we can see
>> > if there is any problem?
>> >
>> > >
>> > > - it seems there are two I2C busses in the machine. One is related to
>> > > the Intel video graphics subsystem (i801). The other seems to be linked
>> > > to the touchpad (i2c_designware_platform). I'm not sure that latest kmod
>> > > (i2c_designware_platform) is the right one to be used in this case, but
>> > > it appears to be working:
>> >
>> > Yeah, i2c_designware_platform is pretty common for Haswell processors.
>> >
>> > >
>> > > root@pace:/sys/bus/i2c/devices# ls -l /sys/bus/i2c/devices
>> > > total 0
>> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-0 ->
>> > > ../../../devices/pci0000:00/INT33C2:00/i2c-0
>> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-1 ->
>> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1
>> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-2 ->
>> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-2
>> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-3 ->
>> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-3
>> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-4 ->
>> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-4
>> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-5 ->
>> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-5
>> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-6 ->
>> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-6
>> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-7 ->
>> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-7
>> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-8 ->
>> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-8
>> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-DLL0652:00 ->
>> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00
>> >
>> > This one is the touchpad.
>> >
>> > >
>> > > root@pace:/sys/bus/i2c/devices# lsmod | grep i2c
>> > > i2c_hid 10682 0
>> > > hid 94632 3 i2c_hid,hid_generic,usbhid
>> > > i2c_dev 5739 0
>> > > i2c_designware_platform 3189 0
>> > > i2c_i801 13732 0
>> > > i2c_designware_core 6045 1 i2c_designware_platform
>> > > i2c_algo_bit 5351 1 i915
>> > > i2c_core 35216 11
>> > > drm,i915,i2c_i801,i2c_dev,i2c_hid,i2c_designware_platform,drm_kms_helper,i2c_algo_bit,v4l2_common,synaptics_i2c,videodev
>> > >
>> > > - in the HID /sys directory, there are three devices. Two are related to
>> > > a keyboard/mouse USB adapter. The third seems to be the linked to the
>> > > touchpad:
>> > >
>> > > root@pace:/sys/bus/hid/devices# ls -l /sys/bus/hid/devices
>> > > total 0
>> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0003:13BA:0017.004F ->
>> > > ../../../devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1.3/3-1.3:1.0/0003:13BA:0017.004F
>> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0003:13BA:0017.0050 ->
>> > > ../../../devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1.3/3-1.3:1.1/0003:13BA:0017.0050
>> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0018:06CB:2985.0052 ->
>> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00/0018:06CB:2985.0052
>> >
>> > This is the HID over I2C touchpad.
>> >
>> > >
>> > > - when I load the kernel module i2c-hid.ko (with debug=1), I read this
>> > > in dmesg:
>> > >
>> > > [146172.568787] i2c_hid i2c-DLL0652:00: Fetching the HID descriptor
>> > > [146172.568791] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=20 00
>> > > [146172.574806] i2c_hid i2c-DLL0652:00: HID Descriptor: 1e 00 00 01 85
>> > > 00 21 00 24 00 20 00 25 00 17 00 22 00 23 00 cb 06 85 29 00 00 00 00 00
>> > > 00
>> > > [146172.574845] i2c_hid i2c-DLL0652:00: entering i2c_hid_parse
>> > > [146172.574847] i2c_hid i2c-DLL0652:00: i2c_hid_hwreset
>> > > [146172.574849] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
>> > > [146172.574850] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
>> > > 08
>> > > [146172.575436] i2c_hid i2c-DLL0652:00: resetting...
>> > > [146172.575442] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
>> > > 01
>> > > [146172.576113] i2c_hid i2c-DLL0652:00: __i2c_hid_command: waiting...
>> > > [146172.577414] i2c_hid i2c-DLL0652:00: __i2c_hid_command: finished.
>> > > [146172.577417] i2c_hid i2c-DLL0652:00: asking HID report descriptor
>> > > [146172.577419] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=21 00
>> > > [146172.581072] i2c_hid i2c-DLL0652:00: Report Descriptor: 05 01 09 02
>> > > a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02
>> > > 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 c0 c0 06 00
>> > > ff 09 01 a1 01 85 09 09 02 15 00 26
>> > > [146172.581126] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
>> > > [146172.581129] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 01
>> > > 08
>> >
>> > Everything is fine, this is the normal behavior while connecting a
>> > i2c_hid device.
>> > Normally, we should have then hid-rmi asking for more things and then
>> > it will eventually set up the input device.
>> >
>> > >
>> > > I am aware this information probably is not sufficient to draw any
>> > > conclusions, but I'd appreciate to hear from someone who knows i2c_hid
>> > > in detail what steps I should take next. For me the last command timed
>> > > out or got stuck, but I haven't checked the code to see if it's the
>> > > case. Anyway, if it was a timeout case, it should have something logged
>> > > after the time expired.
>> >
>> > There is no answer from the device when a SET_POWER is emitted. So
>> > this is not a timeout problem.
>> >
>> > If hid-rmi is compiled and is not taking the device, we have a big
>> > problem, but for now, the symptoms look like you do not have this
>> > driver compiled and hid-generic does not bind the device because it
>> > waits for hid-rmi to handle it.
>> >
>>
>> Well, I tried to insmod hid-rmi, and nothing special happened. Here is a
>> dmesg output (relevant lines):
>>
>> [158885.774386] i2c_hid i2c-DLL0652:00: Fetching the HID descriptor
>> [158885.774391] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=20 00
>> [158885.785853] i2c_hid i2c-DLL0652:00: HID Descriptor: 1e 00 00 01 85
>> 00 21 00 24 00 20 00 25 00 17 00 22 00 23 00 cb 06 85 29 00 00 00 00 00
>> 00
>> [158885.785924] i2c_hid i2c-DLL0652:00: entering i2c_hid_parse
>> [158885.785926] i2c_hid i2c-DLL0652:00: i2c_hid_hwreset
>> [158885.785927] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
>> [158885.785928] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
>> 08
>> [158885.786494] i2c_hid i2c-DLL0652:00: resetting...
>> [158885.786497] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
>> 01
>> [158885.787285] i2c_hid i2c-DLL0652:00: __i2c_hid_command: waiting...
>> [158885.788496] i2c_hid i2c-DLL0652:00: __i2c_hid_command: finished.
>> [158885.788499] i2c_hid i2c-DLL0652:00: asking HID report descriptor
>> [158885.788501] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=21 00
>> [158885.792194] i2c_hid i2c-DLL0652:00: Report Descriptor: 05 01 09 02
>> a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02
>> 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 c0 c0 06 00
>> ff 09 01 a1 01 85 09 09 02 15 00 26
>> [158885.792252] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
>> [158885.792254] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 01
>> 08
>>
>> I included lines like:
>>
>> printk(KERN_ERR "hid_rmi_probe(): called\n");
>> printk(KERN_ERR "hid_rmi_probe(): ret=0\n");
>>
>> in the beginning and at the end of the routine rmi_probe(). These lines
>> didn't
>> appear in dmesg (those pictured above). I don't know if "probe" is to be
>> called
>> in this case, or not. Is there any other condition to make hid-rmi be
>> "instantiated",
>> I mean, other kmod to be loaded, or a special ioctl() coming to the hid
>> from userland,
>> or even echoing something to the "bind" file at /sys/...?
>>
>> Well, here's the "directory" /sys/bus/hid/drivers/hid-rmi:
>>
>> root@pace:/sys/bus/hid/drivers/hid-rmi# ls -l
>> /sys/bus/hid/drivers/hid-rmi/
>> total 0
>> --w------- 1 root root 4096 Out 30 08:03 bind
>> lrwxrwxrwx 1 root root 0 Out 30 08:03 module ->
>> ../../../../module/hid_rmi
>> --w------- 1 root root 4096 Out 30 08:03 new_id
>> --w------- 1 root root 4096 Out 30 07:48 uevent
>> --w------- 1 root root 4096 Out 30 08:03 unbind
>>
>> One thing I didn't still did is to reboot the machine. I found it was
>> not the case,
>> but this type of action use to work a lot in IT/IS, right? :-)
>>
>> > >
>> > > I have some programming skills, and so if it's the case of applying any
>> > > patches, or recompiling the kernel or any subsystem to make tests, I'm
>> > > up to.
>> >
>> > Cool, thanks.
>> >
>> > Cheers,
>> > Benjamin
>>
>> Many thanks,
>>
>> Luiz
^ permalink raw reply
* Re: About Dell Inspiron 3442 touchpad
From: Luiz Carlos Ramos @ 2014-11-05 1:11 UTC (permalink / raw)
To: Benjamin Tissoires; +Cc: linux-input
In-Reply-To: <1414663579.647252.185040445.75974DFA@webmail.messagingengine.com>
Hi, Benjamin,
I think I just wrote the email below in a way it suggests everything had
gone well and the issue was resolved... but unfortunately it's not the
case. In my reply, I wrote some remarks in the text body in that email,
but I think they weren't noticed at all given the first paragraph.
Only to recall, the problem is with a Dell Inspiron 3442, that has a
touchpad which doesn't show up. It seems like it is a Synaptics I2C
device. Your last advice was to insmod hid-rmi, which would hopefully
make things go on after I2C basic device handshake. However, it didn't
happen.
I managed also to put some "printk" at the beginning and at the end of
the "probe" function of hid-rmi, and it seems both were not called. I
don't know if some kind of ioctl() should be issued, or if udevd should
be configured some special way, but my feeling is that I am missing
something really really important and obvious.
Thanks,
Luiz
On Thu, Oct 30, 2014, at 08:06, Luiz Carlos Ramos wrote:
> Hi Benjamin,
>
> Thanks for the assistance and quick reply.
>
> On Tue, Oct 28, 2014, at 23:40, Benjamin Tissoires wrote:
> > Hi Luiz,
> >
> > On Tue, Oct 28, 2014 at 9:00 PM, Luiz Carlos Ramos
> > <lramos.prof@yahoo.com.br> wrote:
> > > Hello,
> > >
> > > I'm trying to make a touchpad from a Dell Inspiron I14-3442 laptop work.
> > >
> > > Some details:
> > >
> > > - I'm using plain Slackware64 14.1, but raised the kernel to 3.16.3 for
> > > tests
> > >
> > > - xinput ignores the touchpad; it shows only a USB mouse/keyboard
> > > adapter and the laptop's keyboard:
> > >
> > > root@pace:/sys/bus/hid/devices# xinput
> > > Virtual core pointer id=2 [master pointer
> > > (3)]
> > > Virtual core XTEST pointer id=4 [slave
> > > pointer (2)]
> > > Generic USB K/B id=12 [slave
> > > pointer (2)]
> > > Virtual core keyboard id=3 [master
> > > keyboard (2)]
> > > Virtual core XTEST keyboard id=5 [slave
> > > keyboard (3)]
> > > Power Button id=6 [slave
> > > keyboard (3)]
> > > Video Bus id=7 [slave
> > > keyboard (3)]
> > > Power Button id=9 [slave
> > > keyboard (3)]
> > > Sleep Button id=10 [slave
> > > keyboard (3)]
> > > Integrated_Webcam_HD id=13 [slave
> > > keyboard (3)]
> > > AT Translated Set 2 keyboard id=14 [slave
> > > keyboard (3)]
> > > Dell WMI hotkeys id=15 [slave
> > > keyboard (3)]
> > > Video Bus id=8 [slave
> > > keyboard (3)]
> > > Generic USB K/B id=11 [slave
> > > keyboard (3)]
> > >
> > > - it seems Ubuntu certified this machine (check
> > > http://www.ubuntu.com/certification/hardware/201402-14674/components/),
> > > but it assumes the touchpad is PS/2. I haven't found it as a PS/2 thing,
> > > even loading psmouse.ko, or doing other tricks
> > >
> > > - some articles lists some tips for making it work (like
> > > http://askubuntu.com/questions/134627/how-do-i-get-the-touchpad-settings-working-on-a-dell-xps-13-ultrabook,
> > > or https://bugzilla.redhat.com/show_bug.cgi?id=1048314#c2), but I read
> > > them carefully, made some tests, and they didn't work. One article says
> > > I could blacklist i2c_hid or like in order to make the bring up the
> > > touchpad in PS/2 mode, but I couldn't succeed doing so
> > >
> > > - at Dell's site, it is offered a driver for Ubuntu 12.04, but it's
> > > almost obsolete. It seems to be just merged into the kernel
> > >
> > > - from Windows 8.1, which runs in the same machine (dual boot), I
> > > concluded the proper way of making it work is to use HID over I2C. It
> > > seems that there are two components loaded; one I2CHID, and a Synaptics
> > > HID. This makes me hint it may be a Synaptics device
> >
> > Well, if this is a Synaptics HID over I2C device, it should be handled
> > by hid-rmi in recent kernels (or hid-multitouch but I would say
> > hid-rmi in your case).
> > Is the hid-rmi module loaded? Can we get a dmesg output so we can see
> > if there is any problem?
> >
> > >
> > > - it seems there are two I2C busses in the machine. One is related to
> > > the Intel video graphics subsystem (i801). The other seems to be linked
> > > to the touchpad (i2c_designware_platform). I'm not sure that latest kmod
> > > (i2c_designware_platform) is the right one to be used in this case, but
> > > it appears to be working:
> >
> > Yeah, i2c_designware_platform is pretty common for Haswell processors.
> >
> > >
> > > root@pace:/sys/bus/i2c/devices# ls -l /sys/bus/i2c/devices
> > > total 0
> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-0 ->
> > > ../../../devices/pci0000:00/INT33C2:00/i2c-0
> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-1 ->
> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1
> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-2 ->
> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-2
> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-3 ->
> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-3
> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-4 ->
> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-4
> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-5 ->
> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-5
> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-6 ->
> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-6
> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-7 ->
> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-7
> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-8 ->
> > > ../../../devices/pci0000:00/0000:00:02.0/i2c-8
> > > lrwxrwxrwx 1 root root 0 Out 18 17:26 i2c-DLL0652:00 ->
> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00
> >
> > This one is the touchpad.
> >
> > >
> > > root@pace:/sys/bus/i2c/devices# lsmod | grep i2c
> > > i2c_hid 10682 0
> > > hid 94632 3 i2c_hid,hid_generic,usbhid
> > > i2c_dev 5739 0
> > > i2c_designware_platform 3189 0
> > > i2c_i801 13732 0
> > > i2c_designware_core 6045 1 i2c_designware_platform
> > > i2c_algo_bit 5351 1 i915
> > > i2c_core 35216 11
> > > drm,i915,i2c_i801,i2c_dev,i2c_hid,i2c_designware_platform,drm_kms_helper,i2c_algo_bit,v4l2_common,synaptics_i2c,videodev
> > >
> > > - in the HID /sys directory, there are three devices. Two are related to
> > > a keyboard/mouse USB adapter. The third seems to be the linked to the
> > > touchpad:
> > >
> > > root@pace:/sys/bus/hid/devices# ls -l /sys/bus/hid/devices
> > > total 0
> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0003:13BA:0017.004F ->
> > > ../../../devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1.3/3-1.3:1.0/0003:13BA:0017.004F
> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0003:13BA:0017.0050 ->
> > > ../../../devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1.3/3-1.3:1.1/0003:13BA:0017.0050
> > > lrwxrwxrwx 1 root root 0 Out 28 22:40 0018:06CB:2985.0052 ->
> > > ../../../devices/pci0000:00/INT33C3:00/i2c-1/i2c-DLL0652:00/0018:06CB:2985.0052
> >
> > This is the HID over I2C touchpad.
> >
> > >
> > > - when I load the kernel module i2c-hid.ko (with debug=1), I read this
> > > in dmesg:
> > >
> > > [146172.568787] i2c_hid i2c-DLL0652:00: Fetching the HID descriptor
> > > [146172.568791] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=20 00
> > > [146172.574806] i2c_hid i2c-DLL0652:00: HID Descriptor: 1e 00 00 01 85
> > > 00 21 00 24 00 20 00 25 00 17 00 22 00 23 00 cb 06 85 29 00 00 00 00 00
> > > 00
> > > [146172.574845] i2c_hid i2c-DLL0652:00: entering i2c_hid_parse
> > > [146172.574847] i2c_hid i2c-DLL0652:00: i2c_hid_hwreset
> > > [146172.574849] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
> > > [146172.574850] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
> > > 08
> > > [146172.575436] i2c_hid i2c-DLL0652:00: resetting...
> > > [146172.575442] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
> > > 01
> > > [146172.576113] i2c_hid i2c-DLL0652:00: __i2c_hid_command: waiting...
> > > [146172.577414] i2c_hid i2c-DLL0652:00: __i2c_hid_command: finished.
> > > [146172.577417] i2c_hid i2c-DLL0652:00: asking HID report descriptor
> > > [146172.577419] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=21 00
> > > [146172.581072] i2c_hid i2c-DLL0652:00: Report Descriptor: 05 01 09 02
> > > a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02
> > > 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 c0 c0 06 00
> > > ff 09 01 a1 01 85 09 09 02 15 00 26
> > > [146172.581126] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
> > > [146172.581129] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 01
> > > 08
> >
> > Everything is fine, this is the normal behavior while connecting a
> > i2c_hid device.
> > Normally, we should have then hid-rmi asking for more things and then
> > it will eventually set up the input device.
> >
> > >
> > > I am aware this information probably is not sufficient to draw any
> > > conclusions, but I'd appreciate to hear from someone who knows i2c_hid
> > > in detail what steps I should take next. For me the last command timed
> > > out or got stuck, but I haven't checked the code to see if it's the
> > > case. Anyway, if it was a timeout case, it should have something logged
> > > after the time expired.
> >
> > There is no answer from the device when a SET_POWER is emitted. So
> > this is not a timeout problem.
> >
> > If hid-rmi is compiled and is not taking the device, we have a big
> > problem, but for now, the symptoms look like you do not have this
> > driver compiled and hid-generic does not bind the device because it
> > waits for hid-rmi to handle it.
> >
>
> Well, I tried to insmod hid-rmi, and nothing special happened. Here is a
> dmesg output (relevant lines):
>
> [158885.774386] i2c_hid i2c-DLL0652:00: Fetching the HID descriptor
> [158885.774391] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=20 00
> [158885.785853] i2c_hid i2c-DLL0652:00: HID Descriptor: 1e 00 00 01 85
> 00 21 00 24 00 20 00 25 00 17 00 22 00 23 00 cb 06 85 29 00 00 00 00 00
> 00
> [158885.785924] i2c_hid i2c-DLL0652:00: entering i2c_hid_parse
> [158885.785926] i2c_hid i2c-DLL0652:00: i2c_hid_hwreset
> [158885.785927] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
> [158885.785928] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
> 08
> [158885.786494] i2c_hid i2c-DLL0652:00: resetting...
> [158885.786497] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 00
> 01
> [158885.787285] i2c_hid i2c-DLL0652:00: __i2c_hid_command: waiting...
> [158885.788496] i2c_hid i2c-DLL0652:00: __i2c_hid_command: finished.
> [158885.788499] i2c_hid i2c-DLL0652:00: asking HID report descriptor
> [158885.788501] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=21 00
> [158885.792194] i2c_hid i2c-DLL0652:00: Report Descriptor: 05 01 09 02
> a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02
> 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 c0 c0 06 00
> ff 09 01 a1 01 85 09 09 02 15 00 26
> [158885.792252] i2c_hid i2c-DLL0652:00: i2c_hid_set_power
> [158885.792254] i2c_hid i2c-DLL0652:00: __i2c_hid_command: cmd=22 00 01
> 08
>
> I included lines like:
>
> printk(KERN_ERR "hid_rmi_probe(): called\n");
> printk(KERN_ERR "hid_rmi_probe(): ret=0\n");
>
> in the beginning and at the end of the routine rmi_probe(). These lines
> didn't
> appear in dmesg (those pictured above). I don't know if "probe" is to be
> called
> in this case, or not. Is there any other condition to make hid-rmi be
> "instantiated",
> I mean, other kmod to be loaded, or a special ioctl() coming to the hid
> from userland,
> or even echoing something to the "bind" file at /sys/...?
>
> Well, here's the "directory" /sys/bus/hid/drivers/hid-rmi:
>
> root@pace:/sys/bus/hid/drivers/hid-rmi# ls -l
> /sys/bus/hid/drivers/hid-rmi/
> total 0
> --w------- 1 root root 4096 Out 30 08:03 bind
> lrwxrwxrwx 1 root root 0 Out 30 08:03 module ->
> ../../../../module/hid_rmi
> --w------- 1 root root 4096 Out 30 08:03 new_id
> --w------- 1 root root 4096 Out 30 07:48 uevent
> --w------- 1 root root 4096 Out 30 08:03 unbind
>
> One thing I didn't still did is to reboot the machine. I found it was
> not the case,
> but this type of action use to work a lot in IT/IS, right? :-)
>
> > >
> > > I have some programming skills, and so if it's the case of applying any
> > > patches, or recompiling the kernel or any subsystem to make tests, I'm
> > > up to.
> >
> > Cool, thanks.
> >
> > Cheers,
> > Benjamin
>
> Many thanks,
>
> Luiz
^ permalink raw reply
* Re: [PATCH 1/1] hid-saitek: Quirk for Saitek R.A.T.7 works with R.A.T.9 too
From: Ville Aakko @ 2014-11-04 19:20 UTC (permalink / raw)
To: Harald Brinkmann; +Cc: jkosina, linux-input, trivial
In-Reply-To: <47D536B5-26CC-4088-B321-30DABDD06A02@gmail.com>
From: Ville Aakko <ville.aakko@gmail.com>
I have tested HID quirk for Saitek R.A.T.7 with my R.A.T. 9. It works fine for me. Attached patch makes the necessary changes to use the quirk on the R.A.T.9 too, and necessary Kconfig changes too.
I have stylized the Kconfig option name to include Mad Catz in the option name, as (at least some of) the devices are marketed under Mad Catz brand.
Signed-off-by: Ville Aakko <ville.aakko@gmail.com>
---
Sorry, the previous patch was malformed (sorry about the noise). This one should apply cleanly.
Cheers!
diff -uprN linux-3.17.2/drivers/hid/Kconfig linux-3.17.2-rat9/drivers/hid/Kconfig
--- linux-3.17.2/drivers/hid/Kconfig 2014-10-30 18:43:25.000000000 +0200
+++ linux-3.17.2-rat9/drivers/hid/Kconfig 2014-11-04 20:23:58.165740493 +0200
@@ -618,7 +618,7 @@ config HID_ROCCAT
support for its special functionalities.
config HID_SAITEK
- tristate "Saitek non-fully HID-compliant devices"
+ tristate "Saitek (Mad Catz) non-fully HID-compliant devices"
depends on HID
---help---
Support for Saitek devices that are not fully compliant with the
@@ -626,6 +626,7 @@ config HID_SAITEK
Supported devices:
- PS1000 Dual Analog Pad
+ - R.A.T.9 Gaming Mouse
- R.A.T.7 Gaming Mouse
- M.M.O.7 Gaming Mouse
diff -uprN linux-3.17.2/drivers/hid/hid-core.c linux-3.17.2-rat9/drivers/hid/hid-core.c
--- linux-3.17.2/drivers/hid/hid-core.c 2014-10-30 18:43:25.000000000 +0200
+++ linux-3.17.2-rat9/drivers/hid/hid-core.c 2014-11-04 20:20:21.765611510 +0200
@@ -1904,6 +1904,7 @@ static const struct hid_device_id hid_ha
{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_PS1000) },
{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RAT7) },
{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_MMO7) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_RAT9) },
#endif
{ HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_IR_REMOTE) },
{ HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE) },
diff -uprN linux-3.17.2/drivers/hid/hid-ids.h linux-3.17.2-rat9/drivers/hid/hid-ids.h
--- linux-3.17.2/drivers/hid/hid-ids.h 2014-10-30 18:43:25.000000000 +0200
+++ linux-3.17.2-rat9/drivers/hid/hid-ids.h 2014-11-04 20:20:21.765611510 +0200
@@ -613,6 +613,7 @@
#define USB_VENDOR_ID_MADCATZ 0x0738
#define USB_DEVICE_ID_MADCATZ_BEATPAD 0x4540
+#define USB_DEVICE_ID_MADCATZ_RAT9 0x1709
#define USB_VENDOR_ID_MCC 0x09db
#define USB_DEVICE_ID_MCC_PMD1024LS 0x0076
diff -uprN linux-3.17.2/drivers/hid/hid-saitek.c linux-3.17.2-rat9/drivers/hid/hid-saitek.c
--- linux-3.17.2/drivers/hid/hid-saitek.c 2014-10-30 18:43:25.000000000 +0200
+++ linux-3.17.2-rat9/drivers/hid/hid-saitek.c 2014-11-04 20:27:10.966164105 +0200
@@ -7,7 +7,7 @@
* (This module is based on "hid-ortek".)
* Copyright (c) 2012 Andreas Hübner
*
- * R.A.T.7, M.M.O.7 (USB gaming mice):
+ * R.A.T.7, R.A.T.9, M.M.O.7 (USB gaming mice):
* Fixes the mode button which cycles through three constantly pressed
* buttons. All three press events are mapped to one button and the
* missing release event is generated immediately.
@@ -179,6 +179,8 @@ static const struct hid_device_id saitek
.driver_data = SAITEK_FIX_PS1000 },
{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RAT7),
.driver_data = SAITEK_RELEASE_MODE_RAT7 },
+ { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_RAT9),
+ .driver_data = SAITEK_RELEASE_MODE_RAT7 },
{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_MMO7),
.driver_data = SAITEK_RELEASE_MODE_MMO7 },
{ }
--
Ville Aakko <ville.aakko@gmail.com> kirjoitti 4.11.2014 kello 20.49:
> From: Ville Aakko <ville.aakko@gmail.com>
>
> I have tested HID quirk for Saitek R.A.T.7 with my R.A.T. 9. It works fine for me. Attached patch makes the necessary changes to use the quirk on the R.A.T.9 too, and necessary Kconfig changes too.
>
> I have stylized the Kconfig option name to include Mad Catz in the option name, as (at least some of) the devices are marketed under Mad Catz brand.
>
> Signed-off-by: Ville Aakko <ville.aakko@gmail.com>
> ---
> Hi, another try on sending the patch! (the patch follows in body, with intact whitespace I hope:)
>
> No one else has tested this, but it seems quite trivial to me. (original commit 37c492c8f6a99870551fe2964b2dfce5d9e87375; " HID: quirk for Saitek RAT7 and MMO7 mices' mode button ”).
>
> As for the company name, Saitek is a subsidiary of Mad Catz (see http://en.wikipedia.org/wiki/Saitek). The mice are marketed under Mad Catz brand, but there may be historical reasons (unclear to me) why the module is called hid-saitek, however.
>
> Cheers!
>
> diff -uprN linux-3.17.2/drivers/hid/Kconfig linux-3.17.2-rat9/drivers/hid/Kconfig
> --- linux-3.17.2/drivers/hid/Kconfig 2014-10-30 18:43:25.000000000 +0200
> +++ linux-3.17.2-rat9/drivers/hid/Kconfig 2014-11-04 20:23:58.165740493 +0200
> @@ -618,7 +618,7 @@ config HID_ROCCAT
> support for its special functionalities.
>
> config HID_SAITEK
> - tristate "Saitek non-fully HID-compliant devices"
> + tristate "Saitek (Mad Catz) non-fully HID-compliant devices"
> depends on HID
> ---help---
> Support for Saitek devices that are not fully compliant with the
> @@ -626,6 +626,7 @@ config HID_SAITEK
>
> Supported devices:
> - PS1000 Dual Analog Pad
> + - R.A.T.9 Gaming Mouse
> - R.A.T.7 Gaming Mouse
> - M.M.O.7 Gaming Mouse
>
> diff -uprN linux-3.17.2/drivers/hid/hid-core.c linux-3.17.2-rat9/drivers/hid/hid-core.c
> --- linux-3.17.2/drivers/hid/hid-core.c 2014-10-30 18:43:25.000000000 +0200
> +++ linux-3.17.2-rat9/drivers/hid/hid-core.c 2014-11-04 20:20:21.765611510 +0200
> @@ -1904,6 +1904,7 @@ static const struct hid_device_id hid_ha
> { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_PS1000) },
> { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RAT7) },
> { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_MMO7) },
> + { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_RAT9) },
> #endif
> { HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_IR_REMOTE) },
> { HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE) },
> diff -uprN linux-3.17.2/drivers/hid/hid-ids.h linux-3.17.2-rat9/drivers/hid/hid-ids.h
> --- linux-3.17.2/drivers/hid/hid-ids.h 2014-10-30 18:43:25.000000000 +0200
> +++ linux-3.17.2-rat9/drivers/hid/hid-ids.h 2014-11-04 20:20:21.765611510 +0200
> @@ -613,6 +613,7 @@
>
> #define USB_VENDOR_ID_MADCATZ 0x0738
> #define USB_DEVICE_ID_MADCATZ_BEATPAD 0x4540
> +#define USB_DEVICE_ID_MADCATZ_RAT9 0x1709
>
> #define USB_VENDOR_ID_MCC 0x09db
> #define USB_DEVICE_ID_MCC_PMD1024LS 0x0076
> diff -uprN linux-3.17.2/drivers/hid/hid-saitek.c linux-3.17.2-rat9/drivers/hid/hid-saitek.c
> --- linux-3.17.2/drivers/hid/hid-saitek.c 2014-10-30 18:43:25.000000000 +0200
> +++ linux-3.17.2-rat9/drivers/hid/hid-saitek.c 2014-11-04 20:27:10.966164105 +0200
> @@ -7,7 +7,7 @@
> * (This module is based on "hid-ortek".)
> * Copyright (c) 2012 Andreas Hübner
> *
> - * R.A.T.7, M.M.O.7 (USB gaming mice):
> + * R.A.T.7, R.A.T.9, M.M.O.7 (USB gaming mice):
> * Fixes the mode button which cycles through three constantly pressed
> * buttons. All three press events are mapped to one button and the
> * missing release event is generated immediately.
> @@ -179,6 +179,8 @@ static const struct hid_device_id saitek
> .driver_data = SAITEK_FIX_PS1000 },
> { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RAT7),
> .driver_data = SAITEK_RELEASE_MODE_RAT7 },
> + { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_RAT9),
> + .driver_data = SAITEK_RELEASE_MODE_RAT7 },
> { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_MMO7),
> .driver_data = SAITEK_RELEASE_MODE_MMO7 },
> { }
> ---
>
>
> Harald Brinkmann <hbrinkmann@braincalibration.de> kirjoitti 4.11.2014 kello 3.01:
>
>> On 11/02/2014 03:37 PM, Ville Aakko wrote:
>>> p.s. I have never submitted patches, I apologize if I have done something in a
>>> wrong way! Should I have added / updated the description in the comments?
>>
>> I think you should update linux/drivers/hid/Kconfig and add the R.A.T.9
>> to the list of supported devices in the HID_SAITEK section.
>>
>> --
>> Cheers,
>> Harald
>
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* [PATCH 1/1] hid-saitek: Quirk for Saitek R.A.T.7 works with R.A.T.9 too
From: Ville Aakko @ 2014-11-04 18:49 UTC (permalink / raw)
To: Harald Brinkmann; +Cc: jkosina, linux-input, trivial
In-Reply-To: <5458256A.5030404@braincalibration.de>
From: Ville Aakko <ville.aakko@gmail.com>
I have tested HID quirk for Saitek R.A.T.7 with my R.A.T. 9. It works fine for me. Attached patch makes the necessary changes to use the quirk on the R.A.T.9 too, and necessary Kconfig changes too.
I have stylized the Kconfig option name to include Mad Catz in the option name, as (at least some of) the devices are marketed under Mad Catz brand.
Signed-off-by: Ville Aakko <ville.aakko@gmail.com>
---
Hi, another try on sending the patch! (the patch follows in body, with intact whitespace I hope:)
No one else has tested this, but it seems quite trivial to me. (original commit 37c492c8f6a99870551fe2964b2dfce5d9e87375; " HID: quirk for Saitek RAT7 and MMO7 mices' mode button ”).
As for the company name, Saitek is a subsidiary of Mad Catz (see http://en.wikipedia.org/wiki/Saitek). The mice are marketed under Mad Catz brand, but there may be historical reasons (unclear to me) why the module is called hid-saitek, however.
Cheers!
diff -uprN linux-3.17.2/drivers/hid/Kconfig linux-3.17.2-rat9/drivers/hid/Kconfig
--- linux-3.17.2/drivers/hid/Kconfig 2014-10-30 18:43:25.000000000 +0200
+++ linux-3.17.2-rat9/drivers/hid/Kconfig 2014-11-04 20:23:58.165740493 +0200
@@ -618,7 +618,7 @@ config HID_ROCCAT
support for its special functionalities.
config HID_SAITEK
- tristate "Saitek non-fully HID-compliant devices"
+ tristate "Saitek (Mad Catz) non-fully HID-compliant devices"
depends on HID
---help---
Support for Saitek devices that are not fully compliant with the
@@ -626,6 +626,7 @@ config HID_SAITEK
Supported devices:
- PS1000 Dual Analog Pad
+ - R.A.T.9 Gaming Mouse
- R.A.T.7 Gaming Mouse
- M.M.O.7 Gaming Mouse
diff -uprN linux-3.17.2/drivers/hid/hid-core.c linux-3.17.2-rat9/drivers/hid/hid-core.c
--- linux-3.17.2/drivers/hid/hid-core.c 2014-10-30 18:43:25.000000000 +0200
+++ linux-3.17.2-rat9/drivers/hid/hid-core.c 2014-11-04 20:20:21.765611510 +0200
@@ -1904,6 +1904,7 @@ static const struct hid_device_id hid_ha
{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_PS1000) },
{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RAT7) },
{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_MMO7) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_RAT9) },
#endif
{ HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_IR_REMOTE) },
{ HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE) },
diff -uprN linux-3.17.2/drivers/hid/hid-ids.h linux-3.17.2-rat9/drivers/hid/hid-ids.h
--- linux-3.17.2/drivers/hid/hid-ids.h 2014-10-30 18:43:25.000000000 +0200
+++ linux-3.17.2-rat9/drivers/hid/hid-ids.h 2014-11-04 20:20:21.765611510 +0200
@@ -613,6 +613,7 @@
#define USB_VENDOR_ID_MADCATZ 0x0738
#define USB_DEVICE_ID_MADCATZ_BEATPAD 0x4540
+#define USB_DEVICE_ID_MADCATZ_RAT9 0x1709
#define USB_VENDOR_ID_MCC 0x09db
#define USB_DEVICE_ID_MCC_PMD1024LS 0x0076
diff -uprN linux-3.17.2/drivers/hid/hid-saitek.c linux-3.17.2-rat9/drivers/hid/hid-saitek.c
--- linux-3.17.2/drivers/hid/hid-saitek.c 2014-10-30 18:43:25.000000000 +0200
+++ linux-3.17.2-rat9/drivers/hid/hid-saitek.c 2014-11-04 20:27:10.966164105 +0200
@@ -7,7 +7,7 @@
* (This module is based on "hid-ortek".)
* Copyright (c) 2012 Andreas Hübner
*
- * R.A.T.7, M.M.O.7 (USB gaming mice):
+ * R.A.T.7, R.A.T.9, M.M.O.7 (USB gaming mice):
* Fixes the mode button which cycles through three constantly pressed
* buttons. All three press events are mapped to one button and the
* missing release event is generated immediately.
@@ -179,6 +179,8 @@ static const struct hid_device_id saitek
.driver_data = SAITEK_FIX_PS1000 },
{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RAT7),
.driver_data = SAITEK_RELEASE_MODE_RAT7 },
+ { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_RAT9),
+ .driver_data = SAITEK_RELEASE_MODE_RAT7 },
{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_MMO7),
.driver_data = SAITEK_RELEASE_MODE_MMO7 },
{ }
---
Harald Brinkmann <hbrinkmann@braincalibration.de> kirjoitti 4.11.2014 kello 3.01:
> On 11/02/2014 03:37 PM, Ville Aakko wrote:
>> p.s. I have never submitted patches, I apologize if I have done something in a
>> wrong way! Should I have added / updated the description in the comments?
>
> I think you should update linux/drivers/hid/Kconfig and add the R.A.T.9
> to the list of supported devices in the HID_SAITEK section.
>
> --
> Cheers,
> Harald
--
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 RESEND RESEND] Input: evdev - add event-mask API
From: Dmitry Torokhov @ 2014-11-04 18:36 UTC (permalink / raw)
To: David Herrmann
Cc: open list:HID CORE LAYER, Peter Hutterer, Benjamin Tissoires
In-Reply-To: <CANq1E4T-mXU0mXzgCPQi=oDg01DkSEzJN3JEwD1EGDCxWVryrQ@mail.gmail.com>
On Tue, Nov 04, 2014 at 11:51:34AM +0100, David Herrmann wrote:
> Hi Dmitry
>
> Sorry for the delay, back from holiday now.
>
> On Fri, Oct 10, 2014 at 12:52 AM, Dmitry Torokhov
> <dmitry.torokhov@gmail.com> wrote:
> > diff -u b/include/uapi/linux/input.h b/include/uapi/linux/input.h
> > --- b/include/uapi/linux/input.h
> > +++ b/include/uapi/linux/input.h
> > @@ -161,53 +161,59 @@
> > #define EVIOCREVOKE _IOW('E', 0x91, int) /* Revoke device access */
> >
> > /**
> > - * EVIOCGMASK - Retrieve current event-mask
> > + * EVIOCGMASK - Retrieve current event mask
> > *
> > - * This retrieves the current event-mask for a specific event-type. The
> > - * argument must be of type "struct input_mask" and specifies the event-type to
> > - * query, the receive buffer and the size of the receive buffer.
> > - *
> > - * The event-mask is a per-client mask that specifies which events are forwarded
> > - * to the client. Each event-code is represented by a single bit in the
> > - * event-mask. If the bit is set, the event is passed to the client normally.
> > - * Otherwise, the event is filtered and and will never be queued on the
> > - * client's receive buffer.
> > - * Event-masks do not affect global state of an input-device. They only affect
> > - * the open-file they're applied on. Each open-file (i.e, file-description) can
> > - * have a different event-mask.
> > - *
> > - * The default event-mask for a client has all bits set, i.e. all events are
> > - * forwarded to the client. If a kernel is queried for an unknown event-type
> > - * or if the receive buffer is larger than the number of event-codes known to
> > - * the kernel, the kernel returns all zeroes for those codes.
> > + * This ioctl allows user to retrieve the current event mask for specific
> > + * event type. The argument must be of type "struct input_mask" and
> > + * specifies the event type to query, the address of the receive buffer and
> > + * the size of the receive buffer.
> > + *
> > + * The event mask is a per-client mask that specifies which events are
> > + * forwarded to the client. Each event code is represented by a single bit
> > + * in the event mask. If the bit is set, the event is passed to the client
> > + * normally. Otherwise, the event is filtered and will never be queued on
> > + * the client's receive buffer.
> > + *
> > + * Event masks do not affect global state of the input device. They only
> > + * affect the file descriptor they are applied to.
> > + *
> > + * The default event mask for a client has all bits set, i.e. all events
> > + * are forwarded to the client. If kernel is queried for an unknown
> > + * event type or if the receive buffer is larger than the number of
> > + * event codes known to the kernel, the kernel returns all zeroes for those
> > + * codes.
> > *
> > * At maximum, codes_size bytes are copied.
> > *
> > - * This ioctl may fail with ENODEV in case the file is revoked, EFAULT
> > - * if the receive-buffer points to invalid memory, or EINVAL if the kernel
> > - * does not implement the ioctl.
> > + * This ioctl may fail with ENODEV in case the descriptor is revoked,
> > + * EFAULT if the receive buffer points to invalid memory, or EINVAL if the
> > + * kernel does not implement the ioctl.
>
> I fixed everything up, except for this hunk. A "descriptor" cannot be
> revoked, it's always the "description" that is revoked
> (file-descriptor vs. file-description). I'm not sure what name to use
> here. "file-description" would serve best, I guess, but it's not that
> commonly used (nor understood). It's defined properly by POSIX,
> though.
OK, let's leave it as is then.
--
Dmitry
^ permalink raw reply
* Re: Problems with Wacom Intuos PT M (CTH680) on FreeBSD
From: Dmitry Torokhov @ 2014-11-04 18:06 UTC (permalink / raw)
To: Ping Cheng
Cc: Hans Petter Selasky, Denis Akiyakov, linux-input,
nox@jelal.kn-bremen.de >> Juergen Lock
In-Reply-To: <CAF8JNhLPgG-dROf2f0Z6_8UBN7e_o_uicUDrO2sn+2yPgqdCmQ@mail.gmail.com>
On Tue, Nov 04, 2014 at 09:38:38AM -0800, Ping Cheng wrote:
> Hi Dmitry,
>
> On Tue, Nov 4, 2014 at 12:08 AM, Dmitry Torokhov
> <dmitry.torokhov@gmail.com> wrote:
> > On Sat, Nov 01, 2014 at 08:40:19AM +0100, Hans Petter Selasky wrote:
> >> On 11/01/14 00:27, Ping Cheng wrote:
> >> >If touch_input is NULL on FreeBSD, you need to figure out the root
> >> >cause. Checking on touch_input itself would not fix the root cause...
> >>
> >> Right.
> >>
> >> The root cause is that FreeBSD launches two instances of the driver,
> >> running in two different userland processes, for the two different
> >> Wacom interfaces on a common USB device. In Linux the wacom
> >> interface drivers are running from the same kernel, and can share
> >> the data in question, but in FreeBSD's webcamd emulation, this
> >> doesn't work. Then the first wacom probe call would have to grab the
> >> second interface.
> >>
> >> Technically speaking this is a FreeBSD only problem and I plan to
> >> deliver a patch with the webcamd software to fix this, like already
> >> suggested to you guys. This situation can also happen on Linux in
> >> case of a "BadUSB" device. That's why I think that the NULL check
> >> should be upstreamed.
> >
> > Hmm, looking at this again it seems that we just cross our fingers and
> > hope that both interfaces are enumerated by the time we get event data
> > from the device. I do not think this is quite safe. We probably should
> > be checking the overall state of probing (i.e. whether we are done
> > probing both interfaces) before processing data for the device.
>
> Are you going to make a patch to address the issue?
Not in the nearest future, sorry.
>
> > Or maybe we should just forcibly try claiming secondary interface
> > while probing primary instead of messing with shared data item.
>
> If we incorporate the above idea into a patch, we need to keep in mind
> that not all tablets support touch data. So, not all tablets have two
> interfaces.
Right, but we do know the models that use multiple interfaces, right?
--
Dmitry
^ permalink raw reply
* Re: Problems with Wacom Intuos PT M (CTH680) on FreeBSD
From: Ping Cheng @ 2014-11-04 17:38 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Hans Petter Selasky, Denis Akiyakov, linux-input,
nox@jelal.kn-bremen.de >> Juergen Lock
In-Reply-To: <20141104080816.GB13100@dtor-ws>
Hi Dmitry,
On Tue, Nov 4, 2014 at 12:08 AM, Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
> On Sat, Nov 01, 2014 at 08:40:19AM +0100, Hans Petter Selasky wrote:
>> On 11/01/14 00:27, Ping Cheng wrote:
>> >If touch_input is NULL on FreeBSD, you need to figure out the root
>> >cause. Checking on touch_input itself would not fix the root cause...
>>
>> Right.
>>
>> The root cause is that FreeBSD launches two instances of the driver,
>> running in two different userland processes, for the two different
>> Wacom interfaces on a common USB device. In Linux the wacom
>> interface drivers are running from the same kernel, and can share
>> the data in question, but in FreeBSD's webcamd emulation, this
>> doesn't work. Then the first wacom probe call would have to grab the
>> second interface.
>>
>> Technically speaking this is a FreeBSD only problem and I plan to
>> deliver a patch with the webcamd software to fix this, like already
>> suggested to you guys. This situation can also happen on Linux in
>> case of a "BadUSB" device. That's why I think that the NULL check
>> should be upstreamed.
>
> Hmm, looking at this again it seems that we just cross our fingers and
> hope that both interfaces are enumerated by the time we get event data
> from the device. I do not think this is quite safe. We probably should
> be checking the overall state of probing (i.e. whether we are done
> probing both interfaces) before processing data for the device.
Are you going to make a patch to address the issue?
> Or maybe we should just forcibly try claiming secondary interface
> while probing primary instead of messing with shared data item.
If we incorporate the above idea into a patch, we need to keep in mind
that not all tablets support touch data. So, not all tablets have two
interfaces.
Cheers,
Ping
> That won't help Hans though: the devices do use 2 interfaces in tandem,
> treating them separately will result in incorrect behavior.
>
> Thanks.
>
> --
> Dmitry
^ permalink raw reply
* [PATCH v3] Input: evdev - add event-mask API
From: David Herrmann @ 2014-11-04 17:12 UTC (permalink / raw)
To: linux-input; +Cc: Dmitry Torokhov, Peter Hutterer, David Herrmann
Hardware manufacturers group keys in the weirdest way possible. This may
cause a power-key to be grouped together with normal keyboard keys and
thus be reported on the same kernel interface.
However, user-space is often only interested in specific sets of events.
For instance, daemons dealing with system-reboot (like systemd-logind)
listen for KEY_POWER, but are not interested in any main keyboard keys.
Usually, power keys are reported via separate interfaces, however,
some i8042 boards report it in the AT matrix. To avoid waking up those
system daemons on each key-press, we had two ideas:
- split off KEY_POWER into a separate interface unconditionally
- allow filtering a specific set of events on evdev FDs
Splitting of KEY_POWER is a rather weird way to deal with this and may
break backwards-compatibility. It is also specific to KEY_POWER and might
be required for other stuff, too. Moreover, we might end up with a huge
set of input-devices just to have them properly split.
Hence, this patchset implements the second idea: An event-mask to specify
which events you're interested in. Two ioctls allow setting this mask for
each event-type. If not set, all events are reported. The type==0 entry is
used same as in EVIOCGBIT to set the actual EV_* mask of filtered events.
This way, you have a two-level filter.
We are heavily forward-compatible to new event-types and event-codes. So
new user-space will be able to run on an old kernel which doesn't know the
given event-codes or event-types.
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
---
Hi Dmitry
This works fine here. Tested with libevdev on my keyboard on x86-64 only. Lemme
know if there's anything left to do.
v3:
- fix wording (Dmitry)
- use bits_to_user() (Dmitry)
- add bits_from_user() (David)
- coding style (David)
Thanks a lot!
David
drivers/input/evdev.c | 199 ++++++++++++++++++++++++++++++++++++++++++++-
include/uapi/linux/input.h | 59 ++++++++++++++
2 files changed, 256 insertions(+), 2 deletions(-)
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
index bc20348..0d2b3ec 100644
--- a/drivers/input/evdev.c
+++ b/drivers/input/evdev.c
@@ -51,10 +51,55 @@ struct evdev_client {
struct list_head node;
int clkid;
bool revoked;
+ unsigned long *evmasks[EV_CNT];
unsigned int bufsize;
struct input_event buffer[];
};
+static size_t evdev_get_mask_cnt(unsigned int type)
+{
+ static const size_t counts[EV_CNT] = {
+ /* EV_SYN==0 is EV_CNT, _not_ SYN_CNT, see EVIOCGBIT */
+ [EV_SYN] = EV_CNT,
+ [EV_KEY] = KEY_CNT,
+ [EV_REL] = REL_CNT,
+ [EV_ABS] = ABS_CNT,
+ [EV_MSC] = MSC_CNT,
+ [EV_SW] = SW_CNT,
+ [EV_LED] = LED_CNT,
+ [EV_SND] = SND_CNT,
+ [EV_FF] = FF_CNT,
+ };
+
+ return (type < EV_CNT) ? counts[type] : 0;
+}
+
+/* requires the buffer lock to be held */
+static bool __evdev_is_filtered(struct evdev_client *client,
+ unsigned int type,
+ unsigned int code)
+{
+ unsigned long *mask;
+ size_t cnt;
+
+ /* EV_SYN and unknown codes are never filtered */
+ if (type == EV_SYN || type >= EV_CNT)
+ return false;
+
+ /* first test whether the type is filtered */
+ mask = client->evmasks[0];
+ if (mask && !test_bit(type, mask))
+ return true;
+
+ /* unknown values are never filtered */
+ cnt = evdev_get_mask_cnt(type);
+ if (!cnt || code >= cnt)
+ return false;
+
+ mask = client->evmasks[type];
+ return mask && !test_bit(code, mask);
+}
+
/* flush queued events of type @type, caller must hold client->buffer_lock */
static void __evdev_flush_queue(struct evdev_client *client, unsigned int type)
{
@@ -176,12 +221,21 @@ static void evdev_pass_values(struct evdev_client *client,
spin_lock(&client->buffer_lock);
for (v = vals; v != vals + count; v++) {
+ if (__evdev_is_filtered(client, v->type, v->code))
+ continue;
+
+ if (v->type == EV_SYN && v->code == SYN_REPORT) {
+ /* drop empty SYN_REPORT */
+ if (client->packet_head == client->head)
+ continue;
+
+ wakeup = true;
+ }
+
event.type = v->type;
event.code = v->code;
event.value = v->value;
__pass_event(client, &event);
- if (v->type == EV_SYN && v->code == SYN_REPORT)
- wakeup = true;
}
spin_unlock(&client->buffer_lock);
@@ -364,6 +418,7 @@ static int evdev_release(struct inode *inode, struct file *file)
{
struct evdev_client *client = file->private_data;
struct evdev *evdev = client->evdev;
+ unsigned int i;
mutex_lock(&evdev->mutex);
evdev_ungrab(evdev, client);
@@ -371,6 +426,9 @@ static int evdev_release(struct inode *inode, struct file *file)
evdev_detach_client(evdev, client);
+ for (i = 0; i < EV_CNT; ++i)
+ kfree(client->evmasks[i]);
+
if (is_vmalloc_addr(client))
vfree(client);
else
@@ -614,6 +672,39 @@ static int bits_to_user(unsigned long *bits, unsigned int maxbit,
#endif /* CONFIG_COMPAT */
+static int bits_from_user(unsigned long *bits, unsigned int maxbit,
+ unsigned int maxlen, const void __user *p, int compat)
+{
+ int len;
+
+#if IS_ENABLED(CONFIG_COMPAT)
+ if (compat)
+ len = BITS_TO_LONGS_COMPAT(maxbit) * sizeof(compat_long_t);
+ else
+#endif
+ len = BITS_TO_LONGS(maxbit) * sizeof(long);
+
+ if (len > maxlen)
+ len = maxlen;
+
+#if IS_ENABLED(CONFIG_COMPAT) && defined(__BIG_ENDIAN)
+ if (compat) {
+ int i;
+
+ for (i = 0; i < len / sizeof(compat_long_t); i++)
+ if (copy_from_user((compat_long_t *) bits +
+ i + 1 - ((i % 2) << 1),
+ (compat_long_t __user *) p + i,
+ sizeof(compat_long_t)))
+ return -EFAULT;
+ } else
+#endif
+ if (copy_from_user(bits, p, len))
+ return -EFAULT;
+
+ return len;
+}
+
static int str_to_user(const char *str, unsigned int maxlen, void __user *p)
{
int len;
@@ -806,6 +897,87 @@ static int evdev_revoke(struct evdev *evdev, struct evdev_client *client,
return 0;
}
+/* must be called with evdev-mutex held */
+static int evdev_set_mask(struct evdev_client *client,
+ unsigned int type,
+ const void __user *codes,
+ u32 codes_size,
+ int compat)
+{
+ unsigned long flags, *mask, *oldmask;
+ size_t cnt, size, min;
+ int error;
+
+ /* we allow unknown types and 'codes_size > size' for forward-compat */
+ cnt = evdev_get_mask_cnt(type);
+ if (!cnt)
+ return 0;
+
+ size = sizeof(unsigned long) * BITS_TO_LONGS(cnt);
+ min = min_t(size_t, codes_size, size);
+
+ mask = kzalloc(size, GFP_KERNEL);
+ if (!mask)
+ return -ENOMEM;
+
+ error = bits_from_user(mask, cnt - 1, min, codes, compat);
+ if (error < 0) {
+ kfree(mask);
+ return error;
+ }
+
+ spin_lock_irqsave(&client->buffer_lock, flags);
+ oldmask = client->evmasks[type];
+ client->evmasks[type] = mask;
+ spin_unlock_irqrestore(&client->buffer_lock, flags);
+
+ kfree(oldmask);
+
+ return 0;
+}
+
+/* must be called with evdev-mutex held */
+static int evdev_get_mask(struct evdev_client *client,
+ unsigned int type,
+ void __user *codes,
+ u32 codes_size,
+ int compat)
+{
+ unsigned long *mask;
+ size_t cnt, size, min, i;
+ u8 __user *out;
+ int error;
+
+ /* we allow unknown types and 'codes_size > size' for forward-compat */
+ cnt = evdev_get_mask_cnt(type);
+ size = sizeof(unsigned long) * BITS_TO_LONGS(cnt);
+ min = min_t(size_t, codes_size, size);
+
+ if (cnt > 0) {
+ mask = client->evmasks[type];
+ if (mask) {
+ error = bits_to_user(mask, cnt - 1, min, codes, compat);
+ if (error < 0)
+ return error;
+ } else {
+ /* fake mask with all bits set */
+ out = (u8 __user*)codes;
+ for (i = 0; i < min; ++i) {
+ if (put_user((u8)0xff, out + i))
+ return -EFAULT;
+ }
+ }
+ }
+
+ codes = (u8*)codes + min;
+ codes_size -= min;
+
+ if (codes_size > 0 && clear_user(codes, codes_size))
+ return -EFAULT;
+
+ return 0;
+}
+
static long evdev_do_ioctl(struct file *file, unsigned int cmd,
void __user *p, int compat_mode)
{
@@ -813,6 +985,7 @@ static long evdev_do_ioctl(struct file *file, unsigned int cmd,
struct evdev *evdev = client->evdev;
struct input_dev *dev = evdev->handle.dev;
struct input_absinfo abs;
+ struct input_mask mask;
struct ff_effect effect;
int __user *ip = (int __user *)p;
unsigned int i, t, u, v;
@@ -874,6 +1047,28 @@ static long evdev_do_ioctl(struct file *file, unsigned int cmd,
else
return evdev_revoke(evdev, client, file);
+ case EVIOCGMASK:
+ if (copy_from_user(&mask, p, sizeof(mask)))
+ return -EFAULT;
+
+ return evdev_get_mask(client,
+ mask.type,
+ (void __user*)
+ (unsigned long)mask.codes_ptr,
+ mask.codes_size,
+ compat_mode);
+
+ case EVIOCSMASK:
+ if (copy_from_user(&mask, p, sizeof(mask)))
+ return -EFAULT;
+
+ return evdev_set_mask(client,
+ mask.type,
+ (const void __user*)
+ (unsigned long)mask.codes_ptr,
+ mask.codes_size,
+ compat_mode);
+
case EVIOCSCLOCKID:
if (copy_from_user(&i, p, sizeof(unsigned int)))
return -EFAULT;
diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h
index a1d7e93..fb73b00 100644
--- a/include/uapi/linux/input.h
+++ b/include/uapi/linux/input.h
@@ -97,6 +97,12 @@ struct input_keymap_entry {
__u8 scancode[32];
};
+struct input_mask {
+ __u32 type;
+ __u32 codes_size;
+ __u64 codes_ptr;
+};
+
#define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */
#define EVIOCGID _IOR('E', 0x02, struct input_id) /* get device ID */
#define EVIOCGREP _IOR('E', 0x03, unsigned int[2]) /* get repeat settings */
@@ -154,6 +160,59 @@ struct input_keymap_entry {
#define EVIOCGRAB _IOW('E', 0x90, int) /* Grab/Release device */
#define EVIOCREVOKE _IOW('E', 0x91, int) /* Revoke device access */
+/**
+ * EVIOCGMASK - Retrieve current event mask
+
+ * This ioctl allows user to retrieve the current event mask for specific
+ * event type. The argument must be of type "struct input_mask" and
+ * specifies the event type to query, the address of the receive buffer and
+ * the size of the receive buffer.
+ *
+ * The event mask is a per-client mask that specifies which events are
+ * forwarded to the client. Each event code is represented by a single bit
+ * in the event mask. If the bit is set, the event is passed to the client
+ * normally. Otherwise, the event is filtered and will never be queued on
+ * the client's receive buffer.
+ *
+ * Event masks do not affect global state of the input device. They only
+ * affect the file descriptor they are applied to.
+ *
+ * The default event mask for a client has all bits set, i.e. all events
+ * are forwarded to the client. If the kernel is queried for an unknown
+ * event type or if the receive buffer is larger than the number of
+ * event codes known to the kernel, the kernel returns all zeroes for those
+ * codes.
+ *
+ * At maximum, codes_size bytes are copied.
+ *
+ * This ioctl may fail with ENODEV in case the file is revoked, EFAULT
+ * if the receive-buffer points to invalid memory, or EINVAL if the kernel
+ * does not implement the ioctl.
+ */
+#define EVIOCGMASK _IOR('E', 0x92, struct input_mask) /* Get event-masks */
+
+/**
+ * EVIOCSMASK - Set event mask
+ * This ioctl is the counterpart to EVIOCGMASK. Instead of receiving the
+ * current event mask, this changes the client's event mask for a specific
+ * type. See EVIOCGMASK for a description of event-masks and the
+ * argument-type.
+ *
+ * This ioctl provides full forward compatibility. If the passed event type
+ * is unknown to the kernel, or if the number of event codes specified in
+ * the mask is bigger than what is known to the kernel, the ioctl is still
+ * accepted and applied. However, any unknown codes are left untouched and
+ * stay cleared. That means, the kernel always filters unknown codes
+ * regardless of what the client requests. If the new mask doesn't cover
+ * all known event-codes, all remaining codes are automatically cleared and
+ * thus filtered.
+ *
+ * This ioctl may fail with ENODEV in case the file is revoked. EFAULT is
+ * returned if the receive-buffer points to invalid memory. EINVAL is returned
+ * if the kernel does not implement the ioctl.
+ */
+#define EVIOCSMASK _IOW('E', 0x93, struct input_mask) /* Set event-masks */
+
#define EVIOCSCLOCKID _IOW('E', 0xa0, int) /* Set clockid to be used for timestamps */
/*
--
2.1.3
^ permalink raw reply related
* Re: [PATCH 0/4] Touchscreen performance related fixes
From: Sebastian Andrzej Siewior @ 2014-11-04 12:37 UTC (permalink / raw)
To: Vignesh R, Griffis, Brad, Rob Herring, Pawel Moll, Mark Rutland,
Ian Campbell, Kumar Gala, Benoit Cousson, Tony Lindgren,
Russell King, Jonathan Cameron, Dmitry Torokhov
Cc: Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald, Samuel Ortiz,
Lee Jones, Balbi, Felipe, Jan Kardell, Paul Gortmaker,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
In-Reply-To: <5458BC0B.1040803-l0cyMroinI0@public.gmane.org>
On 11/04/2014 12:44 PM, Vignesh R wrote:
> I ran following commands
> $ evtest /dev/input/touchscreen0 &
> (with heavy item on touchscreen)
> and
> $ cat /sys/bus/iio/devices/iio\:device0/scan_elements/in_voltage4_en
> (in a busy loop)
> I tried above experiment on my board but I didn't hit any problem even
> after running for close to 30 minutes. I was unable to reproduce failure
Just to make sure: You had the touchscreen and iio command running in
parallel and you saw evtest output while there was iio operation?
> The problem may be in configuring correct charge-delay value. Please run:
> $ ts_test > /dev/null
> and let me know if pen events are being detected properly.
Well I get the touch events but not while busy loop on iio interface is
running (I get maybe one event every 5 seconds or so).
After all, it is the same HW you have.
Sebastian
--
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
* Re: [PATCH 0/4] Touchscreen performance related fixes
From: Vignesh R @ 2014-11-04 11:44 UTC (permalink / raw)
To: Sebastian Andrzej Siewior, Griffis, Brad, Rob Herring, Pawel Moll,
Mark Rutland, Ian Campbell, Kumar Gala, Benoit Cousson,
Tony Lindgren, Russell King, Jonathan Cameron, Dmitry Torokhov
Cc: Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald, Samuel Ortiz,
Lee Jones, Balbi, Felipe, Jan Kardell, Paul Gortmaker,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
In-Reply-To: <54577258.9080508-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>
On Monday 03 November 2014 05:47 PM, Sebastian Andrzej Siewior wrote:
> On 10/27/2014 08:02 PM, Griffis, Brad wrote:
>> On 10/27/2014 12:34 PM, Sebastian Andrzej Siewior wrote:
>>> Do we really need #3 (and then #4)? Given the complexity we have already, is there any benefit by decreasing this value?
>>
>> I specifically requested we add ti,charge-delay to the device tree because it is THE critical value to tune for a given design. Although I think the current value of 0xB000 will be suitable for a great many designs, I expect that many users will need to adjust this value for their hardware. Details such as which touchscreen vendor is being used and how the touchscreen is connected (header vs cable) have an effect on what's appropriate here.
>
> Oh. That is one knob I hoped we could avoid since I haven't seen it
> before on other TSCs. But okay. Please make sure that there is a
> message printed if the default value is used. And lets hope the user
> will do something about his.
>
>>> Would someone want to increase it? Can we safely determine a value which works for everyone?
>>
>> This value represents a hardware delay before checking for the pen-up event. So in the scenario where someone is seeing excessive false pen-up events they will want to increase this parameter. The downsize of making this larger is that it decreases the overall sampling speed of both the touchscreen as well as the standalone ADC samples. At one point I tried making it huge, but that made the touchscreen overly sluggish because the sampling became too slow. So there is a definite trade-off that if you make it too large the touchscreen becomes sluggish, and if you make it too small then you may see false pen-up events. The optimal value will need to be tuned for a given design.
>
> I applied the patches from this series and did the following test on my
> am335x-evm: A mug on the touchscreen (to make sure the events are
> coming), evtest on the event node to see that the events and loop of
>
> cat /sys/bus/iio/devices/iio\:device0/in_voltage4_raw
>
> In the past I was able lock up the TSC/ADC HW that way (see commit
> 7ca6740cd1 ("mfd: input: iio: ti_amm335x: Rework TSC/ADC
> synchronization")) for details.
> With this patches applied I don't seen any TSC events once the IIO
> interface is (heavily) used. Can this be fixed?
I ran following commands
$ evtest /dev/input/touchscreen0 &
(with heavy item on touchscreen)
and
$ cat /sys/bus/iio/devices/iio\:device0/scan_elements/in_voltage4_en
(in a busy loop)
I tried above experiment on my board but I didn't hit any problem even
after running for close to 30 minutes. I was unable to reproduce failure
The problem may be in configuring correct charge-delay value. Please run:
$ ts_test > /dev/null
and let me know if pen events are being detected properly.
>
> Sebastian
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
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
* Re: [PATCH RESEND RESEND] Input: evdev - add event-mask API
From: David Herrmann @ 2014-11-04 10:51 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: open list:HID CORE LAYER, Peter Hutterer, Benjamin Tissoires
In-Reply-To: <20141009225256.GA8583@dtor-ws>
Hi Dmitry
Sorry for the delay, back from holiday now.
On Fri, Oct 10, 2014 at 12:52 AM, Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
> diff -u b/include/uapi/linux/input.h b/include/uapi/linux/input.h
> --- b/include/uapi/linux/input.h
> +++ b/include/uapi/linux/input.h
> @@ -161,53 +161,59 @@
> #define EVIOCREVOKE _IOW('E', 0x91, int) /* Revoke device access */
>
> /**
> - * EVIOCGMASK - Retrieve current event-mask
> + * EVIOCGMASK - Retrieve current event mask
> *
> - * This retrieves the current event-mask for a specific event-type. The
> - * argument must be of type "struct input_mask" and specifies the event-type to
> - * query, the receive buffer and the size of the receive buffer.
> - *
> - * The event-mask is a per-client mask that specifies which events are forwarded
> - * to the client. Each event-code is represented by a single bit in the
> - * event-mask. If the bit is set, the event is passed to the client normally.
> - * Otherwise, the event is filtered and and will never be queued on the
> - * client's receive buffer.
> - * Event-masks do not affect global state of an input-device. They only affect
> - * the open-file they're applied on. Each open-file (i.e, file-description) can
> - * have a different event-mask.
> - *
> - * The default event-mask for a client has all bits set, i.e. all events are
> - * forwarded to the client. If a kernel is queried for an unknown event-type
> - * or if the receive buffer is larger than the number of event-codes known to
> - * the kernel, the kernel returns all zeroes for those codes.
> + * This ioctl allows user to retrieve the current event mask for specific
> + * event type. The argument must be of type "struct input_mask" and
> + * specifies the event type to query, the address of the receive buffer and
> + * the size of the receive buffer.
> + *
> + * The event mask is a per-client mask that specifies which events are
> + * forwarded to the client. Each event code is represented by a single bit
> + * in the event mask. If the bit is set, the event is passed to the client
> + * normally. Otherwise, the event is filtered and will never be queued on
> + * the client's receive buffer.
> + *
> + * Event masks do not affect global state of the input device. They only
> + * affect the file descriptor they are applied to.
> + *
> + * The default event mask for a client has all bits set, i.e. all events
> + * are forwarded to the client. If kernel is queried for an unknown
> + * event type or if the receive buffer is larger than the number of
> + * event codes known to the kernel, the kernel returns all zeroes for those
> + * codes.
> *
> * At maximum, codes_size bytes are copied.
> *
> - * This ioctl may fail with ENODEV in case the file is revoked, EFAULT
> - * if the receive-buffer points to invalid memory, or EINVAL if the kernel
> - * does not implement the ioctl.
> + * This ioctl may fail with ENODEV in case the descriptor is revoked,
> + * EFAULT if the receive buffer points to invalid memory, or EINVAL if the
> + * kernel does not implement the ioctl.
I fixed everything up, except for this hunk. A "descriptor" cannot be
revoked, it's always the "description" that is revoked
(file-descriptor vs. file-description). I'm not sure what name to use
here. "file-description" would serve best, I guess, but it's not that
commonly used (nor understood). It's defined properly by POSIX,
though.
Comments?
Thanks
David
> */
> +
> #define EVIOCGMASK _IOR('E', 0x92, struct input_mask) /* Get event-masks */
>
> /**
> - * EVIOCSMASK - Set event-mask
> + * EVIOCSMASK - Set event mask
> *
> - * This is the counterpart to EVIOCGMASK. Instead of receiving the current
> - * event-mask, this changes the client's event-mask for a specific type. See
> - * EVIOCGMASK for a description of event-masks and the argument-type.
> - *
> - * This ioctl provides full forward-compatibility. If the passed event-type is
> - * unknown to the kernel, or if the number of codes is bigger than known to the
> - * kernel, the ioctl is still accepted and applied. However, any unknown codes
> - * are left untouched and stay cleared. That means, the kernel always filters
> - * unknown codes regardless of what the client requests.
> - * If the new mask doesn't cover all known event-codes, all remaining codes are
> - * automatically cleared and thus filtered.
> + * This ioctl is the counterpart to EVIOCGMASK. Instead of receiving the
> + * current event mask, this changes the client's event mask for a specific
> + * type. See EVIOCGMASK for a description of event-masks and the
> + * argument-type.
> + *
> + * This ioctl provides full forward compatibility. If the passed event type
> + * is unknown to the kernel, or if the number of event codes specified in
> + * the mask is bigger than what is known to the kernel, the ioctl is still
> + * accepted and applied. However, any unknown codes are left untouched and
> + * stay cleared. That means, the kernel always filters unknown codes
> + * regardless of what the client requests. If the new mask doesn't cover
> + * all known event-codes, all remaining codes are automatically cleared and
> + * thus filtered.
> *
> * This ioctl may fail with ENODEV in case the file is revoked. EFAULT is
> - * returned if the receive-buffer points to invalid memory. EINVAL is returned
> - * if the kernel does not implement the ioctl.
> + * returned if the receive-buffer points to invalid memory. EINVAL is
> + * returned if the kernel does not implement the ioctl.
> */
> +
> #define EVIOCSMASK _IOW('E', 0x93, struct input_mask) /* Set event-masks */
>
> #define EVIOCSCLOCKID _IOW('E', 0xa0, int) /* Set clockid to be used for timestamps */
^ permalink raw reply
* Re: [PATCH v2 2/2] HID: logitech-hidpp: 2 fixes in hidpp_root_get_protocol_version()
From: Jiri Kosina @ 2014-11-04 10:12 UTC (permalink / raw)
To: Benjamin Tissoires
Cc: Dan Carpenter, Nestor Lopez Casado, linux-input, linux-kernel
In-Reply-To: <1415048999-4490-2-git-send-email-benjamin.tissoires@redhat.com>
On Mon, 3 Nov 2014, Benjamin Tissoires wrote:
> - remove the constant '1'
> - when the device is not connected, the protocol error
> HIDPP_ERROR_RESOURCE_ERROR is raised. We should not warn the user about
> it because it is somewhat expected as an answer when we check if the
> device is connected.
>
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
> ---
>
> Changes in v2:
> none
Applied, thanks.
--
Jiri Kosina
SUSE Labs
^ permalink raw reply
* Re: [PATCH v2 1/2] HID: logitech-hidpp: fix negated returns
From: Jiri Kosina @ 2014-11-04 10:11 UTC (permalink / raw)
To: Benjamin Tissoires
Cc: Dan Carpenter, Nestor Lopez Casado, linux-input, linux-kernel
In-Reply-To: <1415048999-4490-1-git-send-email-benjamin.tissoires@redhat.com>
On Mon, 3 Nov 2014, Benjamin Tissoires wrote:
> Reported by Dan Carpenter:
>
> drivers/hid/hid-logitech-hidpp.c:359 hidpp_root_get_protocol_version() warn: should this return really be negated?
> drivers/hid/hid-logitech-hidpp.c:398 hidpp_devicenametype_get_count() warn: should this return really be negated?
> drivers/hid/hid-logitech-hidpp.c:417 hidpp_devicenametype_get_device_name() warn: should this return really be negated?
> drivers/hid/hid-logitech-hidpp.c:524 hidpp_touchpad_get_raw_info() warn: should this return really be negated?
>
> The problem lies in hidpp_send_message_sync() which can return 2 types of
> errors depending of their sign. Adding a comment there to clarify what is
> happening.
>
> To solve that, print an error in case of a protocol problem, and raise
> -EPROTO instead.
>
> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
> ---
>
> Changes in v2:
> - also return if the ret code is negative
Applied.
--
Jiri Kosina
SUSE Labs
^ permalink raw reply
* Re: Problems with Wacom Intuos PT M (CTH680) on FreeBSD
From: Dmitry Torokhov @ 2014-11-04 8:08 UTC (permalink / raw)
To: Hans Petter Selasky
Cc: Ping Cheng, Denis Akiyakov, linux-input,
nox@jelal.kn-bremen.de >> Juergen Lock
In-Reply-To: <54548E63.6060306@selasky.org>
On Sat, Nov 01, 2014 at 08:40:19AM +0100, Hans Petter Selasky wrote:
> On 11/01/14 00:27, Ping Cheng wrote:
> >If touch_input is NULL on FreeBSD, you need to figure out the root
> >cause. Checking on touch_input itself would not fix the root cause...
>
> Right.
>
> The root cause is that FreeBSD launches two instances of the driver,
> running in two different userland processes, for the two different
> Wacom interfaces on a common USB device. In Linux the wacom
> interface drivers are running from the same kernel, and can share
> the data in question, but in FreeBSD's webcamd emulation, this
> doesn't work. Then the first wacom probe call would have to grab the
> second interface.
>
> Technically speaking this is a FreeBSD only problem and I plan to
> deliver a patch with the webcamd software to fix this, like already
> suggested to you guys. This situation can also happen on Linux in
> case of a "BadUSB" device. That's why I think that the NULL check
> should be upstreamed.
Hmm, looking at this again it seems that we just cross our fingers and
hope that both interfaces are enumerated by the time we get event data
from the device. I do not think this is quite safe. We probably should
be checking the overall state of probing (i.e. whether we are done
probing both interfaces) before processing data for the device.
Or maybe we should just forcibly try claiming secondary interface
while probing primary instead of messing with shared data item.
That won't help Hans though: the devices do use 2 interfaces in tandem,
treating them separately will result in incorrect behavior.
Thanks.
--
Dmitry
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox