1. 07 5月, 2015 6 次提交
  2. 11 4月, 2015 1 次提交
    • S
      HID: sensor: Custom and Generic sensor support · 4a7de051
      Srinivas Pandruvada 提交于
      HID Sensor Spec defines two usage ids for custom sensors
      
      	HID_USAGE_SENSOR_TYPE_OTHER_CUSTOM (0x09, 0xE1)
      	HID_USAGE_SENSOR_TYPE_OTHER_GENERIC(0x09, 0xE2)
      
      	In addition the standard also defines usage ids for custom fields.
      The purpose of these sensors is to extend the functionality or provide a way to
      obfuscate the data being communicated by a sensor. Without knowing the mapping
      between the data and its encapsulated form, it is difficult for an driver to
      determine what data is being communicated by the sensor.  This allows some
      differentiating use cases, where vendor can provide applications.  Since these
      can't be represented by standard sensor interfaces like IIO, we present these
      as fields with
      
      - type (input/output)
      - units
      - min/max
      - get/set value
      
      In addition an dev interface to transfer report events. Details about this
      interface is described in /Documentation/hid/hid-sensor.txt.  Manufacturers
      should not use these ids for any standard sensors, otherwise the the
      product/vendor id can be added to black list.
      Signed-off-by: NSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
      Reviewed-by: NJonathan Cameron <jic23@kernel.org>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      4a7de051
  3. 10 4月, 2015 1 次提交
  4. 06 4月, 2015 1 次提交
  5. 02 4月, 2015 7 次提交
  6. 27 3月, 2015 1 次提交
  7. 25 3月, 2015 2 次提交
  8. 24 3月, 2015 1 次提交
  9. 18 3月, 2015 1 次提交
  10. 17 3月, 2015 1 次提交
    • B
      HID: wacom: ask for a in-prox report when it was missed · 5fcad167
      Benjamin Tissoires 提交于
      If noone listens to the input device when a tool comes in proximity,
      the tablet does not send the in-prox event when a client becomes available.
      That means that no events will be sent until the tool is taken out of
      proximity.
      
      In this situation, ask for the report WACOM_REPORT_INTUOSREAD which will
      read the corresponding feature and generate an in-prox event.
      To make some generation of hardware working, we need to unset the
      quirk NO_GET set by hid-core because the interfaces are seen as "boot
      mouse".
      
      We don't schedule this read in a worker while we are in an IO interrupt.
      We know that usbhid will do it asynchronously. If this is triggered by
      uhid, then this is obviously a client side bug :)
      Signed-off-by: NBenjamin Tissoires <benjamin.tissoires@redhat.com>
      Acked-by: NJason Gerecke <killertofu@gmail.com>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      5fcad167
  11. 16 3月, 2015 6 次提交
    • S
      HID: hid-sensor-hub: Fix sparse warning · 62fad137
      Srinivas Pandruvada 提交于
      Since I can't change the type of hid_set_field argument 3, using __force __s32 to remove
      this warning.
      Reported-by: Nkbuild test robot <fengguang.wu@intel.com>
      Signed-off-by: NSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      62fad137
    • S
      HID: hid-sensor-hub: fix attribute read for logical usage id · eb964833
      Srinivas Pandruvada 提交于
      For defining enumeration values like report or power status events, the
      enumeration usage ids are enclosed in a logical collection.  In this case we
      need to match logical usage id for pending read on this usage id. For example,
      in the below field, when read is requested for 0319, the report will
      contain one of the status usages like 850, 851 etc. In this case the raw
      event will not match 0319. So when logical collection matches, then wake
      up the pending thread.
      
            Physical(Sensor.OtherCustom)
            Logical(Sensor.0319)
            Application(Sensor.Sensor)
            Usage(6)
              Sensor.0850
              Sensor.0851
              Sensor.0852
              Sensor.0853
              Sensor.0854
              Sensor.0855
            Logical Minimum(1)
            Logical Maximum(5)
            Report Size(8)
            Report Count(1)
            Report Offset(24)
            Flags( Array Absolute )
      Signed-off-by: NSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      eb964833
    • S
      HID: plantronics: fix Kconfig default · f1088b38
      Stefan Richter 提交于
      This driver didn't exist until before v3.19.
      Why would suddenly everybody want to build it?
      Signed-off-by: NStefan Richter <stefanr@s5r6.in-berlin.de>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      f1088b38
    • J
      HID: pidff: support more than one concurrent effect · e8f46e4f
      Jim Keir 提交于
      The PID driver (usbhid/hid-pidff.c) does not set the effect ID when
      uploading an effect. The result is that the initial upload works but
      subsequent uploads to modify effect parameters are all directed at the
      last-created effect.
      
      The targeted effect ID must be passed back to the device when effect
      parameters are changed. This is done at the start of
      "pidff_set_condition_report", "pidff_set_periodic_report" etc. based on
      the value of "pidff->block_load[PID_EFFECT_
      BLOCK_INDEX].value[0]".
      
      This value is only ever set during pidff_request_effect_upload.
      The result is stored in "pidff->pid_id[effect->id]" at the end of
      pid_upload_effect, for later use. However, if an effect is modified and
      re-sent then this identifier is not being copied back from
      pidff->pid_id[effect->id] before sending the command to the device. The
      fix is to do this at the start of pidff_upload_effect.
      Signed-off-by: NJim Keir <jimkeir@oracledbadirect.com>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      e8f46e4f
    • J
      HID: Stop hiding options with !EXPERT · 7af05e73
      Jean Delvare 提交于
      Many HID driver options are hidden unless EXPERT is set. While I
      understand the idea of simplifying the kernel configuration for most
      users, in practice I believe it adds more confusion than it helps.
      
      One thing that worries me is that, in non-EXPERT mode, these drivers
      will be either built-in or modular based on apparent magic. For
      example, switching INPUT and HID from m to y will cause all these
      drivers to be built into the kernel when they were previously built
      as modules. Short of enabling EXPERT mode altogether, the user has no
      control over that.
      
      Generally I do not think tristate options should depend on !EXPERT.
      Of these, 11 of 15 are currently in the hid subsystem.
      
      The HID_LOGITECH option is even worse than the others. Sub-options
      depend on it, and this causes menuconfig and friends to display the
      option even though the user can't change its value. The help page for
      HID_LOGITECH will not explain why the value can't be changed. It only
      says, for example:
      
        Depends on: INPUT [=y] && HID [=y]
      
      and that leaves the user puzzled about why the option is forced to y.
      You might argue that this is a Kconfig bug, but that doesn't make it
      less annoying for the user.
      
      Even worse is that some of the sub-options of HID_LOGITECH select
      INPUT_FF_MEMLESS, which in turn gets out of control for the user. So,
      if you set INPUT=y and HID=y (something most general purpose
      distributions would do these days, as both modules would get loaded on
      a vast majority of systems otherwise), and you want support for
      force-feedback game controllers, you can't have that as a module, it
      has to be built-in, regardless of how rare these devices are.
      
      Of course, all this madness goes away once EXPERT is enabled, but then
      the rest of the kernel configuration becomes more complex, which
      totally voids the original point.
      
      For this reason, I would like all HID device tristate options to be
      displayed regardless of EXPERT being set or not. We can let the
      default settings still depend on EXPERT, that's not intrusive.
      Signed-off-by: NJean Delvare <jdelvare@suse.de>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      7af05e73
    • B
      HID: uclogic: make input_mapping independent of usb · ee20fe23
      Benjamin Tissoires 提交于
      No need to retrieve the USB handle in input_mapping() when we already
      do that in probe. It also allows to use the quirk without having to
      add the product ID matching.
      Signed-off-by: NBenjamin Tissoires <benjamin.tissoires@redhat.com>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      ee20fe23
  12. 15 3月, 2015 1 次提交
  13. 14 3月, 2015 2 次提交
    • K
      power_supply: Change ownership from driver to core · 297d716f
      Krzysztof Kozlowski 提交于
      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 : [<00000000>]    lr : [<c034b0b4>]    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] [<c034b0b4>] (charger_get_property) from [<c0346864>] (power_supply_show_property+0x48/0x20c)
      [   55.939286] [<c0346864>] (power_supply_show_property) from [<c027f25c>] (dev_attr_show+0x1c/0x48)
      [   55.948130] [<c027f25c>] (dev_attr_show) from [<c0146218>] (sysfs_kf_seq_show+0x84/0x104)
      [   55.956298] [<c0146218>] (sysfs_kf_seq_show) from [<c0144c78>] (kernfs_seq_show+0x24/0x28)
      [   55.964536] [<c0144c78>] (kernfs_seq_show) from [<c0107f90>] (seq_read+0x1b0/0x484)
      [   55.972172] [<c0107f90>] (seq_read) from [<c00e53dc>] (__vfs_read+0x18/0x4c)
      [   55.979188] [<c00e53dc>] (__vfs_read) from [<c00e548c>] (vfs_read+0x7c/0x100)
      [   55.986304] [<c00e548c>] (vfs_read) from [<c00e5550>] (SyS_read+0x40/0x8c)
      [   55.993164] [<c00e5550>] (SyS_read) from [<c000f1a0>] (ret_fast_syscall+0x0/0x48)
      [   56.000626] Code: bad PC value
      [   56.011652] ---[ end trace 7b64343fbdae8ef1 ]---
      Signed-off-by: NKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Reviewed-by: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      
      [for the nvec part]
      Reviewed-by: NMarc Dietrich <marvin24@gmx.de>
      
      [for compal-laptop.c]
      Acked-by: NDarren Hart <dvhart@linux.intel.com>
      
      [for the mfd part]
      Acked-by: NLee Jones <lee.jones@linaro.org>
      
      [for the hid part]
      Acked-by: NJiri Kosina <jkosina@suse.cz>
      
      [for the acpi part]
      Acked-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: NSebastian Reichel <sre@kernel.org>
      297d716f
    • K
      power_supply: Move run-time configuration to separate structure · 2dc9215d
      Krzysztof Kozlowski 提交于
      Add new structure 'power_supply_config' for holding run-time
      initialization data like of_node, supplies and private driver data.
      
      The power_supply_register() function is changed so all power supply
      drivers need updating.
      
      When registering the power supply this new 'power_supply_config' should be
      used instead of directly initializing 'struct power_supply'. This allows
      changing the ownership of power_supply structure from driver to the
      power supply core in next patches.
      
      When a driver does not use of_node or supplies then it should use NULL
      as config. If driver uses of_node or supplies then it should allocate
      config on stack and initialize it with proper values.
      Signed-off-by: NKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Reviewed-by: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      Acked-by: NPavel Machek <pavel@ucw.cz>
      
      [for the nvec part]
      Reviewed-by: NMarc Dietrich <marvin24@gmx.de>
      
      [for drivers/platform/x86/compal-laptop.c]
      Reviewed-by: NDarren Hart <dvhart@linux.intel.com>
      
      [for drivers/hid/*]
      Reviewed-by: NJiri Kosina <jkosina@suse.cz>
      Signed-off-by: NSebastian Reichel <sre@kernel.org>
      2dc9215d
  14. 12 3月, 2015 3 次提交
  15. 11 3月, 2015 6 次提交