[U-Boot] [u-boot 2/2] drivers/fsl-mc: Support DPSPARSER object and apply spb command
Joe Hershberger
joe.hershberger at gmail.com
Sat Jul 13 00:51:30 UTC 2019
On Tue, Jul 9, 2019 at 3:33 PM Joe Hershberger
<joe.hershberger at gmail.com> wrote:
>
> On Wed, May 15, 2019 at 4:10 AM Florinel Iordache
> <florinel.iordache at nxp.com> wrote:
> >
> > Add support for DPSPARSER object (create/destroy, open/close, apply spb)
> > required to configure Soft Parser by using MC. Also add uboot command to
> > apply a Soft Parser Blob by using a command like: fsl_mc apply spb
> > <spb_load_addr>
> >
> > Signed-off-by: Florinel Iordache <florinel.iordache at nxp.com>
> > ---
> > drivers/net/fsl-mc/Kconfig | 12 ++
> > drivers/net/fsl-mc/Makefile | 4 +-
> > drivers/net/fsl-mc/dpsparser.c | 138 ++++++++++++++++++++
> > drivers/net/fsl-mc/mc.c | 272 +++++++++++++++++++++++++++++++++++++---
> > include/fsl-mc/fsl_dpsparser.h | 208 ++++++++++++++++++++++++++++++
> > include/fsl-mc/fsl_mc_private.h | 17 ++-
> > 6 files changed, 629 insertions(+), 22 deletions(-)
> > create mode 100644 drivers/net/fsl-mc/dpsparser.c
> > create mode 100644 include/fsl-mc/fsl_dpsparser.h
> >
>
> [ ... ]
>
> > +int mc_apply_spb(u64 mc_spb_addr)
> > +{
> > + int err = 0;
> > + u16 error, err_arr_size;
> > + u64 mc_spb_offset;
> > + u32 spb_size;
> > + struct sp_blob_header *sp_blob;
> > + u64 mc_ram_addr = mc_get_dram_addr();
> > +
> > + if (!is_dpsparser_supported())
> > + return 0;
> > +
> > + if (!mc_spb_addr) {
> > + printf("fsl-mc: Invalid Blob address\n");
> > + return -1;
> > + }
> > +
> > +#ifdef CONFIG_MC_DRAM_SPB_OFFSET
> > + mc_spb_offset = CONFIG_MC_DRAM_SPB_OFFSET;
> > +#else
> > +#error "CONFIG_MC_DRAM_SPB_OFFSET not defined"
> > +#endif
> > +
> > + // Read blob header and get size of SPB blob
> > + sp_blob = (struct sp_blob_header *)mc_spb_addr;
> > + spb_size = le32_to_cpu(sp_blob->length);
> > + if (spb_size > CONFIG_MC_SPB_MAX_SIZE) {
> > + printf("\nfsl-mc: ERROR: Bad SPB image (too large: %d)\n",
> > + spb_size);
> > + return -EINVAL;
> > + }
> > +
> > + mc_copy_image("MC SP Blob", mc_spb_addr, spb_size,
> > + mc_ram_addr + mc_spb_offset);
>
> This function is only available #ifndef CONFIG_SYS_LS_MC_FW_IN_DDR
>
> This is breaking the ls2080a_emu build.
Any update or should I drop this series from the release?
Thanks,
-Joe
>
> > +
> > + //Invoke MC command to apply SPB blob
> > + printf("fsl-mc: Applying soft parser blob... ");
> > + err = dpsparser_apply_spb(dflt_mc_io, MC_CMD_NO_FLAGS, dpsparser_handle,
> > + mc_spb_offset, &error);
> > + if (err)
> > + return err;
> > +
> > + if (error == 0) {
> > + printf("SUCCESS\n");
> > + } else {
> > + printf("FAILED with error code = %d:\n", error);
> > + err_arr_size = (u16)ARRAY_SIZE(mc_err_msg_apply_spb);
> > +
> > + if (error > 0 && error < err_arr_size)
> > + printf(mc_err_msg_apply_spb[error]);
> > + else
> > + printf(MC_ERROR_MSG_SPB_UNKNOWN);
> > + }
> > +
> > + return err;
> > +}
> > +
>
>
> [ ... ]
More information about the U-Boot
mailing list