History log of /freebsd-current/sys/dev/usb/input/wmt.c
Revision Date Author Comments
# 685dc743 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

sys: Remove $FreeBSD$: one-line .c pattern

Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/


# 5fa18335 22-Jun-2022 Elliott Mitchell <ehem+freebsd@m5p.com>

wmt: purge EOL release compatibility

Remove FreeBSD 11 support

Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/603
Differential Revision: https://reviews.freebsd.org/D35560


# bc9372d7 06-May-2022 John Baldwin <jhb@FreeBSD.org>

usb: Remove unused devclass arguments to DRIVER_MODULE.


# 527b6d60 02-Sep-2021 Vladimir Kondratyev <wulf@FreeBSD.org>

wmt(4): Adapt to recent KPI changes

MFC after: 2 weeks


# b62f6dfa 12-Jan-2021 Vladimir Kondratyev <wulf@FreeBSD.org>

hid: Replace USBHID_ENABLED kernel config option with loader tunable

usbhid(4) is disabled by default to avoid conflicts with existing USB HID
drivers. To enable it place following lines to /boot/loader.conf:

hw.usb.usbhid.enable=1
usbhid_load="YES"

Suggested by: jhb
Reviewed by: hselasky
Differential revision: https://reviews.freebsd.org/D28124


# 01f2e864 08-Oct-2020 Vladimir Kondratyev <wulf@FreeBSD.org>

hid: Import usbhid - USB transport backend for HID subsystem.

This change implements hid_if.m methods for HID-over-USB protocol [1].

Also, this change adds USBHID_ENABLED kernel option which changes
device_probe() priority and adds/removes PnP records to prefer usbhid
over ums, ukbd, wmt and other USB HID device drivers and vice-versa.

The module is based on uhid(4) driver. It is disabled by default for
now due to conflicts with existing USB HID drivers.

[1] https://www.usb.org/sites/default/files/hid1_11.pdf

Reviewed by: hselasky
Differential revision: https://reviews.freebsd.org/D27893


# eead9017 01-Jan-2021 Vladimir Kondratyev <wulf@FreeBSD.org>

hid: Chase for HID function name changes in existing USB HID drivers

Also hide shim code added in a previous commit under COMPAT_USBHID12.

Note: it is enough to add -DCOMPAT_USBHID12 to CFLAGS to compile old
code with new HID subsystem, but it is not enough to link it at runtime.
HID dependency has to be added explicitly with MODULE_DEPEND macro.

Reviewed by: manu, hselasky (as part of D27887)


# 67de2db2 04-Oct-2020 Vladimir Kondratyev <wulf@FreeBSD.org>

Factor-out hardware-independent part of USB HID support to new module

It will be used by the upcoming HID-over-i2C implementation. Should be
no-op, except hid.ko module dependency is to be added to affected drivers.

Reviewed by: hselasky, manu
Differential revision: https://reviews.freebsd.org/D27867


# 5af73ad5 30-Nov-2020 Vladimir Kondratyev <wulf@FreeBSD.org>

evdev: Remove useless "initial value" parameter from evdev_support_abs()

It can not be used for setting of state of multitouch events.
If necessary, use evdev_push_event() instead of it.


# 322a188d 24-Dec-2020 Ryan Libby <rlibby@FreeBSD.org>

wmt: quiet gcc -Wparentheses

Reviewed by: wulf
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D27767


# c26a3484 23-Dec-2020 Vladimir Kondratyev <wulf@FreeBSD.org>

wmt(4): Use sys/param.h macroses to work with bit fields

Obtained from: sysutils/iichid


# 18a3b77e 23-Dec-2020 Vladimir Kondratyev <wulf@FreeBSD.org>

wmt(4): Refactor 'Contact Count Maximum' parsing

That is done mainly to reduce diff with upstream.

Obtained from: sysutils/iichid


# 501022d3 23-Dec-2020 Vladimir Kondratyev <wulf@FreeBSD.org>

wmt(4): Add support for hardware timestamp reporting

Hardware timestamp reporting is disabled by default as it produces many
extra events which are not handled by consumers like libinput.
Add hw.usb.wmt.timestamps=1 tunable to loader.conf to enable it.

Obtained from: sysutils/iichid


# 8de78df5 23-Dec-2020 Vladimir Kondratyev <wulf@FreeBSD.org>

wmt(4): Add support for touchpads

Obtained from: sysutils/iichid


# 7eae6aab 23-Dec-2020 Vladimir Kondratyev <wulf@FreeBSD.org>

wmt(4): Fetch and parse HID report descriptor only one time

Do it at probe stage and reuse results during attach.

Obtained from: sysutils/iichid


# 0ba4b5ff 23-Dec-2020 Vladimir Kondratyev <wulf@FreeBSD.org>

wmt(4): Add support for hybrid mode

In Hybrid mode, the number of contacts that can be reported in one
report is less than the maximum number of contacts that the device
supports. For example, a device that supports a maximum of 4
concurrent physical contacts, can set up its top-level collection to
deliver a maximum of two contacts in one report. If four contact
points are present, the device can break these up into two serial
reports that deliver two contacts each.

Obtained from: sysutils/iichid


# 9dd3156e 01-Sep-2020 Mateusz Guzik <mjg@FreeBSD.org>

usb: clean up empty lines in .c and .h files


# 54c05047 11-Mar-2020 Vladimir Kondratyev <wulf@FreeBSD.org>

wmt(4): Reapply r358872 (by hselasky) modified to use
maximal input report size instead of wMaxPacketSize.

If the USB frame length is set to 1024 bytes, WMT_BSIZE, the EETI controller
will pack multiple touch events in the packet and the current code will only
process the first touch event.

As a result some important events are lost like releasing the finger from the
touchscreen.

Use the maximal input report size as buffer size instead.

PR: 244718
Tested by: Oskar Holmlund <oskar.holmlund@ohdata.se>, wulf
MFC after: 3 days
Discussed with: hselasky


# b8e3d9b1 11-Mar-2020 Vladimir Kondratyev <wulf@FreeBSD.org>

wmt(4): revert r358872 (by hselasky)

Limiting frame size to maximum packet size breaks devices which have input
report size larger than wMaxPacketSize. Maximal input report size should be
used instead.
Revert the commit as it have not been MFC-ed yet.

Discussed with: hselasky


# 45ddfe68 11-Mar-2020 Hans Petter Selasky <hselasky@FreeBSD.org>

If the USB frame length is set to 1024 bytes, WMT_BSIZE, the EETI controller
will pack multiple touch events in the packet and the current code will only
process the first touch event.

As a result some important events are lost like releasing the finger from the
touchscreen.

Use the maximum maximum packet size as buffer size instead.

Submitted by: Oskar Holmlund <oskar.holmlund@ohdata.se>
PR: 244718
MFC after: 3 days
Sponsored by: Mellanox Technologies


# c50cdb63 09-Mar-2020 Vladimir Kondratyev <wulf@FreeBSD.org>

wmt(4): Fix Synaptics Touch Digitizer V04 attachment

Touch Digitizer V04 report descriptor declares 'Contact Count Maximum' usage
as constant. That was not supported by descriptor parser.

PR: 232040
Reported by: Sergei Akhmatdinov <sakhmatd@darkn.space>
MFC after: 1 week


# f8d2b1f3 15-Feb-2020 Pawel Biernacki <kaktus@FreeBSD.org>

Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (2 of many)

r357614 added CTLFLAG_NEEDGIANT to make it easier to find nodes that are
still not MPSAFE (or already are but aren’t properly marked). Use it in
preparation for a general review of all nodes.
This is non-functional change that adds annotations to SYSCTL_NODE and
SYSCTL_PROC nodes using one of the soon-to-be-required flags.

Reviewed by: hselasky, kib
Approved by: kib (mentor)
Differential Revision: https://reviews.freebsd.org/D23632


# 236e308a 10-Nov-2018 Vladimir Kondratyev <wulf@FreeBSD.org>

wmt(4): Add PNP record so it could be picked by devd/devmatch.

Fix uhid(4) conflict with blacklisting of multitouch HID-usages
in uhid(4) probe handler.

Reviewed by: imp
No objections from: hps
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D17689


# 316086bd 04-Sep-2018 Vladimir Kondratyev <wulf@FreeBSD.org>

wmt(4): Fix regression introduced in r337289

r337289 has a side effect of reducing usb frame 0 buffer size down to
touch report size. That broke some devices e.g. "Raydium Touch System"
which are capable of generating non-touch frames of bigger length.
Fix it with enlarging frame 0 buffer up to internal wmt(4) buffer size.

Reported by: Roberto Fernandez Cueto <roberfern@gmail.com>
Tested by: Roberto Fernandez Cueto <roberfern@gmail.com>
Approved by: re (gjb)
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D16772


# 911aed94 13-Aug-2018 Vladimir Kondratyev <wulf@FreeBSD.org>

evdev: remove soft context from evdev methods parameter list.

Now softc should be retrieved from struct edvev * pointer
with evdev_get_softc() helper.

wmt(4) is a sample of driver that support both KPI.

Reviewed by: hselasky, gonzo
Differential Revision: https://reviews.freebsd.org/D16614


# 3a3dc5b5 03-Aug-2018 Vladimir Kondratyev <wulf@FreeBSD.org>

wmt(4): Use internal function to calculate input report size

Usbhid's hid_report_size() calculates integral size of all reports of given
kind found in the HID descriptor rather then exact size of report with given
ID as its userland counterpart does. As all input data processed by the
driver is located within the same report, calculate required driver's buffer
size with userland version, imported in one of the previous commits.
This allows us to skip zeroing of buffer on processing of each report.

While here do some minor refactoring.

MFC after: 2 weeks


# 8107f311 03-Aug-2018 Vladimir Kondratyev <wulf@FreeBSD.org>

wmt(4): Read Microsoft's "Touch Hardware Quality Assurance" certificate blob

if present to enable some devices like WaveShare touchscreens. Unlike
Windows we discard content of the blob. We try mimic Windows driver
behaviour from the USB device point of view.

Submitted by: glebius (initial version)


# 36584a62 03-Aug-2018 Vladimir Kondratyev <wulf@FreeBSD.org>

wmt(4): Read 'Contact count maximum' usage value from feature report

rather than from HID descriptor to match Microsoft documentation.
Fall back to HID descriptor provided value if 'Get Report' request failed.

MFC after: 2 weeks


# 76136d20 19-Aug-2017 Vladimir Kondratyev <wulf@FreeBSD.org>

Add support for generic MS Windows 7/8/10-compatible USB HID touchscreens
found in many laptops.

Reviewed by: hps, gonzo, bcr (manpages)
Approved by: gonzo (mentor)
Differential Revision: https://reviews.freebsd.org/D12017