Re: [PATCH v12 04/10] pwm: max7360: Add MAX7360 PWM support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jul 22, 2025 at 06:23:48PM +0200, Mathieu Dubois-Briand wrote:
> +static int max7360_pwm_round_waveform_tohw(struct pwm_chip *chip,
> +					   struct pwm_device *pwm,
> +					   const struct pwm_waveform *wf,
> +					   void *_wfhw)
> +{
> +	struct max7360_pwm_waveform *wfhw = _wfhw;
> +	u64 duty_steps;
> +
> +	/*
> +	 * Ignore user provided values for period_length_ns and duty_offset_ns:
> +	 * we only support fixed period of MAX7360_PWM_PERIOD_NS and offset of 0.
> +	 * Values from 0 to 254 as duty_steps will provide duty cycles of 0/256
> +	 * to 254/256, while value 255 will provide a duty cycle of 100%.
> +	 */
> +	if (wf->duty_length_ns >= MAX7360_PWM_PERIOD_NS) {
> +		duty_steps = MAX7360_PWM_MAX;
> +	} else {
> +		duty_steps = (u32)wf->duty_length_ns * MAX7360_PWM_STEPS / MAX7360_PWM_PERIOD_NS;
> +		if (duty_steps == MAX7360_PWM_MAX)
> +			duty_steps = MAX7360_PWM_MAX - 1;
> +	}
> +
> +	wfhw->duty_steps = min(MAX7360_PWM_MAX, duty_steps);
> +	wfhw->enabled = !!wf->period_length_ns;
> +
> +	return 0;

The unconditional return 0 is wrong and testing with PWM_DEBUG enabled
should tell you that.

I think the right thing to do here is:

	if (wf->period_length_ns > MAX7360_PWM_PERIOD_NS)
		return 1;
	else
		return 0;

Otherwise looks fine.

Best regards
Uwe

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux