From: Lukasz Majewski <lukma@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 4/5] usb: gadget: f_sdp: Allow SPL to load and boot FIT via SDP
Date: Mon, 3 Jun 2019 23:18:21 +0200 [thread overview]
Message-ID: <20190603231821.578593f9@jawa> (raw)
In-Reply-To: <20190603190029.10373-5-sjoerd.simons@collabora.co.uk>
Hi Sjoerd,
> From: Frieder Schrempf <frieder.schrempf@kontron.de>
>
> Add support for loading u-boot FIT images over the USB SPD protocol in
> the SPL
>
> [Small fixes to build]
> Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
Reviewed-by: Lukasz Majewski <lukma@denx.de>
> ---
>
> common/spl/spl_sdp.c | 11 ++++++++--
> drivers/usb/gadget/f_sdp.c | 41
> ++++++++++++++++++++++++++++++++------ include/sdp.h |
> 4 +++- 3 files changed, 47 insertions(+), 9 deletions(-)
>
> diff --git a/common/spl/spl_sdp.c b/common/spl/spl_sdp.c
> index 807256e908..dc57171966 100644
> --- a/common/spl/spl_sdp.c
> +++ b/common/spl/spl_sdp.c
> @@ -26,9 +26,16 @@ static int spl_sdp_load_image(struct
> spl_image_info *spl_image, }
>
> /* This command typically does not return but jumps to an
> image */
> - sdp_handle(controller_index);
> + sdp_handle(controller_index, spl_image);
> pr_err("SDP ended\n");
> + /*
> + * This command either loads a legacy image, jumps and never
> returns,
> + * or it loads a FIT image and returns it to be handled by
> the SPL
> + * code.
> + */
> + ret = sdp_handle(controller_index, spl_image);
> + debug("SDP ended\n");
>
> - return -EINVAL;
> + return ret;
> }
> SPL_LOAD_IMAGE_METHOD("USB SDP", 0, BOOT_DEVICE_BOARD,
> spl_sdp_load_image); diff --git a/drivers/usb/gadget/f_sdp.c
> b/drivers/usb/gadget/f_sdp.c index ae97ab2b49..2a23160d91 100644
> --- a/drivers/usb/gadget/f_sdp.c
> +++ b/drivers/usb/gadget/f_sdp.c
> @@ -638,7 +638,18 @@ static u32 sdp_jump_imxheader(void *address)
> return 0;
> }
>
> -static void sdp_handle_in_ep(void)
> +#ifdef CONFIG_SPL_LOAD_FIT
> +static ulong sdp_fit_read(struct spl_load_info *load, ulong sector,
> + ulong count, void *buf)
> +{
> + debug("%s: sector %lx, count %lx, buf %lx\n",
> + __func__, sector, count, (ulong)buf);
> + memcpy(buf, (void *)(load->dev + sector), count);
> + return count;
> +}
> +#endif
> +
> +static void sdp_handle_in_ep(struct spl_image_info *spl_image)
> {
> u8 *data = sdp_func->in_req->buf;
> u32 status;
> @@ -689,11 +700,26 @@ static void sdp_handle_in_ep(void)
>
> /* If imx header fails, try some U-Boot specific
> headers */ if (status) {
> + image_header_t *header =
> + sdp_ptr(sdp_func->jmp_address);
> #ifdef CONFIG_SPL_BUILD
> +#ifdef CONFIG_SPL_LOAD_FIT
> + if (image_get_magic(header) == FDT_MAGIC) {
> + struct spl_load_info load;
> +
> + debug("Found FIT\n");
> + load.dev = header;
> + load.bl_len = 1;
> + load.read = sdp_fit_read;
> + spl_load_simple_fit(spl_image,
> &load, 0,
> + header);
> +
> + return;
> + }
> +#endif
> /* In SPL, allow jumps to U-Boot images */
> struct spl_image_info spl_image = {};
> - spl_parse_image_header(&spl_image,
> - (struct image_header
> *)sdp_func->jmp_address);
> + spl_parse_image_header(&spl_image, header);
> jump_to_image_no_args(&spl_image);
> #else
> /* In U-Boot, allow jumps to scripts */
> @@ -715,19 +741,22 @@ static void sdp_handle_in_ep(void)
> };
> }
>
> -void sdp_handle(int controller_index)
> +int sdp_handle(int controller_index, struct spl_image_info
> *spl_image) {
> printf("SDP: handle requests...\n");
> while (1) {
> if (ctrlc()) {
> puts("\rCTRL+C - Operation aborted.\n");
> - return;
> + return -EINVAL;
> }
>
> + if (spl_image->flags & SPL_FIT_FOUND)
> + return 0;
> +
> WATCHDOG_RESET();
> usb_gadget_handle_interrupts(controller_index);
>
> - sdp_handle_in_ep();
> + sdp_handle_in_ep(spl_image);
> }
> }
>
> diff --git a/include/sdp.h b/include/sdp.h
> index f6252d027f..f30e2bca19 100644
> --- a/include/sdp.h
> +++ b/include/sdp.h
> @@ -9,7 +9,9 @@
> #ifndef __SDP_H_
> #define __SDP_H_
>
> +#include <spl.h>
> +
> int sdp_init(int controller_index);
> -void sdp_handle(int controller_index);
> +int sdp_handle(int controller_index, struct spl_image_info
> *spl_image);
> #endif /* __SDP_H_ */
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190603/bd63a453/attachment.sig>
next prev parent reply other threads:[~2019-06-03 21:18 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-03 19:00 [U-Boot] [PATCH 0/5] Enable usage of SDP for i.MX6 Sabre Auto Boards Sjoerd Simons
2019-06-03 19:00 ` [U-Boot] [PATCH 1/5] mx6sabreauto: Remove CONFIG_SPL_DM to decrease the SPL size Sjoerd Simons
2019-06-04 2:48 ` Peng Fan
2019-06-03 19:00 ` [U-Boot] [PATCH 2/5] mx6sabreauto: Select pinctrl driver Sjoerd Simons
2019-06-04 2:49 ` Peng Fan
2019-06-04 14:15 ` Fabio Estevam
2019-06-04 20:09 ` Sjoerd Simons
2019-06-03 19:00 ` [U-Boot] [PATCH 3/5] mx6sabreauto: Enable SPL SDP support Sjoerd Simons
2019-06-03 19:00 ` [U-Boot] [PATCH 4/5] usb: gadget: f_sdp: Allow SPL to load and boot FIT via SDP Sjoerd Simons
2019-06-03 19:17 ` Fabio Estevam
2019-06-03 19:30 ` Sjoerd Simons
2019-06-03 21:18 ` Lukasz Majewski [this message]
2019-06-04 7:09 ` Schrempf Frieder
2019-06-04 13:50 ` Fabio Estevam
2019-06-03 19:00 ` [U-Boot] [PATCH 5/5] mx6sabreauto: set SYS_MALLOC_F for video Sjoerd Simons
2019-06-04 2:49 ` Peng Fan
2019-06-03 21:15 ` [U-Boot] [PATCH 0/5] Enable usage of SDP for i.MX6 Sabre Auto Boards Lukasz Majewski
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=20190603231821.578593f9@jawa \
--to=lukma@denx.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox