Hi, On 11/1/21 11:42, Andy Shevchenko wrote: > On Mon, Nov 1, 2021 at 12:27 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote: >> On 10/25/21 13:24, Andy Shevchenko wrote: >>> On Mon, Oct 25, 2021 at 12:42 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > > ... > >>>> + for (i = 0; i < ARRAY_SIZE(clk_freqs); i++) { >>>> + diff = clk_freqs[i].freq - rate; >>>> + if (diff == 0) >>>> + return i; >>> >>>> + diff = abs(diff); >>> >>> This needs a comment why higher (lower) frequency is okay. >> >> This function is called in 2 places: >> >> 1. From tps68470_clk_round_rate(), where higher/lower clearly is ok, >> (see the function name) so no comment needed. >> >> 2. From tps68470_clk_set_rate() where it is NOT ok and this is >> enforced in the caller: >> >> unsigned int idx = tps68470_clk_cfg_lookup(rate); >> >> if (rate != clk_freqs[idx].freq) >> return -EINVAL; >> >> This is not easy to describe in a comment, while being obvious >> if someone looking at this actually looks at the callers. > > Hmm... but try your best. :-) Ok I will :) > While at it, recently I have learned about util_macros.h. Any use of it here? > Or amending it there and re-using it here? That only works on straight integer/long/float arrays, not on arrays of structs where we are looking for a specific member of the struct to be closest. And reworking that to also work on structs is really (really really) out of scope for this patch-set. Regards, Hans > >>>> + if (diff < best_diff) { >>>> + best_diff = diff; >>>> + best_idx = i; >>>> + } >>>> + } >