Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8de29a35 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
  ...
parents 31f7dc79 2e455c27
Loading
Loading
Loading
Loading
+10 −0
Original line number Original line Diff line number Diff line
@@ -8,3 +8,13 @@ Description: When read, this file returns the device's raw binary HID
		report descriptor.
		report descriptor.
		This file cannot be written.
		This file cannot be written.
Users:		HIDAPI library (http://www.signal11.us/oss/hidapi)
Users:		HIDAPI library (http://www.signal11.us/oss/hidapi)

What:		For USB devices	: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/country
		For BT devices	: /sys/class/bluetooth/hci<addr>/<hid-bus>:<vendor-id>:<product-id>.<num>/country
		Symlink		: /sys/class/hidraw/hidraw<num>/device/country
Date:		February 2015
KernelVersion:	3.19
Contact:	Olivier Gay <ogay@logitech.com>
Description:	When read, this file returns the hex integer value in ASCII
		of the device's HID country code (e.g. 21 for US).
		This file cannot be written.
+45 −0
Original line number Original line Diff line number Diff line
@@ -5,3 +5,48 @@ Contact: Michal Malý <madcatxster@gmail.com>
Description:	Display minimum, maximum and current range of the steering
Description:	Display minimum, maximum and current range of the steering
		wheel. Writing a value within min and max boundaries sets the
		wheel. Writing a value within min and max boundaries sets the
		range of the wheel.
		range of the wheel.

What:		/sys/bus/hid/drivers/logitech/<dev>/alternate_modes
Date:		Feb 2015
KernelVersion:	4.1
Contact:	Michal Malý <madcatxster@gmail.com>
Description:	Displays a set of alternate modes supported by a wheel. Each
		mode is listed as follows:
		  Tag: Mode Name
		Currently active mode is marked with an asterisk. List also
		contains an abstract item "native" which always denotes the
		native mode of the wheel. Echoing the mode tag switches the
		wheel into the corresponding mode. Depending on the exact model
		of the wheel not all listed modes might always be selectable.
		If a wheel cannot be switched into the desired mode, -EINVAL
		is returned accompanied with an explanatory message in the
		kernel log.
		This entry is not created for devices that have only one mode.

		Currently supported mode switches:
		Driving Force Pro:
		  DF-EX --> DFP

		G25:
		  DF-EX --> DFP --> G25

		G27:
		  DF-EX <*> DFP <-> G25 <-> G27
		  DF-EX <*--------> G25 <-> G27
		  DF-EX <*----------------> G27

		DFGT:
		  DF-EX <*> DFP <-> DFGT
		  DF-EX <*--------> DFGT

		* hid_logitech module must be loaded with lg4ff_no_autoswitch=1
		  parameter set in order for the switch to DF-EX mode to work.

What:		/sys/bus/hid/drivers/logitech/<dev>/real_id
Date:		Feb 2015
KernelVersion:	4.1
Contact:	Michal Malý <madcatxster@gmail.com>
Description:	Displays the real model of the wheel regardless of any
		alternate mode the wheel might be switched to.
		It is a read-only value.
		This entry is not created for devices that have only one mode.
+84 −0
Original line number Original line Diff line number Diff line
@@ -138,3 +138,87 @@ accelerometer wants to poll X axis value, then it can call this function with
the usage id of X axis. HID sensors can provide events, so this is not necessary
the usage id of X axis. HID sensors can provide events, so this is not necessary
to poll for any field. If there is some new sample, the core driver will call
to poll for any field. If there is some new sample, the core driver will call
registered callback function to process the sample.
registered callback function to process the sample.


----------

HID Custom and generic Sensors

HID Sensor specification defines two special sensor usage types. Since they
don't represent a standard sensor, it is not possible to define using Linux IIO
type interfaces.
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 application/driver to determine what data is being communicated by the sensor.
This allows some differentiating use cases, where vendor can provide applications.
Some common use cases are debug other sensors or to provide some events like
keyboard attached/detached or lid open/close.

To allow application to utilize these sensors, here they are exported uses sysfs
attribute groups, attributes and misc device interface.

An example of this representation on sysfs:
/sys/devices/pci0000:00/INT33C2:00/i2c-0/i2c-INT33D1:00/0018:8086:09FA.0001/HID-SENSOR-2000e1.6.auto$ tree -R
.
????????? enable_sensor
????????? feature-0-200316
??????? ????????? feature-0-200316-maximum
??????? ????????? feature-0-200316-minimum
??????? ????????? feature-0-200316-name
??????? ????????? feature-0-200316-size
??????? ????????? feature-0-200316-unit-expo
??????? ????????? feature-0-200316-units
??????? ????????? feature-0-200316-value
????????? feature-1-200201
??????? ????????? feature-1-200201-maximum
??????? ????????? feature-1-200201-minimum
??????? ????????? feature-1-200201-name
??????? ????????? feature-1-200201-size
??????? ????????? feature-1-200201-unit-expo
??????? ????????? feature-1-200201-units
??????? ????????? feature-1-200201-value
????????? input-0-200201
??????? ????????? input-0-200201-maximum
??????? ????????? input-0-200201-minimum
??????? ????????? input-0-200201-name
??????? ????????? input-0-200201-size
??????? ????????? input-0-200201-unit-expo
??????? ????????? input-0-200201-units
??????? ????????? input-0-200201-value
????????? input-1-200202
??????? ????????? input-1-200202-maximum
??????? ????????? input-1-200202-minimum
??????? ????????? input-1-200202-name
??????? ????????? input-1-200202-size
??????? ????????? input-1-200202-unit-expo
??????? ????????? input-1-200202-units
??????? ????????? input-1-200202-value

Here there is a custom sensors with four fields, two feature and two inputs.
Each field is represented by a set of attributes. All fields except the "value"
are read only. The value field is a RW field.
Example
/sys/bus/platform/devices/HID-SENSOR-2000e1.6.auto/feature-0-200316$ grep -r . *
feature-0-200316-maximum:6
feature-0-200316-minimum:0
feature-0-200316-name:property-reporting-state
feature-0-200316-size:1
feature-0-200316-unit-expo:0
feature-0-200316-units:25
feature-0-200316-value:1

How to enable such sensor?
By default sensor can be power gated. To enable sysfs attribute "enable" can be
used.
$ echo 1 > enable_sensor

Once enabled and powered on, sensor can report value using HID reports.
These reports are pushed using misc device interface in a FIFO order.
/dev$ tree | grep HID-SENSOR-2000e1.6.auto
??????? ????????? 10:53 -> ../HID-SENSOR-2000e1.6.auto
????????? HID-SENSOR-2000e1.6.auto

Each reports can be of variable length preceded by a header. This header
consist of a 32 bit usage id, 64 bit time stamp and 32 bit length field of raw
data.
+28 −20
Original line number Original line Diff line number Diff line
@@ -92,7 +92,7 @@ menu "Special HID drivers"
	depends on HID
	depends on HID


config HID_A4TECH
config HID_A4TECH
	tristate "A4 tech mice" if EXPERT
	tristate "A4 tech mice"
	depends on HID
	depends on HID
	default !EXPERT
	default !EXPERT
	---help---
	---help---
@@ -113,7 +113,7 @@ config HID_ACRUX_FF
	game controllers.
	game controllers.


config HID_APPLE
config HID_APPLE
	tristate "Apple {i,Power,Mac}Books" if EXPERT
	tristate "Apple {i,Power,Mac}Books"
	depends on HID
	depends on HID
	default !EXPERT
	default !EXPERT
	---help---
	---help---
@@ -141,7 +141,7 @@ config HID_AUREAL
	Support for Aureal Cy se W-01RN Remote Controller and other Aureal derived remotes.
	Support for Aureal Cy se W-01RN Remote Controller and other Aureal derived remotes.


config HID_BELKIN
config HID_BELKIN
	tristate "Belkin Flip KVM and Wireless keyboard" if EXPERT
	tristate "Belkin Flip KVM and Wireless keyboard"
	depends on HID
	depends on HID
	default !EXPERT
	default !EXPERT
	---help---
	---help---
@@ -158,14 +158,14 @@ config HID_BETOP_FF
	 - BETOP 2185 PC & BFM MODE
	 - BETOP 2185 PC & BFM MODE


config HID_CHERRY
config HID_CHERRY
	tristate "Cherry Cymotion keyboard" if EXPERT
	tristate "Cherry Cymotion keyboard"
	depends on HID
	depends on HID
	default !EXPERT
	default !EXPERT
	---help---
	---help---
	Support for Cherry Cymotion keyboard.
	Support for Cherry Cymotion keyboard.


config HID_CHICONY
config HID_CHICONY
	tristate "Chicony Tactical pad" if EXPERT
	tristate "Chicony Tactical pad"
	depends on HID
	depends on HID
	default !EXPERT
	default !EXPERT
	---help---
	---help---
@@ -196,7 +196,7 @@ config HID_CP2112
	customizable USB descriptor fields are exposed as sysfs attributes.
	customizable USB descriptor fields are exposed as sysfs attributes.


config HID_CYPRESS
config HID_CYPRESS
	tristate "Cypress mouse and barcode readers" if EXPERT
	tristate "Cypress mouse and barcode readers"
	depends on HID
	depends on HID
	default !EXPERT
	default !EXPERT
	---help---
	---help---
@@ -245,7 +245,7 @@ config HID_ELO
	different devices than those handled by CONFIG_TOUCHSCREEN_USB_ELO.
	different devices than those handled by CONFIG_TOUCHSCREEN_USB_ELO.


config HID_EZKEY
config HID_EZKEY
	tristate "Ezkey BTC 8193 keyboard" if EXPERT
	tristate "Ezkey BTC 8193 keyboard"
	depends on HID
	depends on HID
	default !EXPERT
	default !EXPERT
	---help---
	---help---
@@ -286,12 +286,6 @@ config HID_GT683R
	Currently the following devices are know to be supported:
	Currently the following devices are know to be supported:
	  - MSI GT683R
	  - MSI GT683R


config HID_HUION
	tristate "Huion tablets"
	depends on USB_HID
	---help---
	Support for Huion 580 tablet.

config HID_KEYTOUCH
config HID_KEYTOUCH
	tristate "Keytouch HID devices"
	tristate "Keytouch HID devices"
	depends on HID
	depends on HID
@@ -312,9 +306,9 @@ config HID_KYE


config HID_UCLOGIC
config HID_UCLOGIC
	tristate "UC-Logic"
	tristate "UC-Logic"
	depends on HID
	depends on USB_HID
	---help---
	---help---
	Support for UC-Logic tablets.
	Support for UC-Logic and Huion tablets.


config HID_WALTOP
config HID_WALTOP
	tristate "Waltop"
	tristate "Waltop"
@@ -344,7 +338,7 @@ config HID_TWINHAN
	Support for Twinhan IR remote control.
	Support for Twinhan IR remote control.


config HID_KENSINGTON
config HID_KENSINGTON
	tristate "Kensington Slimblade Trackball" if EXPERT
	tristate "Kensington Slimblade Trackball"
	depends on HID
	depends on HID
	default !EXPERT
	default !EXPERT
	---help---
	---help---
@@ -372,7 +366,7 @@ config HID_LENOVO
	- ThinkPad Compact USB Keyboard with TrackPoint (supports Fn keys)
	- ThinkPad Compact USB Keyboard with TrackPoint (supports Fn keys)


config HID_LOGITECH
config HID_LOGITECH
	tristate "Logitech devices" if EXPERT
	tristate "Logitech devices"
	depends on HID
	depends on HID
	default !EXPERT
	default !EXPERT
	---help---
	---help---
@@ -461,14 +455,14 @@ config HID_MAGICMOUSE
	Apple Wireless "Magic" Mouse and the Apple Wireless "Magic" Trackpad.
	Apple Wireless "Magic" Mouse and the Apple Wireless "Magic" Trackpad.


config HID_MICROSOFT
config HID_MICROSOFT
	tristate "Microsoft non-fully HID-compliant devices" if EXPERT
	tristate "Microsoft non-fully HID-compliant devices"
	depends on HID
	depends on HID
	default !EXPERT
	default !EXPERT
	---help---
	---help---
	Support for Microsoft devices that are not fully compliant with HID standard.
	Support for Microsoft devices that are not fully compliant with HID standard.


config HID_MONTEREY
config HID_MONTEREY
	tristate "Monterey Genius KB29E keyboard" if EXPERT
	tristate "Monterey Genius KB29E keyboard"
	depends on HID
	depends on HID
	default !EXPERT
	default !EXPERT
	---help---
	---help---
@@ -638,7 +632,6 @@ config HID_PICOLCD_CIR


config HID_PLANTRONICS
config HID_PLANTRONICS
	tristate "Plantronics USB HID Driver"
	tristate "Plantronics USB HID Driver"
	default !EXPERT
	depends on HID
	depends on HID
	---help---
	---help---
	Provides HID support for Plantronics telephony devices.
	Provides HID support for Plantronics telephony devices.
@@ -885,6 +878,21 @@ config HID_SENSOR_HUB
	  for events and handle data streams. Each sensor driver can format
	  for events and handle data streams. Each sensor driver can format
	  data and present to user mode using input or IIO interface.
	  data and present to user mode using input or IIO interface.


config HID_SENSOR_CUSTOM_SENSOR
	tristate "HID Sensors hub custom sensor support"
	depends on HID_SENSOR_HUB
	default n
	---help---
	  HID Sensor hub specification allows definition of some custom and
	  generic sensors. Unlike other HID sensors, they can't be exported
	  via Linux IIO because of custom fields. This is up to the manufacturer
	  to decide how to interpret these special sensor ids and process in
	  the user space. Currently some manufacturers are using these ids for
	  sensor calibration and debugging other sensors. Manufacturers
	  should't use these special custom sensor ids to export any of the
	  standard sensors.
	  Select this config option for custom/generic sensor support.

endmenu
endmenu


endif # HID
endif # HID
+1 −1
Original line number Original line Diff line number Diff line
@@ -41,7 +41,6 @@ obj-$(CONFIG_HID_GYRATION) += hid-gyration.o
obj-$(CONFIG_HID_HOLTEK)	+= hid-holtek-kbd.o
obj-$(CONFIG_HID_HOLTEK)	+= hid-holtek-kbd.o
obj-$(CONFIG_HID_HOLTEK)	+= hid-holtek-mouse.o
obj-$(CONFIG_HID_HOLTEK)	+= hid-holtek-mouse.o
obj-$(CONFIG_HID_HOLTEK)	+= hid-holtekff.o
obj-$(CONFIG_HID_HOLTEK)	+= hid-holtekff.o
obj-$(CONFIG_HID_HUION)		+= hid-huion.o
obj-$(CONFIG_HID_HYPERV_MOUSE)	+= hid-hyperv.o
obj-$(CONFIG_HID_HYPERV_MOUSE)	+= hid-hyperv.o
obj-$(CONFIG_HID_ICADE)		+= hid-icade.o
obj-$(CONFIG_HID_ICADE)		+= hid-icade.o
obj-$(CONFIG_HID_KENSINGTON)	+= hid-kensington.o
obj-$(CONFIG_HID_KENSINGTON)	+= hid-kensington.o
@@ -101,6 +100,7 @@ obj-$(CONFIG_HID_WACOM) += wacom.o
obj-$(CONFIG_HID_WALTOP)	+= hid-waltop.o
obj-$(CONFIG_HID_WALTOP)	+= hid-waltop.o
obj-$(CONFIG_HID_WIIMOTE)	+= hid-wiimote.o
obj-$(CONFIG_HID_WIIMOTE)	+= hid-wiimote.o
obj-$(CONFIG_HID_SENSOR_HUB)	+= hid-sensor-hub.o
obj-$(CONFIG_HID_SENSOR_HUB)	+= hid-sensor-hub.o
obj-$(CONFIG_HID_SENSOR_CUSTOM_SENSOR)	+= hid-sensor-custom.o


obj-$(CONFIG_USB_HID)		+= usbhid/
obj-$(CONFIG_USB_HID)		+= usbhid/
obj-$(CONFIG_USB_MOUSE)		+= usbhid/
obj-$(CONFIG_USB_MOUSE)		+= usbhid/
Loading