Hi Hans, I sent a fixup patch yesterday (I managed somehow to send an outdated patch), did you try the fixup patch?
http://lists.denx.de/pipermail/u-boot/2016-February/245080.html Pe 9 feb. 2016 11:38 p.m., "Hans de Goede" <hdego...@redhat.com> a scris: > This commit breaks bootup on sunxi boards, the get stuck > when running the main u-boot binary at: > > CPU: Allwinner H3 (SUN8I) > I2C: ready > DRAM: > > This reverts commit 8e7cba048baae68ee0916a8f52b4304277328d5e. > > Signed-off-by: Hans de Goede <hdego...@redhat.com> > --- > common/memsize.c | 47 ++++++++++++++++++++++++++--------------------- > 1 file changed, 26 insertions(+), 21 deletions(-) > > diff --git a/common/memsize.c b/common/memsize.c > index 5c0d279..0fb9ba5 100644 > --- a/common/memsize.c > +++ b/common/memsize.c > @@ -33,28 +33,38 @@ long get_ram_size(long *base, long maxsize) > long size; > int i = 0; > > - for (cnt = (maxsize / sizeof(long)) >> 1; cnt >= 0; cnt >>= 1) { > + for (cnt = (maxsize / sizeof(long)) >> 1; cnt > 0; cnt >>= 1) { > addr = base + cnt; /* pointer arith! */ > sync(); > - save[i] = *addr; > + save[i++] = *addr; > sync(); > - if (cnt) { > - i++; > - *addr = ~cnt; > - } else { > - *addr = 0; > - } > + *addr = ~cnt; > } > > + addr = base; > + sync(); > + save[i] = *addr; > + sync(); > + *addr = 0; > + > sync(); > - cnt = 0; > - do { > + if ((val = *addr) != 0) { > + /* Restore the original data before leaving the function. > */ > + sync(); > + *addr = save[i]; > + for (cnt = 1; cnt < maxsize / sizeof(long); cnt <<= 1) { > + addr = base + cnt; > + sync(); > + *addr = save[--i]; > + } > + return (0); > + } > + > + for (cnt = 1; cnt < maxsize / sizeof(long); cnt <<= 1) { > addr = base + cnt; /* pointer arith! */ > val = *addr; > - *addr = save[i--]; > - sync(); > - if (((cnt == 0) && (val != 0)) || > - ((cnt != 0) && (val != ~cnt))) { > + *addr = save[--i]; > + if (val != ~cnt) { > size = cnt * sizeof(long); > /* > * Restore the original data > @@ -64,16 +74,11 @@ long get_ram_size(long *base, long maxsize) > cnt < maxsize / sizeof(long); > cnt <<= 1) { > addr = base + cnt; > - *addr = save[i--]; > + *addr = save[--i]; > } > return (size); > } > - > - if (cnt) > - cnt = cnt << 1; > - else > - cnt = 1; > - } while (cnt < maxsize / sizeof(long)); > + } > > return (maxsize); > } > -- > 2.5.0 > > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot