diff options
Diffstat (limited to 'src/usr/sbe')
-rw-r--r-- | src/usr/sbe/sbe_update.C | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/usr/sbe/sbe_update.C b/src/usr/sbe/sbe_update.C index b3366adf0..6fe32951d 100644 --- a/src/usr/sbe/sbe_update.C +++ b/src/usr/sbe/sbe_update.C @@ -38,6 +38,7 @@ #include <util/align.H> #include <util/crc32.H> #include <util/misc.H> +#include <util/utilxipimage.H> #include <errno.h> #include <pnor/pnorif.H> #include <pnor/ecc.H> @@ -1750,6 +1751,13 @@ namespace SBE errlHndl_t err = NULL; void *sbeHbblImgPtr = NULL; + // Clear build information + io_sbeState.new_imageBuild.buildDate = 0; + io_sbeState.new_imageBuild.buildTime = 0; + memset(io_sbeState.new_imageBuild.buildTag, + '\0', + sizeof(io_sbeState.new_imageBuild.buildTag) ); + do{ /************************************************************/ @@ -1832,6 +1840,11 @@ namespace SBE TRACFCOMP( g_trac_sbe, "getSbeInfoState() - " "sbePnorPtr=%p, sbePnorImageSize=0x%08X (%d)", sbePnorPtr, sbePnorImageSize, sbePnorImageSize); + + // Pull build information from XIP header and trace it + Util::pullTraceBuildInfo(sbePnorPtr, + io_sbeState.new_imageBuild, + g_trac_sbe); } // copy tmp_pnorVersion to the main structure @@ -2190,6 +2203,17 @@ namespace SBE }while(0); + if(err && (io_sbeState.new_imageBuild.buildDate != 0) && + (io_sbeState.new_imageBuild.buildTime != 0)) + { + err->addFFDC(SBE_COMP_ID, + &(io_sbeState.new_imageBuild), + sizeof(io_sbeState.new_imageBuild), + 0, // Version + ERRL_UDT_NOFORMAT, // parser ignores data + false ); // merge + } + return err; } @@ -2700,6 +2724,12 @@ namespace SBE &io_sbeState.new_seeprom_ver, sbeInfoSize ); + // Also update with new Build date, time, and tag for MVPD + memcpy( io_sbeState.seeprom_side_to_update == EEPROM::SBE_PRIMARY + ? &io_sbeState.mvpdSbKeyword.seeprom_0_build + : &io_sbeState.mvpdSbKeyword.seeprom_1_build, + &io_sbeState.new_imageBuild, + sizeof(Util::imageBuild_t) ); }while(0); // Free allocated memory |