public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Mathieu Dubois-Briand" <mathieu.dubois-briand@bootlin.com>
To: "Uwe Kleine-König" <ukleinek@kernel.org>
Cc: "Lee Jones" <lee@kernel.org>, "Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Kamel Bouhara" <kamel.bouhara@bootlin.com>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Bartosz Golaszewski" <brgl@bgdev.pl>,
	"Dmitry Torokhov" <dmitry.torokhov@gmail.com>,
	"Michael Walle" <mwalle@kernel.org>,
	"Mark Brown" <broonie@kernel.org>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	"Danilo Krummrich" <dakr@kernel.org>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-gpio@vger.kernel.org, linux-input@vger.kernel.org,
	linux-pwm@vger.kernel.org, andriy.shevchenko@intel.com,
	"Grégory Clement" <gregory.clement@bootlin.com>,
	"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>
Subject: Re: [PATCH v8 04/11] pwm: max7360: Add MAX7360 PWM support
Date: Fri, 16 May 2025 14:57:29 +0200	[thread overview]
Message-ID: <D9XLOWTZPRC4.EHVI8W16H3J9@bootlin.com> (raw)
In-Reply-To: <D9WJRVV500O3.GUV0MKHRGTH2@bootlin.com>

On Thu May 15, 2025 at 9:14 AM CEST, Mathieu Dubois-Briand wrote:
> On Tue May 13, 2025 at 12:08 PM CEST, Uwe Kleine-König wrote:
>> Hello,
>>
>> On Fri, May 09, 2025 at 11:14:38AM +0200, mathieu.dubois-briand@bootlin.com wrote:
>>> From: Kamel Bouhara <kamel.bouhara@bootlin.com>
>>> ...
>>>
>>> +
>>> +static int max7360_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm)
>>> +{
>>> +	struct regmap *regmap = pwmchip_get_drvdata(chip);
>>> +	int ret;
>>> +
>>> +	ret = regmap_write_bits(regmap, MAX7360_REG_PWMCFG(pwm->hwpwm),
>>> +				MAX7360_PORT_CFG_COMMON_PWM, 0);
>>> +	if (ret)
>>> +		return ret;
>>> +
>>> +	return regmap_write_bits(regmap, MAX7360_REG_PORTS, BIT(pwm->hwpwm), BIT(pwm->hwpwm));
>>
>> What is the effect of these writes? It doesn't need to be undone in a
>> matching .free()?
>>
>
> The first one (MAX7360_PORT_CFG_COMMON_PWM) asks to use a specific duty
> cycle for this PWM output and not a value shared across all PWMs. I
> believe this one have no reason to be ever reverted.
>
> About the second one, it does switch the output value. Reading the
> datasheet, it's not clear if and why setting this here is required. I
> will make some tests on the hardware a bit later this week. Still, I
> believe there is no need to revert it later.
>

I just tested it, I confirm we can remove the second one.

>>> +}
>>>
>>> ...
>>>
>>> +static int max7360_pwm_write_waveform(struct pwm_chip *chip,
>>> +				      struct pwm_device *pwm,
>>> +				      const void *_wfhw)
>>> +{
>>> +	struct regmap *regmap = pwmchip_get_drvdata(chip);
>>> +	const struct max7360_pwm_waveform *wfhw = _wfhw;
>>> +	unsigned int val;
>>> +	int ret;
>>> +
>>> +	val = wfhw->enabled ? BIT(pwm->hwpwm) : 0;
>>> +	ret = regmap_write_bits(regmap, MAX7360_REG_GPIOCTRL, BIT(pwm->hwpwm), val);
>>> +	if (ret)
>>> +		return ret;
>>> +
>>> +	if (wfhw->duty_steps)
>>> +		return regmap_write(regmap, MAX7360_REG_PWM(pwm->hwpwm), wfhw->duty_steps);
>>
>> Would it make sense to first write duty_steps and only then enable?
>> Otherwise it might happen that you enable and still have a wrong duty
>> configuration in the MAX7360_REG_PWM register and emit a wrong period?
>>
>
> Yes, I believe it does make sense: I will try to invert them.
>

Also tested, and everything seems to be working fine: I will go this
way.

>> Do you need to write duty_steps = 0 if enabled is false?
>>
>
> No, this is not needed: output will be in hi-Z mode. As we have
> "wfhw->enabled = !!wf->duty_length_ns", this should be correct here. But
> reading this, I believe I could modify above code to be more clear with:
>
> if (wfhw->enabled)
> 	return regmap_write(regmap, MAX7360_REG_PWM(pwm->hwpwm), wfhw->duty_steps);
>
>
>>> +	return 0;
>>> +}
>>
>> Best regards
>> Uwe

Best regards,
Mathieu

-- 
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


  reply	other threads:[~2025-05-16 12:57 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-09  9:14 [PATCH v8 00/11] Add support for MAX7360 Mathieu Dubois-Briand
2025-05-09  9:14 ` [PATCH v8 01/11] dt-bindings: mfd: gpio: Add MAX7360 Mathieu Dubois-Briand
2025-05-09  9:14 ` [PATCH v8 02/11] mfd: Add max7360 support mathieu.dubois-briand
2025-05-09  9:29   ` Christophe JAILLET
2025-05-09  9:53     ` Mathieu Dubois-Briand
2025-05-12  9:21   ` Andy Shevchenko
2025-05-13  8:25     ` Mathieu Dubois-Briand
2025-05-13  9:31       ` Lee Jones
2025-05-13 11:14         ` Mathieu Dubois-Briand
2025-05-09  9:14 ` [PATCH v8 03/11] pinctrl: Add MAX7360 pinctrl driver Mathieu Dubois-Briand
2025-05-12  9:16   ` Andy Shevchenko
2025-05-09  9:14 ` [PATCH v8 04/11] pwm: max7360: Add MAX7360 PWM support mathieu.dubois-briand
2025-05-13 10:08   ` Uwe Kleine-König
2025-05-15  7:14     ` Mathieu Dubois-Briand
2025-05-16 12:57       ` Mathieu Dubois-Briand [this message]
2025-05-19 13:13   ` Andy Shevchenko
2025-05-09  9:14 ` [PATCH v8 05/11] regmap: irq: Add support for chips without separate IRQ status Mathieu Dubois-Briand
2025-05-14  9:59   ` Mark Brown
2025-05-14 11:59     ` Mathieu Dubois-Briand
2025-05-09  9:14 ` [PATCH v8 06/11] gpio: regmap: Allow to allocate regmap-irq device Mathieu Dubois-Briand
2025-05-19 13:16   ` Andy Shevchenko
2025-05-09  9:14 ` [PATCH v8 07/11] gpio: regmap: Allow to provide init_valid_mask callback Mathieu Dubois-Briand
2025-05-09  9:14 ` [PATCH v8 08/11] gpio: max7360: Add MAX7360 gpio support Mathieu Dubois-Briand
2025-05-19 13:19   ` Andy Shevchenko
2025-05-20 13:33     ` Mathieu Dubois-Briand
2025-05-09  9:14 ` [PATCH v8 09/11] input: keyboard: Add support for MAX7360 keypad Mathieu Dubois-Briand
2025-05-09  9:14 ` [PATCH v8 10/11] input: misc: Add support for MAX7360 rotary Mathieu Dubois-Briand
2025-05-09  9:14 ` [PATCH v8 11/11] MAINTAINERS: Add entry on MAX7360 driver Mathieu Dubois-Briand
2025-05-23 15:55 ` (subset) [PATCH v8 00/11] Add support for MAX7360 Mark Brown

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=D9XLOWTZPRC4.EHVI8W16H3J9@bootlin.com \
    --to=mathieu.dubois-briand@bootlin.com \
    --cc=andriy.shevchenko@intel.com \
    --cc=brgl@bgdev.pl \
    --cc=broonie@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=dakr@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=gregory.clement@bootlin.com \
    --cc=kamel.bouhara@bootlin.com \
    --cc=krzk+dt@kernel.org \
    --cc=lee@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=mwalle@kernel.org \
    --cc=rafael@kernel.org \
    --cc=robh@kernel.org \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=ukleinek@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox