]> git.ipfire.org Git - thirdparty/linux.git/commit
pwm: Add support for pwmchip devices for faster and easier userspace access
authorUwe Kleine-König <u.kleine-koenig@baylibre.com>
Wed, 30 Apr 2025 11:56:01 +0000 (13:56 +0200)
committerUwe Kleine-König <ukleinek@kernel.org>
Mon, 7 Jul 2025 06:39:33 +0000 (08:39 +0200)
commit9c06f26ba5f5da14bcac405c7a652dcf578a785d
tree1b9f4076877d18868942d3991146769b198d9324
parent505b730ede7f5c4083ff212aa955155b5b92e574
pwm: Add support for pwmchip devices for faster and easier userspace access

With this change each pwmchip defining the new-style waveform callbacks
can be accessed from userspace via a character device. Compared to the
sysfs-API this is faster and allows to pass the whole configuration in a
single ioctl allowing atomic application and thus reducing glitches.

On an STM32MP13 I see:

root@DistroKit:~ time pwmtestperf
real 0m 1.27s
user 0m 0.02s
sys 0m 1.21s
root@DistroKit:~ rm /dev/pwmchip0
root@DistroKit:~ time pwmtestperf
real 0m 3.61s
user 0m 0.27s
sys 0m 3.26s

pwmtestperf does essentially:

for i in 0 .. 50000:
pwm_set_waveform(duty_length_ns=i, period_length_ns=50000, duty_offset_ns=0)

and in the presence of /dev/pwmchip0 is uses the ioctls introduced here,
without that device it uses /sys/class/pwm/pwmchip0.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Link: https://lore.kernel.org/r/ad4a4e49ae3f8ea81e23cac1ac12b338c3bf5c5b.1746010245.git.u.kleine-koenig@baylibre.com
Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
drivers/pwm/core.c
include/linux/pwm.h
include/uapi/linux/pwm.h [new file with mode: 0644]