All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Uwe Kleine-König" <ukleinek@kernel.org>
To: Cosmin-Gabriel Tanislav <cosmin-gabriel.tanislav.xa@renesas.com>
Cc: Biju Das <biju.das.jz@bp.renesas.com>,
	 William Breathitt Gray <wbg@kernel.org>,
	Lee Jones <lee@kernel.org>,
	 Thierry Reding <thierry.reding@gmail.com>,
	"linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>,
	 "linux-renesas-soc@vger.kernel.org"
	<linux-renesas-soc@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	 "linux-pwm@vger.kernel.org" <linux-pwm@vger.kernel.org>,
	"stable@vger.kernel.org" <stable@vger.kernel.org>
Subject: Re: [PATCH 1/5] pwm: rz-mtu3: fix prescale check when enabling 2nd channel
Date: Sun, 17 May 2026 22:15:14 +0200	[thread overview]
Message-ID: <agog7Z1wfrZAjHj-@monoceros> (raw)
In-Reply-To: <TYYPR01MB15615FA52860D81F04E42F2C48541A@TYYPR01MB15615.jpnprd01.prod.outlook.com>

[-- Attachment #1: Type: text/plain, Size: 3226 bytes --]

Hello Cosmin,

On Tue, Mar 17, 2026 at 11:02:12PM +0000, Cosmin-Gabriel Tanislav wrote:
> > From: Uwe Kleine-König <ukleinek@kernel.org>
> > Sent: Tuesday, March 17, 2026 11:12 AM
> > 
> > On Mon, Mar 16, 2026 at 03:49:35PM +0000, Cosmin-Gabriel Tanislav wrote:
> > > static int rz_mtu3_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
> > > 			      const struct pwm_state *state)
> > > {
> > > 	...
> > >
> > > 	u32 enable_count;
> > >
> > > 	...
> > >
> > > 	/*
> > > 	 * Account for the case where one IO is already enabled and this call
> > > 	 * enables the second one, to prevent the prescale from being changed.
> > > 	 * If this PWM is currently disabled it will be enabled by this call,
> > > 	 * so include it in the enable count. If it is already enabled, it has
> > > 	 * already been accounted for.
> > > 	 */
> > > 	enable_count = rz_mtu3_pwm->enable_count[ch] + (pwm->state.enabled ? 0 : 1);
> > >
> > > 	...
> > >
> > > 	if (enable_count > 1) {
> > > 		if (rz_mtu3_pwm->prescale[ch] > prescale)
> > > 			return -EBUSY;
> > >
> > > 		prescale = rz_mtu3_pwm->prescale[ch];
> > > 	}
> > >
> > > Please let me know what you think so we can proceed with the work
> > > internally.
> > 
> > I'd prefer the `rz_mtu3_pwm->enable_count[ch] + (pwm->state.enabled ? 0 : 1);`
> > variant. I understand that this is also the variant you prefer, so
> > that's great, but I wouldn't stop you using the sibling option.
> 
> I realized the check could be simplified quite a bit while achieving
> the same outcome.
> 
> 	if (rz_mtu3_pwm->enable_count[ch] > pwm->state.enabled) {
> 		...
> 	}
> 
> 2 > 1 -> true, prescale gets checked when updating one of the IOs if
> both are enabled
> 
> 1 > 0 -> true, prescale gets checked when enabling the second IO
> 
> 1 > 1 -> false, prescale is not checked when updating a single enabled
> IO
> 
> 0 > 0 -> false, prescale is not checked when enabling the first IO
> 
> 2 > 0 and 0 > 1 -> impossible since enable_count is always in sync
> with PWM state

I didn't try to understand that, but on first glance it doesn't look
intuitive, so needs a code comment.

> > You can gain some extra points for not using pwm->state. This is a relic
> > from the legacy pwm abstraction and doesn't make much sense with the
> > waveform callbacks. 
> 
> I can switch from enable_count to an enable_mask in a later commit, and
> that will allow us to both get rid of PWM state access entirely and also
> make the sibling check more obvious, by doing something like:
> 
> 	if (rz_mtu3_pwm->enable_mask[ch] & ~BIT(rz_mtu3_hwpwm_io(pwm->hwpwm))) {
> 		...
> 	}
> 
> Which would read like "is any other IO enabled?". If yes, don't touch
> prescale.
> 
> But for the scope of these fixes we need to keep accessing PWM state as I
> would like them to be backported to stable.

ack, getting rid of pwm->state is a separate patch that should be
addressed only after the fixes under discussion.
 
> enable_mask must remain per-HW channel because it makes the enable /
> disable checks simpler.
> 
> If this sounds good to you, I will proceed with all of these changes.

It does, so go.

Best regards
Uwe

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

  reply	other threads:[~2026-05-17 20:15 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-30 12:23 [PATCH 0/5] Renesas MTU3 PWM / counter fixes Cosmin Tanislav
2026-01-30 12:23 ` [PATCH 1/5] pwm: rz-mtu3: fix prescale check when enabling 2nd channel Cosmin Tanislav
2026-03-05  8:57   ` Uwe Kleine-König
2026-03-05 21:59     ` Cosmin-Gabriel Tanislav
2026-03-06  9:29   ` Uwe Kleine-König
2026-03-06 13:26     ` Cosmin-Gabriel Tanislav
2026-03-16 15:49       ` Cosmin-Gabriel Tanislav
2026-03-16 18:26         ` Geert Uytterhoeven
2026-03-16 19:12           ` Cosmin-Gabriel Tanislav
2026-03-17  8:23             ` Geert Uytterhoeven
2026-03-17  9:11         ` Uwe Kleine-König
2026-03-17 23:02           ` Cosmin-Gabriel Tanislav
2026-05-17 20:15             ` Uwe Kleine-König [this message]
2026-01-30 12:23 ` [PATCH 2/5] pwm: rz-mtu3: impose period restrictions Cosmin Tanislav
2026-01-30 12:23 ` [PATCH 3/5] pwm: rz-mtu3: correctly enable HW channel 4 and 7 Cosmin Tanislav
2026-01-30 12:23 ` [PATCH 4/5] counter: rz-mtu3-cnt: prevent counter from being toggled multiple times Cosmin Tanislav
2026-01-30 12:23 ` [PATCH 5/5] counter: rz-mtu3-cnt: do not use struct rz_mtu3_channel's dev member Cosmin Tanislav
2026-03-22  6:58   ` William Breathitt Gray
2026-03-22 18:57     ` Cosmin-Gabriel Tanislav
2026-03-05  8:49 ` [PATCH 0/5] Renesas MTU3 PWM / counter fixes Uwe Kleine-König
2026-03-22  7:11 ` (subset) " William Breathitt Gray

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=agog7Z1wfrZAjHj-@monoceros \
    --to=ukleinek@kernel.org \
    --cc=biju.das.jz@bp.renesas.com \
    --cc=cosmin-gabriel.tanislav.xa@renesas.com \
    --cc=lee@kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=thierry.reding@gmail.com \
    --cc=wbg@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.