Files
u-boot/include
Emanuele Ghidoli 0977448b45 common: memsize: add RAM size probe based on alias detection
Add probe_ram_size_by_alias() to detect RAM size by checking whether a
write to one address aliases to another address.

Compared to get_ram_size(), this function allows the caller to:
- limit probing to a small set of required accesses
- avoid touching reserved or already used memory regions
- handle non-linear alias patterns

On the iMX95 SoC, when used with LPDDR5, accesses beyond the end of an 8GB DDR
configuration do not alias to the expected linear wrap-around addresses.
Instead, the aliased addresses appear to follow a pattern related to the
DDRC bank and bank-group addresses mapping. Experimentally, the observed
pattern is:

Write        Read
y00000000 -> x0001c000
y00004000 -> x00018000
y00008000 -> x00014000
y0000c000 -> x00010000
y00010000 -> x0000c000
y00014000 -> x00008000
y00018000 -> x00004000
y0001c000 -> x00000000

This helper makes it possible to probe RAM size by explicitly specifying
the probed address and the expected alias address for each size check.

Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2026-04-21 20:49:39 -03:00
..
2025-11-06 08:30:33 -06:00
2026-04-21 11:19:49 -06:00
2026-01-14 16:25:09 +01:00
2025-11-21 19:25:56 +01:00
2025-12-04 09:38:58 -06:00
2025-08-25 16:20:48 +02:00
2025-06-02 17:26:15 -06:00
2024-07-29 15:01:04 -06:00
2023-12-21 08:54:37 -05:00
2025-07-23 17:37:14 -06:00
2024-08-26 14:05:38 -06:00
2024-02-13 15:38:49 -05:00
2024-07-29 15:01:04 -06:00
2025-06-02 17:26:15 -06:00
2025-05-29 08:29:16 -06:00
2025-06-02 17:26:15 -06:00
2025-12-30 11:22:57 -06:00
2025-08-06 08:41:30 +02:00
2024-06-14 12:59:07 -06:00
2026-04-21 20:49:39 -03:00
2025-09-26 11:55:13 -06:00
2025-11-07 15:34:04 -06:00
2026-03-27 13:14:18 -06:00
2024-09-24 13:41:20 -06:00
2025-08-25 16:20:48 +02:00
2025-05-13 11:30:09 -06:00
2024-07-29 15:01:04 -06:00
2025-06-27 11:48:20 -06:00
2024-07-29 15:01:04 -06:00
2026-02-02 14:24:40 -06:00
2024-07-29 15:01:04 -06:00
2025-08-06 08:41:30 +02:00
2025-06-02 17:26:16 -06:00
2025-03-10 07:41:16 +01:00
2023-12-21 11:59:49 -05:00
2025-04-03 11:41:54 -06:00
2023-12-21 08:54:37 -05:00
2025-04-03 16:54:49 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2024-10-24 11:21:48 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2025-07-08 13:11:12 -06:00
2025-05-29 08:30:25 -06:00
2024-11-25 23:07:37 -03:00
2024-09-30 17:48:12 -06:00
2025-05-05 14:16:50 -06:00
2026-04-07 15:27:22 -06:00
2026-04-21 11:19:49 -06:00
2024-09-12 17:35:37 +02:00
2023-12-21 08:54:37 -05:00
2025-07-08 13:11:12 -06:00
2024-07-29 15:01:04 -06:00
2026-03-26 11:04:28 -06:00
2024-07-29 15:01:04 -06:00
2025-02-11 20:10:58 -06:00
2025-01-07 15:45:51 +02:00
2025-12-04 09:38:58 -06:00
2025-01-01 10:40:33 -06:00
2025-07-11 10:43:29 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2025-02-03 16:01:36 -06:00
2024-07-29 15:01:04 -06:00