:) probably yes On Wed, 17 Jul 2019 18:21:35 +0200 Stefan Roese <[email protected]> wrote:
> On 17.07.19 16:58, Marek Behún wrote: > > The prescaler value computation can yield wrong result if given > > 0x1f at the beginning: the value is computed to be 0x20, but the > > maximum value the register can hold 0x1f, so the actual stored > > value in this case is 0, which is obviously wrong. The first > > condition should also take care of the 0x1f value. > > Wouldn't it be better to max the value after the calculation (see > below)... > > > Signed-off-by: Marek Behún <[email protected]> > > --- > > drivers/spi/mvebu_a3700_spi.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/spi/mvebu_a3700_spi.c > > b/drivers/spi/mvebu_a3700_spi.c index feeafdceaa..cc73ff3fee 100644 > > --- a/drivers/spi/mvebu_a3700_spi.c > > +++ b/drivers/spi/mvebu_a3700_spi.c > > @@ -181,7 +181,7 @@ static int mvebu_spi_set_speed(struct udevice > > *bus, uint hz) data = readl(®->cfg); > > > > prescale = DIV_ROUND_UP(clk_get_rate(&plat->clk), hz); > > - if (prescale > 0x1f) > > + if (prescale >= 0x1f) > > prescale = 0x1f; > > else if (prescale > 0xf) > > prescale = 0x10 + (prescale + 1) / 2; > > Something like this: > > if (prescale > 0xf) > prescale = 0x10 + (prescale + 1) / 2; > prescale = min(prescale, 0x1f); > > ? > > Thanks, > Stefan _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

