Hello, On Fri, Oct 04, 2024 at 05:07:55PM +0300, Antoniu Miclaus wrote: > +static int ad485x_set_sampling_freq(struct ad485x_state *st, unsigned int freq) > +{ > + struct pwm_state cnv_state = { > + .duty_cycle = AD485X_T_CNVH_NS, > + .enabled = true, > + }; > + int ret; > + > + freq = clamp(freq, 0, st->info->throughput); freq == 0 will become a problem in the next code line. Increase the lower limit of the clamp to 1?! > + cnv_state.period = DIV_ROUND_CLOSEST_ULL(GIGA, freq); Is ROUND_CLOSEST really the right thing here? The resulting period might result in a frequency higher than freq, still more given that pwm_apply_might_sleep() might round the period further down. > + ret = pwm_apply_might_sleep(st->cnv, &cnv_state); > + if (ret) > + return ret; > + > + st->sampling_freq = freq; > + > + return 0; > +} > [...] > +static int ad485x_probe(struct spi_device *spi) > +{ > [...] > + st->cnv = devm_pwm_get(&spi->dev, NULL); > + if (IS_ERR(st->cnv)) > + return PTR_ERR(st->cnv); devm_pwm_get() is silent on error, so adding an error message here would be appropriate. I think the same applies to spi_get_device_match_data() below. > + st->info = spi_get_device_match_data(spi); > + if (!st->info) > + return -ENODEV; > [...] Best regards Uwe
Attachment:
signature.asc
Description: PGP signature