[PATCH 5/9] ARM: i.MX8MM: correct unrecognized fracpll frequency
Trent Piepho
trent.piepho at igorinstitute.com
Thu Sep 23 20:12:13 PDT 2021
On Wed, Sep 15, 2021 at 3:39 AM Ahmad Fatoum <a.fatoum at pengutronix.de> wrote:
> On 08.09.21 21:00, Trent Piepho wrote:
> > On Sun, Sep 5, 2021 at 6:52 AM Ahmad Fatoum <a.fatoum at pengutronix.de> wrote:
> >>
> >> Correct the value in imx8mm_fracpll_tbl to match the one expanded by
> >> MHZ(266) macro, rounding it down to MHz range only.
> >
> > It's not really "correcting" the value, since the value is wrong.
> >
> > 24 MHz / 9 * 400 / 2^2 = 266666666.6 Hz
> >
> > Maybe it would be better to say, "make the value in imx8mm_facpll_tbl
> > incorrect so it matches another incorrect value used elsewhere."
> >
> > In which case, one has to wonder why it would not be better to use the
> > correct value everywhere?
>
> Fair point. I just ported the patch and called it a day.
> Looking further into it, the rounding is strange as well.
> 166.75 MHz is rounded to 167, but 266.6 is rounded to 267.
> It would be cleaner to just use MHz values through out and don't use
> Hz values at all and always round up. This makes the code diverge
> from U-Boot, but I guess that's acceptable. Works for you?
I think the original patch was sort of a "not my code base, don't
care, minimum effort" kind of thing. I see the issue with diverging
from u-boot, but also one hates to be stuck with bad code because of a
low standard elsewhere.
I looked through this entire module and there is no reason to use Hz,
rounded or not, for these values. It is just a symbolic identifier
for a supported DRAM speed. It makes more sense in this case to use
an enum, start at zero, and have the value of the identifier match the
location in the table. Then no more table search is needed.
I re-wrote this to do that. I'll send a patch. It's 20% less code.
But really it's even less code, since I can't help but to write
comments, something the original authors were able to largely avoid.
More information about the barebox
mailing list