diff options
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/usr/errl/errlentry.H | 17 | ||||
| -rw-r--r-- | src/include/usr/errl/errludcallout.H | 16 | ||||
| -rw-r--r-- | src/include/usr/hwas/common/hwasCallout.H | 49 |
3 files changed, 74 insertions, 8 deletions
diff --git a/src/include/usr/errl/errlentry.H b/src/include/usr/errl/errlentry.H index fc06f7b4e..7da534152 100644 --- a/src/include/usr/errl/errlentry.H +++ b/src/include/usr/errl/errlentry.H @@ -423,6 +423,23 @@ public: void removeBackTrace(); /** + * @brief Add a clock callout. + * The i_target is used to identify the actual clock to callout because + * some systems have multiple clocks of a given type. This target is + * usually a chip target, but can possibly be a unit, depending on + * the clock type. + * + * @param[in] i_target The hardware target fed by the clock + * @param[in] i_clockType The hardware clock type + * @param[in] i_priority Priority of the callout + * + * @return void + */ + void addClockCallout(const TARGETING::Target *i_target, + const HWAS::clockTypeEnum i_clockType, + const HWAS::callOutPriority i_priority); + + /** * @brief Add a bus callout * * @param[in] i_target1 The hardware bus endpoint target1 diff --git a/src/include/usr/errl/errludcallout.H b/src/include/usr/errl/errludcallout.H index 80530edd2..cd093b2e4 100644 --- a/src/include/usr/errl/errludcallout.H +++ b/src/include/usr/errl/errludcallout.H @@ -52,6 +52,22 @@ class ErrlUserDetailsCallout : public ErrlUserDetails public: /** + * @brief Construct a clock callout user detail + * + * @param[in] i_pTargetData The hardware target data + * @param[in] i_targetDataLength length of i_pTargetData + * @param[in] i_clockType clock type Enum + * @param[in] i_priority Priority of the callout + * + * @return void + */ + ErrlUserDetailsCallout( + const void *i_pTargetData, + uint32_t i_targetDataLength, + const HWAS::clockTypeEnum i_clockType, + const HWAS::callOutPriority i_priority); + + /** * @brief Construct a bus callout user detail * * @param[in] i_pTarget1Data The hardware target1 data diff --git a/src/include/usr/hwas/common/hwasCallout.H b/src/include/usr/hwas/common/hwasCallout.H index e267ea2b8..f54c31fc2 100644 --- a/src/include/usr/hwas/common/hwasCallout.H +++ b/src/include/usr/hwas/common/hwasCallout.H @@ -110,10 +110,19 @@ enum busTypeEnum PSI_BUS_TYPE = 6 }; +enum clockTypeEnum +{ + TODCLK_TYPE = 1, + MEMCLK_TYPE = 2, + OSCREFCLK_TYPE = 3, + OSCPCICLK_TYPE = 4, +}; + // const uint8_t HW_CALLOUT = 0x01; const uint8_t PROCEDURE_CALLOUT = 0x02; const uint8_t BUS_CALLOUT = 0x03; +const uint8_t CLOCK_CALLOUT = 0x04; const uint8_t TARGET_IS_SENTINEL = 0xF0; @@ -121,18 +130,24 @@ typedef struct callout_ud { uint8_t type; uint8_t pad[3]; - callOutPriority priority; // uint32_t + callOutPriority priority; // uint32_t union { - struct { // deconfigure / gard - DeconfigEnum deconfigState; // uint32_t - GARD_ErrorType gardErrorType; // uint32_t + struct { // type == HW_CALLOUT + DeconfigEnum deconfigState; // uint32_t + GARD_ErrorType gardErrorType; // uint32_t uint32_t cpuid; + // one Target will follow }; - struct { // callout - epubProcedureID procedure; // uint32_t + struct { // type == PROCEDURE_CALLOUT + epubProcedureID procedure; // uint32_t }; - struct { - busTypeEnum busType; + struct { // type == BUS_CALLOUT + busTypeEnum busType; // uint32_t + // two Targets will follow + }; + struct { // type == CLOCK_CALLOUT + clockTypeEnum clockType; // uint32_t + // one Target will follow }; }; } callout_ud_t; @@ -213,6 +228,24 @@ errlHndl_t platHandleBusCallout( callOutPriority i_priority, errlHndl_t &io_errl); +/** + * @brief platform specific code to handle a clock callout that has been + * found in an errlog + * + * @param[in] i_pTarget target + * @param[in] i_clockType Enum indicating which type of clock + * @param[in] i_priority Enum indicating the priority of the callout + * @param[in] io_errl reference to errlHnld for this errlog + * + * @return errlHndl_t valid errlHndl_t handle if there was an error, + * NULL if no errors; + */ +errlHndl_t platHandleClockCallout( + TARGETING::Target *i_pTarget, + clockTypeEnum i_clockType, + callOutPriority i_priority, + errlHndl_t &io_errl); + #endif // not PARSER }; // end namespace |

