linux/drivers/pwm
Linus Torvalds 8841842cc9 pwm: Two driver fixes
After having added some more code to libpwm checking the pwm rounding
 rules for the userspace interface I spotted an issue in the pwm-stm32
 driver where in some cases involving inverted polarity the wrong
 hardware settings for the duty offset are chosen. I think it has little
 practical effect because the duty offset is in most cases an artificial
 property of the output waveform. Still it's relevant to get this fixed
 because this driver serves as a reference implementation for the still
 young waveform API.
 
 The second fix addresses a sleep-in-atomic issue in the pwm-atmel-tcb
 driver.
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCgAdFiEEP4GsaTp6HlmJrf7Tj4D7WH0S/k4FAmnpynoACgkQj4D7WH0S
 /k4NnwgAuxWsy1gj6zvU14lg/5ejZih5S1RmvHDrFLQJWyV8kXGhbLoWnZZZ1FLT
 Oo2V5dwRcJEPty6Yw/E8SV5KVcnGwQd3UrmuqQTPHwwLaff08KrZB4DoLtfLXAiN
 QyVmz1n/kaid3VD4EbUYFvv5zCqMcrk4nZGanEm1o1VLn739AhsI/lpfAcRAoHaT
 ySHUqo2l8sN1vtAY9Av/8DBP8r8RzQmdxVHL0hG/rD2Rw4tIoVPYwU2eyD+s7DwB
 Vou/ssqwibofoQoJfbESNbFdJJYEQZmsiHPDTIGZCAJoJOpTMbHxaBJZqWIzs4jv
 I5CAgi9FQq1N3SeSl2E8yoWbsPkb6g==
 =W/Xm
 -----END PGP SIGNATURE-----

Merge tag 'pwm/fixes-7.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux

Pull pwm fixes from Uwe Kleine-König:
 "Two driver fixes

  After having added some more code to libpwm checking the pwm rounding
  rules for the userspace interface I spotted an issue in the pwm-stm32
  driver where in some cases involving inverted polarity the wrong
  hardware settings for the duty offset are chosen. I think it has
  little practical effect because the duty offset is in most cases an
  artificial property of the output waveform. Still it's relevant to get
  this fixed because this driver serves as a reference implementation
  for the still young waveform API.

  The second fix addresses a sleep-in-atomic issue in the pwm-atmel-tcb
  driver"

* tag 'pwm/fixes-7.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux:
  pwm: atmel-tcb: Cache clock rates and mark chip as atomic
  pwm: stm32: Fix rounding issue for requests with inverted polarity
2026-04-23 08:37:07 -07:00
..
core.c Convert 'alloc_flex' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
Kconfig pwm: th1520: Fix missing Kconfig dependencies 2025-12-10 08:14:27 +01:00
Makefile Merge branch 'pwm/th1520' into pwm/for-next 2025-11-14 11:56:14 +01:00
pwm_th1520.rs pwm: Changes for v7.1-rc1 2026-04-15 14:13:31 -07:00
pwm-ab8500.c pwm: ab8500: Make use of devm_pwmchip_alloc() function 2024-02-15 12:59:19 +01:00
pwm-adp5585.c pwm: adp5585: Correct mismatched pwm chip info 2025-11-14 11:55:56 +01:00
pwm-airoha.c pwm: airoha: Add support for EN7581 SoC 2025-11-14 11:56:14 +01:00
pwm-apple.c pwm: apple: Make use of devm_pwmchip_alloc() function 2024-02-15 12:59:19 +01:00
pwm-argon-fan-hat.c pwm: argon-fan-hat: Add Argon40 Fan HAT support 2025-07-07 08:39:35 +02:00
pwm-atmel-hlcdc.c pwm: Switch back to struct platform_driver::remove() 2024-09-16 15:24:59 +02:00
pwm-atmel-tcb.c pwm: atmel-tcb: Cache clock rates and mark chip as atomic 2026-04-22 07:24:33 +02:00
pwm-atmel.c pwm: atmel: Drop driver local locking 2025-07-07 08:39:35 +02:00
pwm-axi-pwmgen.c include: linux: move adi-axi-common.h out of fpga 2025-06-30 17:57:15 -07:00
pwm-bcm-iproc.c pwm: bcm-iproc: Make use of devm_pwmchip_alloc() function 2024-02-15 12:59:20 +01:00
pwm-bcm-kona.c pwm: bcm-kona: Make use of devm_pwmchip_alloc() function 2024-02-15 12:59:20 +01:00
pwm-bcm2835.c pwm: bcm2835: Make sure the channel is enabled after pwm_request() 2025-11-19 11:41:00 +01:00
pwm-berlin.c pwm: berlin: Fix wrong register in suspend/resume 2025-09-15 11:39:43 +02:00
pwm-brcmstb.c pwm: brcmstb: Make use of devm_pwmchip_alloc() function 2024-02-15 12:59:20 +01:00
pwm-clk.c pwm: Switch back to struct platform_driver::remove() 2024-09-16 15:24:59 +02:00
pwm-clps711x.c pwm: clps711x: Drop driver local locking 2025-07-07 08:39:35 +02:00
pwm-crc.c pwm: crc: Make use of devm_pwmchip_alloc() function 2024-02-15 12:59:21 +01:00
pwm-cros-ec.c pwm: cros-ec: Avoid -Wflex-array-member-not-at-end warnings 2025-09-15 11:39:47 +02:00
pwm-dwc-core.c module: Convert default symbol namespace to string literal 2024-12-03 08:22:25 -08:00
pwm-dwc.c pwm: dwc: Use size macro 2026-01-20 18:38:05 +01:00
pwm-dwc.h module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
pwm-ep93xx.c pwm: ep93xx: drop legacy pinctrl 2024-09-12 14:33:11 +00:00
pwm-fsl-ftm.c pwm: Add the S32G support in the Freescale FTM driver 2025-09-15 11:39:45 +02:00
pwm-gpio.c pwm: gpio: Switch to use hrtimer_setup() 2025-02-07 16:41:37 +01:00
pwm-hibvt.c pwm: Switch back to struct platform_driver::remove() 2024-09-16 15:24:59 +02:00
pwm-img.c pwm: img: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-09 10:51:20 +02:00
pwm-imx-tpm.c pwm: imx-tpm: Count the number of enabled channels in probe 2026-03-13 09:56:28 +01:00
pwm-imx1.c pwm: add missing MODULE_DESCRIPTION() macros 2024-07-10 17:52:46 +02:00
pwm-imx27.c pwm: imx27: Use clk_bulk_*() API to simplify clock handling 2024-10-25 11:42:36 +02:00
pwm-intel-lgm.c pwm: add missing MODULE_DESCRIPTION() macros 2024-07-10 17:52:46 +02:00
pwm-iqs620a.c pwm: iqs620a: Make use of devm_pwmchip_alloc() function 2024-02-19 11:04:10 +01:00
pwm-jz4740.c pwm: jz4740: Drop unused include 2026-03-21 23:34:37 +01:00
pwm-keembay.c pwm: keembay: Make use of devm_pwmchip_alloc() function 2024-02-19 11:04:10 +01:00
pwm-loongson.c pwm: loongson: Fix LOONGSON_PWM_FREQ_DEFAULT 2025-09-15 11:39:28 +02:00
pwm-lp3943.c pwm: lp3943: Fix an incorrect type in lp3943_pwm_parse_dt() 2024-09-16 15:23:36 +02:00
pwm-lpc18xx-sct.c pwm: lpc18xx-sct: Drop driver local locking 2025-07-07 08:39:36 +02:00
pwm-lpc32xx.c pwm: lpc32xx: Make use of devm_pwmchip_alloc() function 2024-02-19 11:04:11 +01:00
pwm-lpss-pci.c pwm: Changes for v6.14-rc1 2025-01-22 10:43:09 -08:00
pwm-lpss-platform.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
pwm-lpss.c Pin control changes for the v6.15 kernel cycle: 2025-03-29 16:59:16 -07:00
pwm-lpss.h pwm: lpss: Only include <linux/pwm.h> where needed 2025-02-04 08:23:42 +01:00
pwm-max7360.c pwm: max7360: Populate missing .sizeof_wfhw in max7360_pwm_ops 2026-01-19 18:31:05 +01:00
pwm-mc33xs2410.c pwm: mc33xs2410: add hwmon support 2025-07-24 09:20:39 +02:00
pwm-mediatek.c pwm: mediatek: Make use of struct_size macro 2025-11-14 11:56:14 +01:00
pwm-meson.c pwm: meson: Simplify meson_pwm_cnt_to_ns() 2025-04-14 08:03:15 +02:00
pwm-microchip-core.c pwm: microchip-core: Drop driver local locking 2025-07-07 08:39:36 +02:00
pwm-mtk-disp.c pwm: mtk-disp: Make use of devm_pwmchip_alloc() function 2024-02-19 11:04:12 +01:00
pwm-mxs.c pwm: mxs: Make use of devm_pwmchip_alloc() function 2024-02-19 11:04:12 +01:00
pwm-ntxec.c pwm: ntxec: Make use of devm_pwmchip_alloc() function 2024-02-19 11:04:12 +01:00
pwm-omap-dmtimer.c pwm: Switch back to struct platform_driver::remove() 2024-09-16 15:24:59 +02:00
pwm-pca9685.c pwm: pca9586: Convert to waveform API 2025-09-15 11:39:46 +02:00
pwm-pxa.c pwm: pxa: Add optional reset control 2025-07-07 08:39:33 +02:00
pwm-raspberrypi-poe.c pwm: raspberrypi-poe: Make use of devm_pwmchip_alloc() function 2024-02-19 11:04:13 +01:00
pwm-rcar.c pwm: rcar: Improve register calculation 2025-04-04 09:23:39 +02:00
pwm-renesas-tpu.c pwm: renesas-tpu: Make use of devm_pwmchip_alloc() function 2024-02-19 11:04:13 +01:00
pwm-rockchip.c pwm: rockchip: Round period/duty down on apply, up on get 2025-07-07 08:39:35 +02:00
pwm-rz-mtu3.c pwm: rz-mtu3: Make use of devm_pwmchip_alloc() function 2024-02-19 11:04:14 +01:00
pwm-rzg2l-gpt.c pwm: rzg2l-gpt: Allow checking period_tick cache value only if sibling channel is enabled 2025-11-27 09:58:07 +01:00
pwm-samsung.c of: remove internal arguments from of_property_for_each_u32() 2024-07-25 06:53:47 -05:00
pwm-sifive.c pwm: sifive: Fix rounding and idempotency issues in apply and get_state 2025-07-07 08:39:34 +02:00
pwm-sl28cpld.c pwm: sl28cpld: Make use of devm_pwmchip_alloc() function 2024-02-19 11:04:15 +01:00
pwm-sophgo-sg2042.c pwm: sophgo-sg2042: Add support for SG2044 2025-07-07 08:39:34 +02:00
pwm-spear.c pwm: add missing MODULE_DESCRIPTION() macros 2024-07-10 17:52:46 +02:00
pwm-sprd.c pwm: sprd: Make use of devm_pwmchip_alloc() function 2024-02-22 14:39:10 +01:00
pwm-sti.c pwm: sti: Drop driver local locking 2025-07-07 08:39:36 +02:00
pwm-stm32-lp.c pwm: stm32-lp: Add support for stm32mp25 2025-05-13 11:13:56 +01:00
pwm-stm32.c pwm: stm32: Fix rounding issue for requests with inverted polarity 2026-04-16 07:25:15 +02:00
pwm-stmpe.c pwm: stmpe: Allow to compile as a module 2025-03-03 10:38:54 +01:00
pwm-sun4i.c pwm: sun4i: Drop driver local locking 2025-07-07 08:39:36 +02:00
pwm-sunplus.c pwm: sunplus: Make use of devm_pwmchip_alloc() function 2024-02-22 14:39:25 +01:00
pwm-tegra.c pwm: Switch back to struct platform_driver::remove() 2024-09-16 15:24:59 +02:00
pwm-tiecap.c pwm: tiecap: Document behaviour of hardware disable 2025-09-15 11:39:44 +02:00
pwm-tiehrpwm.c pwm: tiehrpwm: Enable pwmchip's parent device before setting configuration 2026-01-21 18:41:46 +01:00
pwm-twl-led.c pwm: twl-led: Drop driver local locking 2025-07-07 08:39:36 +02:00
pwm-twl.c pwm: twl: Make use of devm_pwmchip_alloc() function 2024-02-22 14:39:27 +01:00
pwm-visconti.c pwm: add missing MODULE_DESCRIPTION() macros 2024-07-10 17:52:46 +02:00
pwm-vt8500.c pwm: vt8500: Make use of devm_pwmchip_alloc() function 2024-02-22 14:39:27 +01:00
pwm-xilinx.c pwm: xilinx: Simplify using devm_ functions 2024-07-10 17:53:52 +02:00