summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorYe Li <ye.li@nxp.com>2018-06-20 23:01:52 -0700
committerYe Li <ye.li@nxp.com>2018-06-21 19:25:55 -0700
commit2c7b640aefe7e807248c9f5e35e2f8c76a8e23d9 (patch)
tree22b7871177de5f6a3476a2c89c30b649e1b5f301 /drivers/usb
parent518b585b37cb79a52a558b9fc03fd9311855dab9 (diff)
MLK-18654-1 usb: gadget: Update SDP to support FIT
Current SDP only supports to boot legacy image(raw). Add support to boot FIT image. Signed-off-by: Ye Li <ye.li@nxp.com>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/gadget/f_sdp.c34
1 files changed, 31 insertions, 3 deletions
diff --git a/drivers/usb/gadget/f_sdp.c b/drivers/usb/gadget/f_sdp.c
index 43c5cfbb77..26345bbb5c 100644
--- a/drivers/usb/gadget/f_sdp.c
+++ b/drivers/usb/gadget/f_sdp.c
@@ -634,6 +634,14 @@ static u32 sdp_jump_imxheader(void *address)
return 0;
}
+static ulong sdp_spl_fit_read(struct spl_load_info *load, ulong sector,
+ ulong count, void *buf)
+{
+ memcpy(buf, (void *)sector, count);
+
+ return count;
+}
+
static void sdp_handle_in_ep(void)
{
u8 *data = sdp_func->in_req->buf;
@@ -686,10 +694,30 @@ static void sdp_handle_in_ep(void)
/* If imx header fails, try some U-Boot specific headers */
if (status) {
#ifdef CONFIG_SPL_BUILD
- /* In SPL, allow jumps to U-Boot images */
+ struct image_header *header;
struct spl_image_info spl_image = {};
- spl_parse_image_header(&spl_image,
- (struct image_header *)sdp_func->jmp_address);
+
+ header = (struct image_header *)(ulong)(sdp_func->jmp_address);
+
+ if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
+ image_get_magic(header) == FDT_MAGIC) {
+ struct spl_load_info load;
+
+ debug("Found FIT\n");
+ load.dev = NULL;
+ load.priv = NULL;
+ load.filename = NULL;
+ load.bl_len = 1;
+ load.read = sdp_spl_fit_read;
+ spl_load_simple_fit(&spl_image, &load,
+ sdp_func->jmp_address,
+ (void *)header);
+ } else {
+ /* In SPL, allow jumps to U-Boot images */
+ spl_parse_image_header(&spl_image,
+ (struct image_header *)(ulong)(sdp_func->jmp_address));
+ }
+
jump_to_image_no_args(&spl_image);
#else
/* In U-Boot, allow jumps to scripts */