linux/drivers/pwm
Uwe Kleine-König 6f62d2d396 pwm: meson: Explicitly set .polarity in .get_state()
[ Upstream commit 8caa81eb95 ]

The driver only supports normal polarity. Complete the implementation of
.get_state() by setting .polarity accordingly.

This fixes a regression that was possible since commit c73a310762
("pwm: Handle .get_state() failures") which stopped to zero-initialize
the state passed to the .get_state() callback. This was reported at
https://forum.odroid.com/viewtopic.php?f=177&t=46360 . While this was an
unintended side effect, the real issue is the driver's callback not
setting the polarity.

There is a complicating fact, that the .apply() callback fakes support
for inversed polarity. This is not (and cannot) be matched by
.get_state(). As fixing this isn't easy, only point it out in a comment
to prevent authors of other drivers from copying that approach.

Fixes: c375bcbaab ("pwm: meson: Read the full hardware state in meson_pwm_get_state()")
Reported-by: Munehisa Kamata <kamatam@amazon.com>
Acked-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Link: https://lore.kernel.org/r/20230310191405.2606296-1-u.kleine-koenig@pengutronix.de
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2023-04-13 16:55:19 +02:00
..
core.c pwm: Changes for v6.1-rc1 2022-10-07 11:32:10 -07:00
Kconfig pwm: Add clock based PWM output driver 2022-07-29 13:41:18 +02:00
Makefile pwm: Add clock based PWM output driver 2022-07-29 13:41:18 +02:00
pwm-ab8500.c pwm: ab8500: Simplify using devm_pwmchip_add() 2021-09-02 21:38:40 +02:00
pwm-atmel-hlcdc.c pwm: atmel-hlcdc: Don't check the return code of pwmchip_remove() 2021-09-02 21:38:49 +02:00
pwm-atmel-tcb.c pwm: atmel-tcb: Fix typo in comment 2022-06-22 15:33:13 +02:00
pwm-atmel.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-bcm-iproc.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-bcm-kona.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 2) 2022-06-10 14:51:35 +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-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: brcmstb: Remove useless locking 2022-02-24 14:46:24 +01:00
pwm-clk.c pwm: Add clock based PWM output driver 2022-07-29 13:41:18 +02:00
pwm-clps711x.c pwm: clps71xx: Implement .apply() callback 2022-04-22 18:52:30 +02:00
pwm-crc.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-cros-ec.c pwm: cros-ec: Explicitly set .polarity in .get_state() 2023-04-13 16:55:18 +02:00
pwm-dwc.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-ep93xx.c pwm: ep93xx: Simplify using devm_pwmchip_add() 2021-09-02 21:38:41 +02:00
pwm-fsl-ftm.c pwm: fsl-ftm: Simplify using devm_pwmchip_add() 2021-09-02 21:38:41 +02:00
pwm-hibvt.c pwm: hibvt: Explicitly set .polarity in .get_state() 2023-04-13 16:55:18 +02:00
pwm-img.c pwm: img: Rename variable pointing to driver private data 2022-02-02 17:06:05 +01:00
pwm-imx-tpm.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-imx1.c pwm: imx1: Implement .apply callback 2022-02-02 17:05:19 +01:00
pwm-imx27.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-intel-lgm.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-iqs620a.c pwm: iqs620a: Explicitly set .polarity in .get_state() 2023-04-13 16:55:19 +02:00
pwm-jz4740.c pwm: jz4740: Add support for X1000 SoC 2022-02-24 14:37:21 +01:00
pwm-keembay.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-lp3943.c pwm: lp3943: Implement .apply() callback 2022-04-22 18:43:09 +02:00
pwm-lpc18xx-sct.c pwm: lpc18xx: Fix period handling 2022-07-29 13:41:18 +02:00
pwm-lpc32xx.c pwm: lpc32xx: Implement .apply() callback 2022-05-20 16:29:01 +02:00
pwm-lpss-pci.c pwm: lpss: Use DEFINE_RUNTIME_DEV_PM_OPS() and pm_ptr() macros 2022-09-28 16:18:57 +02:00
pwm-lpss-platform.c pwm: lpss: Use device_get_match_data() to get device data 2022-09-28 16:18:11 +02:00
pwm-lpss.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-lpss.h pwm: lpss: Add a comment to the bypass field 2022-09-28 16:21:46 +02:00
pwm-mediatek.c pwm: mediatek: always use bus clock for PWM on MT7622 2022-12-31 13:32:51 +01:00
pwm-meson.c pwm: meson: Explicitly set .polarity in .get_state() 2023-04-13 16:55:19 +02:00
pwm-mtk-disp.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-mxs.c pwm: mxs: Simplify using devm_pwmchip_add() 2021-09-02 21:38:45 +02:00
pwm-ntxec.c pwm: ntxec: Simplify using devm_pwmchip_add() 2021-09-02 21:38:46 +02:00
pwm-omap-dmtimer.c pwm: omap-dmtimer: Don't check the return code of pwmchip_remove() 2021-09-02 21:38:52 +02:00
pwm-pca9685.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-pxa.c pwm: pxa: Implement .apply() callback 2022-02-02 18:03:05 +01:00
pwm-raspberrypi-poe.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-rcar.c pwm: rcar: Simplify multiplication/shift logic 2022-02-24 15:14:56 +01:00
pwm-renesas-tpu.c pwm: renesas-tpu: Improve precision of period and duty_cycle calculation 2022-05-20 16:18:40 +02:00
pwm-rockchip.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-samsung.c pwm: samsung: Implement .apply() callback 2022-05-20 15:59:34 +02:00
pwm-sifive.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-sl28cpld.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02: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: Explicitly set .polarity in .get_state() 2023-04-13 16:55:19 +02:00
pwm-sti.c pwm: sti: Implement .apply() callback 2022-05-20 16:28:18 +02:00
pwm-stm32-lp.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +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: stmpe: Implement .apply() callback 2022-05-20 16:28:35 +02:00
pwm-sun4i.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-sunplus.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-tegra.c pwm: tegra: Fix 32 bit build 2022-12-31 13:33:12 +01:00
pwm-tiecap.c pwm: tiecap: Simplify using devm_pwmchip_add() 2021-09-02 21:38:48 +02:00
pwm-tiehrpwm.c pwm: tiehrpwm: Implement .apply() callback 2022-02-24 13:52:59 +01:00
pwm-twl-led.c pwm: twl-led: Document some limitations and link to the reference manual 2022-07-29 13:41:18 +02:00
pwm-twl.c pwm: twl: Implement .apply() callback 2021-11-17 17:12:42 +01:00
pwm-visconti.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
pwm-vt8500.c pwm: vt8500: Rename variable pointing to driver private data 2022-02-24 14:35:20 +01:00
pwm-xilinx.c pwm: Make .get_state() callback return an error code 2023-04-13 16:55:18 +02:00
sysfs.c pwm: sysfs: Replace sprintf() with sysfs_emit() 2022-09-28 17:52:02 +02:00