From: Stefan Roese <sr@denx.de>
To: Sean Anderson <sean.anderson@seco.com>, Simon Glass <sjg@chromium.org>
Cc: "Marek Behún" <marek.behun@nic.cz>,
u-boot@lists.denx.de, "Marek Vasut" <marex@denx.de>,
"Pali Rohár" <pali@kernel.org>
Subject: Re: [RFC PATCH 4/7] spl: Convert mmc to spl_load
Date: Wed, 6 Apr 2022 07:32:40 +0200 [thread overview]
Message-ID: <1313e210-70fb-e862-c4bf-7a335513818c@denx.de> (raw)
In-Reply-To: <20220401190405.1932697-5-sean.anderson@seco.com>
On 4/1/22 21:04, Sean Anderson wrote:
> This converts the mmc loader to spl_load. Legacy images are handled by
> spl_load (via spl_parse_image_header), so mmc_load_legacy can be
> omitted.
>
> Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Stefan Roese <sr@denx.de>
Thanks,
Stefan
> ---
>
> common/spl/spl_mmc.c | 73 ++++----------------------------------------
> 1 file changed, 6 insertions(+), 67 deletions(-)
>
> diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
> index 1c41d24ff4..113566166f 100644
> --- a/common/spl/spl_mmc.c
> +++ b/common/spl/spl_mmc.c
> @@ -17,48 +17,6 @@
> #include <mmc.h>
> #include <image.h>
>
> -static int mmc_load_legacy(struct spl_image_info *spl_image,
> - struct spl_boot_device *bootdev,
> - struct mmc *mmc,
> - ulong sector, struct image_header *header)
> -{
> - u32 image_offset_sectors;
> - u32 image_size_sectors;
> - unsigned long count;
> - u32 image_offset;
> - int ret;
> -
> - ret = spl_parse_image_header(spl_image, bootdev, header);
> - if (ret)
> - return ret;
> -
> - /* convert offset to sectors - round down */
> - image_offset_sectors = spl_image->offset / mmc->read_bl_len;
> - /* calculate remaining offset */
> - image_offset = spl_image->offset % mmc->read_bl_len;
> -
> - /* convert size to sectors - round up */
> - image_size_sectors = (spl_image->size + mmc->read_bl_len - 1) /
> - mmc->read_bl_len;
> -
> - /* Read the header too to avoid extra memcpy */
> - count = blk_dread(mmc_get_blk_desc(mmc),
> - sector + image_offset_sectors,
> - image_size_sectors,
> - (void *)(ulong)spl_image->load_addr);
> - debug("read %x sectors to %lx\n", image_size_sectors,
> - spl_image->load_addr);
> - if (count != image_size_sectors)
> - return -EIO;
> -
> - if (image_offset)
> - memmove((void *)(ulong)spl_image->load_addr,
> - (void *)(ulong)spl_image->load_addr + image_offset,
> - spl_image->size);
> -
> - return 0;
> -}
> -
> static ulong h_spl_load_read(struct spl_load_info *load, ulong sector,
> ulong count, void *buf)
> {
> @@ -86,6 +44,11 @@ int mmc_load_image_raw_sector(struct spl_image_info *spl_image,
> struct image_header *header;
> struct blk_desc *bd = mmc_get_blk_desc(mmc);
> int ret = 0;
> + struct spl_load_info load = {
> + .dev = mmc,
> + .bl_len = mmc->read_bl_len,
> + .read = h_spl_load_read,
> + };
>
> header = spl_get_load_buffer(-sizeof(*header), bd->blksz);
>
> @@ -97,31 +60,7 @@ int mmc_load_image_raw_sector(struct spl_image_info *spl_image,
> goto end;
> }
>
> - if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
> - image_get_magic(header) == FDT_MAGIC) {
> - struct spl_load_info load;
> -
> - debug("Found FIT\n");
> - load.dev = mmc;
> - load.priv = NULL;
> - load.filename = NULL;
> - load.bl_len = mmc->read_bl_len;
> - load.read = h_spl_load_read;
> - ret = spl_load_simple_fit(spl_image, &load, sector, header);
> - } else if (IS_ENABLED(CONFIG_SPL_LOAD_IMX_CONTAINER)) {
> - struct spl_load_info load;
> -
> - load.dev = mmc;
> - load.priv = NULL;
> - load.filename = NULL;
> - load.bl_len = mmc->read_bl_len;
> - load.read = h_spl_load_read;
> -
> - ret = spl_load_imx_container(spl_image, &load, sector);
> - } else {
> - ret = mmc_load_legacy(spl_image, bootdev, mmc, sector, header);
> - }
> -
> + ret = spl_load(spl_image, bootdev, &load, header, 0, sector);
> end:
> if (ret) {
> #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
Viele Grüße,
Stefan Roese
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de
next prev parent reply other threads:[~2022-04-06 5:33 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-01 19:03 [RFC PATCH 0/7] spl: Use common function for loading/parsing images Sean Anderson
2022-04-01 19:03 ` [RFC PATCH 1/7] spl: Add generic spl_load function Sean Anderson
2022-04-06 5:30 ` Stefan Roese
2022-04-07 15:10 ` Sean Anderson
2022-04-08 4:43 ` Stefan Roese
2022-04-01 19:04 ` [RFC PATCH 2/7] spl: Convert ext to use spl_load Sean Anderson
2022-04-06 5:32 ` Stefan Roese
2022-04-01 19:04 ` [RFC PATCH 3/7] spl: Convert fat to spl_load Sean Anderson
2022-04-06 5:32 ` Stefan Roese
2022-04-01 19:04 ` [RFC PATCH 4/7] spl: Convert mmc " Sean Anderson
2022-04-06 5:32 ` Stefan Roese [this message]
2022-04-01 19:04 ` [RFC PATCH 5/7] spl: Convert net " Sean Anderson
2022-04-06 5:32 ` Stefan Roese
2022-04-01 19:04 ` [RFC PATCH 6/7] spl: Convert nor " Sean Anderson
2022-04-06 5:33 ` Stefan Roese
2022-04-01 19:04 ` [RFC PATCH 7/7] spl: Convert spi " Sean Anderson
2022-04-06 5:33 ` Stefan Roese
2022-04-06 5:26 ` [RFC PATCH 0/7] spl: Use common function for loading/parsing images Stefan Roese
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1313e210-70fb-e862-c4bf-7a335513818c@denx.de \
--to=sr@denx.de \
--cc=marek.behun@nic.cz \
--cc=marex@denx.de \
--cc=pali@kernel.org \
--cc=sean.anderson@seco.com \
--cc=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.