linux/drivers/pwm
Uwe Kleine-König 52eaba4ced pwm: atmel: Rework tracking updates pending in hardware
This improves the driver's behavior in several ways:

 - The lock is held for shorter periods and so a channel that is currently
   waited for doesn't block disabling another channel.

 - It's easier to understand because the procedure is split into more
   semantic units and documentation is improved

 - A channel is only set to pending when such an event is actually
   scheduled in hardware (by writing the CUPD register).

 - Also wait in .get_state() to report the last configured state instead
   of (maybe) the previous one. This fixes the read back duty cycle and so
   prevents a warning being emitted when PWM_DEBUG is on.

Tested on an AriettaG25.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
2021-09-02 21:35:09 +02:00
..
core.c pwm: Remove redundant assignment to pointer pwm 2021-07-07 21:43:32 +02:00
Kconfig pwm: Changes for v5.13-rc1 2021-05-05 12:53:16 -07:00
Makefile pwm: Changes for v5.13-rc1 2021-05-05 12:53:16 -07:00
pwm-ab8500.c pwm: Always allocate PWM chip base ID dynamically 2021-03-22 11:53:00 +01:00
pwm-atmel-hlcdc.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-atmel-tcb.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-atmel.c pwm: atmel: Rework tracking updates pending in hardware 2021-09-02 21:35:09 +02:00
pwm-bcm2835.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-bcm-iproc.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-bcm-kona.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-berlin.c pwm: berlin: Ensure configuring period and duty_cycle isn't wrongly skipped 2021-07-08 16:09:17 +02:00
pwm-brcmstb.c pwm: Always allocate PWM chip base ID dynamically 2021-03-22 11:53:00 +01:00
pwm-clps711x.c pwm: clps711x: Simplify using devm_pwmchip_add() 2021-06-28 13:23:11 +02:00
pwm-crc.c pwm: crc: Simplify using devm_pwmchip_add() 2021-06-28 13:25:04 +02:00
pwm-cros-ec.c pwm: cros-ec: Refuse requests with unsupported polarity 2021-03-22 12:08:06 +01:00
pwm-dwc.c pwm: Always allocate PWM chip base ID dynamically 2021-03-22 11:53:00 +01:00
pwm-ep93xx.c pwm: ep93xx: Ensure configuring period and duty_cycle isn't wrongly skipped 2021-07-08 16:09:30 +02:00
pwm-fsl-ftm.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-hibvt.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-img.c pwm: img: Fix PM reference leak in img_pwm_enable() 2021-06-30 19:12:18 +02:00
pwm-imx1.c pwm: imx1: Simplify using devm_pwmchip_add() 2021-06-28 13:24:45 +02:00
pwm-imx27.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-imx-tpm.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-intel-lgm.c pwm: Always allocate PWM chip base ID dynamically 2021-03-22 11:53:00 +01:00
pwm-iqs620a.c pwm: Always allocate PWM chip base ID dynamically 2021-03-22 11:53:00 +01:00
pwm-jz4740.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-keembay.c pwm: Always allocate PWM chip base ID dynamically 2021-03-22 11:53:00 +01:00
pwm-lp3943.c pwm: Always allocate PWM chip base ID dynamically 2021-03-22 11:53:00 +01:00
pwm-lpc18xx-sct.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-lpc32xx.c pwm: lpc3200: Don't modify HW state in .remove callback 2021-04-09 14:45:11 +02:00
pwm-lpss-pci.c pwm: lpss: Simplify using devm_pwmchip_add() 2021-06-28 13:18:25 +02:00
pwm-lpss-platform.c pwm: lpss: Simplify using devm_pwmchip_add() 2021-06-28 13:18:25 +02:00
pwm-lpss.c pwm: lpss: Simplify using devm_pwmchip_add() 2021-06-28 13:18:25 +02:00
pwm-lpss.h pwm: lpss: Simplify using devm_pwmchip_add() 2021-06-28 13:18:25 +02:00
pwm-mediatek.c pwm: mediatek: Remove unused function 2021-04-23 18:47:45 +02:00
pwm-meson.c pwm: meson: Simplify using devm_pwmchip_add() 2021-06-28 13:22:07 +02:00
pwm-mtk-disp.c pwm: Always allocate PWM chip base ID dynamically 2021-03-22 11:53:00 +01:00
pwm-mxs.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-ntxec.c pwm: ntxec: Add driver for PWM function in Netronix EC 2021-03-10 11:06:30 +00:00
pwm-omap-dmtimer.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-pca9685.c pwm: pca9685: Add error messages for failed regmap calls 2021-06-04 11:43:54 +02:00
pwm-pxa.c pwm: pxa: Always use the same variable name for driver data 2021-06-30 19:12:18 +02:00
pwm-raspberrypi-poe.c pwm: Add Raspberry Pi Firmware based PWM bus 2021-03-22 17:59:52 +01:00
pwm-rcar.c pwm: Always allocate PWM chip base ID dynamically 2021-03-22 11:53:00 +01:00
pwm-renesas-tpu.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-rockchip.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-samsung.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-sifive.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-sl28cpld.c pwm: Always allocate PWM chip base ID dynamically 2021-03-22 11:53:00 +01:00
pwm-spear.c pwm: spear: Ensure configuring period and duty_cycle isn't wrongly skipped 2021-07-08 16:08:38 +02:00
pwm-sprd.c pwm: sprd: Ensure configuring period and duty_cycle isn't wrongly skipped 2021-07-08 16:08:08 +02:00
pwm-sti.c pwm: sti: Free resources only after pwmchip_remove() 2021-04-09 14:46:58 +02:00
pwm-stm32-lp.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-stm32.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-stmpe.c pwm: Always allocate PWM chip base ID dynamically 2021-03-22 11:53:00 +01:00
pwm-sun4i.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-tegra.c pwm: tegra: Assert reset only after the PWM was unregistered 2021-06-30 19:12:20 +02:00
pwm-tiecap.c pwm: tiecap: Ensure configuring period and duty_cycle isn't wrongly skipped 2021-07-08 16:08:54 +02:00
pwm-tiehrpwm.c pwm: Simplify all drivers with explicit of_pwm_n_cells = 3 2021-05-25 18:19:15 +02:00
pwm-twl-led.c pwm: Always allocate PWM chip base ID dynamically 2021-03-22 11:53:00 +01:00
pwm-twl.c pwm: Always allocate PWM chip base ID dynamically 2021-03-22 11:53:00 +01:00
pwm-visconti.c pwm: visconti: Fix and simplify period calculation 2021-05-25 18:29:40 +02:00
pwm-vt8500.c pwm: vt8500: Only unprepare the clock after the pwmchip was removed 2021-06-30 19:12:20 +02:00
sysfs.c pwm: Allow store 64-bit duty cycle from sysfs interface 2020-09-24 09:18:14 +02:00