From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michal Simek Date: Wed, 4 May 2016 16:56:58 +0200 Subject: [U-Boot] [PATCH v5 3/3] spl: Support loading a FIT from FAT FS In-Reply-To: <1462363477-20445-4-git-send-email-lokeshvutla@ti.com> References: <1462363477-20445-1-git-send-email-lokeshvutla@ti.com> <1462363477-20445-4-git-send-email-lokeshvutla@ti.com> Message-ID: <572A0DBA.3060800@xilinx.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 4.5.2016 14:04, Lokesh Vutla wrote: > Detect a FIT when loading from a FAT File system and handle it using the > new FIT SPL support. > > Signed-off-by: Lokesh Vutla > --- > common/spl/spl_fat.c | 31 +++++++++++++++++++++++++++++-- > 1 file changed, 29 insertions(+), 2 deletions(-) > > diff --git a/common/spl/spl_fat.c b/common/spl/spl_fat.c > index d761b26..cdb9811 100644 > --- a/common/spl/spl_fat.c > +++ b/common/spl/spl_fat.c > @@ -15,6 +15,7 @@ > #include > #include > #include > +#include > > static int fat_registered; > > @@ -39,6 +40,20 @@ static int spl_register_fat_device(struct blk_desc *block_dev, int partition) > return err; > } > > +static ulong spl_fit_read(struct spl_load_info *load, ulong file_offset, > + ulong size, void *buf) > +{ > + loff_t actread; > + int ret; > + char *filename = (char *)load->priv; > + > + ret = fat_read_file(filename, buf, file_offset, size, &actread); > + if (ret) > + return ret; > + > + return actread; > +} > + > int spl_load_image_fat(struct blk_desc *block_dev, > int partition, > const char *filename) > @@ -57,9 +72,21 @@ int spl_load_image_fat(struct blk_desc *block_dev, > if (err <= 0) > goto end; > > - spl_parse_image_header(header); > + if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) && > + image_get_magic(header) == FDT_MAGIC) { > + struct spl_load_info load; > + > + debug("Found FIT\n"); > + load.read = spl_fit_read; > + load.bl_len = 1; > + load.priv = (void *)filename; > > - err = file_fat_read(filename, (u8 *)spl_image.load_addr, 0); > + return spl_load_simple_fit(&load, 0, header); > + } else { > + spl_parse_image_header(header); > + > + err = file_fat_read(filename, (u8 *)spl_image.load_addr, 0); > + } > > end: > #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT > Tested-by: Michal Simek Thanks, Michal