common: image-fit: Fix load and entry addresses in FIT image

FIT image supports more than 32 bits in addresses by using #address-cell
field. Fixing 64-bit support by using this field.

Signed-off-by: York Sun <york.sun@nxp.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
diff --git a/common/image-fit.c b/common/image-fit.c
index 9e27569..25f8a11 100644
--- a/common/image-fit.c
+++ b/common/image-fit.c
@@ -678,16 +678,28 @@
 static int fit_image_get_address(const void *fit, int noffset, char *name,
 			  ulong *load)
 {
-	int len;
-	const uint32_t *data;
+	int len, cell_len;
+	const fdt32_t *cell;
+	uint64_t load64 = 0;
 
-	data = fdt_getprop(fit, noffset, name, &len);
-	if (data == NULL) {
+	cell = fdt_getprop(fit, noffset, name, &len);
+	if (cell == NULL) {
 		fit_get_debug(fit, noffset, name, len);
 		return -1;
 	}
 
-	*load = uimage_to_cpu(*data);
+	if (len > sizeof(ulong)) {
+		printf("Unsupported %s address size\n", name);
+		return -1;
+	}
+
+	cell_len = len >> 2;
+	/* Use load64 to avoid compiling warning for 32-bit target */
+	while (cell_len--) {
+		load64 = (load64 << 32) | uimage_to_cpu(*cell);
+		cell++;
+	}
+	*load = (ulong)load64;
 
 	return 0;
 }