diff options
Diffstat (limited to 'src/usr/initservice/istepdispatcher')
-rw-r--r-- | src/usr/initservice/istepdispatcher/HBconfig | 5 | ||||
-rw-r--r-- | src/usr/initservice/istepdispatcher/istepdispatcher.C | 27 |
2 files changed, 32 insertions, 0 deletions
diff --git a/src/usr/initservice/istepdispatcher/HBconfig b/src/usr/initservice/istepdispatcher/HBconfig index 7987f8ef3..ccbd43854 100644 --- a/src/usr/initservice/istepdispatcher/HBconfig +++ b/src/usr/initservice/istepdispatcher/HBconfig @@ -21,6 +21,11 @@ config ISTEP_LPC_PORT80_DEBUG help Writes ISTEP progress to LPC port 80h. +config ISTEP_LPC_PORT8X_DEBUG + default n + help + Writes detailed ISTEP progress to LPC port 81h / 82h. + config HANG_ON_MFG_SRC_TERM default y help diff --git a/src/usr/initservice/istepdispatcher/istepdispatcher.C b/src/usr/initservice/istepdispatcher/istepdispatcher.C index 61d359bef..4680bb82c 100644 --- a/src/usr/initservice/istepdispatcher/istepdispatcher.C +++ b/src/usr/initservice/istepdispatcher/istepdispatcher.C @@ -2524,6 +2524,33 @@ errlHndl_t IStepDispatcher::sendProgressCode(bool i_needsLock) port80_val++; #endif +#ifdef CONFIG_ISTEP_LPC_PORT8X_DEBUG + // Detailed istep output for consumption by BMC on e.g. RCS Talos II systems. + // + // Due to FSI silicon issues, those platforms may fail to start correctly + // if the BMC is not aware of the exact ISTEP being run to control BMC + // service sequencing. + // + // NEVER output fake values here, only real ISTEP data. + // Data is latched in on write to port 82h + uint8_t port81_val = iv_curIStep & 0xff; + uint8_t port82_val = iv_curSubStep & 0xff; + size_t port81_len = sizeof(port81_val); + size_t port82_len = sizeof(port82_val); + // Write port 81h first + err = deviceWrite(TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL, + &port81_val, port81_len, + DEVICE_LPC_ADDRESS(LPC::TRANS_IO, 0x81)); + delete err; // this is debug only, ignore any errors + err = NULL; + // Then write port 82h, latching in the full 16-bit value for read + err = deviceWrite(TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL, + &port82_val, port82_len, + DEVICE_LPC_ADDRESS(LPC::TRANS_IO, 0x82)); + delete err; // this is debug only, ignore any errors + err = NULL; +#endif + #ifdef CONFIG_CONSOLE_OUTPUT_PROGRESS //--- Display step on serial console if ((iv_curIStep != lastIstep) || (iv_curSubStep != lastSubstep)) |