Hi Uwe, Thanks for the patch. > -----Original Message----- > From: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxx> > Sent: 23 April 2025 10:57 > Subject: [PATCH] pwm: rzg2l-gpt: Accept requests for too high period length > > The period setting is shared for each pair of PWM channels. So if the twin channel is in use, the > period must not be changed. According to the usual practise to pick the next smaller possible period, > accept a request for a period that is bigger than the unchangable value. > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxx> Tested-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> > --- > Hello Biju, > > here comes the patch that I promised when I applied your driver patch. > > This aligns the period setting to the usual procedure. Obviously only compile tested. It is tested with [1] [1] https://lore.kernel.org/all/20250424054050.28310-1-biju.das.jz@xxxxxxxxxxxxxx/ Cheers, Biju > > > drivers/pwm/pwm-rzg2l-gpt.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/drivers/pwm/pwm-rzg2l-gpt.c b/drivers/pwm/pwm-rzg2l-gpt.c index > 2ddbb13f50aa..360c8bf3b190 100644 > --- a/drivers/pwm/pwm-rzg2l-gpt.c > +++ b/drivers/pwm/pwm-rzg2l-gpt.c > @@ -270,15 +270,19 @@ static int rzg2l_gpt_config(struct pwm_chip *chip, struct pwm_device *pwm, > * prescale and period can NOT be modified when there are multiple IOs > * in use with different settings. > */ > - if (rzg2l_gpt->channel_request_count[ch] > 1 && period_ticks != rzg2l_gpt->period_ticks[ch]) > - return -EBUSY; > + if (rzg2l_gpt->channel_request_count[ch] > 1) { > + if (period_ticks < rzg2l_gpt->period_ticks[ch]) > + return -EBUSY; > + else > + period_ticks = rzg2l_gpt->period_ticks[ch]; > + } > > prescale = rzg2l_gpt_calculate_prescale(rzg2l_gpt, period_ticks); > pv = rzg2l_gpt_calculate_pv_or_dc(period_ticks, prescale); > > duty_ticks = mul_u64_u64_div_u64(state->duty_cycle, rzg2l_gpt->rate_khz, USEC_PER_SEC); > - if (duty_ticks > RZG2L_MAX_TICKS) > - duty_ticks = RZG2L_MAX_TICKS; > + if (duty_ticks > period_ticks) > + duty_ticks = period_ticks; > dc = rzg2l_gpt_calculate_pv_or_dc(duty_ticks, prescale); > > /* > > base-commit: 6d54ef7161f815beded94837b40a522df7fd7177 > -- > 2.47.2