]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
ram: k3-ddrss: fix ecc range checking bug
authorBin Liu <b-liu@ti.com>
Thu, 16 Jul 2026 14:54:37 +0000 (09:54 -0500)
committerTom Rini <trini@konsulko.com>
Tue, 28 Jul 2026 18:30:55 +0000 (12:30 -0600)
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 <b-liu@ti.com>
Reviewed-by: Neha Malcom Francis <n-francis@ti.com>
drivers/ram/k3-ddrss/k3-ddrss.c

index 5144470b931384534e78fbfcea5e66b7083c9f07..c406998b20aab3b2bea22c1d1e4df24b25d6b902 100644 (file)
@@ -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;