Re: [PATCH v2] pwm: tiehrpwm: Enable EHRPWM controller before setting configuration
From: Kumar, Udit
Date: Mon Jan 19 2026 - 23:40:11 EST
Hi Uwe,
On 1/20/2026 3:03 AM, Uwe Kleine-König wrote:
On Mon, Jan 19, 2026 at 08:30:08PM +0530, Kumar, Udit wrote:
Hi Uwe/Gokul,I doesn't look good to me, it's way to complicated. Unless I still
On 1/12/2026 12:52 PM, Uwe Kleine-König wrote:
Hello Gokul,I am able to see this issue on J7200 hardware ,
On Mon, Jan 12, 2026 at 11:21:50AM +0530, Gokul Praveen wrote:
On 10/01/26 04:23, Uwe Kleine-König wrote:I don't have such hardware, sorry. The boards with TI SoC on my desk are
As I cannot reproduce the issue, can you please check if addingsure Uwe, I will try this from my side.
pm_runtime_get_sync(pwmchip_parent(chip));
to the probe function makes the problem disappear? Also please boot with
trace_event=pwm
on the command line and provide the content of
/sys/kernel/debug/tracing/trace after reproducing the problem.
In the meantime, will you able to test the same on TI J784S4 EVM as the
issue was reproduced on this board.
only a Beaglebone Black and a BeaglePlay. (And I didn't setup the
BeaglePlay yet, it was already quite a hassle to make the boneblack work
with a recent kernel. In the end it looks trivial, but
https://salsa.debian.org/kernel-team/linux/-/merge_requests/1777 plus
unreliable netbooting in the bootloader took me several hours to sort
out.)
LTM, it may work on certain devices, depending upon how LPSC (Local power
state controller) and PSC (power state controller))
are managed.
In original code , while putting sync at
https://elixir.bootlin.com/linux/v6.18.6/source/drivers/pwm/pwm-tiehrpwm.c#L293
will leads to calling genpd driver [0], which may put PWM IP in powered down
state, leading to loosing contents.
So, we need retain pm count (genpd on in fact) between config and enable
call.
Therefore this patch LGTM
misunderstand something, I think
diff --git a/drivers/pwm/pwm-tiehrpwm.c b/drivers/pwm/pwm-tiehrpwm.c
index 7a86cb090f76..4942689105f3 100644
--- a/drivers/pwm/pwm-tiehrpwm.c
+++ b/drivers/pwm/pwm-tiehrpwm.c
@@ -378,6 +378,8 @@ static int ehrpwm_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
int err;
bool enabled = pwm->state.enabled;
+ guard(pm_runtime_active)(pwmchip_parent(chip));
+
Fair point, only need i see to keep in hardware active state after dropping count at
https://elixir.bootlin.com/linux/v6.18.6/source/drivers/pwm/pwm-tiehrpwm.c#L293
Above changes will achieve same as well.
if (state->polarity != pwm->state.polarity) {
if (enabled) {
ehrpwm_pwm_disable(chip, pwm);
is enough to fix the issue. (We need something like
https://lore.kernel.org/linux-pwm/20251123233349.2122-1-rafael.v.volkmer@xxxxxxxxx/
to make this really robust.)
Best regards
Uwe