summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2022-10-26 15:24:59 -0400
committerTom Rini <[email protected]>2022-10-26 15:24:59 -0400
commit8bc87a4c55a1723728374a5643f13bced37dad6b (patch)
treeb4ace98fe43682d20639adab97778dca140149c2 /common
parentb487387226d49ba2f39757269fb95ea398e8f384 (diff)
parent9b0b5648d6e4d89aa594022e48894e811c250d5f (diff)
Merge branch '2022-10-26-assorted-fixes-and-updates'
- Reduce memory usage in SPL in some cases, clarify some standalone API license issues, fix a Kconfig dependency, pin to a specific version of python setuptools for now, fix a signing problem in mkimage and add a memory uclass.
Diffstat (limited to 'common')
-rw-r--r--common/spl/Kconfig7
-rw-r--r--common/spl/spl_legacy.c19
-rw-r--r--common/spl/spl_nand.c2
-rw-r--r--common/spl/spl_nor.c6
4 files changed, 21 insertions, 13 deletions
diff --git a/common/spl/Kconfig b/common/spl/Kconfig
index b1b9e09dc8f..b738c749fff 100644
--- a/common/spl/Kconfig
+++ b/common/spl/Kconfig
@@ -796,6 +796,13 @@ config SPL_DM_MAILBOX
this option to build the drivers in drivers/mailbox as part of
SPL build.
+config SPL_MEMORY
+ bool "Support Memory controller drivers"
+ help
+ Enable support for Memory Controller drivers within SPL.
+ These devices provide Memory bus interface to various devices like
+ SRAM, Ethernet adapters, FPGAs, etc.
+
config SPL_MMC
bool "Support MMC"
depends on MMC
diff --git a/common/spl/spl_legacy.c b/common/spl/spl_legacy.c
index b3624dfbb77..4c7f44687e8 100644
--- a/common/spl/spl_legacy.c
+++ b/common/spl/spl_legacy.c
@@ -77,32 +77,29 @@ static inline int spl_image_get_comp(const struct legacy_img_hdr *hdr)
int spl_load_legacy_img(struct spl_image_info *spl_image,
struct spl_boot_device *bootdev,
- struct spl_load_info *load, ulong header)
+ struct spl_load_info *load, ulong offset,
+ struct legacy_img_hdr *hdr)
{
__maybe_unused SizeT lzma_len;
__maybe_unused void *src;
- struct legacy_img_hdr hdr;
ulong dataptr;
int ret;
- /* Read header into local struct */
- load->read(load, header, sizeof(hdr), &hdr);
-
/*
* If the payload is compressed, the decompressed data should be
* directly write to its load address.
*/
- if (spl_image_get_comp(&hdr) != IH_COMP_NONE)
+ if (spl_image_get_comp(hdr) != IH_COMP_NONE)
spl_image->flags |= SPL_COPY_PAYLOAD_ONLY;
- ret = spl_parse_image_header(spl_image, bootdev, &hdr);
+ ret = spl_parse_image_header(spl_image, bootdev, hdr);
if (ret)
return ret;
/* Read image */
- switch (spl_image_get_comp(&hdr)) {
+ switch (spl_image_get_comp(hdr)) {
case IH_COMP_NONE:
- dataptr = header;
+ dataptr = offset;
/*
* Image header will be skipped only if SPL_COPY_PAYLOAD_ONLY
@@ -119,7 +116,7 @@ int spl_load_legacy_img(struct spl_image_info *spl_image,
lzma_len = LZMA_LEN;
/* dataptr points to compressed payload */
- dataptr = header + sizeof(hdr);
+ dataptr = offset + sizeof(hdr);
debug("LZMA: Decompressing %08lx to %08lx\n",
dataptr, spl_image->load_addr);
@@ -143,7 +140,7 @@ int spl_load_legacy_img(struct spl_image_info *spl_image,
default:
debug("Compression method %s is not supported\n",
- genimg_get_comp_short_name(image_get_comp(&hdr)));
+ genimg_get_comp_short_name(image_get_comp(hdr)));
return -EINVAL;
}
diff --git a/common/spl/spl_nand.c b/common/spl/spl_nand.c
index a16738818c1..4f4c00f2a1b 100644
--- a/common/spl/spl_nand.c
+++ b/common/spl/spl_nand.c
@@ -119,7 +119,7 @@ static int spl_nand_load_element(struct spl_image_info *spl_image,
load.bl_len = 1;
load.read = spl_nand_legacy_read;
- return spl_load_legacy_img(spl_image, bootdev, &load, offset);
+ return spl_load_legacy_img(spl_image, bootdev, &load, offset, header);
} else {
err = spl_parse_image_header(spl_image, bootdev, header);
if (err)
diff --git a/common/spl/spl_nor.c b/common/spl/spl_nor.c
index 281c6136f54..eaa95fb9b59 100644
--- a/common/spl/spl_nor.c
+++ b/common/spl/spl_nor.c
@@ -111,10 +111,14 @@ static int spl_nor_load_image(struct spl_image_info *spl_image,
/* Legacy image handling */
if (IS_ENABLED(CONFIG_SPL_LEGACY_IMAGE_FORMAT)) {
+ struct legacy_img_hdr hdr;
+
load.bl_len = 1;
load.read = spl_nor_load_read;
+ spl_nor_load_read(&load, spl_nor_get_uboot_base(), sizeof(hdr), &hdr);
return spl_load_legacy_img(spl_image, bootdev, &load,
- spl_nor_get_uboot_base());
+ spl_nor_get_uboot_base(),
+ &hdr);
}
return 0;