From: Hannes Schmelzer <hannes@schmelzer.or.at>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCHv2] common/memsize.c: Simplify RAM size detection
Date: Tue, 09 Feb 2016 11:14:28 +0100 [thread overview]
Message-ID: <56B9BC04.8090808@schmelzer.or.at> (raw)
In-Reply-To: <1454444128-12322-1-git-send-email-eddy.petrisor@gmail.com>
On 02.02.2016 21:15, Eddy Petri?or wrote:
> The case of memory of size 0 is not that different from a memory of any other
> size, so we remove the duplicate code and treat the small differences when it
> is the case.
>
> Signed-off-by: Eddy Petri?or <eddy.petrisor@gmail.com>
> ---
>
> v2: Removed patman stuff from commit message
>
> common/memsize.c | 47 +++++++++++++++++++++--------------------------
> 1 file changed, 21 insertions(+), 26 deletions(-)
>
> diff --git a/common/memsize.c b/common/memsize.c
> index 0fb9ba5..5c0d279 100644
> --- a/common/memsize.c
> +++ b/common/memsize.c
> @@ -33,38 +33,28 @@ 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();
> - *addr = ~cnt;
> - }
> -
> - addr = base;
> - sync();
> - save[i] = *addr;
> - sync();
> - *addr = 0;
> -
> - sync();
> - 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];
> + if (cnt) {
> + i++;
> + *addr = ~cnt;
> + } else {
> + *addr = 0;
> }
> - return (0);
> }
>
> - for (cnt = 1; cnt < maxsize / sizeof(long); cnt <<= 1) {
> + sync();
> + cnt = 0;
> + do {
> addr = base + cnt; /* pointer arith! */
> val = *addr;
> - *addr = save[--i];
> - if (val != ~cnt) {
> + *addr = save[i--];
> + sync();
> + if (((cnt == 0) && (val != 0)) ||
> + ((cnt != 0) && (val != ~cnt))) {
> size = cnt * sizeof(long);
> /*
> * Restore the original data
> @@ -74,11 +64,16 @@ 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);
> }
Hi Eddy,
this commit breaks my BuR AM335x boards.
The board stucks at boot:
U-Boot 2016.03-rc1-00195-g437cc77-dirty (Feb 09 2016 - 09:25:51 +0100)
initcall: 8080a384
U-Boot code: 80800000 -> 8083A6F4 BSS: -> 8088433C
initcall: 8080a174
initcall: 8080a3f0
I2C: ready
initcall: 8080a3d8
DRAM: initcall: 80800784
has anybody else experience on am335x boards with this ?
best regards,
Hannes
next prev parent reply other threads:[~2016-02-09 10:14 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-28 22:41 [U-Boot] [PATCH] common/memsize.c: Simplify RAM size detection Eddy Petrișor
2016-02-02 20:15 ` [U-Boot] [PATCHv2] " Eddy Petrișor
2016-02-03 13:38 ` Albert ARIBAUD
2016-02-03 16:32 ` Eddy Petrișor
2016-02-03 17:48 ` [U-Boot] Patman use (was: [PATCHv2] common/memsize.c: Simplify RAM size detection) Albert ARIBAUD
[not found] ` <CAK0XTWeyzNXbhYLP14FBgP7jRBN8bTiqg2R955zb-a9Zmm1Zow@mail.gmail.com>
2016-02-05 17:03 ` [U-Boot] Fwd: " Eddy Petrișor
2016-02-12 15:53 ` Simon Glass
2016-02-08 20:49 ` [U-Boot] [U-Boot, PATCHv2] common/memsize.c: Simplify RAM size detection Tom Rini
2016-02-08 23:25 ` Eddy Petrișor
2016-02-09 10:14 ` Hannes Schmelzer [this message]
2016-02-09 14:35 ` [U-Boot] [PATCHv2] " Eddy Petrișor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56B9BC04.8090808@schmelzer.or.at \
--to=hannes@schmelzer.or.at \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.