| Age | Commit message (Collapse) | Author |
|
|
|
fix force feedback arithmetic and wheel input filtering
|
|
+ HID derives fuzz and flat from the logical axis range. On the tested T300
this gives steering fuzz=255 and flat=4095. It filters small corrections
and adds a large centered deadzone before applications apply their own
steering model.
+ Flat is also centered for pedal axes, while their rest position is an
endpoint. Fuzz without an endpoint deadzone can retain a small nonzero
value after the hardware has returned to rest. Both behaviours are
inappropriate for wheel and pedal input, and applications already provide
the required steering and endpoint deadzones.
+ Override fuzz and flat for every available wheel and pedal axis in
input_configured on devices handled by hid-tmff2, following the existing
hid-universal-pidff precedent for high-resolution racing devices. Skip
absent axes through the input device's absbit mask.
|
|
+ Direction scaling can produce 32768 for the valid input pair -32768 and a
negative full-scale sine value. Storing the intermediate result in s16
wraps it before constant, ramp or periodic effects are converted.
+ Keep direction-scaled values in s32 until their destination range is
known. Periodic effects cannot represent a magnitude above S16_MAX, so
clamp the asymmetric endpoint after making the magnitude positive. This
also prevents the following headroom calculation from using a negative
wrapped magnitude.
|
|
+ FF_GAIN and the driver gain both use the full 16-bit range. Their product
can exceed INT_MAX. Signed overflow is undefined and happens for common
settings such as 75 percent times 75 percent. Use a u32 intermediate for
the scaling operation.
+ Pass the configured gain directly when initializing or updating the
hardware. This also removes two redundant multiply-divide expressions
which could overflow before cancelling out.
|
|
+ Gain is documented and sent to the hardware as a value in the range 0 to
65535, but the module parameter and sysfs attribute accept wider integer
values. Store gain as a u16 and parse sysfs writes with kstrtou16 so
out-of-range values are rejected instead of being silently changed.
+ This constrains only the configured value. Calculations combining gain
values still require a wider intermediate to cover the product of two
full-range 16-bit values.
|
|
+ As requested in #153.
|
|
|
|
+ Seems appropriate, considering the recent new wheels introduced
|
|
|
|
This reverts commit c26573d77369c042dc2b9a881a7f2ff88ddc0dd9.
+ `on_hid_hw_open` is apparently new enough that common distros don't
have it yet, so let's wait a few years and try again. The old method
works well enough and if not, just set `open_mode=0`.
|
|
|
|
+ Adds initialization to the T598, currently uses the T248 path (should
probably be renamed to tmadv or something, as soon as I figure out how
to separate TXX8 wheels from one another)
|
|
|
|
+ Seems some applications can mess with input_dev->open, still unclear
how but on_hid_hw_open seems to be a bit more reliable so use it for
now at least
|
|
+ Closes #177
|
|
|
|
+ Closes #183
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ Courtesy of @BDave95
|
|
|
|
+ Effects handlers were being called in a locked context,
which in this case happened to work due to how `hid_hw_request`
is implemented. Now, only the selected state is updated and the heavy
lifting of making the wheel aware of the requested changes is done
after the critical section.
|
|
|
|
|
|
MmAaXx500-refactor-duration
|
|
|
|
- do the calculation in only one place
- avoid losing 1 ms (if it ever matters)
|
|
Avoid subtracting twice from the length of the effect
first time in t300rs_calculate_periodic_values
second time in t300rs_update_periodic
|
|
|
|
Adds reminder to add MOK certificate if using Secure Boot + DKMS.
|
|
|
|
|
|
+ My understanding is that mainly the SteamDeck requires uaccess, most
other systems can do without. Unfortunately, due to a bug in SDL,
uaccess causes most other systems to not detect input, so we don't
want uaccess to be on by default, at least for now
|
|
|
|
Update README to mention linuxconsole tools dependencies
|
|
|
|
|
|
+ Apparently this allows the T-GT II to work, as it shows up as a PS4
T300 RS, just that it has a different firmware version.
Eventually I should maybe look into the firmware response a bit closer
and check if I can fish out wheel information or something along those
lines to improve wheel detection.
|
|
|
|
|
|
|
|
+ I guess it's kind of silly to require people to create and populate
files manually, no clue why I haven't done this before
|
|
+ I've been meaning to do this for a while (apparently since #42),
finally got around to doing it.
|
|
fix report_fixup() on linux 6.12
|