linux/drivers
Jason Gerecke 4f4ab4bcd5 HID: wacom: Improve behavior of non-standard LED brightness values
Assigning a non-standard brightness value to an LED can cause the value
to slowly drift downward over time as the effects of integer division
accumulate. Each time that an LED is triggered, a series of set and get
calls occur. For example, if we assume a tablet with max_hlv = 100, then
when brightness is set to "200" through sysfs, the hlv value written to
hardware will be `200*100/255 = 78`. If the LED trigger is later activated,
the hlv value will be used to determine the brightness: `78*255/100 = 198`.
This lower brightness then used to set the brightness of the next LED.
However, `198*100/255 = 77`, so the next LED ends up slightly dimmer.
Each subsequent trigger activation will cause the brightness to continue
drifting down until we reach a point where the result of integer divsion
does not introduce any new error.

This commit corrects the issue by being more careful about how we handle
scaling between the two ranges (0..max_{h,l}lv) and (0..LED_FULL).

Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
2025-01-09 09:58:28 +01:00
..
accel module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
accessibility
acpi module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
amba ARM: 9415/1: amba: Add dev_is_amba() function and export it for modules 2024-11-12 16:41:45 +00:00
android Char/Misc/IIO/Whatever driver subsystem updates for 6.13-rc1 2024-11-29 11:58:27 -08:00
ata pci-v6.13-changes 2024-11-26 18:05:44 -08:00
atm Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
auxdisplay module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
base module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
bcma Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
block Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
bluetooth Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
bus Char/Misc/IIO/Whatever driver subsystem updates for 6.13-rc1 2024-11-29 11:58:27 -08:00
cache
cdrom Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
cdx module: Convert default symbol namespace to string literal 2024-12-03 08:22:25 -08:00
char Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
clk module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
clocksource Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
comedi
connector
counter module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
cpufreq powerpc updates for 6.13 2024-11-23 10:44:31 -08:00
cpuidle Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
crypto module: Convert default symbol namespace to string literal 2024-12-03 08:22:25 -08:00
cxl module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
dax module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
dca
devfreq Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
dio
dma module: Convert default symbol namespace to string literal 2024-12-03 08:22:25 -08:00
dma-buf module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
dpll
edac Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
eisa
extcon Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
firewire firewire updates for v6.13 2024-11-25 17:12:54 -08:00
firmware module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
fpga module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
fsi Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
gnss
gpio module: Convert default symbol namespace to string literal 2024-12-03 08:22:25 -08:00
gpu module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
greybus
hid HID: wacom: Improve behavior of non-standard LED brightness values 2025-01-09 09:58:28 +01:00
hsi Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
hte Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
hv Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
hwmon module: Convert default symbol namespace to string literal 2024-12-03 08:22:25 -08:00
hwspinlock Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
hwtracing Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
i2c module: Convert default symbol namespace to string literal 2024-12-03 08:22:25 -08:00
i3c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
idle intel_idle: add Granite Rapids Xeon D support 2024-11-11 15:48:50 +01:00
iio module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
infiniband module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
input Input updates for v6.13-rc0 2024-11-25 10:31:39 -08:00
interconnect
iommu module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
ipack
irqchip - Move the ->select callback to the correct ops structure in irq-mvebu-sei to 2024-12-01 12:37:58 -08:00
isdn mISDN: Fix typos 2024-11-09 09:14:12 -08:00
leds module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
macintosh Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
mailbox TTY / Serial driver updates for 6.13-rc1 2024-11-30 09:03:16 -08:00
mcb module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
md block-6.13-20242901 2024-11-30 15:47:29 -08:00
media module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
memory Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
memstick Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
message scsi: fusion: Remove unused variable 'rc' 2024-11-06 20:46:07 -05:00
mfd module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
misc module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
mmc MMC core: 2024-11-20 12:51:32 -08:00
most
mtd This pull request contains updates for JFFS2, UBI and UBIFS: 2024-11-30 10:32:47 -08:00
mux
net module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
nfc
ntb
nubus
nvdimm module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
nvme module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
nvmem Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
of Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
opp Additional power management updates for 6.13-rc1 2024-11-27 14:40:33 -08:00
parisc Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
parport Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
pci module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
pcmcia Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
peci module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
perf module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
phy Driver core changes for 6.13-rc1 2024-11-29 11:43:29 -08:00
pinctrl module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
platform platform-drivers-x86 for v6.13-2 2024-12-04 10:28:30 -08:00
pmdomain Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
pnp
power power supply and reset changes for the 6.13 series 2024-11-28 09:28:09 -08:00
powercap module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
pps Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
ps3 ps3: Correct some typos in comments 2024-11-15 00:32:29 +11:00
ptp Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
pwm module: Convert default symbol namespace to string literal 2024-12-03 08:22:25 -08:00
rapidio
ras
regulator regulator: Fixes for v6.13 2024-11-28 09:40:53 -08:00
remoteproc remoteproc: qcom: wcss: Remove double assignment in q6v5_wcss_probe() 2024-11-15 20:36:27 -08:00
reset module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
rpmsg Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
rtc module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
s390 Driver core changes for 6.13-rc1 2024-11-29 11:43:29 -08:00
sbus Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
scsi Driver core changes for 6.13-rc1 2024-11-29 11:43:29 -08:00
sh sh updates for v6.13 2024-11-30 14:45:29 -08:00
siox
slimbus Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
soc Networking changes for 6.13. 2024-11-21 08:28:08 -08:00
soundwire module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
spi module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
spmi Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
ssb
staging module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
target SCSI misc on 20241125 2024-11-25 18:50:55 -08:00
tc TC: Fix the wrong format specifier 2024-11-12 15:48:08 +01:00
tee Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
thermal module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
thunderbolt USB / Thunderbolt (USB4) changes for 6.13-rc1 2024-11-29 11:19:31 -08:00
tty module: Convert default symbol namespace to string literal 2024-12-03 08:22:25 -08:00
ufs Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
uio Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
usb module: Convert default symbol namespace to string literal 2024-12-03 08:22:25 -08:00
vdpa vdpa/mlx5: Fix suboptimal range on iotlb iteration 2024-11-12 18:05:05 -05:00
vfio module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
vhost mm: page_frag: avoid caller accessing 'page_frag_cache' directly 2024-11-11 10:56:27 -08:00
video module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
virt Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
virtio module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
w1 Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
watchdog linux-watchdog 6.13-rc1 tag 2024-12-05 10:03:43 -08:00
xen module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
zorro
Kconfig
Makefile