29 Jul, 2020

1 commit


07 Aug, 2019

1 commit


17 Jul, 2019

1 commit


02 Jul, 2019

1 commit

  • Rename the HID documentation files to ReST, add an
    index for them and adjust in order to produce a nice html
    output via the Sphinx build system.

    While here, fix the sysfs example from hid-sensor.txt, that
    has a lot of "?" instead of the proper UTF-8 characters that
    are produced by the tree command.

    At its new index.rst, let's add a :orphan: while this is not linked to
    the main index.rst file, in order to avoid build warnings.

    Signed-off-by: Mauro Carvalho Chehab
    Acked-by: Benjamin Tissoires
    Signed-off-by: Benjamin Tissoires

    Mauro Carvalho Chehab
     

02 Feb, 2019

1 commit

  • Recently, Free Electrons was renamed to Bootlin[1]. Less recently, the
    Linux Cross Reference (LXR) at lxr.free-electrons.com was replaced by
    Elixir[2], and lxr.free-electrons.com redirected first to
    elixir.free-electrons.com and now to elixir.bootlin.com.

    [1]: https://bootlin.com/blog/free-electrons-becomes-bootlin/
    [2]: https://github.com/free-electrons/elixir

    Signed-off-by: Jonathan Neuschäfer
    Reviewed-by: Martin Kepplinger
    Acked-by: Federico Vaga
    Signed-off-by: Jonathan Corbet

    Jonathan Neuschäfer
     

07 Dec, 2018

1 commit

  • This event code represents scroll reports from high-resolution wheels and
    is modelled after the approach Windows uses. The value 120 is one detent
    (wheel click) of movement. Mice with higher-resolution scrolling can send
    fractions of 120 which must be accumulated in userspace. Userspace can either
    wait for a full 120 to accumulate or scroll by fractions of one logical scroll
    movement as the events come in. 120 was picked as magic number because it has
    a high number of integer fractions that can be used by high-resolution wheels.

    For more information see
    https://docs.microsoft.com/en-us/previous-versions/windows/hardware/design/dn613912(v=vs.85)

    These new axes obsolete REL_WHEEL and REL_HWHEEL. The legacy axes are emulated
    by the kernel but the most accurate (and most granular) data is available
    through the new axes.

    Signed-off-by: Peter Hutterer
    Acked-by: Dmitry Torokhov
    Verified-by: Harry Cutts
    Signed-off-by: Benjamin Tissoires

    Peter Hutterer
     

22 Nov, 2018

1 commit

  • This reverts commit aaf9978c3c0291ef3beaa97610bc9c3084656a85.

    Quoting Peter:

    There is a HID feature report called "Resolution Multiplier"
    Described in the "Enhanced Wheel Support in Windows" doc and
    the "USB HID Usage Tables" page 30.

    http://download.microsoft.com/download/b/d/1/bd1f7ef4-7d72-419e-bc5c-9f79ad7bb66e/wheel.docx
    https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf

    This was new for Windows Vista, so we're only a decade behind here. I only
    accidentally found this a few days ago while debugging a stuck button on a
    Microsoft mouse.

    The docs above describe it like this: a wheel control by default sends
    value 1 per notch. If the resolution multiplier is active, the wheel is
    expected to send a value of $multiplier per notch (e.g. MS Sculpt mouse) or
    just send events more often, i.e. for less physical motion (e.g. MS Comfort
    mouse).

    For the latter, you need the right HW of course. The Sculpt mouse has
    tactile wheel clicks, so nothing really changes. The Comfort mouse has
    continuous motion with no tactile clicks. Similar to the free-wheeling
    Logitech mice but without any inertia.

    Note that the doc also says that Vista and onwards *always* enable this
    feature where available.

    An example HID definition looks like this:

    Usage Page Generic Desktop (0x01)
    Usage Resolution Multiplier (0x48)
    Logical Minimum 0
    Logical Maximum 1
    Physical Minimum 1
    Physical Maximum 16
    Report Size 2 # in bits
    Report Count 1
    Feature (Data, Var, Abs)

    So the actual bits have values 0 or 1 and that reflects real values 1 or 16.
    We've only seen single-bits so far, so there's low-res and hi-res, but
    nothing in between.

    The multiplier is available for HID usages "Wheel" and "AC Pan" (horiz wheel).
    Microsoft suggests that

    > Vendors should ship their devices with smooth scrolling disabled and allow
    > Windows to enable it. This ensures that the device works like a regular HID
    > device on legacy operating systems that do not support smooth scrolling.
    (see the wheel doc linked above)

    The mice that we tested so far do reset on unplug.

    Device Support looks to be all (?) Microsoft mice but nothing else

    Not supported:
    - Logitech G500s, G303
    - Roccat Kone XTD
    - all the cheap Lenovo, HP, Dell, Logitech USB mice that come with a
    workstation that I could find don't have it.
    - Etekcity something something
    - Razer Imperator

    Supported:
    - Microsoft Comfort Optical Mouse 3000 - yes, physical: 1:4
    - Microsoft Sculpt Ergonomic Mouse - yes, physical: 1:12
    - Microsoft Surface mouse - yes, physical: 1:4

    So again, I think this is really just available on Microsoft mice, but
    probably all decent MS mice released over the last decade.

    Looking at the hardware itself:

    - no noticeable notches in the weel
    - low-res: 18 events per 360deg rotation (click angle 20 deg)
    - high-res: 72 events per 360deg → matches multiplier of 4

    - I can feel the notches during wheel turns
    - low-res: 24 events per 360 deg rotation (click angle 15 deg)
    - horiz wheel is tilt-based, continuous output value 1
    - high-res: 24 events per 360deg with value 12 → matches multiplier of 12
    - horiz wheel output rate doubles/triples?, values is 3

    - It's a touch strip, not a wheel so no notches
    - high-res: events have value 4 instead of 1
    a bit strange given that it doesn't actually have notches.

    Ok, why is this an issue for the current API? First, because the logitech
    multiplier used in Harry's patches looks suspiciously like the Resolution
    Multiplier so I think we should assume it's the same thing. Nestor, can you
    shed some light on that?

    - `REL_WHEEL` is defined as the number of notches, emulated where needed.
    - `REL_WHEEL_HI_RES` is the movement of the user's finger in microns.
    - `WM_MOUSEWHEEL` (Windows) is is a multiple of 120, defined as "the threshold
    for action to be taken and one such action"
    https://docs.microsoft.com/en-us/windows/desktop/inputdev/wm-mousewheel

    If the multiplier is set to M, this means we need an accumulated value of M
    until we can claim there was a wheel click. So after enabling the multiplier
    and setting it to the maximum (like Windows):
    - M units are 15deg rotation → 1 unit is 2620/M micron (see below). This is
    the `REL_WHEEL_HI_RES` value.
    - wheel diameter 20mm: 15 deg rotation is 2.62mm, 2620 micron (pi * 20mm /
    (360deg/15deg))
    - For every M units accumulated, send one `REL_WHEEL` event

    The problem here is that we've now hardcoded 20mm/15 deg into the kernel and
    we have no way of getting the size of the wheel or the click angle into the
    kernel.

    In userspace we now have to undo the kernel's calculation. If our click angle
    is e.g. 20 degree we have to undo the (lossy) calculation from the kernel and
    calculate the correct angle instead. This also means the 15 is a hardcoded
    option forever and cannot be changed.

    In hid-logitech-hidpp.c, the microns per unit is hardcoded per device.
    Harry, did you measure those by hand? We'd need to update the kernel for
    every device and there are 10 years worth of devices from MS alone.

    The multiplier default is 8 which is in the right ballpark, so I'm pretty
    sure this is the same as the Resolution Multiplier, just in HID++ lingo. And
    given that the 120 magic factor is what Windows uses in the end, I can't
    imagine Logitech rolling their own thing here. Nestor?

    And we're already fairly inaccurate with the microns anyway. The MX Anywhere
    2S has a click angle of 20 degrees (18 stops) and a 17mm wheel, so a wheel
    notch is approximately 2.67mm, one event at multiplier 8 (1/8 of a notch)
    would be 334 micron. That's only 80% of the fallback value of 406 in the
    kernel. Multiplier 6 gives us 445micron (10% off). I'm assuming multiplier 7
    doesn't exist because it's not a factor of 120.

    Summary:

    Best option may be to simply do what Windows is doing, all the HW manufacturers
    have to use that approach after all. Switch `REL_WHEEL_HI_RES` to report in
    fractions of 120, with 120 being one notch and divide that by the multiplier
    for the actual events. So e.g. the Logitech multiplier 8 would send value 15
    for each event in hi-res mode. This can be converted in userspace to
    whatever userspace needs (combined with a hwdb there that tells you wheel
    size/click angle/...).

    Conflicts:
    include/uapi/linux/input-event-codes.h -> I kept the new
    reserved event in the code, so I had to adapt the revert
    slightly

    Signed-off-by: Benjamin Tissoires
    Acked-by: Harry Cutts
    Acked-by: Dmitry Torokhov
    Acked-by: Jiri Kosina

    Benjamin Tissoires
     

05 Sep, 2018

1 commit

  • This event code represents scroll reports from high-resolution wheels,
    and will be used by future patches in this series. See the linux-input
    "Reporting high-resolution scroll events" thread [0] for more details.

    [0]: https://www.spinics.net/lists/linux-input/msg57380.html

    Signed-off-by: Harry Cutts
    Acked-by: Dmitry Torokhov
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina

    Harry Cutts
     

17 Jul, 2018

1 commit

  • A dial is a tool you place on a multitouch surface which reports its
    orientation or a relative angle of rotation when rotating its knob.

    Some examples are the Dell Totem (on the Canvas 27"), the Microsoft Dial,
    or the Griffin Powermate, though the later can't be put on a touch surface.

    We give some extra space to account for other types of fingers if we need
    (MT_TOOL_THUMB)

    Slightly change the documentation to not make it mandatory to update each
    MT_TOOL we add.

    Reviewed-by: Peter Hutterer
    Acked-by: Dmitry Torokhov
    Signed-off-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina

    Benjamin Tissoires
     

06 Apr, 2018

1 commit

  • Pull input updates from Dmitry Torokhov:

    - new driver for PhoenixRC Flight Controller Adapter

    - new driver for RAVE SP Power button

    - fixes for autosuspend-related deadlocks in a few unput USB dirvers

    - support for 2nd wheel in ATech PS/2 mouse

    - fix for ALPS trackpoint detection on Thinkpad L570 and Latitude 7370

    - bunch of cleanups in various in PS/2 protocols

    - other assorted changes and fixes

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (35 commits)
    Input: i8042 - enable MUX on Sony VAIO VGN-CS series to fix touchpad
    Input: stmfts, s6sy761 - update my e-mail
    Input: stmfts - use async probe & suspend/resume to avoid 2s delay
    Input: ALPS - fix TrackStick detection on Thinkpad L570 and Latitude 7370
    Input: xpad - add PDP device id 0x02a4
    Input: alps - report pressure of v3 and v7 trackstick
    Input: pxrc - new driver for PhoenixRC Flight Controller Adapter
    Input: usbtouchscreen - do not rely on input_dev->users
    Input: usbtouchscreen - fix deadlock in autosuspend
    Input: pegasus_notetaker - do not rely on input_dev->users
    Input: pagasus_notetaker - fix deadlock in autosuspend
    Input: synaptics_usb - do not rely on input_dev->users
    Input: synaptics_usb - fix deadlock in autosuspend
    Input: gpio-keys - add support for wakeup event action
    Input: appletouch - use true and false for boolean values
    Input: silead - add Chuwi Hi8 support
    Input: analog - use get_cycles() on PPC
    Input: stmpe-keypad - remove VLA usage
    Input: i8042 - add Lenovo ThinkPad L460 to i8042 reset list
    Input: add RAVE SP Powerbutton driver
    ...

    Linus Torvalds
     

27 Mar, 2018

1 commit


26 Mar, 2018

1 commit


02 Feb, 2018

1 commit

  • Pull input layer updates from Dmitry Torokhov:

    - evdev interface has been adjusted to extend the life of timestamps on
    32 bit systems to the year of 2108

    - Synaptics RMI4 driver's PS/2 guest handling ha beed updated to
    improve chances of detecting trackpoints on the pass-through port

    - mms114 touchcsreen controller driver has been updated to support
    generic device properties and work with mms152 cntrollers

    - Goodix driver now supports generic touchscreen properties

    - couple of drivers for AVR32 architecture are gone as the architecture
    support has been removed from the kernel

    - gpio-tilt driver has been removed as there are no mainline users and
    the driver itself is using legacy APIs and relies on platform data

    - MODULE_LINECSE/MODULE_VERSION cleanups

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (45 commits)
    Input: goodix - use generic touchscreen_properties
    Input: mms114 - fix typo in definition
    Input: mms114 - use BIT() macro instead of explicit shifting
    Input: mms114 - replace mdelay with msleep
    Input: mms114 - add support for mms152
    Input: mms114 - drop platform data and use generic APIs
    Input: mms114 - mark as direct input device
    Input: mms114 - do not clobber interrupt trigger
    Input: edt-ft5x06 - fix error handling for factory mode on non-M06
    Input: stmfts - set IRQ_NOAUTOEN to the irq flag
    Input: auo-pixcir-ts - delete an unnecessary return statement
    Input: auo-pixcir-ts - remove custom log for a failed memory allocation
    Input: da9052_tsi - remove unused mutex
    Input: docs - use PROPERTY_ENTRY_U32() directly
    Input: synaptics-rmi4 - log when we create a guest serio port
    Input: synaptics-rmi4 - unmask F03 interrupts when port is opened
    Input: synaptics-rmi4 - do not delete interrupt memory too early
    Input: ad7877 - use managed resource allocations
    Input: stmfts,s6sy671 - add SPDX identifier
    Input: remove atmel-wm97xx touchscreen driver
    ...

    Linus Torvalds
     

23 Jan, 2018

1 commit


20 Jan, 2018

1 commit


02 Jan, 2018

1 commit

  • This driver was merged in 2011 as a tool for detecting the orientation
    of a screen. The device driver assumes board file setup using the
    platform data from . But no boards in the
    kernel tree defines this platform data.

    As I am faced with refactoring drivers to use GPIO descriptors and
    pass decriptor tables from boards, or use the device tree device
    drivers like these creates a serious problem: I cannot fix them and
    cannot test them, not even compile-test them with a system actually
    using it (no in-tree boardfile).

    I suggest to delete this driver and rewrite it using device tree if
    it is still in use on actively maintained systems.

    I can also offer to rewrite it out of the blue using device tree if
    someone promise to test it and help me iterate it.

    Signed-off-by: Linus Walleij
    Acked-by: Heiko Stuebner
    Patchwork-Id: 10133609
    Signed-off-by: Dmitry Torokhov

    Linus Walleij
     

01 Dec, 2017

1 commit

  • The current hid-multitouch driver only allow the report of two
    orientations, vertical and horizontal. We use the Azimuth orientation
    usage 0x3F under the Digitizer usage page to report orientation if the
    device supports it.

    Changelog:
    v1 -> v2:
    - Fix commit message.
    - Remove resolution reporting for ABS_MT_ORIENTATION.
    v2 -> v3:
    - Fix commit message.
    v3 -> v4:
    - Fix ABS_MT_ORIENTATION ABS param range.
    - Don't set ABS_MT_ORIENTATION in ABS_DG_HEIGHT when it is already
    set by ABS_DG_AZIMUTH.
    v4 -> v5:
    - Improve multi-touch-protocol.rst documentation.

    Signed-off-by: Wei-Ning Huang
    Signed-off-by: Wei-Ning Huang
    Reviewed-by: Dmitry Torokhov
    Reviewed-by: Henrik Rydberg
    Signed-off-by: Jiri Kosina

    Wei-Ning Huang
     

13 Oct, 2017

1 commit


31 Aug, 2017

1 commit


25 Aug, 2017

1 commit

  • With Sphinx 1.6 nested numbering is reported as warning::

    ./input/joydev/index.rst:13: WARNING: input/joydev/joystick-api is already assigned section numbers (nested numbered toctree?)
    ./media/uapi/cec/cec-funcs.rst:8: WARNING: media/uapi/cec/cec-func-open is already assigned section numbers (nested numbered toctree?)
    ./media/uapi/cec/cec-funcs.rst:8: WARNING: media/uapi/cec/cec-func-close is already assigned section numbers (nested numbered toctree?)
    ./media/uapi/cec/cec-funcs.rst:8: WARNING: media/uapi/cec/cec-func-ioctl is already assigned section numbers (nested numbered toctree?)
    ./media/uapi/cec/cec-funcs.rst:8: WARNING: media/uapi/cec/cec-func-poll is already assigned section numbers (nested numbered toctree?)
    ./media/uapi/cec/cec-funcs.rst:8: WARNING: media/uapi/cec/cec-ioc-adap-g-caps is already assigned section numbers (nested numbered toctree?)
    ./media/uapi/cec/cec-funcs.rst:8: WARNING: media/uapi/cec/cec-ioc-adap-g-log-addrs is already assigned section numbers (nested numbered toctree?)
    ./media/uapi/cec/cec-funcs.rst:8: WARNING: media/uapi/cec/cec-ioc-adap-g-phys-addr is already assigned section numbers (nested numbered toctree?)
    ./media/uapi/cec/cec-funcs.rst:8: WARNING: media/uapi/cec/cec-ioc-dqevent is already assigned section numbers (nested numbered toctree?)
    ./media/uapi/cec/cec-funcs.rst:8: WARNING: media/uapi/cec/cec-ioc-g-mode is already assigned section numbers (nested numbered toctree?)
    ./media/uapi/cec/cec-funcs.rst:8: WARNING: media/uapi/cec/cec-ioc-receive is already assigned section numbers (nested numbered toctree?)

    TOC numbering is already set in::

    ./input/devices/index.rst:9:
    ./media/uapi/cec/cec-api.rst:19:

    I guess the nested numbering in:

    ./input/joydev/index.rst
    ./media/uapi/cec/cec-funcs.rst

    is just a C&P typo, so lets remove it.

    Signed-off-by: Markus Heiser
    Signed-off-by: Jonathan Corbet

    Markus Heiser
     

14 Jul, 2017

1 commit

  • Pull documentation fixes from Jonathan Corbet:
    "A set of fixes for various warnings, including the one caused by the
    removal of kernel/rcu/srcu.c. Also correct a stray pointer in
    memory-barriers.txt"

    * tag '4.13-fixes' of git://git.lwn.net/linux:
    kokr/memory-barriers.txt: Fix obsolete link to atomic_ops.txt
    memory-barriers.txt: Fix broken link to atomic_ops.txt
    docs: Turn off section numbering for the input docs
    docs: Include uaccess docs from the right file
    docs: Do not include from kernel/rcu/srcu.c

    Linus Torvalds
     

13 Jul, 2017

1 commit


27 May, 2017

1 commit


23 May, 2017

1 commit

  • The datasheet and application note does not mention an allowed range for
    the M09_REGISTER_THRESHOLD parameter. One of our customers needs to set
    lower values than 20 and they seem to work just fine on EDT EP0xx0M09 with
    T5x06 touch.

    So, lacking a known lower limit, we increase the range for thresholds,
    and set the lower limit to 0. The documentation is updated accordingly.

    Signed-off-by: Schoefegger Stefan
    Signed-off-by: Manfred Schlaegl
    Signed-off-by: Martin Kepplinger
    Acked-by: Rob Herring
    Signed-off-by: Dmitry Torokhov

    Martin Kepplinger
     

10 May, 2017

1 commit


04 May, 2017

1 commit

  • Pull input subsystem updates from Dmitry Torokhov:

    - a big update from Mauro converting input documentation to ReST format

    - Synaptics PS/2 is now aware of SMBus companion devices, which means
    that we can now use native RMI4 protocol to handle touchpads, instead
    of relying on legacy PS/2 mode.

    - we removed support from BMA180 accelerometer from input devices as it
    is now handled properly by IIO

    - update to TSC2007 to corretcly report pressure

    - other miscellaneous driver fixes.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (152 commits)
    Input: ar1021_i2c - use BIT to check for a bit
    Input: twl4030-pwrbutton - use input_set_capability() helper
    Input: twl4030-pwrbutton - use correct device for irq request
    Input: ar1021_i2c - enable touch mode during open
    Input: add uinput documentation
    dt-bindings: input: add bindings document for ar1021_i2c driver
    dt-bindings: input: rotary-encoder: fix typo
    Input: xen-kbdfront - add module parameter for setting resolution
    ARM: pxa/raumfeld: fix compile error in rotary controller resources
    Input: xpad - do not suggest writing to Dominic
    Input: xpad - don't use literal blocks inside footnotes
    Input: xpad - note that usb/devices is now at /sys/kernel/debug/
    Input: docs - freshen up introduction
    Input: docs - split input docs into kernel- and user-facing
    Input: docs - note that MT-A protocol is obsolete
    Input: docs - update joystick documentation a bit
    Input: docs - remove disclaimer/GPL notice
    Input: fix "Game console" heading level in joystick documentation
    Input: rotary-encoder - remove references to platform data from docs
    Input: move documentation for Amiga CD32
    ...

    Linus Torvalds
     

03 May, 2017

1 commit

  • Pull HID subsystem updates from Jiri Kosina:

    - The need for HID_QUIRK_NO_INIT_REPORTS per-device quirk has been
    growing dramatically during past years, so the time has come to
    switch over the default, and perform the pro-active reading only in
    cases where it's really needed (multitouch, wacom).

    The only place where this behavior is (in some form) preserved is
    hiddev so that we don't introduce userspace-visible change of
    behavior.

    From Benjamin Tissoires

    - HID++ support for power_supply / baterry reporting.

    From Benjamin Tissoires and Bastien Nocera

    - Vast improvements / rework of DS3 and DS4 in Sony driver.

    From Roderick Colenbrander

    - Improvment (in terms of getting closer to the Microsoft's
    interpretation of slightly ambiguous specification) of logical range
    interpretation in case null-state is set in the rdesc.

    From Valtteri Heikkilä and Tomasz Kramkowski

    - A lot of newly supported device IDs and small assorted fixes

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: (71 commits)
    HID: usbhid: Add HID_QUIRK_NOGET for Aten CS-1758 KVM switch
    HID: asus: support backlight on USB keyboards
    HID: wacom: Move wacom_remote_irq and wacom_remote_status_irq
    HID: wacom: generic: sync pad events only for actual packets
    HID: sony: remove redundant check for -ve err
    HID: sony: Make sure to unregister sensors on failure
    HID: sony: Make DS4 bt poll interval adjustable
    HID: sony: Set proper bit flags on DS4 output report
    HID: sony: DS4 use brighter LED colors
    HID: sony: Improve navigation controller axis/button mapping
    HID: sony: Use DS3 MAC address as unique identifier on USB
    HID: logitech-hidpp: add a sysfs file to tell we support power_supply
    HID: logitech-hidpp: enable HID++ 1.0 battery reporting
    HID: logitech-hidpp: add support for battery status for the K750
    HID: logitech-hidpp: battery: provide CAPACITY_LEVEL
    HID: logitech-hidpp: rename battery level into capacity
    HID: logitech-hidpp: battery: provide ONLINE property
    HID: logitech-hidpp: notify battery on connect
    HID: logitech-hidpp: return an error if the queried feature is not present
    HID: logitech-hidpp: create the battery for all types of HID++ devices
    ...

    Linus Torvalds
     

02 May, 2017

1 commit


25 Apr, 2017

1 commit


19 Apr, 2017

1 commit


18 Apr, 2017

10 commits