diff options
-rw-r--r-- | src/include/usr/sbe/sbe_common.H | 14 | ||||
-rw-r--r-- | src/usr/sbe/sbe_update.C | 14 |
2 files changed, 20 insertions, 8 deletions
diff --git a/src/include/usr/sbe/sbe_common.H b/src/include/usr/sbe/sbe_common.H index 9b631c53e..359335e66 100644 --- a/src/include/usr/sbe/sbe_common.H +++ b/src/include/usr/sbe/sbe_common.H @@ -113,10 +113,16 @@ namespace SBE const uint8_t REIPL_SEEPROM_0_VALUE = 0x00; const uint8_t REIPL_SEEPROM_1_VALUE = 0x40; - // FORCE SEEPROM UPDATE FLAG - bit 2: 0x0 -> indicates do not force update - const uint8_t FORCE_UPDATE_FLAG_MASK = 0x20; - const uint8_t FORCE_UPDATE_SEEPROM_0_VALUE = 0x00; - const uint8_t FORCE_UPDATE_SEEPROM_1_VALUE = 0x20; + // SEEPROM 0 FORCE UPDATE FLAG - bit 2: 0x0 -> indicates do not force update + const uint8_t SEEPROM_0_FORCE_UPDATE_MASK = 0x20; + const uint8_t SEEPROM_0_DO_NOT_FORCE_UPDATE = 0x00; + const uint8_t SEEPROM_0_FORCE_UPDATE = 0x20; + + // SEEPROM 1 FORCE UPDATE FLAG - bit 3: 0x0 -> indicates do not force update + const uint8_t SEEPROM_1_FORCE_UPDATE_MASK = 0x10; + const uint8_t SEEPROM_1_DO_NOT_FORCE_UPDATE = 0x00; + const uint8_t SEEPROM_1_FORCE_UPDATE = 0x10; + /******************************************/ /* Structs */ diff --git a/src/usr/sbe/sbe_update.C b/src/usr/sbe/sbe_update.C index cb76a1cc5..fc1708edf 100644 --- a/src/usr/sbe/sbe_update.C +++ b/src/usr/sbe/sbe_update.C @@ -240,7 +240,6 @@ namespace SBE break; } - // Get the Master Proc Chip Target for comparisons later TARGETING::Target* masterProcChipTargetHandle = NULL; err = tS.queryMasterProcChipTargetHandle( @@ -355,11 +354,18 @@ namespace SBE /**********************************************/ /* Perform Update Actions For This Target */ /**********************************************/ - // Force an update if necessary - if (sbeState.mvpdSbKeyword.flags & FORCE_UPDATE_FLAG_MASK) + // Force an update of SEEPROM 0 or SEEPROM 1 if SB keyword + // flags is requesting an update for that particular seeprom + if (((sbeState.seeprom_side_to_update == EEPROM::SBE_PRIMARY) && + (sbeState.mvpdSbKeyword.flags & SEEPROM_0_FORCE_UPDATE_MASK)) || + ((sbeState.seeprom_side_to_update == EEPROM::SBE_BACKUP) && + (sbeState.mvpdSbKeyword.flags & SEEPROM_1_FORCE_UPDATE_MASK))) { + // The DO_UPDATE flag alone might not be enough to + // force an update, setting UPDATE_SBE flag as well + // because I know that performUpdateActions checks that flag sbeState.update_actions = static_cast<sbeUpdateActions_t> - (sbeState.update_actions | DO_UPDATE); + (sbeState.update_actions | DO_UPDATE | UPDATE_SBE); } if ((err == NULL) && (sbeState.update_actions & DO_UPDATE)) |