[U-Boot] [PATCH 002/126] dm: core: Correct low cell in ofnode_read_pci_addr()

Simon Glass sjg at chromium.org
Wed Sep 25 14:55:46 UTC 2019


This reads the low cell of the PCI address from the wrong cell. Fix it.
Also fix the function that this code came from.

Fixes: 9e51204527 (dm: core: Add operations on device tree references)
Fixes: 4ea5243a3a (fdt: fix fdtdec_get_pci_addr() for CONFIG_PHYS_64BIT)
Signed-off-by: Simon Glass <sjg at chromium.org>
---
I can't work out why the existing code is correct, but I suppose it might
be for some obscure reason that needs a comment.

The original patch is here: http://patchwork.ozlabs.org/patch/525853/

 drivers/core/ofnode.c | 2 +-
 lib/fdtdec.c          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
index 7eca00cd661..5d47eccf1d1 100644
--- a/drivers/core/ofnode.c
+++ b/drivers/core/ofnode.c
@@ -617,7 +617,7 @@ int ofnode_read_pci_addr(ofnode node, enum fdt_pci_space type,
 			if ((fdt32_to_cpu(*cell) & type) == type) {
 				addr->phys_hi = fdt32_to_cpu(cell[0]);
 				addr->phys_mid = fdt32_to_cpu(cell[1]);
-				addr->phys_lo = fdt32_to_cpu(cell[1]);
+				addr->phys_lo = fdt32_to_cpu(cell[2]);
 				break;
 			}
 
diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index 74525c84e7b..74430c8b2ff 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -217,7 +217,7 @@ int fdtdec_get_pci_addr(const void *blob, int node, enum fdt_pci_space type,
 			if ((fdt32_to_cpu(*cell) & type) == type) {
 				addr->phys_hi = fdt32_to_cpu(cell[0]);
 				addr->phys_mid = fdt32_to_cpu(cell[1]);
-				addr->phys_lo = fdt32_to_cpu(cell[1]);
+				addr->phys_lo = fdt32_to_cpu(cell[2]);
 				break;
 			}
 
-- 
2.23.0.444.g18eeb5a265-goog



More information about the U-Boot mailing list