06 Mar, 2017

1 commit

  • Wacom Cintiq Pro added a touch key to switch the tablet between
    display and opaque mode. This patch informs the change by removing
    the old devices and creating new ones with proper properties.

    Signed-off-by: Benjamin Tissoires
    Signed-off-by: Ping Cheng
    Tested-by: Aaron Armstrong Skomra
    Signed-off-by: Jiri Kosina

    Benjamin Tissoires
     

20 Feb, 2017

1 commit


27 Jan, 2017

2 commits


23 Jan, 2017

1 commit

  • The Intuos Pro seems to not like when we set the features right after
    being powered up. Instead of waiting during probe, we can schedule the
    switch mode and LED control in a deferred worker so that we don't have the
    5 secs of delay from USB when the device is not accessible.

    The USB timeout delays were really a pain because if you happen to unplug
    the tablet while it is still waiting, you are just adding 5 second timeouts
    to the USB stack. Which means that a new plug of the same tablet will also
    gets delayed, and will also attempt to access the hardware while in
    .probe(). So the tablet doesn't appear in the dmesg, the user unplug/replug
    it to make it appearing... and so on so forth.

    Really, this is for the best :)

    Signed-off-by: Benjamin Tissoires
    Acked-by: Jason Gerecke
    Signed-off-by: Jiri Kosina

    Benjamin Tissoires
     

06 Jan, 2017

1 commit

  • Local "#define DRIVER_LICENSE" obfuscates which license is used
    in MODULE_LICENSE(). "fgrep -R MODULE_LICENSE" is more informative
    when the string is hard coded in MODULE_LICENSE.

    Signed-off-by: Grant Grundler
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina

    Grant Grundler
     

09 Dec, 2016

1 commit


05 Aug, 2016

14 commits


29 Aug, 2015

1 commit


18 Jun, 2015

1 commit


23 Apr, 2015

1 commit


15 Apr, 2015

1 commit

  • Pull HID updates from Jiri Kosina:

    - quite a few firmware fixes for RMI driver by Andrew Duggan

    - huion and uclogic drivers have been substantially overlaping in
    functionality laterly. This redundancy is fixed by hid-huion driver
    being merged into hid-uclogic; work done by Benjamin Tissoires and
    Nikolai Kondrashov

    - i2c-hid now supports ACPI GPIO interrupts; patch from Mika Westerberg

    - Some of the quirks, that got separated into individual drivers, have
    historically had EXPERT dependency. As HID subsystem matured (as
    well as the individual drivers), this made less and less sense. This
    dependency is now being removed by patch from Jean Delvare

    - Logitech lg4ff driver received a couple of improvements for mode
    switching, by Michal Malý

    - multitouch driver now supports clickpads, patches by Benjamin
    Tissoires and Seth Forshee

    - hid-sensor framework received a substantial update; namely support
    for Custom and Generic pages is being added; work done by Srinivas
    Pandruvada

    - wacom driver received substantial update; it now supports
    i2c-conntected devices (Mika Westerberg), Bamboo PADs are now
    properly supported (Benjamin Tissoires), much improved battery
    reporting (Jason Gerecke) and pen proximity cleanups (Ping Cheng)

    - small assorted fixes and device ID additions

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: (68 commits)
    HID: sensor: Update document for custom sensor
    HID: sensor: Custom and Generic sensor support
    HID: debug: fix error handling in hid_debug_events_read()
    Input - mt: Fix input_mt_get_slot_by_key
    HID: logitech-hidpp: fix error return code
    HID: wacom: Add support for Cintiq 13HD Touch
    HID: logitech-hidpp: add a module parameter to keep firmware gestures
    HID: usbhid: yet another mouse with ALWAYS_POLL
    HID: usbhid: more mice with ALWAYS_POLL
    HID: wacom: set stylus_in_proximity before checking touch_down
    HID: wacom: use wacom_wac_finger_count_touches to set touch_down
    HID: wacom: remove hardcoded WACOM_QUIRK_MULTI_INPUT
    HID: pidff: effect can't be NULL
    HID: add quirk for PIXART OEM mouse used by HP
    HID: add HP OEM mouse to quirk ALWAYS_POLL
    HID: wacom: ask for a in-prox report when it was missed
    HID: hid-sensor-hub: Fix sparse warning
    HID: hid-sensor-hub: fix attribute read for logical usage id
    HID: plantronics: fix Kconfig default
    HID: pidff: support more than one concurrent effect
    ...

    Linus Torvalds
     

14 Mar, 2015

1 commit

  • Change the ownership of power_supply structure from each driver
    implementing the class to the power supply core.

    The patch changes power_supply_register() function thus all drivers
    implementing power supply class are adjusted.

    Each driver provides the implementation of power supply. However it
    should not be the owner of power supply class instance because it is
    exposed by core to other subsystems with power_supply_get_by_name().
    These other subsystems have no knowledge when the driver will unregister
    the power supply. This leads to several issues when driver is unbound -
    mostly because user of power supply accesses freed memory.

    Instead let the core own the instance of struct 'power_supply'. Other
    users of this power supply will still access valid memory because it
    will be freed when device reference count reaches 0. Currently this
    means "it will leak" but power_supply_put() call in next patches will
    solve it.

    This solves invalid memory references in following race condition
    scenario:

    Thread 1: charger manager
    Thread 2: power supply driver, used by charger manager

    THREAD 1 (charger manager) THREAD 2 (power supply driver)
    ========================== ==============================
    psy = power_supply_get_by_name()
    Driver unbind, .remove
    power_supply_unregister()
    Device fully removed
    psy->get_property()

    The 'get_property' call is executed in invalid context because the driver was
    unbound and struct 'power_supply' memory was freed.

    This could be observed easily with charger manager driver (here compiled
    with max17040 fuel gauge):

    $ cat /sys/devices/virtual/power_supply/cm-battery/capacity &
    $ echo "1-0036" > /sys/bus/i2c/drivers/max17040/unbind
    [ 55.725123] Unable to handle kernel NULL pointer dereference at virtual address 00000000
    [ 55.732584] pgd = d98d4000
    [ 55.734060] [00000000] *pgd=5afa2831, *pte=00000000, *ppte=00000000
    [ 55.740318] Internal error: Oops: 80000007 [#1] PREEMPT SMP ARM
    [ 55.746210] Modules linked in:
    [ 55.749259] CPU: 1 PID: 2936 Comm: cat Tainted: G W 3.19.0-rc1-next-20141226-00048-gf79f475f3c44-dirty #1496
    [ 55.760190] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
    [ 55.766270] task: d9b76f00 ti: daf54000 task.ti: daf54000
    [ 55.771647] PC is at 0x0
    [ 55.774182] LR is at charger_get_property+0x2f4/0x36c
    [ 55.779201] pc : [] lr : [] psr: 60000013
    [ 55.779201] sp : daf55e90 ip : 00000003 fp : 00000000
    [ 55.790657] r10: 00000000 r9 : c06e2878 r8 : d9b26c68
    [ 55.795865] r7 : dad81610 r6 : daec7410 r5 : daf55ebc r4 : 00000000
    [ 55.802367] r3 : 00000000 r2 : daf55ebc r1 : 0000002a r0 : d9b26c68
    [ 55.808879] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
    [ 55.815994] Control: 10c5387d Table: 598d406a DAC: 00000015
    [ 55.821723] Process cat (pid: 2936, stack limit = 0xdaf54210)
    [ 55.827451] Stack: (0xdaf55e90 to 0xdaf56000)
    [ 55.831795] 5e80: 60000013 c01459c4 0000002a c06f8ef8
    [ 55.839956] 5ea0: db651000 c06f8ef8 daebac00 c04cb668 daebac08 c0346864 00000000 c01459c4
    [ 55.848115] 5ec0: d99eaa80 c06f8ef8 00000fff 00001000 db651000 c027f25c c027f240 d99eaa80
    [ 55.856274] 5ee0: d9a06c00 c0146218 daf55f18 00001000 d99eaa80 db4c18c0 00000001 00000001
    [ 55.864468] 5f00: daf55f80 c0144c78 c0144c54 c0107f90 00015000 d99eaab0 00000000 00000000
    [ 55.872603] 5f20: 000051c7 00000000 db4c18c0 c04a9370 00015000 00001000 daf55f80 00001000
    [ 55.880763] 5f40: daf54000 00015000 00000000 c00e53dc db4c18c0 c00e548c 0000000d 00008124
    [ 55.888937] 5f60: 00000001 00000000 00000000 db4c18c0 db4c18c0 00001000 00015000 c00e5550
    [ 55.897099] 5f80: 00000000 00000000 00001000 00001000 00015000 00000003 00000003 c000f364
    [ 55.905239] 5fa0: 00000000 c000f1a0 00001000 00015000 00000003 00015000 00001000 0001333c
    [ 55.913399] 5fc0: 00001000 00015000 00000003 00000003 00000002 00000000 00000000 00000000
    [ 55.921560] 5fe0: 7fffe000 be999850 0000a225 b6f3c19c 60000010 00000003 00000000 00000000
    [ 55.929744] [] (charger_get_property) from [] (power_supply_show_property+0x48/0x20c)
    [ 55.939286] [] (power_supply_show_property) from [] (dev_attr_show+0x1c/0x48)
    [ 55.948130] [] (dev_attr_show) from [] (sysfs_kf_seq_show+0x84/0x104)
    [ 55.956298] [] (sysfs_kf_seq_show) from [] (kernfs_seq_show+0x24/0x28)
    [ 55.964536] [] (kernfs_seq_show) from [] (seq_read+0x1b0/0x484)
    [ 55.972172] [] (seq_read) from [] (__vfs_read+0x18/0x4c)
    [ 55.979188] [] (__vfs_read) from [] (vfs_read+0x7c/0x100)
    [ 55.986304] [] (vfs_read) from [] (SyS_read+0x40/0x8c)
    [ 55.993164] [] (SyS_read) from [] (ret_fast_syscall+0x0/0x48)
    [ 56.000626] Code: bad PC value
    [ 56.011652] ---[ end trace 7b64343fbdae8ef1 ]---

    Signed-off-by: Krzysztof Kozlowski
    Reviewed-by: Bartlomiej Zolnierkiewicz

    [for the nvec part]
    Reviewed-by: Marc Dietrich

    [for compal-laptop.c]
    Acked-by: Darren Hart

    [for the mfd part]
    Acked-by: Lee Jones

    [for the hid part]
    Acked-by: Jiri Kosina

    [for the acpi part]
    Acked-by: Rafael J. Wysocki

    Signed-off-by: Sebastian Reichel

    Krzysztof Kozlowski
     

11 Mar, 2015

2 commits

  • Tablets like the Intuos, Intuos Pro, and Bamboo have a connector for an
    optional wireless module that can be connected on the fly. The presence
    (or absence) of this module is indicated in a status report recieved
    from the tablet. This patch adds a workqueue function that will create
    or destroy a power_supply object at runtime to match the current state
    of the WACOM_QUIRK_BATTERY flag.

    Signed-off-by: Jason Gerecke
    Acked-by: Ping Cheng
    Signed-off-by: Jiri Kosina

    Jason Gerecke
     
  • Has the 'wacom_notify_battery' function take on the job of detecting if
    updating the power supply is necessary to remove multiple
    nearly-identical 'if' blocks.

    Signed-off-by: Jason Gerecke
    Acked-by: Ping Cheng
    Signed-off-by: Jiri Kosina

    Jason Gerecke
     

21 Nov, 2014

1 commit


01 Oct, 2014

1 commit

  • ISDv4 and v5 are plain HID devices. We can directly implement a generic
    HID parsing/handling and remove the need to manually add those PID in
    the list of supported devices.

    This patch implements the pen support only. The finger part will come in
    a later patch.

    To be properly notified of an .event() and a .report(), we need to force
    hid-core to go through the HID parsing. By default, wacom.ko binds only
    hidraw, so the hid parsing is not done by hid-core. When a true HID device
    is there, we add the flag HID_CLAIMED_DRIVER to hid->claimed which will
    force hid-core to parse the incoming reports.
    (Note that this can be easily backported by directly setting the .claimed
    flag to HID_CLAIMED_DRIVER even if hid-core does not support
    HID_CONNECT_DRIVER)

    Signed-off-by: Benjamin Tissoires
    Acked-by: Jason Gerecke
    Signed-off-by: Jiri Kosina

    Benjamin Tissoires
     

07 Aug, 2014

2 commits


26 Jul, 2014

4 commits

  • This is used by HID Bluetooth devices but also add some more information
    to the USB Wireless Receiver.
    We are just porting the bits from hid-wacom.c to the common driver here.

    Signed-off-by: Benjamin Tissoires
    Acked-by: Przemo Firszt
    Acked-by: Ping Cheng
    Signed-off-by: Dmitry Torokhov

    Benjamin Tissoires
     
  • - Reports the current status of the battery (discharging, charging, full).
    - Also notify the upower daemon when there is a change in the battery
    value.
    - keep the battery value as a percentage, not the raw value
    - add WACOM_QUIRK_BATTERY to easily add a battery to a device (required
    for Bluetooth devices)

    Signed-off-by: Benjamin Tissoires
    Acked-by: Przemo Firszt
    Acked-by: Ping Cheng
    Signed-off-by: Dmitry Torokhov

    Benjamin Tissoires
     
  • This solves a bug with the wireless receiver:
    - at plug, the wireless receiver does not know which Wacom device it is
    connected to, so it does not actually creates all the LEDs
    - when the tablet connects, wacom->wacom_wac.features.type is set to the
    proper device so that wacom_wac can understand the packets
    - when the receiver is unplugged, it detects that a LED should have been
    created (based on wacom->wacom_wac.features.type) and tries to remove
    it: crash when removing the sysfs group.

    Side effect, we can now safely call several times wacom_destroy_leds().

    Signed-off-by: Benjamin Tissoires
    Acked-by: Ping Cheng
    Signed-off-by: Dmitry Torokhov

    Benjamin Tissoires
     
  • wacom.ko is now a full HID driver, we have to move it into the proper
    subdirectory: drivers/hid.

    Signed-off-by: Benjamin Tissoires
    Signed-off-by: Dmitry Torokhov

    Benjamin Tissoires