From: Bin Liu Date: Thu, 16 Jul 2026 14:54:37 +0000 (-0500) Subject: ram: k3-ddrss: fix ecc range checking bug X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=616c3d79f01cf9204e38738857c4647a730dcb3b;p=thirdparty%2Fu-boot.git ram: k3-ddrss: fix ecc range checking bug The original checking is wrong, it basically compares memory address end = r->start + r->range; with memory size: if (end > (ddr_ram_size - ecc_res)) so the if() condition would be always true. This causes the ECC config never take input from the devicetree. Fixes: f43f71012254 ("ram: k3-ddrss: Add support for a partial inline ECC region") Signed-off-by: Bin Liu Reviewed-by: Neha Malcom Francis --- diff --git a/drivers/ram/k3-ddrss/k3-ddrss.c b/drivers/ram/k3-ddrss/k3-ddrss.c index 5144470b931..c406998b20a 100644 --- a/drivers/ram/k3-ddrss/k3-ddrss.c +++ b/drivers/ram/k3-ddrss/k3-ddrss.c @@ -931,11 +931,10 @@ static int k3_ddrss_probe(struct udevice *dev) struct k3_ddrss_ecc_region *r = range; for (int i = 0; (i < K3_DDRSS_MAX_ECC_REG) && (r->range != 0); i++, r++) { - end = r->start + r->range; ddr_ram_size = ddrss->ddr_ram_size; ecc_res = ddrss->ecc_reserved_space; - if (end > (ddr_ram_size - ecc_res)) + if (r->range > (ddr_ram_size - ecc_res)) ddrss->ecc_regions[i].range = ddr_ram_size - ecc_res; else ddrss->ecc_regions[i].range = r->range;