[PATCH v1 4/5] ddr: altera: arria10: Add DRAM size checking

Chee, Tien Fong tienfong.chee at altera.com
Tue Jan 27 09:05:23 CET 2026


On 16/12/2025 4:46 pm, alif.zakuan.yuslaimi at altera.com wrote:
> From: Alif Zakuan Yuslaimi<alif.zakuan.yuslaimi at altera.com>
>
> Add DRAM size checking compare between size from device tree and actual
> hardware.
>
> Trigger hang if DRAM size from device tree is greater than actual hardware.
> Display warning message if DRAM size mismatch between device tree and
> actual hardware.
>
> Signed-off-by: Alif Zakuan Yuslaimi<alif.zakuan.yuslaimi at altera.com>
> ---
>   drivers/ddr/altera/sdram_arria10.c | 32 ++++++++++++++++++++++++++++++
>   1 file changed, 32 insertions(+)
>
> diff --git a/drivers/ddr/altera/sdram_arria10.c b/drivers/ddr/altera/sdram_arria10.c
> index 0e3a1d42f34..d75c464f42a 100644
> --- a/drivers/ddr/altera/sdram_arria10.c
> +++ b/drivers/ddr/altera/sdram_arria10.c
> @@ -8,6 +8,7 @@
>   #include <fdtdec.h>
>   #include <init.h>
>   #include <log.h>
> +#include <hang.h>
>   #include <malloc.h>
>   #include <wait_bit.h>
>   #include <watchdog.h>
> @@ -654,6 +655,22 @@ static int of_sdram_firewall_setup(const void *blob)
>   	return 0;
>   }
>   
> +static void sdram_size_check(void)
> +{
> +	phys_size_t ram_check = 0;
> +
> +	debug("DDR: Running SDRAM size sanity check\n");
> +
> +	ram_check = get_ram_size((long *)gd->bd->bi_dram[0].start,
> +				 gd->bd->bi_dram[0].size);
> +	if (ram_check != gd->bd->bi_dram[0].size) {
> +		puts("DDR: SDRAM size check failed!\n");
> +		hang();
> +	}
> +
> +	debug("DDR: SDRAM size check passed!\n");
> +}
> +
>   int ddr_calibration_sequence(void)
>   {
>   	schedule();
> @@ -689,11 +706,26 @@ int ddr_calibration_sequence(void)
>   	/* setup the dram info within bd */
>   	dram_init_banksize();
>   
> +	if (gd->ram_size != gd->bd->bi_dram[0].size) {
> +		printf("DDR: Warning: DRAM size from device tree (%ld MiB)\n",
> +		       gd->bd->bi_dram[0].size >> 20);
> +		printf(" mismatch with hardware (%ld MiB).\n",
> +		       gd->ram_size >> 20);
> +	}
> +
> +	if (gd->bd->bi_dram[0].size > gd->ram_size) {
> +		printf("DDR: Error: DRAM size from device tree is greater\n");
> +		printf(" than hardware size.\n");
> +		hang();
> +	}
> +
>   	if (of_sdram_firewall_setup(gd->fdt_blob))
>   		puts("FW: Error Configuring Firewall\n");
>   
>   	if (sdram_is_ecc_enabled())
>   		sdram_init_ecc_bits();
>   
> +	sdram_size_check();
> +
>   	return 0;
>   }

Reviewed-by: Tien Fong Chee <tien.fong.chee at altera.com> Best regards, 
Tien Fong


More information about the U-Boot mailing list